Add project files.

This commit is contained in:
Andy Howard
2021-05-05 15:36:28 +01:00
parent 949836d24c
commit a4cf706eb3
353 changed files with 60029 additions and 0 deletions
+313
View File
@@ -0,0 +1,313 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
using System.Text;
namespace Sarand.Net.Standard.Base.ItemDocs
{
//=======================================================================
public class SaItemDoc : SacsHierarchyItem
{
//-------------------------------------------------------------------
// Columns.
public enum Column
{
Pos = 0,
Id,
// Item Id.
ItemType,
ItemType_Desc,
ItemId,
// Item Doc properties.
Category,
Category_Desc,
DocType,
DocType_Desc,
DescBrief,
Folder,
Filename,
MimeType,
// Common properties.
Notes,
Status,
Status_Desc,
Status_Ind,
CreateOn_Date,
UpdateOn_Date,
}
//-------------------------------------------------------------------
/// <summary>Properties other than common.</summary>
public class DataProperties
{
public ItemId ItemId { get; set; } = new ItemId();
public SaItemDocConsole.Category Category { get; set; }
public String DocType { get; set; } = String.Empty;
public String DescBrief { get; set; } = String.Empty;
public String Folder { get; set; } = String.Empty;
public String Filename { get; set; } = String.Empty;
public String MimeType { get; set; } = String.Empty;
public short ItemTypeAutoAssign { get; set; }
}
//-------------------------------------------------------------------
// Data.
public new class Data : SacsHierarchyItem.Data
{
// Data members.
private readonly DataProperties data = new DataProperties();
// Construction.
public Data ()
{
Status = DefaultStatus;
}
// Properties.
public ItemId ItemId
{
get { return data.ItemId; }
set { CheckChanged(data.ItemId, value); data.ItemId = value; }
}
public SaItemDocConsole.Category Category
{
get { return data.Category; }
set { CheckChanged((int)data.Category, (int)value); data.Category = value; }
}
public String DocType
{
get { return data.DocType; }
set { CheckChanged(data.DocType, value); data.DocType = value; }
}
public String DescBrief
{
get { return data.DescBrief; }
set { CheckChanged(data.DescBrief, value); data.DescBrief = value; }
}
public String Folder
{
get { return data.Folder; }
set { CheckChanged(data.Folder, value); data.Folder = value; }
}
public String Filename
{
get { return data.Filename; }
set { CheckChanged(data.Filename, value); data.Filename = value; }
}
public String MimeType
{
get { return data.MimeType; }
set { CheckChanged(data.MimeType, value); data.MimeType = value; }
}
public short ItemTypeAutoAssign
{
get { return data.ItemTypeAutoAssign; }
set { CheckChanged(data.ItemTypeAutoAssign, value); data.ItemTypeAutoAssign = value; }
}
// Population.
internal void PopulateFrom (Data data)
{
ItemId = data.ItemId;
Category = data.Category;
DocType = data.DocType;
DescBrief = data.DescBrief;
Folder = data.Folder;
Filename = data.Filename;
MimeType = data.MimeType;
ItemTypeAutoAssign = data.ItemTypeAutoAssign;
base.PopulateFrom(data);
}
public Data Clone ()
{
Data data = new Data();
data.PopulateFrom(this);
return data;
}
}
//-------------------------------------------------------------------
// Error field - identify properties with validation error.
public new class ErrField : SacsHierarchyItem.ErrField
{
// Identifies the field that has invalid data.
public ValidValue ItemType { get; set; } = ValidValue.Valid;
public ValidValue ItemId { get; set; } = ValidValue.Valid;
public ValidValue Category { get; set; } = ValidValue.Valid;
public ValidValue DocType { get; set; } = ValidValue.Valid;
public ValidValue DescBrief { get; set; } = ValidValue.Valid;
public ValidValue Folder { get; set; } = ValidValue.Valid;
public ValidValue Filename { get; set; } = ValidValue.Valid;
public ValidValue MimeType { get; set; } = ValidValue.Valid;
public ValidValue ItemTypeAutoAssign { get; set; } = ValidValue.Valid;
}
//-------------------------------------------------------------------
// Data members.
private readonly Data data = new Data();
// Flags.
public static readonly Byte Flag_AutoAssigned = 0x01;
//-------------------------------------------------------------------
// Construction.
public SaItemDoc (SysId id, ItemId itemId, SaItemDocConsole.Category category) :
base(id)
{
base.SetData(data);
ItemId = itemId;
Category = category;
Status = DefaultStatus;
}
//-------------------------------------------------------------------
// Status.
private List<SaStatus> validStatuses = new List<SaStatus>()
{
SaStatus.Current,
SaStatus.Deleted,
};
public static SaStatus DefaultStatus { get { return StatusCurrent; } }
public static SaStatus StatusCurrent { get { return SaStatus.Current; } }
public static List<SaStatus> ValidStatuses { get { return new List<SaStatus>(ValidStatuses); } }
public static DataValue.TriStateType GetStatusTriState (SaStatus status)
{
if (status == SaStatus.Current) return DataValue.TriStateType.Green;
if (status == SaStatus.Deleted) return DataValue.TriStateType.Purple;
return DataValue.TriStateType.Unknown;
}
//-------------------------------------------------------------------
// Properties.
public Data GetData () { return data.Clone(); }
public void SetData (Data data)
{
String fn = GetType().Name + ".SetData";
// Properties that cannot be changed if previously specified.
if (ItemId.Type >= 0 && ItemId.Type != data.ItemId.Type)
throw new NotSupportedException(fn + " Item type cannot be changed");
if (SysId.IsValid(ItemId.Id) && SysId.ToInt(ItemId.Id) != SysId.ToInt(data.ItemId.Id))
throw new NotSupportedException(fn + " Item Id cannot be changed");
// Category.
if ((int)data.Category < 1)
data.Category = Category;
if ((int)Category != 0 && Category != data.Category)
throw new NotSupportedException(fn + " Category cannot be changed");
// Populate individual properties to ensure that 'Changed' indicator is kept up to date.
this.data.PopulateFrom(data);
}
public ItemId ItemId
{
get { return data.ItemId; }
protected set { data.ItemId = value; }
}
public SaItemDocConsole.Category Category
{
get { return data.Category; }
protected set { data.Category = value; }
}
public String DocType
{
get { return data.DocType; }
set { data.DocType = value; }
}
public String DescBrief
{
get { return data.DescBrief; }
set { data.DescBrief = value; }
}
public String Folder
{
get { return data.Folder; }
set { data.Folder = value; }
}
public String Filename
{
get { return data.Filename; }
set { data.Filename = value; }
}
public String MimeType
{
get { return data.MimeType; }
set { data.MimeType = value; }
}
public short ItemTypeAutoAssign
{
get { return data.ItemTypeAutoAssign; }
set { data.ItemTypeAutoAssign = value; }
}
//-------------------------------------------------------------------
// Flags.
public bool AutoAssigned
{
get { return GetFlag(Flag_AutoAssigned); }
set { SetFlag(Flag_AutoAssigned, value); }
}
//-------------------------------------------------------------------
// Comparison.
public bool Matches (ItemId itemId)
{
if (ItemId.Type != itemId.Type) return false;
if (SysId.ToInt(ItemId.Id) != SysId.ToInt(itemId.Id)) return false;
return true;
}
public bool Matches (ItemId itemId, SaItemDocConsole.Category category)
{
if (!Matches(itemId)) return false;
if (Category != category) return false;
return true;
}
public bool Matches (ItemId itemId, SaItemDocConsole.Category category, String docType)
{
if (!Matches(itemId, category)) return false;
if (!DocType.EqualsCI(docType)) return false;
return true;
}
//-------------------------------------------------------------------
// List parameters.
public enum StatusCat
{
Any,
NotDeleted,
CurrentOnly,
DeletedOnly,
}
/// <summary>
/// Item list parameters.
/// </summary>
public new class Params : SacsHierarchyItem.Params
{
public List<SysId> IncludedIds { get; } = new List<SysId>();
public List<SysId> ExcludedIds { get; } = new List<SysId>();
public List<ItemId> IncludedItemIds { get; } = new List<ItemId>();
public SaItemDocConsole.Category Category { get; set; }
public String DocType { get; set; }
public String DescBriefPartial { get; set; }
public String MimeType { get; set; }
public String FolderFull { get; set; }
public String FolderPartial { get; set; }
public String FilenameFull { get; set; }
public short ItemTypeAutoAssign { get; set; }
public StatusCat StatusCat { get; set; } = StatusCat.NotDeleted;
}
//-------------------------------------------------------------------
}
//=======================================================================
/// <summary>List extension methods.</summary>
public static class SaItemDocList
{
public static List<SaItemDoc> FindByItem (this List<SaItemDoc> values, ItemId itemId)
{
return values.FindAll(item => item.Matches(itemId));
}
public static List<SaItemDoc> FindByItemDocCategory (this List<SaItemDoc> values, ItemId itemId, SaItemDocConsole.Category category)
{
return values.FindAll(item => item.Matches(itemId, category));
}
}
//=======================================================================
}
@@ -0,0 +1,85 @@
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using System;
using System.Collections.Generic;
using System.Text;
namespace Sarand.Net.Standard.Base.ItemDocs
{
//=======================================================================
public abstract class SaItemDocConsole : SaErrorStateItem
{
//-------------------------------------------------------------------
// Definitions.
/// <summary>Item document category.</summary>
public enum Category
{
// Do not change values - tied to database.
Unknown = 0,
Folder = 10,
Document = 20,
Pdf = 21,
Image = 30,
FileSpec = 90, /* Generic filename with wildcards */
}
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Static initialisation.
static SaItemDocConsole ()
{
}
//-------------------------------------------------------------------
// Construction.
protected SaItemDocConsole ()
{
}
//-------------------------------------------------------------------
// Properties.
// Database.
public abstract bool DatabaseIsValid { get; }
public abstract bool CanUpdateDatabase { get; }
//-------------------------------------------------------------------
// I t e m D o c s
//-------------------------------------------------------------------
// Category codes.
public abstract List<TypeCodeDesc> GetCategoryCodes ();
/// <summary>eg. for 'Image' documents.</summary>
public abstract List<CodeDesc> GetCategoryTypeCodes (Category category);
//-------------------------------------------------------------------
// 'Recent' and 'Favourite' folders - to populate drop-down list when selecting folder:
/// <summary>How many recent foldes to retain? [default:5]</summary>
public abstract int GetMaxRecentFolderCount ();
/// <summary>List of favourites to always include in dropdown.</summary>
public abstract void SetFavouriteFolders (List<String> folders);
/// <summary>Mix of recent and favourites.</summary>
public abstract List<String> GetSuggestedFolders ();
//-------------------------------------------------------------------
// Retrieve list of docs that match the specified params:
public abstract bool ItemDocsExist (SaItemDoc.Params prmItemDoc);
public abstract List<SaItemDoc> GetItemDocs (SaItemDoc.Params prmItemDoc);
// Create a new document:
public abstract SaItemDoc CreateItemDoc (ItemId itemId, Category category);
// Store documents:
public abstract bool StoreItemDoc (SaItemDoc itemDoc, DbUpdateInfo dbUpdateInfo);
public abstract bool StoreItemDocs (List<SaItemDoc> itemDocs, DbUpdateInfo dbUpdateInfo);
public abstract bool RemoveItemDoc (SaItemDoc itemDoc, DbUpdateInfo dbUpdateInfo);
public abstract bool ClearItemDocs (ItemId itemId, Category category, DbUpdateInfo dbUpdateInfo);
// Auto-assign documents.
// The master items define 'auto-assign' docs for the item's type.
// The 'File part' defines the filename excluding the extension.
// If the extension list is empty, any extension is matched.
public abstract bool AutoAssignDocs (ItemId itemId, List<ItemId> masterItemIds, String filePart, List<String> extension, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,207 @@
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using System;
using System.Collections.Generic;
using System.Text;
namespace Sarand.Net.Standard.Base.ItemDocs
{
//=======================================================================
public abstract class SaItemDocMgr : SacsItemMgr
{
//-------------------------------------------------------------------
// Definitions.
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Static initialisation.
static SaItemDocMgr ()
{
}
//-------------------------------------------------------------------
// Construction.
protected SaItemDocMgr ()
{
}
//-------------------------------------------------------------------
// Properties.
public abstract bool DatabaseIsValid { get; }
public abstract bool CanUpdateDatabase { get; }
//*******************************************************************
// I t e m D o c s
//*******************************************************************
// Utilities.
public abstract bool ItemHasDocs (ItemId itemId, bool ignoreDeleted = true);
public abstract bool ItemHasDocs (ItemId itemId, SaItemDocConsole.Category category, bool ignoreDeleted = true);
//-------------------------------------------------------------------
// Retrieve individual item data entries.
public abstract bool ItemDocExists (SysId id);
public abstract SaItemDoc GetItemDoc (SysId id);
public abstract SaItemDoc GetItemDoc (SaItemDoc.Params prmItemDoc);
// Create Item Data.
public abstract SaItemDoc CreateItemDoc (ItemId itemId, SaItemDocConsole.Category category);
//-------------------------------------------------------------------
// Validate Item Data.
public bool IsValidItemDoc (SaItemDoc itemDoc)
{
ClearErrorState();
if (itemDoc == null) return SetErrorState(ErrorMessage.ItemNotSpecified);
return IsValidItemDocData(itemDoc.GetData(), new SaItemDoc.ErrField());
}
public virtual bool IsValidItemDocData (SaItemDoc.Data itemDocData, SaItemDoc.ErrField errField)
{
ClearErrorState();
if ((int)itemDocData.ItemId.Type < 1)
{
errField.ItemType = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Item type must be supplied");
}
if (!SysId.IsValid(itemDocData.ItemId.Id))
{
errField.ItemId = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Item Id must be supplied");
}
if ((int)itemDocData.Category < 1)
{
errField.Category = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState("Category must be supplied");
}
if (!IsValidValue(itemDocData.DocType, "Doc type", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_Type), true))
{
errField.DocType = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!IsValidValue(itemDocData.DescBrief, "Desciption", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_DescBrief)))
{
errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!IsValidValue(itemDocData.Folder, "Folder", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_Folder)))
{
errField.Folder = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!IsValidValue(itemDocData.Filename, "Filename", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_Filename), true))
{
errField.Filename = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!IsValidValue(itemDocData.MimeType, "Mime", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_MimeType)))
{
errField.MimeType = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
// Common properties.
if (!IsValidValue(itemDocData.Notes, "notes", (long)SaItemDocsDbDfn.GetColTextLen(SaItemDocsDbDfn.ColumnIdx.SaItemDoc_Notes)))
{
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
return false;
}
if (!SaItemDoc.ValidStatuses.Contains(itemDocData.Status))
{
errField.Status = SacsHierarchyItem.ValidValue.Invalid;
return SetErrorState(ErrorMessage.InvalidStatus);
}
return true;
}
//-------------------------------------------------------------------
// Item Data database interface.
public abstract bool InsertItemDoc (SaItemDoc itemDoc, DbUpdateInfo dbUpdateInfo);
public abstract bool UpdateItemDoc (SaItemDoc itemDoc, DbUpdateInfo dbUpdateInfo);
public virtual bool ItemDocCanBeDeleted (SaItemDoc itemDoc)
{
ClearErrorState();
if (!SysId.IsValid(itemDoc.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
return true;
}
public abstract bool DeleteItemDoc (SaItemDoc itemDoc, DbUpdateInfo dbUpdateInfo);
public abstract bool ClearItemDocs (ItemId itemId, DbUpdateInfo dbUpdateInfo);
public abstract bool ClearItemDocs (ItemId itemId, SaItemDocConsole.Category category, DbUpdateInfo dbUpdateInfo);
//-------------------------------------------------------------------
// Item Data list.
public abstract ColumnDfn GetItemDocColumnDfn (SaItemDoc.Column columnId, String caption = "", int width = 0);
public abstract List<String> GetItemDocQueryFilter (SaItemDoc.Params prm);
public abstract long GetItemDocCount (SaItemDoc.Params prm);
public abstract List<SaItemDoc> GetItemDocList (SaItemDoc.Params prm);
public abstract DbResultSet ExecuteItemDocQuery (List<ColumnDfn> columns, SaItemDoc.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 GetItemDocDataValue (ColumnDfn column, NamedValue.Map values)
{
DataValue value = new DataValue();
switch ((SaItemDoc.Column)column.Id)
{
//-----------------------------------------------------------
// Item type.
case SaItemDoc.Column.ItemType_Desc:
{
short itemType = (short)values.GetValue(column.DataName).AsLong();
value = new DataValue(itemType.ToString());
}
break;
//-----------------------------------------------------------
// Category.
case SaItemDoc.Column.Category_Desc:
{
short category = (short)values.GetValue(column.DataName).AsLong();
value = new DataValue(category.ToString());
}
break;
//-----------------------------------------------------------
// Document type.
case SaItemDoc.Column.DocType_Desc:
{
short docType = (short)values.GetValue(column.DataName).AsLong();
value = new DataValue(docType.ToString());
}
break;
//-----------------------------------------------------------
// Notes.
case SaItemDoc.Column.Notes:
{
value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200));
}
break;
//-----------------------------------------------------------
// Status.
case SaItemDoc.Column.Status_Desc:
case SaItemDoc.Column.Status_Ind:
{
String statusCode = values.GetValue(column.DataName).ToString();
SaStatus status = SacsSystem.GetStatusForCode(statusCode);
if (column.Id == (int)SaItemDoc.Column.Status_Desc)
value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode));
else if (column.Id == (int)SaItemDoc.Column.Status_Ind)
value = new DataValue(SaItemDoc.GetStatusTriState(status));
}
break;
//-----------------------------------------------------------
}
return value;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,327 @@
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
//---------------------------------------------------------------------------
// Code generated by Sarand Database Utilities Thu 3-Oct-2019 15:10:54
//---------------------------------------------------------------------------
namespace Sarand.Net.Standard.Base.ItemDocs
{
public class SaItemDocsDbDfn
{
//-------------------------------------------------------------------
// Table identifiers.
public enum TableIdx
{
Unknown = 0,
SaItemDoc,
}
//-------------------------------------------------------------------
// Column identifiers.
public enum ColumnIdx
{
Unknown = 0,
SaItemDoc_Id,
SaItemDoc_ItemType,
SaItemDoc_ItemId,
SaItemDoc_Category,
SaItemDoc_Type,
SaItemDoc_DescBrief,
SaItemDoc_Folder,
SaItemDoc_Filename,
SaItemDoc_MimeType,
SaItemDoc_ItemTypeAutoAssign,
SaItemDoc_Notes,
SaItemDoc_Flags,
SaItemDoc_Status,
SaItemDoc_CreateOn,
SaItemDoc_CreateBy,
SaItemDoc_CreateHost,
SaItemDoc_UpdateOn,
SaItemDoc_UpdateBy,
SaItemDoc_UpdateHost,
}
//-------------------------------------------------------------------
// Data members.
private static readonly int tableCount = 1;
private static readonly int columnCount = 19;
private static ulong maxTextLen = 0;
//-------------------------------------------------------------------
// Retrieve Table details (eg. name: 'Company').
public static int GetTableCount ()
{
return tableCount;
}
public static String GetTableName (TableIdx table, bool delimitReservedWords = true)
{
int tableIdx = (int)table - 1;
if (tableIdx < 0 || tableIdx >= tableCount) return String.Empty;
String tableName = tables[(int)tableIdx];
if (delimitReservedWords) tableName = DelimitReservedWord(tableName);
return tableName;
}
//-------------------------------------------------------------------
// Identify the table that corresponds with the specified column.
public static TableIdx GetTableForColumn (ColumnIdx column)
{
int columnIdx = (int)column - 1;
if (columnIdx < 0 || columnIdx >= columnCount) return TableIdx.Unknown;
return columns[columnIdx].TableIdx;
}
//-------------------------------------------------------------------
// Retrieve the specified Column's name (Qualified include table name: '(<Table>.Column>)').
public static String GetColumnName (ColumnIdx column, bool delimitReservedWords = true)
{
int columnIdx = (int)column - 1;
if (columnIdx < 0 || columnIdx >= columnCount) return String.Empty;
String columnName = columns[columnIdx].Name;
if (delimitReservedWords) columnName = DelimitReservedWord(columnName);
return columnName;
}
public static String GetColumnNameQual (ColumnIdx column, String tableAlias = "", bool braces = false)
{
String columnName = GetColumnName(column);
if (!String.IsNullOrEmpty(columnName))
{
String tableName = StringUtil.EmptyOnNull(tableAlias);
if (tableName.IsEmpty()) tableName = GetTableName(GetTableForColumn(column));
columnName = tableName + (tableName.Length > 0 ? "." : "") + columnName;
if (braces)
columnName = "(" + columnName + ")";
}
return columnName;
}
//-------------------------------------------------------------------
// Reserved words.
private static DbReservedWordDelim reservedWordDelim = DbReservedWordDelim.SquareBrackets;
public static void SetReservedWordDelim (DbReservedWordDelim reservedWordDelim)
{
SaItemDocsDbDfn.reservedWordDelim = reservedWordDelim;
}
public static bool IsReservedWord (String word)
{
if (String.IsNullOrEmpty(word)) return false;
if (reservedWords.Contains(word, StringComparer.OrdinalIgnoreCase)) return true;
return false;
}
public static String DelimitReservedWord (String word)
{
if (!IsReservedWord(word)) return word;
switch (reservedWordDelim)
{
case DbReservedWordDelim.None:
break;
case DbReservedWordDelim.DoubleQuotes:
word = "\"" + word + "\"";
break;
case DbReservedWordDelim.SquareBrackets:
default:
word = "[" + word + "]";
break;
}
return word;
}
//-------------------------------------------------------------------
// Retrieve information about the specified Column.
public static DbColumnDataType GetColDataType (ColumnIdx column)
{
int columnIdx = (int)column - 1;
if (columnIdx < 0 || columnIdx >= columnCount) return DbColumnDataType.Unknown;
return columns[columnIdx].DataType;
}
public static short GetColNativeDataType (ColumnIdx column)
{
int columnIdx = (int)column - 1;
if (columnIdx < 0 || columnIdx >= columnCount) return 0;
return columns[columnIdx].NativeDataType;
}
public static void SetMaxTextLen (ulong maxTextLen)
{
SaItemDocsDbDfn.maxTextLen = maxTextLen;
}
public static bool IsColFmtText (ColumnIdx column)
{
int columnIdx = (int)column - 1;
if (columnIdx < 0 || columnIdx >= columnCount) return false;
return (columns[columnIdx].DataType == DbColumnDataType.VarChar);
}
public static ulong GetColTextLen (ColumnIdx column)
{
int columnIdx = (int)column - 1;
if (columnIdx < 0 || columnIdx >= columnCount) return 0;
if (columns[columnIdx].DataType == DbColumnDataType.VarChar)
{
ulong textLen = columns[columnIdx].DataLen;
if (maxTextLen > 0 && textLen > maxTextLen) textLen = maxTextLen;
return textLen;
}
return 0;
}
public static bool IsColFmtBool (ColumnIdx column)
{
int columnIdx = (int)column - 1;
if (columnIdx < 0 || columnIdx >= columnCount) return false;
return (columns[columnIdx].DataType == DbColumnDataType.Bit);
}
public static bool IsColFmtNumeric (ColumnIdx column)
{
int columnIdx = (int)column - 1;
if (columnIdx < 0 || columnIdx >= columnCount) return false;
switch (columns[columnIdx].DataType)
{
case DbColumnDataType.TinyInt:
case DbColumnDataType.SmallInt:
case DbColumnDataType.Int:
case DbColumnDataType.BigInt:
case DbColumnDataType.Single:
case DbColumnDataType.Double:
case DbColumnDataType.Decimal:
return true;
}
return false;
}
//-------------------------------------------------------------------
// Table definitions.
private static readonly String[] tables =
{
"SaItemDoc",
};
//-------------------------------------------------------------------
// Table column definitions.
internal class ColumnDfn
{
internal TableIdx TableIdx { get; set; }
internal String Name { get; set; }
internal DbColumnDataType DataType { get; set; }
internal short NativeDataType { get; set; }
internal bool IsIdentity { get; set; }
internal ulong DataLen { get; set; }
internal ColumnDfn (int tableIdx, String name, int dataType, short nativeDataType, bool isIdentity, ulong dataLen)
{
this.TableIdx = (TableIdx)tableIdx;
this.Name = name;
this.DataType = (DbColumnDataType)dataType;
this.NativeDataType = nativeDataType;
this.IsIdentity = isIdentity;
this.DataLen = dataLen;
}
}
//-------------------------------------------------------------------
private static readonly ColumnDfn[] columns =
{
new ColumnDfn(1,"Id",4,4,false,10),
new ColumnDfn(1,"ItemType",3,5,false,5),
new ColumnDfn(1,"ItemId",4,4,false,10),
new ColumnDfn(1,"Category",3,5,false,5),
new ColumnDfn(1,"Type",0,-9,false,16),
new ColumnDfn(1,"DescBrief",0,-9,false,64),
new ColumnDfn(1,"Folder",0,-9,false,255),
new ColumnDfn(1,"Filename",0,-9,false,255),
new ColumnDfn(1,"MimeType",0,-9,false,32),
new ColumnDfn(1,"ItemTypeAutoAssign",3,5,false,5),
new ColumnDfn(1,"Notes",0,-9,false,255),
new ColumnDfn(1,"Flags",3,5,false,5),
new ColumnDfn(1,"Status",0,-9,false,3),
new ColumnDfn(1,"CreateOn",9,93,false,23),
new ColumnDfn(1,"CreateBy",4,4,false,10),
new ColumnDfn(1,"CreateHost",0,-9,false,64),
new ColumnDfn(1,"UpdateOn",9,93,false,23),
new ColumnDfn(1,"UpdateBy",4,4,false,10),
new ColumnDfn(1,"UpdateHost",0,-9,false,64),
};
//-------------------------------------------------------------------
// Reserved words.
private static readonly List<String> reservedWords = new List<String>()
{
"ADD",
"ALL",
"ALTER",
"AND",
"ANY",
"AS",
"ASC",
"AVG",
"BEGIN",
"BETWEEN",
"BY",
"CASE",
"CAST",
"COLUMN",
"COMMIT",
"CONSTRAINT",
"CONVERT",
"COUNT",
"CREATE",
"CURRENCY",
"DEFAULT",
"DELETE",
"DESC",
"DISTINCT",
"DROP",
"ELSE",
"END",
"EXECUTE",
"EXISTS",
"FALSE",
"FROM",
"GRANT",
"GROUP",
"HAVING",
"IN",
"INDEX",
"INNER",
"INSERT",
"INTO",
"IS",
"JOIN",
"KEY",
"LEFT",
"LIKE",
"MAX",
"MIN",
"NOT",
"NULL",
"ON",
"OR",
"ORDER",
"OUTER",
"OUTPUT",
"PRIMARY",
"PROCEDURE",
"REVOKE",
"ROLLBACK",
"ROWCOUNT",
"SELECT",
"SET",
"SQL",
"SUM",
"TABLE",
"THEN",
"TRANSACTION",
"TRUE",
"UNION",
"UNIQUE",
"UPDATE",
"USER",
"VALUES",
"VIEW",
"WHEN",
"WHERE",
};
//-------------------------------------------------------------------
}
}