diff --git a/SacsStandardAccounts/Accounts/QuickBooks/App/SaQuickBooksConsole.cs b/SacsStandardAccounts/Accounts/QuickBooks/App/SaQuickBooksConsole.cs
index 4890f41..1a817ec 100644
--- a/SacsStandardAccounts/Accounts/QuickBooks/App/SaQuickBooksConsole.cs
+++ b/SacsStandardAccounts/Accounts/QuickBooks/App/SaQuickBooksConsole.cs
@@ -13,7 +13,7 @@ using Sarand.Net.Standard.Base.Utils;
namespace Sarand.Net.Standard.Accounts.QuickBooks.App
{
//=======================================================================
- public class SaQuickBooksConsole : SaErrorStateItem
+ public class SaQuickBooksConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Data members.
diff --git a/SacsStandardAccounts/Accounts/QuickBooks/Base/SaQuickBooksApiConsole.cs b/SacsStandardAccounts/Accounts/QuickBooks/Base/SaQuickBooksApiConsole.cs
index 8741e3e..14e42e1 100644
--- a/SacsStandardAccounts/Accounts/QuickBooks/Base/SaQuickBooksApiConsole.cs
+++ b/SacsStandardAccounts/Accounts/QuickBooks/Base/SaQuickBooksApiConsole.cs
@@ -8,7 +8,7 @@ using System.Text;
namespace Sarand.Net.Standard.Accounts.QuickBooks.Base
{
//=======================================================================
- public abstract class SaQuickBooksApiConsole : SaErrorStateItem
+ public abstract class SaQuickBooksApiConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Data members.
diff --git a/SacsStandardAccounts/Accounts/QuickBooks/Base/SaQuickBooksDataItem.cs b/SacsStandardAccounts/Accounts/QuickBooks/Base/SaQuickBooksDataItem.cs
index 7f0d1a7..bc76a11 100644
--- a/SacsStandardAccounts/Accounts/QuickBooks/Base/SaQuickBooksDataItem.cs
+++ b/SacsStandardAccounts/Accounts/QuickBooks/Base/SaQuickBooksDataItem.cs
@@ -107,7 +107,7 @@ namespace Sarand.Net.Standard.Accounts.QuickBooks.Base
//-------------------------------------------------------------------
// I t e r a t o r
//-------------------------------------------------------------------
- public abstract class Iterator : SaErrorStateItem
+ public abstract class Iterator : SacsDisposableStateItem
{
//---------------------------------------------------------------
// Data members.
@@ -119,13 +119,6 @@ namespace Sarand.Net.Standard.Accounts.QuickBooks.Base
{
EntityType = entityType;
}
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- }
- base.Dispose(disposing);
- }
//---------------------------------------------------------------
// Properties.
public Qbk.EntityType EntityType { get; }
diff --git a/SacsStandardAccounts/Accounts/QuickBooks/Internal/SaQuickBooksDataItem.cs b/SacsStandardAccounts/Accounts/QuickBooks/Internal/SaQuickBooksDataItem.cs
index dc71b99..d17c0f2 100644
--- a/SacsStandardAccounts/Accounts/QuickBooks/Internal/SaQuickBooksDataItem.cs
+++ b/SacsStandardAccounts/Accounts/QuickBooks/Internal/SaQuickBooksDataItem.cs
@@ -42,13 +42,6 @@ namespace Sarand.Net.Standard.Accounts.QuickBooks.Internal
protected Iterator (Qbk.EntityType entityType) : base(entityType)
{
}
- protected override void Dispose (bool disposing)
- {
- if (disposing)
- {
- }
- base.Dispose(disposing);
- }
//---------------------------------------------------------------
// Properties.
//---------------------------------------------------------------
diff --git a/SacsStandardAccounts/Accounts/QuickBooks/Online/SaQuickBooksDataItem_Online.cs b/SacsStandardAccounts/Accounts/QuickBooks/Online/SaQuickBooksDataItem_Online.cs
index 5e1a83f..cc248fc 100644
--- a/SacsStandardAccounts/Accounts/QuickBooks/Online/SaQuickBooksDataItem_Online.cs
+++ b/SacsStandardAccounts/Accounts/QuickBooks/Online/SaQuickBooksDataItem_Online.cs
@@ -68,7 +68,7 @@ namespace Sarand.Net.Standard.Accounts.QuickBooks.Online
{
if (disposing)
{
- qbkConsole = null;
+ qbkConsole.Dispose(); qbkConsole = null;
}
base.Dispose(disposing);
}
diff --git a/SacsStandardAccounts/Accounts/QuickBooks/Online/SaQuickBooksRequest_Online.cs b/SacsStandardAccounts/Accounts/QuickBooks/Online/SaQuickBooksRequest_Online.cs
index 2bc5d40..9831c5c 100644
--- a/SacsStandardAccounts/Accounts/QuickBooks/Online/SaQuickBooksRequest_Online.cs
+++ b/SacsStandardAccounts/Accounts/QuickBooks/Online/SaQuickBooksRequest_Online.cs
@@ -10,7 +10,7 @@ using System.Xml.Linq;
namespace Sarand.Net.Standard.Accounts.QuickBooks.Online
{
//=======================================================================
- internal class SaQuickBooksRequest_Online : SaErrorStateItem
+ internal class SaQuickBooksRequest_Online : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Data members.
diff --git a/SacsStandardBase/Base/Bus/SacsDisposableStateItem.cs b/SacsStandardBase/Base/Bus/SacsDisposableStateItem.cs
new file mode 100644
index 0000000..3b56c5c
--- /dev/null
+++ b/SacsStandardBase/Base/Bus/SacsDisposableStateItem.cs
@@ -0,0 +1,50 @@
+using System;
+using Sarand.Net.Standard.Base.Core;
+using Sarand.Net.Standard.Base.Utils;
+
+namespace Sarand.Net.Standard.Base.Bus
+{
+ //=======================================================================
+ public abstract class SacsDisposableStateItem : SacsStateItem, ISacsDisposable
+ {
+ //-------------------------------------------------------------------
+ // Definitions.
+
+ //-------------------------------------------------------------------
+ // Data members.
+ private bool disposed = false;
+
+ //-------------------------------------------------------------------
+ // Construction.
+ protected SacsDisposableStateItem()
+ {
+ }
+
+ //-------------------------------------------------------------------
+ // Disposal.
+ ~SacsDisposableStateItem()
+ {
+ Dispose(!disposed);
+ }
+ public void Dispose()
+ {
+ if (disposed) return;
+ Dispose(true);
+ disposed = true;
+ GC.SuppressFinalize(this);
+ }
+ protected virtual void Dispose(bool disposing)
+ {
+ if (disposing)
+ {
+ }
+ }
+
+ //-------------------------------------------------------------------
+ // Properties.
+ public bool Disposed { get { return disposed; } }
+
+ //-------------------------------------------------------------------
+ }
+ //=======================================================================
+}
diff --git a/SacsStandardBase/Base/Bus/SacsHierarchyItem.cs b/SacsStandardBase/Base/Bus/SacsHierarchyItem.cs
index 16083f3..a06d83f 100644
--- a/SacsStandardBase/Base/Bus/SacsHierarchyItem.cs
+++ b/SacsStandardBase/Base/Bus/SacsHierarchyItem.cs
@@ -32,7 +32,7 @@ namespace Sarand.Net.Standard.Base.Bus
}
}
//=======================================================================
- public class SacsHierarchyItem : SaErrorStateItem
+ public class SacsHierarchyItem : SacsStateItem
{
//-------------------------------------------------------------------
// Definitions.
@@ -333,15 +333,6 @@ namespace Sarand.Net.Standard.Base.Bus
data.Id = id;
}
- //-------------------------------------------------------------------
- // Disposal.
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- }
- }
-
//-------------------------------------------------------------------
// Properties.
/// By default, all hierarchy itrems have an Id.
Override and return false where this is not the case.
diff --git a/SacsStandardBase/Base/Bus/SacsItemMgr.cs b/SacsStandardBase/Base/Bus/SacsItemMgr.cs
index 0483e6b..dda0a2a 100644
--- a/SacsStandardBase/Base/Bus/SacsItemMgr.cs
+++ b/SacsStandardBase/Base/Bus/SacsItemMgr.cs
@@ -9,7 +9,7 @@ using Sarand.Net.Standard.Base.Utils;
namespace Sarand.Net.Standard.Base.Bus
{
//=======================================================================
- public abstract class SacsItemMgr : SaErrorStateItem
+ public abstract class SacsItemMgr : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Definitions.
diff --git a/SacsStandardBase/Base/Bus/SaErrorStateItem.cs b/SacsStandardBase/Base/Bus/SacsStateItem.cs
similarity index 92%
rename from SacsStandardBase/Base/Bus/SaErrorStateItem.cs
rename to SacsStandardBase/Base/Bus/SacsStateItem.cs
index 9c50c0d..1e79e07 100644
--- a/SacsStandardBase/Base/Bus/SaErrorStateItem.cs
+++ b/SacsStandardBase/Base/Bus/SacsStateItem.cs
@@ -5,7 +5,10 @@ using Sarand.Net.Standard.Base.Utils;
namespace Sarand.Net.Standard.Base.Bus
{
//=======================================================================
- public abstract class SaErrorStateItem : SacsDisposable, ISacsStateItem
+ ///
+ /// State Item - allows business component to record and report error message.
+ ///
+ public abstract class SacsStateItem : ISacsStateItem
{
//-------------------------------------------------------------------
// Definitions.
@@ -32,21 +35,15 @@ namespace Sarand.Net.Standard.Base.Bus
//-------------------------------------------------------------------
// Static initialisation.
- static SaErrorStateItem()
+ static SacsStateItem()
{
}
//-------------------------------------------------------------------
// Construction.
- protected SaErrorStateItem()
+ protected SacsStateItem()
{
}
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- }
- }
//-------------------------------------------------------------------
// Properties.
@@ -79,7 +76,8 @@ namespace Sarand.Net.Standard.Base.Bus
///
public bool SetErrorState(String message)
{
- if (StringUtil.IsEmpty(message)) return true;
+ if (StringUtil.IsBlank(message))
+ return false;
this.errorState = new SacsErrorState(message);
return false;
}
diff --git a/SacsStandardBase/Base/CodeTypes/SaCodeTypeConsole.cs b/SacsStandardBase/Base/CodeTypes/SaCodeTypeConsole.cs
index 2c7f7e1..5c520c1 100644
--- a/SacsStandardBase/Base/CodeTypes/SaCodeTypeConsole.cs
+++ b/SacsStandardBase/Base/CodeTypes/SaCodeTypeConsole.cs
@@ -9,7 +9,7 @@ using System.Threading.Tasks;
namespace Sarand.Net.Standard.Base.CodeTypes
{
//=======================================================================
- public abstract class SaCodeTypeConsole : SaErrorStateItem
+ public abstract class SaCodeTypeConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Data members.
diff --git a/SacsStandardBase/Base/Core/ISacsStateItem.cs b/SacsStandardBase/Base/Core/ISacsStateItem.cs
new file mode 100644
index 0000000..9d04060
--- /dev/null
+++ b/SacsStandardBase/Base/Core/ISacsStateItem.cs
@@ -0,0 +1,18 @@
+using Sarand.Net.Standard.Base.Utils;
+using System;
+
+namespace Sarand.Net.Standard.Base.Core
+{
+ //=======================================================================
+ /// State Item interface.
+ public interface ISacsStateItem
+ {
+ bool HasErrorState();
+ SacsErrorState ErrorState { get; }
+ String ErrorStateMessage { get; }
+ bool SetErrorState(String message);
+ void ClearErrorState();
+ }
+
+ //=======================================================================
+}
diff --git a/SacsStandardBase/Base/Core/SacsDisposable.cs b/SacsStandardBase/Base/Core/SacsDisposable.cs
index aff00bc..6bf5a19 100644
--- a/SacsStandardBase/Base/Core/SacsDisposable.cs
+++ b/SacsStandardBase/Base/Core/SacsDisposable.cs
@@ -3,7 +3,18 @@
namespace Sarand.Net.Standard.Base.Core
{
//=======================================================================
- public abstract class SacsDisposable : IDisposable
+ ///
+ /// Disposable class.
+ ///
- Override 'protecetd void Dispose(bool disposing)' to dispose resources when flag is true.
+ ///
+ public interface ISacsDisposable : IDisposable
+ {
+ /// Returns flag to indicate whether object has been disposed.
+ bool Disposed { get; }
+ }
+
+ //=======================================================================
+ public abstract class SacsDisposable : ISacsDisposable
{
//-------------------------------------------------------------------
// Data members.
@@ -11,24 +22,24 @@ namespace Sarand.Net.Standard.Base.Core
//-------------------------------------------------------------------
// Construction.
- protected SacsDisposable ()
+ protected SacsDisposable()
{
}
//-------------------------------------------------------------------
// Disposal.
- ~SacsDisposable ()
+ ~SacsDisposable()
{
Dispose(!disposed);
}
- public void Dispose ()
+ public void Dispose()
{
if (disposed) return;
Dispose(true);
disposed = true;
GC.SuppressFinalize(this);
}
- protected abstract void Dispose (bool disposing);
+ protected abstract void Dispose(bool disposing);
//-------------------------------------------------------------------
// Properties.
diff --git a/SacsStandardBase/Base/Core/SacsStateItem.cs b/SacsStandardBase/Base/Core/SacsStateItem.cs
deleted file mode 100644
index c72c493..0000000
--- a/SacsStandardBase/Base/Core/SacsStateItem.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using Sarand.Net.Standard.Base.Utils;
-using System;
-
-namespace Sarand.Net.Standard.Base.Core
-{
- //=======================================================================
- /// State Item interface.
- public interface ISacsStateItem
- {
- bool HasErrorState();
- SacsErrorState ErrorState { get; }
- String ErrorStateMessage { get; }
- bool SetErrorState(String message);
- void ClearErrorState();
- }
-
- //=======================================================================
- ///
- /// State Item - allows business component to record and report error message.
- ///
- public class SacsStateItem : ISacsStateItem
- {
- //-------------------------------------------------------------------
- // Data items.
-
- //-------------------------------------------------------------------
- // Protected construction - use derived classes.
- protected SacsStateItem() { }
-
- //-------------------------------------------------------------------
- // Poperties.
-
- /// OK - No error state message.
- public bool OK { get { return !HasErrorState(); } }
-
- // Error state.
- public SacsErrorState ErrorState { get; private set; }
- public bool HasErrorState()
- {
- return ErrorState != null;
- }
- public String ErrorStateMessage
- {
- get { return (ErrorState != null ? ErrorState.Message : String.Empty); }
- }
- // Update properties.
- public virtual bool SetErrorState(String message)
- {
- if (StringUtil.IsEmpty(StringUtil.EmptyOnNull(message).Trim()))
- throw new NotSupportedException($"{SysUtil.Fn} Blank error message.");
- this.ErrorState = new SacsErrorState(message);
- return false;
- }
- public void ClearErrorState()
- {
- ErrorState = null;
- }
-
- //-------------------------------------------------------------------
- }
-
- //=======================================================================
-}
diff --git a/SacsStandardBase/Base/Dbas/DbResultSet.cs b/SacsStandardBase/Base/Dbas/DbResultSet.cs
index 10ce7fb..9795e6a 100644
--- a/SacsStandardBase/Base/Dbas/DbResultSet.cs
+++ b/SacsStandardBase/Base/Dbas/DbResultSet.cs
@@ -6,7 +6,7 @@ using Sarand.Net.Standard.Base.App;
namespace Sarand.Net.Standard.Base.Dbas
{
//=======================================================================
- public abstract class DbResultSet : SaErrorStateItem, IDbResultSet
+ public abstract class DbResultSet : SacsDisposableStateItem, IDbResultSet
{
//-------------------------------------------------------------------
// Data members.
diff --git a/SacsStandardBase/Base/Dbas/IDbResultSet.cs b/SacsStandardBase/Base/Dbas/IDbResultSet.cs
index c5d793f..c0b6bf7 100644
--- a/SacsStandardBase/Base/Dbas/IDbResultSet.cs
+++ b/SacsStandardBase/Base/Dbas/IDbResultSet.cs
@@ -4,7 +4,7 @@ using Sarand.Net.Standard.Base.Core;
namespace Sarand.Net.Standard.Base.Dbas
{
//=======================================================================
- interface IDbResultSet : IDisposable
+ interface IDbResultSet : ISacsDisposable
{
//-------------------------------------------------------------------
// Navigation.
diff --git a/SacsStandardBase/Base/Diary/SaDiaryConsole.cs b/SacsStandardBase/Base/Diary/SaDiaryConsole.cs
index 2ebc6bd..4557b84 100644
--- a/SacsStandardBase/Base/Diary/SaDiaryConsole.cs
+++ b/SacsStandardBase/Base/Diary/SaDiaryConsole.cs
@@ -6,7 +6,7 @@ using System.Text;
namespace Sarand.Net.Standard.Base.Diary
{
//=======================================================================
- public abstract class SaDiaryConsole : SaErrorStateItem
+ public abstract class SaDiaryConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Definitions.
diff --git a/SacsStandardBase/Base/Interfaces/SaInterfaceConsole.cs b/SacsStandardBase/Base/Interfaces/SaInterfaceConsole.cs
index d16ab38..9a70cbd 100644
--- a/SacsStandardBase/Base/Interfaces/SaInterfaceConsole.cs
+++ b/SacsStandardBase/Base/Interfaces/SaInterfaceConsole.cs
@@ -10,7 +10,7 @@ using System.Collections.Generic;
namespace Sarand.Net.Standard.Base.Interfaces
{
//=======================================================================
- public abstract class SaInterfaceConsole : SaErrorStateItem
+ public abstract class SaInterfaceConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Interface definition.
diff --git a/SacsStandardBase/Base/ItemData/SaItemDataConsole.cs b/SacsStandardBase/Base/ItemData/SaItemDataConsole.cs
index 3511e20..a45de9c 100644
--- a/SacsStandardBase/Base/ItemData/SaItemDataConsole.cs
+++ b/SacsStandardBase/Base/ItemData/SaItemDataConsole.cs
@@ -8,7 +8,7 @@ using System.Text;
namespace Sarand.Net.Standard.Base.ItemData
{
//=======================================================================
- public abstract class SaItemDataConsole : SaErrorStateItem
+ public abstract class SaItemDataConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Definitions.
diff --git a/SacsStandardBase/Base/ItemDocs/SaItemDocConsole.cs b/SacsStandardBase/Base/ItemDocs/SaItemDocConsole.cs
index 734aa35..0a59fbf 100644
--- a/SacsStandardBase/Base/ItemDocs/SaItemDocConsole.cs
+++ b/SacsStandardBase/Base/ItemDocs/SaItemDocConsole.cs
@@ -8,7 +8,7 @@ using System.Text;
namespace Sarand.Net.Standard.Base.ItemDocs
{
//=======================================================================
- public abstract class SaItemDocConsole : SaErrorStateItem
+ public abstract class SaItemDocConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Definitions.
diff --git a/SacsStandardBase/Base/ItemOptions/SaItemOptionConsole.cs b/SacsStandardBase/Base/ItemOptions/SaItemOptionConsole.cs
index 354cea4..f10478c 100644
--- a/SacsStandardBase/Base/ItemOptions/SaItemOptionConsole.cs
+++ b/SacsStandardBase/Base/ItemOptions/SaItemOptionConsole.cs
@@ -9,7 +9,7 @@ using Sarand.Net.Standard.Base.UpdateLog;
namespace Sarand.Net.Standard.Base.ItemOptions
{
//=======================================================================
- public abstract class SaItemOptionConsole : SaErrorStateItem
+ public abstract class SaItemOptionConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Definitions.
diff --git a/SacsStandardBase/Base/Procs/SaReport_Base.cs b/SacsStandardBase/Base/Procs/SaReport_Base.cs
index 2f821cf..e6e1892 100644
--- a/SacsStandardBase/Base/Procs/SaReport_Base.cs
+++ b/SacsStandardBase/Base/Procs/SaReport_Base.cs
@@ -5,7 +5,7 @@ using Sarand.Net.Standard.Base.Bus;
namespace Sarand.Net.Standard.Base.Procs
{
//=======================================================================
- public abstract class SaReport_Base : SaErrorStateItem
+ public abstract class SaReport_Base : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Definitions.
diff --git a/SacsStandardBase/Base/ReferenceData/SaReferenceDataConsole.cs b/SacsStandardBase/Base/ReferenceData/SaReferenceDataConsole.cs
index bc1ddc3..2ae2201 100644
--- a/SacsStandardBase/Base/ReferenceData/SaReferenceDataConsole.cs
+++ b/SacsStandardBase/Base/ReferenceData/SaReferenceDataConsole.cs
@@ -129,7 +129,7 @@ namespace Sarand.Net.Standard.Base.ReferenceData
};
//=======================================================================
- public abstract partial class SaReferenceDataConsole : SaErrorStateItem
+ public abstract partial class SaReferenceDataConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Definitions.
diff --git a/SacsStandardBase/Base/Security/SaSecurityConsole.cs b/SacsStandardBase/Base/Security/SaSecurityConsole.cs
index c68ba28..d386825 100644
--- a/SacsStandardBase/Base/Security/SaSecurityConsole.cs
+++ b/SacsStandardBase/Base/Security/SaSecurityConsole.cs
@@ -38,7 +38,7 @@ namespace Sarand.Net.Standard.Base.Security
}
//=======================================================================
- public abstract class SaSecurityConsole : SaErrorStateItem
+ public abstract class SaSecurityConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Definitions.
diff --git a/SacsStandardBase/Base/UpdateLog/SaUpdateLogConsole.cs b/SacsStandardBase/Base/UpdateLog/SaUpdateLogConsole.cs
index dc309b4..90e564c 100644
--- a/SacsStandardBase/Base/UpdateLog/SaUpdateLogConsole.cs
+++ b/SacsStandardBase/Base/UpdateLog/SaUpdateLogConsole.cs
@@ -9,7 +9,7 @@ namespace Sarand.Net.Standard.Base.UpdateLog
// Definitions.
//=======================================================================
- public abstract class SaUpdateLogConsole : SaErrorStateItem
+ public abstract class SaUpdateLogConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Definitions.
diff --git a/SacsStandardBase/SacsStandardBase.csproj b/SacsStandardBase/SacsStandardBase.csproj
index 8b9afc3..39958b8 100644
--- a/SacsStandardBase/SacsStandardBase.csproj
+++ b/SacsStandardBase/SacsStandardBase.csproj
@@ -7,11 +7,11 @@
-
+
-
+
diff --git a/SacsStandardDbas/Dbas/Base/SacsDatabaseConsole.cs b/SacsStandardDbas/Dbas/Base/SacsDatabaseConsole.cs
index dd9ba1a..3be717f 100644
--- a/SacsStandardDbas/Dbas/Base/SacsDatabaseConsole.cs
+++ b/SacsStandardDbas/Dbas/Base/SacsDatabaseConsole.cs
@@ -12,7 +12,7 @@ using System.Text.RegularExpressions;
namespace Sarand.Net.Standard.Dbas.Base
{
//=======================================================================
- public class SacsDatabaseConsole : SaErrorStateItem
+ public class SacsDatabaseConsole : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Database configuration
diff --git a/SacsStandardDbas/Dbas/Security/SaSecurityConsole_Dbas.cs b/SacsStandardDbas/Dbas/Security/SaSecurityConsole_Dbas.cs
index 4c44279..0f36929 100644
--- a/SacsStandardDbas/Dbas/Security/SaSecurityConsole_Dbas.cs
+++ b/SacsStandardDbas/Dbas/Security/SaSecurityConsole_Dbas.cs
@@ -223,8 +223,7 @@ namespace Sarand.Net.Standard.Dbas.Security
public override bool LoginUser(SysId userId, bool recordLastLogin = true)
{
ClearErrorState();
- using (SaSecurityItem secItemUser = securityMgr.GetSecurityItemById(userId))
- {
+ SaSecurityItem secItemUser = securityMgr.GetSecurityItemById(userId);
if (secItemUser == null || secItemUser.ItemType != SaSecurity.ItemType.User || !secItemUser.IsStatusEnabled)
{
SaLogger.Error($"{SysUtil.Fn}Failed to retrieve user for login. Id: {SysId.ToString(userId)} - {securityMgr.ErrorStateMessage}", true);
@@ -237,7 +236,6 @@ namespace Sarand.Net.Standard.Dbas.Security
SaLogger.Error($"{SysUtil.Fn}Failed to update user on login. Id: {SysId.ToString(userId)}' - {securityMgr.ErrorStateMessage}", true);
}
OnLogin(secItemUser != null ? secItemUser.Id : null);
- }
return true;
}
public override bool LoginAuthenticatedUser()
diff --git a/SacsStandardProc/Proc/Excel/SaMsSpreadsheet.cs b/SacsStandardProc/Proc/Excel/SaMsSpreadsheet.cs
index 283478d..17660c0 100644
--- a/SacsStandardProc/Proc/Excel/SaMsSpreadsheet.cs
+++ b/SacsStandardProc/Proc/Excel/SaMsSpreadsheet.cs
@@ -248,7 +248,7 @@ namespace Sarand.Net.Standard.Proc.Excel
}
}
//=======================================================================
- public abstract class SaMsSpreadsheet : SaErrorStateItem
+ public abstract class SaMsSpreadsheet : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Definitions.
diff --git a/SacsStandardProc/Proc/Excel/SaMsSpreadsheet_POI.cs b/SacsStandardProc/Proc/Excel/SaMsSpreadsheet_POI.cs
index c7e4bc9..aeb60af 100644
--- a/SacsStandardProc/Proc/Excel/SaMsSpreadsheet_POI.cs
+++ b/SacsStandardProc/Proc/Excel/SaMsSpreadsheet_POI.cs
@@ -845,7 +845,11 @@ namespace Sarand.Net.Standard.Proc.Excel
try
{
if (IsCellDate(cell))
- return new DataValue((DateTime)(cell.DateCellValue ?? DateTime.MinValue));
+ {
+ // Ref. https://stackoverflow.com/questions/23280533/apache-poi-getting-a-null-pointer-while-reading-a-cell-with-value
+ // recommends using DateTime.FromOADate(cell.NumericCellValue) rather than cell.DateCellValue
+ return new DataValue(cell.DateCellValue);
+ }
if (IsCellNumeric(cell))
{
double value = cell.NumericCellValue;
diff --git a/SacsStandardProc/Proc/Xml/SaMsXmlDocument.cs b/SacsStandardProc/Proc/Xml/SaMsXmlDocument.cs
index 11da9bb..0f3e3b1 100644
--- a/SacsStandardProc/Proc/Xml/SaMsXmlDocument.cs
+++ b/SacsStandardProc/Proc/Xml/SaMsXmlDocument.cs
@@ -9,7 +9,7 @@ using Sarand.Net.Standard.Base.Utils;
namespace Sarand.Net.Standard.Proc.Xml
{
//=======================================================================
- public class SaMsXmlDocument : SaErrorStateItem
+ public class SaMsXmlDocument : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Data members.
diff --git a/SacsStandardProc/Proc/Xml/SaMsXmlNode.cs b/SacsStandardProc/Proc/Xml/SaMsXmlNode.cs
index c2bca49..4a61266 100644
--- a/SacsStandardProc/Proc/Xml/SaMsXmlNode.cs
+++ b/SacsStandardProc/Proc/Xml/SaMsXmlNode.cs
@@ -11,7 +11,7 @@ using Sarand.Net.Standard.Base.Utils;
namespace Sarand.Net.Standard.Proc.Xml
{
//=======================================================================
- public class SaMsXmlNode : SaErrorStateItem
+ public class SaMsXmlNode : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Data members.
diff --git a/SacsStandardProc/Proc/Zip/SaMsZipArchive.cs b/SacsStandardProc/Proc/Zip/SaMsZipArchive.cs
index ce7da80..1940f06 100644
--- a/SacsStandardProc/Proc/Zip/SaMsZipArchive.cs
+++ b/SacsStandardProc/Proc/Zip/SaMsZipArchive.cs
@@ -12,7 +12,7 @@ using System.Text;
namespace Sarand.Net.Standard.Proc.Zip
{
//=======================================================================
- public class SaMsZipArchive : SaErrorStateItem
+ public class SaMsZipArchive : SacsDisposableStateItem
{
//-------------------------------------------------------------------
// Data members.
diff --git a/SacsStandardProc/SacsStandardProc.csproj b/SacsStandardProc/SacsStandardProc.csproj
index 491f14d..9837ce7 100644
--- a/SacsStandardProc/SacsStandardProc.csproj
+++ b/SacsStandardProc/SacsStandardProc.csproj
@@ -11,7 +11,7 @@
-
+