Files
BusinessMgr-2019/SaBusMgrStandardDbas/Dbas/Bus/SbmAddress_Dbas.cs
T
2021-07-08 20:50:46 +01:00

86 lines
2.9 KiB
C#

using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Interfaces;
namespace Sarand.BusinessMgr.Net.Standard.Dbas.Bus
{
//=======================================================================
class SbmAddress_Dbas : SbmAddress
{
//-------------------------------------------------------------------
// Data members.
private readonly SbmInternals internals;
//-------------------------------------------------------------------
// Construction.
public SbmAddress_Dbas(SbmInternals internals, SysId id, Sbm.ItemType itemType, SysId itemId, Sbm.AddressType addressType, ushort flags) :
base(internals.UserContext, id, itemType, itemId, addressType)
{
this.internals = internals;
Flags = flags;
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
// NB Do not dispose the Internals - owned by manager.
}
base.Dispose(disposing);
}
//-------------------------------------------------------------------
// Properties.
//-------------------------------------------------------------------
// Associated data.
public override bool HasInterfaceDataItems()
{
ClearErrorState();
if (!SysId.IsValid(Id)) return false;
SaInterfaceConsole interfaceConsole = internals.InterfaceConsole;
if (interfaceConsole != null) return false;
bool has = interfaceConsole.ItemHasDataItems(new ItemId((short)Sbm.ItemType.Address, Id));
return has;
}
public override bool ClearDependentData()
{
ClearErrorState();
if (!SysId.IsValid(Id)) return false;
if (SbmGlobals.System == null) return SetErrorState("System is not available");
ISacsDatabase db = internals.BusMgrDatabase;
if (db != null) return SetErrorState("Database is not available");
// Delete interface data items.
if (!HasErrorState())
{
SaInterfaceConsole interfaceConsole = internals.InterfaceConsole;
if (interfaceConsole != null)
{
if (!interfaceConsole.ClearInterfaceDataItems(new ItemId((short)Sbm.ItemType.Association, Id), internals.DbUpdateInfo))
SetErrorState("Failed to clear interface data items - " + interfaceConsole.ErrorState);
}
else SetErrorState("failed to initialise interface console");
interfaceConsole = null; // Do not delete this global object.
}
// Remove data item references.
if (!HasErrorState())
{
SbmDataItemMgr dataItemMgr = internals.DataItemMgr;
if (dataItemMgr != null)
{
if (!dataItemMgr.ClearDataItem(Sbm.ItemType.Address, Id))
SetErrorState(dataItemMgr.ErrorState.ToString());
}
else SetErrorState("Data item manager is not available");
}
return !HasErrorState();
}
//-------------------------------------------------------------------
}
//=======================================================================
}