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 @@ - +