Add project files.
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
|
||||
namespace Sarand.Net.Standard.Base.UpdateLog
|
||||
{
|
||||
//=======================================================================
|
||||
public abstract class SaUpdateLogMgr : SacsItemMgr
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly Dictionary<SysId,String> userNames = new Dictionary<SysId, string>();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Static initialisation.
|
||||
static SaUpdateLogMgr ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
protected SaUpdateLogMgr (SaUpdateLogConsole updateLogConsole)
|
||||
{
|
||||
UpdateLogConsole = updateLogConsole;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
protected SaUpdateLogConsole UpdateLogConsole { get; }
|
||||
public abstract bool DatabaseIsValid { get; }
|
||||
public abstract bool CanUpdateDatabase { get; }
|
||||
|
||||
//*******************************************************************
|
||||
// U p d a t e L o g E n t r i e s
|
||||
//*******************************************************************
|
||||
// Retrieve individual update log entries.
|
||||
public abstract bool LogEntryExists (SaUpdateLogEntry logEntry);
|
||||
public abstract bool LogEntryExists (ItemId itemId, String attribute, DateTime logged);
|
||||
public abstract SaUpdateLogEntry GetLogEntry (ItemId itemId, String attribute, DateTime logged);
|
||||
|
||||
// Create Update Log Entry.
|
||||
public abstract SaUpdateLogEntry CreateLogEntry (ItemId itemId, String attribute);
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate Update Log Entry.
|
||||
public bool IsValidLogEntry (SaUpdateLogEntry logEntry)
|
||||
{
|
||||
ClearErrorState();
|
||||
if (logEntry == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
|
||||
return IsValidLogEntryData(logEntry.GetData(), new SaUpdateLogEntry.ErrField());
|
||||
}
|
||||
public virtual bool IsValidLogEntryData (SaUpdateLogEntry.Data logEntryData, SaUpdateLogEntry.ErrField errField)
|
||||
{
|
||||
ClearErrorState();
|
||||
if ((int)logEntryData.ItemId.Type < 1)
|
||||
{
|
||||
errField.ItemType = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState("Item type must be supplied");
|
||||
}
|
||||
if (!SysId.IsValid(logEntryData.ItemId.Id))
|
||||
{
|
||||
errField.ItemId = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState("Item Id must be supplied");
|
||||
}
|
||||
if (!IsValidValue(logEntryData.Attribute, "attribute", (long)SaUpdateLogDbDfn.GetColTextLen(SaUpdateLogDbDfn.ColumnIdx.SaAttrUpdate_Attribute), true))
|
||||
{
|
||||
errField.Attribute = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (!IsValidValue(logEntryData.DataBefore, "data before", (long)SaUpdateLogDbDfn.GetColTextLen(SaUpdateLogDbDfn.ColumnIdx.SaAttrUpdate_DataBefore)))
|
||||
{
|
||||
errField.DataBefore = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (!IsValidValue(logEntryData.DataAfter, "data after", (long)SaUpdateLogDbDfn.GetColTextLen(SaUpdateLogDbDfn.ColumnIdx.SaAttrUpdate_DataAfter)))
|
||||
{
|
||||
errField.DataAfter = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
// Common properties.
|
||||
if (!IsValidValue(logEntryData.Notes, "notes", (long)SaUpdateLogDbDfn.GetColTextLen(SaUpdateLogDbDfn.ColumnIdx.SaAttrUpdate_Notes)))
|
||||
{
|
||||
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (!SaUpdateLogEntry.ValidStatuses.Contains(logEntryData.Status))
|
||||
{
|
||||
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState(ErrorMessage.InvalidStatus);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update Log Entry database interface.
|
||||
public abstract bool LogUpdates (SaUpdateLogItemMonitor updateLogItemMonitor, DbUpdateInfo dbUpdateInfo);
|
||||
public abstract bool InsertLogEntry (SaUpdateLogEntry logEntry, DbUpdateInfo dbUpdateInfo);
|
||||
public abstract bool UpdateLogEntry (SaUpdateLogEntry logEntry, DbUpdateInfo dbUpdateInfo);
|
||||
public virtual bool LogEntryCanBeDeleted (SaUpdateLogEntry logEntry)
|
||||
{
|
||||
ClearErrorState();
|
||||
return true;
|
||||
}
|
||||
public abstract bool DeleteLogEntry (SaUpdateLogEntry logEntry, DbUpdateInfo dbUpdateInfo);
|
||||
public abstract bool ClearLogEntriesForItem (ItemId itemId, DbUpdateInfo dbUpdateInfo);
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Update Log Entry list.
|
||||
public abstract ColumnDfn GetLogEntryColumnDfn (SaUpdateLogEntry.Column columnId, String caption = "", int width = 0);
|
||||
public abstract List<String> GetLogEntryQueryFilter (SaUpdateLogEntry.Params prm);
|
||||
public abstract long GetLogEntryCount (SaUpdateLogEntry.Params prm);
|
||||
public abstract List<SaUpdateLogEntry> GetLogEntryList (SaUpdateLogEntry.Params prm);
|
||||
public abstract DbResultSet ExecuteLogEntryQuery (List<ColumnDfn> columns, SaUpdateLogEntry.Params prm);
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>
|
||||
/// Extract and format result set data value where specific handling is required.
|
||||
/// <para>Where response is an invalid data value, format value using column.FormatValue(values).</para>
|
||||
/// </summary>
|
||||
public virtual DataValue GetLogEntryDataValue (ColumnDfn column, NamedValue.Map values)
|
||||
{
|
||||
DataValue value = new DataValue();
|
||||
switch ((SaUpdateLogEntry.Column)column.Id)
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
// Item type.
|
||||
case SaUpdateLogEntry.Column.ItemType_Desc:
|
||||
{
|
||||
short itemType = (short)values.GetValue(column.DataName).AsLong();
|
||||
value = new DataValue(itemType.ToString());
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Data values.
|
||||
case SaUpdateLogEntry.Column.DataBefore:
|
||||
case SaUpdateLogEntry.Column.DataAfter:
|
||||
{
|
||||
value = new DataValue(values.GetValue(column.DataName).ToString());
|
||||
String attribute = values.GetValue(GetLogEntryColumnDfn(SaUpdateLogEntry.Column.Attribute).DataName).ToString();
|
||||
if (attribute.EqualsCI("Status"))
|
||||
value = new DataValue(SacsSystem.GetStatusDescForCode(value.ToString()));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Notes.
|
||||
case SaUpdateLogEntry.Column.Notes:
|
||||
{
|
||||
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Status.
|
||||
case SaUpdateLogEntry.Column.Status_Desc:
|
||||
case SaUpdateLogEntry.Column.Status_Ind:
|
||||
{
|
||||
String statusCode = values.GetValue(column.DataName).ToString();
|
||||
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
|
||||
if (column.Id == (int)SaUpdateLogEntry.Column.Status_Desc)
|
||||
{
|
||||
String statusDesc = SacsSystem.GetStatusDescForCode(statusCode);
|
||||
value = new DataValue(statusDesc);
|
||||
}
|
||||
else if (column.Id == (int)SaUpdateLogEntry.Column.Status_Ind)
|
||||
{
|
||||
DataValue.TriStateType triState = DataValue.TriStateType.Unknown;
|
||||
if (status == SaStatus.Logged)
|
||||
triState = DataValue.TriStateType.Green;
|
||||
value = new DataValue(triState);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Notes.
|
||||
case SaUpdateLogEntry.Column.CreateBy_Name:
|
||||
{
|
||||
SysId userId = new SysId(StringUtil.ToInt(values.GetValue(GetLogEntryColumnDfn(SaUpdateLogEntry.Column.CreateBy).DataName).ToString()));
|
||||
String userName = SysId.ToString(userId);
|
||||
if (SysId.IsValid(userId) && !userNames.ContainsKey(userId))
|
||||
{
|
||||
foreach (var userNameKV in UpdateLogConsole.GetNameForUserIds(new List<SysId> { userId }))
|
||||
userNames.Add(userNameKV.Key, userNameKV.Value);
|
||||
}
|
||||
if (userNames.ContainsKey(userId))
|
||||
userName = userNames[userId];
|
||||
value = new DataValue(userName);
|
||||
}
|
||||
break;
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user