diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/DocVersion.cs b/PROMS/VEPROMS.CSLA.Library/Generated/DocVersion.cs index ff3397f4..0e01a189 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/DocVersion.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/DocVersion.cs @@ -32,15 +32,24 @@ namespace VEPROMS.CSLA.Library #endregion #region Refresh private List _RefreshDocVersions = new List(); - private void AddToRefreshList(List refreshDocVersions) + private List _RefreshDocVersionAssociations = new List(); + private void AddToRefreshList(List refreshDocVersions, List refreshDocVersionAssociations) { if (IsDirty) refreshDocVersions.Add(this); + if (_DocVersionAssociations != null && _DocVersionAssociations.IsDirty) + { + foreach (DocVersionAssociation tmp in _DocVersionAssociations) + { + if (tmp.IsDirty) refreshDocVersionAssociations.Add(tmp); + } + } } private void BuildRefreshList() { _RefreshDocVersions = new List(); - AddToRefreshList(_RefreshDocVersions); + _RefreshDocVersionAssociations = new List(); + AddToRefreshList(_RefreshDocVersions, _RefreshDocVersionAssociations); } private void ProcessRefreshList() { @@ -51,6 +60,10 @@ namespace VEPROMS.CSLA.Library if (tmp._MyFormat != null) FormatInfo.Refresh(tmp._MyFormat); if (tmp._MyItem != null) ItemInfo.Refresh(tmp._MyItem); } + foreach (DocVersionAssociation tmp in _RefreshDocVersionAssociations) + { + AssociationInfo.Refresh(tmp); + } } #endregion #region Collection @@ -335,13 +348,50 @@ namespace VEPROMS.CSLA.Library } } private byte[] _LastChanged = new byte[8];//timestamp + private int _DocVersionAssociationCount = 0; + /// + /// Count of DocVersionAssociations for this DocVersion + /// + public int DocVersionAssociationCount + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("DocVersionAssociationCount", true); + return _DocVersionAssociationCount; + } + } + private DocVersionAssociations _DocVersionAssociations = null; + /// + /// Related Field + /// + [TypeConverter(typeof(DocVersionAssociationsConverter))] + public DocVersionAssociations DocVersionAssociations + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("DocVersionAssociations", true); + if (_DocVersionAssociationCount < 0 || (_DocVersionAssociationCount > 0 && _DocVersionAssociations == null)) + _DocVersionAssociations = DocVersionAssociations.GetByVersionID(VersionID); + if (_DocVersionAssociationCount < 0 ) + _DocVersionAssociationCount = _DocVersionAssociations == null ? 0 : _DocVersionAssociations.Count; + if (_DocVersionAssociations == null) + _DocVersionAssociations = DocVersionAssociations.New(); + return _DocVersionAssociations; + } + } + public void Reset_DocVersionAssociations() + { + _DocVersionAssociationCount = -1; + } public override bool IsDirty { - get { return base.IsDirty || (_MyFolder == null ? false : _MyFolder.IsDirty) || (_MyFormat == null ? false : _MyFormat.IsDirty) || (_MyItem == null ? false : _MyItem.IsDirty); } + get { return base.IsDirty || (_DocVersionAssociations == null ? false : _DocVersionAssociations.IsDirty) || (_MyFolder == null ? false : _MyFolder.IsDirty) || (_MyFormat == null ? false : _MyFormat.IsDirty) || (_MyItem == null ? false : _MyItem.IsDirty); } } public override bool IsValid { - get { return (IsNew && !IsDirty ? true : base.IsValid) && (_MyFolder == null ? true : _MyFolder.IsValid) && (_MyFormat == null ? true : _MyFormat.IsValid) && (_MyItem == null ? true : _MyItem.IsValid); } + get { return true;} // (IsNew && !IsDirty ? true : base.IsValid) && (_DocVersionAssociations == null ? true : _DocVersionAssociations.IsValid) && (_MyFolder == null ? true : _MyFolder.IsValid) && (_MyFormat == null ? true : _MyFormat.IsValid) && (_MyItem == null ? true : _MyItem.IsValid); } } // TODO: Replace base DocVersion.ToString function as necessary /// @@ -375,6 +425,7 @@ namespace VEPROMS.CSLA.Library { _CheckingBrokenRules = true; IVEHasBrokenRules hasBrokenRules = null; + if (_DocVersionAssociations != null && (hasBrokenRules = _DocVersionAssociations.HasBrokenRules) != null) return hasBrokenRules; if (_MyFolder != null && (hasBrokenRules = _MyFolder.HasBrokenRules) != null) return hasBrokenRules; if (_MyItem != null && (hasBrokenRules = _MyItem.HasBrokenRules) != null) return hasBrokenRules; if (_MyFormat != null && (hasBrokenRules = _MyFormat.HasBrokenRules) != null) return hasBrokenRules; @@ -494,6 +545,19 @@ namespace VEPROMS.CSLA.Library //return result; return true; } + /// + /// determines if related records (Foreign Keys) will keep this Item from being deleted + /// + public bool CanDelete + { + get + { + // Check to make sure that there are not any related records + int usedByCount = 0; + usedByCount += _DocVersionAssociationCount; + return (usedByCount == 0); + } + } public static bool CanEditObject() { // TODO: CanEdit Authorization @@ -723,6 +787,7 @@ namespace VEPROMS.CSLA.Library _DTS = dr.GetDateTime("DTS"); _UserID = dr.GetString("UserID"); dr.GetBytes("LastChanged", 0, _LastChanged, 0, 8); + _DocVersionAssociationCount = dr.GetInt32("AssociationCount"); MarkOld(); } catch (Exception ex) @@ -753,6 +818,9 @@ namespace VEPROMS.CSLA.Library return; } ReadData(dr); + // load child objects + dr.NextResult(); + _DocVersionAssociations = DocVersionAssociations.Get(dr); } } // removing of item only needed for local data portal @@ -831,6 +899,7 @@ namespace VEPROMS.CSLA.Library } MarkOld(); // update child objects + if (_DocVersionAssociations != null) _DocVersionAssociations.Update(this); if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] DocVersion.SQLInsert", GetHashCode()); } catch (Exception ex) @@ -944,6 +1013,7 @@ namespace VEPROMS.CSLA.Library } MarkOld(); // use the open connection to update child objects + if (_DocVersionAssociations != null) _DocVersionAssociations.Update(this); } catch (Exception ex) { @@ -964,6 +1034,7 @@ namespace VEPROMS.CSLA.Library _LastChanged = DocVersion.Update(cn, ref _VersionID, _MyFolder, _VersionType, _Name, _Title, _MyItem, _MyFormat, _Config, _DTS, _UserID, ref _LastChanged); MarkOld(); } + if (_DocVersionAssociations != null) _DocVersionAssociations.Update(this); } [Transactional(TransactionalTypes.TransactionScope)] public static byte[] Update(SqlConnection cn, ref int versionID, Folder myFolder, int versionType, string name, string title, Item myItem, Format myFormat, string config, DateTime dts, string userID, ref byte[] lastChanged) diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/DocVersionAssociation.cs b/PROMS/VEPROMS.CSLA.Library/Generated/DocVersionAssociation.cs new file mode 100644 index 00000000..8f5ad9f2 --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Generated/DocVersionAssociation.cs @@ -0,0 +1,526 @@ +// ======================================================================== +// Copyright 2007 - Volian Enterprises, Inc. All rights reserved. +// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE +// ------------------------------------------------------------------------ +// $Workfile: $ $Revision: $ +// $Author: $ $Date: $ +// +// $History: $ +// ======================================================================== + +using System; +using System.Data; +using System.Data.SqlClient; +using Csla; +using Csla.Data; +using System.Configuration; +using System.IO; +using System.ComponentModel; +using Csla.Validation; +namespace VEPROMS.CSLA.Library +{ + /// + /// DocVersionAssociation Generated by MyGeneration using the CSLA Object Mapping template + /// + [Serializable()] + [TypeConverter(typeof(DocVersionAssociationConverter))] + public partial class DocVersionAssociation : BusinessBase, IVEHasBrokenRules + { + #region Log4Net + private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + #endregion + #region Business Methods + private string _ErrorMessage = string.Empty; + public string ErrorMessage + { + get { return _ErrorMessage; } + } + private int _AssociationID; + [System.ComponentModel.DataObjectField(true, true)] + public int AssociationID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("AssociationID", true); + if (_MyAssociation != null) _AssociationID = _MyAssociation.AssociationID; + return _AssociationID; + } + } + private Association _MyAssociation; + [System.ComponentModel.DataObjectField(true, true)] + public Association MyAssociation + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("MyAssociation", true); + if (_MyAssociation == null && _AssociationID != 0) _MyAssociation = Association.Get(_AssociationID); + return _MyAssociation; + } + } + private int _ROFstID; + public int ROFstID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ROFstID", true); + if (_MyROFst != null) _ROFstID = _MyROFst.ROFstID; + return _ROFstID; + } + } + private ROFst _MyROFst; + public ROFst MyROFst + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("MyROFst", true); + if (_MyROFst == null && _ROFstID != 0) _MyROFst = ROFst.Get(_ROFstID); + return _MyROFst; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("MyROFst", true); + if (_MyROFst != value) + { + _MyROFst = value; + PropertyHasChanged(); + } + } + } + private string _Config = string.Empty; + public string Config + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("Config", true); + return _Config; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("Config", true); + if (value == null) value = string.Empty; + if (_Config != value) + { + _Config = value; + PropertyHasChanged(); + } + } + } + private DateTime _DTS = new DateTime(); + public DateTime DTS + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("DTS", true); + return _DTS; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("DTS", true); + if (_DTS != value) + { + _DTS = value; + PropertyHasChanged(); + } + } + } + private string _UserID = string.Empty; + public string UserID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("UserID", true); + return _UserID; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("UserID", true); + if (value == null) value = string.Empty; + if (_UserID != value) + { + _UserID = value; + PropertyHasChanged(); + } + } + } + private byte[] _LastChanged = new byte[8];//timestamp + private int _ROFst_RODbID; + public int ROFst_RODbID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ROFst_RODbID", true); + return _ROFst_RODbID; + } + } + private byte[] _ROFst_ROLookup; + public byte[] ROFst_ROLookup + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ROFst_ROLookup", true); + return _ROFst_ROLookup; + } + } + private string _ROFst_Config = string.Empty; + public string ROFst_Config + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ROFst_Config", true); + return _ROFst_Config; + } + } + private DateTime _ROFst_DTS = new DateTime(); + public DateTime ROFst_DTS + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ROFst_DTS", true); + return _ROFst_DTS; + } + } + private string _ROFst_UserID = string.Empty; + public string ROFst_UserID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ROFst_UserID", true); + return _ROFst_UserID; + } + } + // TODO: Check DocVersionAssociation.GetIdValue to assure that the ID returned is unique + /// + /// Overrides Base GetIdValue - Used internally by CSLA to determine equality + /// + /// A Unique ID for the current DocVersionAssociation + protected override object GetIdValue() + { + return _AssociationID; + } + // TODO: Replace base DocVersionAssociation.ToString function as necessary + /// + /// Overrides Base ToString + /// + /// A string representation of current DocVersionAssociation + //public override string ToString() + //{ + // return base.ToString(); + //} + public override bool IsDirty + { + get { return base.IsDirty || (_MyROFst == null ? false : _MyROFst.IsDirty); } + } + public override bool IsValid + { + get { return (IsNew && !IsDirty ? true : base.IsValid) && (_MyROFst == null ? true : _MyROFst.IsValid); } + } + #endregion + #region ValidationRules + [NonSerialized] + private bool _CheckingBrokenRules = false; + public IVEHasBrokenRules HasBrokenRules + { + get + { + if (_CheckingBrokenRules) return null; + if (BrokenRulesCollection.Count > 0) return this; + try + { + _CheckingBrokenRules = true; + IVEHasBrokenRules hasBrokenRules = null; + if (_MyROFst != null && (hasBrokenRules = _MyROFst.HasBrokenRules) != null) return hasBrokenRules; + return hasBrokenRules; + } + finally + { + _CheckingBrokenRules = false; + } + } + } + public BrokenRulesCollection BrokenRules + { + get + { + IVEHasBrokenRules hasBrokenRules = HasBrokenRules; + if (this.Equals(hasBrokenRules)) return BrokenRulesCollection; + return (hasBrokenRules != null ? hasBrokenRules.BrokenRules : null); + } + } + protected override void AddBusinessRules() + { + ValidationRules.AddRule(MyROFstRequired, "MyROFst"); + ValidationRules.AddRule( + Csla.Validation.CommonRules.StringMaxLength, + new Csla.Validation.CommonRules.MaxLengthRuleArgs("Config", 1073741823)); + ValidationRules.AddRule( + Csla.Validation.CommonRules.StringRequired, "UserID"); + ValidationRules.AddRule( + Csla.Validation.CommonRules.StringMaxLength, + new Csla.Validation.CommonRules.MaxLengthRuleArgs("UserID", 100)); + // TODO: Add other validation rules + } + private static bool MyROFstRequired(DocVersionAssociation target, Csla.Validation.RuleArgs e) + { + if (target._ROFstID == 0 && target._MyROFst == null) // Required field missing + { + e.Description = "Required"; + return false; + } + return true; + } + // Sample data comparison validation rule + //private bool StartDateGTEndDate(object target, Csla.Validation.RuleArgs e) + //{ + // if (_started > _ended) + // { + // e.Description = "Start date can't be after end date"; + // return false; + // } + // else + // return true; + //} + #endregion + #region Authorization Rules + protected override void AddAuthorizationRules() + { + //TODO: Who can read/write which fields + //AuthorizationRules.AllowRead(AssociationID, ""); + //AuthorizationRules.AllowRead(ROFstID, ""); + //AuthorizationRules.AllowWrite(ROFstID, ""); + //AuthorizationRules.AllowRead(Config, ""); + //AuthorizationRules.AllowWrite(Config, ""); + //AuthorizationRules.AllowRead(DTS, ""); + //AuthorizationRules.AllowWrite(DTS, ""); + //AuthorizationRules.AllowRead(UserID, ""); + //AuthorizationRules.AllowWrite(UserID, ""); + } + public static bool CanAddObject() + { + // TODO: Can Add Authorization + //return Csla.ApplicationContext.User.IsInRole("ProjectManager"); + return true; + } + public static bool CanGetObject() + { + // TODO: CanGet Authorization + return true; + } + public static bool CanDeleteObject() + { + // TODO: CanDelete Authorization + //bool result = false; + //if (Csla.ApplicationContext.User.IsInRole("ProjectManager"))result = true; + //if (Csla.ApplicationContext.User.IsInRole("Administrator"))result = true; + //return result; + return true; + } + public static bool CanEditObject() + { + // TODO: CanEdit Authorization + //return Csla.ApplicationContext.User.IsInRole("ProjectManager"); + return true; + } + #endregion + #region Factory Methods + public int CurrentEditLevel + { get { return EditLevel; } } + internal static DocVersionAssociation New(ROFst myROFst) + { + return new DocVersionAssociation(myROFst); + } + internal static DocVersionAssociation Get(SafeDataReader dr) + { + return new DocVersionAssociation(dr); + } + public DocVersionAssociation() + { + MarkAsChild(); + _AssociationID = Association.NextAssociationID; + _DTS = _DocVersionAssociationExtension.DefaultDTS; + _UserID = _DocVersionAssociationExtension.DefaultUserID; + ValidationRules.CheckRules(); + } + private DocVersionAssociation(ROFst myROFst) + { + MarkAsChild(); + // TODO: Add any initialization & defaults + _DTS = _DocVersionAssociationExtension.DefaultDTS; + _UserID = _DocVersionAssociationExtension.DefaultUserID; + _MyROFst = myROFst; + ValidationRules.CheckRules(); + } + internal DocVersionAssociation(SafeDataReader dr) + { + MarkAsChild(); + Fetch(dr); + } + #endregion + #region Data Access Portal + private void Fetch(SafeDataReader dr) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] DocVersionAssociation.FetchDR", GetHashCode()); + try + { + _AssociationID = dr.GetInt32("AssociationID"); + _ROFstID = dr.GetInt32("ROFstID"); + _Config = dr.GetString("Config"); + _DTS = dr.GetDateTime("DTS"); + _UserID = dr.GetString("UserID"); + dr.GetBytes("LastChanged", 0, _LastChanged, 0, 8); + _ROFst_RODbID = dr.GetInt32("ROFst_RODbID"); + _ROFst_ROLookup = (byte[])dr.GetValue("ROFst_ROLookup"); + _ROFst_Config = dr.GetString("ROFst_Config"); + _ROFst_DTS = dr.GetDateTime("ROFst_DTS"); + _ROFst_UserID = dr.GetString("ROFst_UserID"); + } + catch (Exception ex) // FKItem Fetch + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("DocVersionAssociation.FetchDR", ex); + throw new DbCslaException("DocVersionAssociation.Fetch", ex); + } + MarkOld(); + } + internal void Insert(DocVersion myDocVersion) + { + // if we're not dirty then don't update the database + if (!this.IsDirty) return; + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + _LastChanged = Association.Add(cn, ref _AssociationID, myDocVersion, _MyROFst, _Config, _DTS, _UserID); + MarkOld(); + } + internal void Update(DocVersion myDocVersion) + { + // if we're not dirty then don't update the database + if (!this.IsDirty) return; + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + _LastChanged = Association.Update(cn, ref _AssociationID, myDocVersion, _MyROFst, _Config, _DTS, _UserID, ref _LastChanged); + MarkOld(); + } + internal void DeleteSelf(DocVersion myDocVersion) + { + // if we're not dirty then don't update the database + if (!this.IsDirty) return; + // if we're new then don't update the database + if (this.IsNew) return; + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + Association.Remove(cn, _AssociationID); + MarkNew(); + } + #endregion + // Standard Default Code + #region extension + DocVersionAssociationExtension _DocVersionAssociationExtension = new DocVersionAssociationExtension(); + [Serializable()] + partial class DocVersionAssociationExtension : extensionBase + { + } + [Serializable()] + class extensionBase + { + // Default Values + public virtual DateTime DefaultDTS + { + get { return DateTime.Now; } + } + public virtual string DefaultUserID + { + get { return Environment.UserName.ToUpper(); } + } + // Authorization Rules + public virtual void AddAuthorizationRules(Csla.Security.AuthorizationRules rules) + { + // Needs to be overriden to add new authorization rules + } + // Instance Authorization Rules + public virtual void AddInstanceAuthorizationRules(Csla.Security.AuthorizationRules rules) + { + // Needs to be overriden to add new authorization rules + } + // Validation Rules + public virtual void AddValidationRules(Csla.Validation.ValidationRules rules) + { + // Needs to be overriden to add new validation rules + } + // InstanceValidation Rules + public virtual void AddInstanceValidationRules(Csla.Validation.ValidationRules rules) + { + // Needs to be overriden to add new validation rules + } + } + #endregion + } // Class + #region Converter + internal class DocVersionAssociationConverter : ExpandableObjectConverter + { + public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType) + { + if (destType == typeof(string) && value is DocVersionAssociation) + { + // Return the ToString value + return ((DocVersionAssociation)value).ToString(); + } + return base.ConvertTo(context, culture, value, destType); + } + } + #endregion +} // Namespace + + +//// The following is a sample Extension File. You can use it to create DocVersionAssociationExt.cs +//using System; +//using System.Collections.Generic; +//using System.Text; +//using Csla; + +//namespace VEPROMS.CSLA.Library +//{ +// public partial class DocVersionAssociation +// { +// partial class DocVersionAssociationExtension : extensionBase +// { +// // TODO: Override automatic defaults +// public virtual DateTime DefaultDTS +// { +// get { return DateTime.Now; } +// } +// public virtual string DefaultUserID +// { +// get { return Environment.UserName.ToUpper(); } +// } +// public new void AddAuthorizationRules(Csla.Security.AuthorizationRules rules) +// { +// //rules.AllowRead(Dbid, ""); +// } +// public new void AddInstanceAuthorizationRules(Csla.Security.AuthorizationRules rules) +// { +// //rules.AllowInstanceRead(Dbid, ""); +// } +// public new void AddValidationRules(Csla.Validation.ValidationRules rules) +// { +// rules.AddRule( +// Csla.Validation.CommonRules.StringMaxLength, +// new Csla.Validation.CommonRules.MaxLengthRuleArgs("Name", 100)); +// } +// public new void AddInstanceValidationRules(Csla.Validation.ValidationRules rules) +// { +// rules.AddInstanceRule(/* Instance Validation Rule */); +// } +// } +// } +//} diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/DocVersionAssociations.cs b/PROMS/VEPROMS.CSLA.Library/Generated/DocVersionAssociations.cs new file mode 100644 index 00000000..18d8cac9 --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Generated/DocVersionAssociations.cs @@ -0,0 +1,309 @@ +// ======================================================================== +// Copyright 2007 - Volian Enterprises, Inc. All rights reserved. +// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE +// ------------------------------------------------------------------------ +// $Workfile: $ $Revision: $ +// $Author: $ $Date: $ +// +// $History: $ +// ======================================================================== + +using System; +using System.Data; +using System.Data.SqlClient; +using Csla; +using Csla.Data; +using System.Configuration; +using System.IO; +using System.ComponentModel; +using Csla.Validation; +namespace VEPROMS.CSLA.Library +{ + /// + /// DocVersionAssociations Generated by MyGeneration using the CSLA Object Mapping template + /// + [Serializable()] + [TypeConverter(typeof(DocVersionAssociationsConverter))] + public partial class DocVersionAssociations : BusinessListBase, ICustomTypeDescriptor, IVEHasBrokenRules + { + #region Log4Net + private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + #endregion + #region Business Methods + private string _ErrorMessage = string.Empty; + public string ErrorMessage + { + get { return _ErrorMessage; } + } + // One To Many + public DocVersionAssociation this[Association myAssociation] + { + get + { + foreach (DocVersionAssociation association in this) + if (association.AssociationID == myAssociation.AssociationID) + return association; + return null; + } + } + public new System.Collections.Generic.IList Items + { + get { return base.Items; } + } + public DocVersionAssociation GetItem(Association myAssociation) + { + foreach (DocVersionAssociation association in this) + if (association.AssociationID == myAssociation.AssociationID) + return association; + return null; + } + public DocVersionAssociation Add(ROFst myROFst) // One to Many with unique fields + { + if (!Contains(myROFst)) + { + DocVersionAssociation association = DocVersionAssociation.New(myROFst); + this.Add(association); + return association; + } + else + throw new InvalidOperationException("association already exists"); + } + public void Remove(Association myAssociation) + { + foreach (DocVersionAssociation association in this) + { + if (association.AssociationID == myAssociation.AssociationID) + { + Remove(association); + break; + } + } + } + public bool Contains(Association myAssociation) + { + foreach (DocVersionAssociation association in this) + if (association.AssociationID == myAssociation.AssociationID) + return true; + return false; + } + public bool ContainsDeleted(Association myAssociation) + { + foreach (DocVersionAssociation association in DeletedList) + if (association.AssociationID == myAssociation.AssociationID) + return true; + return false; + } + public bool Contains(ROFst myROFst) + { + foreach (DocVersionAssociation association in this) + if (association.ROFstID == myROFst.ROFstID) + return true; + return false; + } + public bool ContainsDeleted(ROFst myROFst) + { + foreach (DocVersionAssociation association in DeletedList) + if (association.ROFstID == myROFst.ROFstID) + return true; + return false; + } + #endregion + #region ValidationRules + public IVEHasBrokenRules HasBrokenRules + { + get + { + IVEHasBrokenRules hasBrokenRules = null; + foreach (DocVersionAssociation docVersionAssociation in this) + if ((hasBrokenRules = docVersionAssociation.HasBrokenRules) != null) return hasBrokenRules; + return hasBrokenRules; + } + } + public BrokenRulesCollection BrokenRules + { + get + { + IVEHasBrokenRules hasBrokenRules = HasBrokenRules; + return (hasBrokenRules != null ? hasBrokenRules.BrokenRules : null); + } + } + #endregion + #region Factory Methods + internal static DocVersionAssociations New() + { + return new DocVersionAssociations(); + } + internal static DocVersionAssociations Get(SafeDataReader dr) + { + return new DocVersionAssociations(dr); + } + public static DocVersionAssociations GetByVersionID(int versionID) + { + try + { + return DataPortal.Fetch(new VersionIDCriteria(versionID)); + } + catch (Exception ex) + { + throw new DbCslaException("Error on DocVersionAssociations.GetByVersionID", ex); + } + } + private DocVersionAssociations() + { + MarkAsChild(); + } + internal DocVersionAssociations(SafeDataReader dr) + { + MarkAsChild(); + Fetch(dr); + } + #endregion + #region Data Access Portal + // called to load data from the database + private void Fetch(SafeDataReader dr) + { + this.RaiseListChangedEvents = false; + while (dr.Read()) + this.Add(DocVersionAssociation.Get(dr)); + this.RaiseListChangedEvents = true; + } + [Serializable()] + private class VersionIDCriteria + { + public VersionIDCriteria(int versionID) + { + _VersionID = versionID; + } + private int _VersionID; + public int VersionID + { + get { return _VersionID; } + set { _VersionID = value; } + } + } + private void DataPortal_Fetch(VersionIDCriteria criteria) + { + this.RaiseListChangedEvents = false; + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] DocVersionAssociations.DataPortal_FetchVersionID", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getAssociationsByVersionID"; + cm.Parameters.AddWithValue("@VersionID", criteria.VersionID); + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + while (dr.Read()) this.Add(new DocVersionAssociation(dr)); + } + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("DocVersionAssociations.DataPortal_FetchVersionID", ex); + throw new DbCslaException("DocVersionAssociations.DataPortal_Fetch", ex); + } + this.RaiseListChangedEvents = true; + } + internal void Update(DocVersion docVersion) + { + this.RaiseListChangedEvents = false; + try + { + // update (thus deleting) any deleted child objects + foreach (DocVersionAssociation obj in DeletedList) + obj.DeleteSelf(docVersion);// Deletes related record + // now that they are deleted, remove them from memory too + DeletedList.Clear(); + // add/update any current child objects + foreach (DocVersionAssociation obj in this) + { + if (obj.IsNew) + obj.Insert(docVersion); + else + obj.Update(docVersion); + } + } + finally + { + this.RaiseListChangedEvents = true; + } + } + #endregion + #region ICustomTypeDescriptor impl + public String GetClassName() + { return TypeDescriptor.GetClassName(this, true); } + public AttributeCollection GetAttributes() + { return TypeDescriptor.GetAttributes(this, true); } + public String GetComponentName() + { return TypeDescriptor.GetComponentName(this, true); } + public TypeConverter GetConverter() + { return TypeDescriptor.GetConverter(this, true); } + public EventDescriptor GetDefaultEvent() + { return TypeDescriptor.GetDefaultEvent(this, true); } + public PropertyDescriptor GetDefaultProperty() + { return TypeDescriptor.GetDefaultProperty(this, true); } + public object GetEditor(Type editorBaseType) + { return TypeDescriptor.GetEditor(this, editorBaseType, true); } + public EventDescriptorCollection GetEvents(Attribute[] attributes) + { return TypeDescriptor.GetEvents(this, attributes, true); } + public EventDescriptorCollection GetEvents() + { return TypeDescriptor.GetEvents(this, true); } + public object GetPropertyOwner(PropertyDescriptor pd) + { return this; } + /// + /// Called to get the properties of this type. Returns properties with certain + /// attributes. this restriction is not implemented here. + /// + /// + /// + public PropertyDescriptorCollection GetProperties(Attribute[] attributes) + { return GetProperties(); } + /// + /// Called to get the properties of this type. + /// + /// + public PropertyDescriptorCollection GetProperties() + { + // Create a collection object to hold property descriptors + PropertyDescriptorCollection pds = new PropertyDescriptorCollection(null); + // Iterate the list + for (int i = 0; i < this.Items.Count; i++) + { + // Create a property descriptor for the item and add to the property descriptor collection + DocVersionAssociationsPropertyDescriptor pd = new DocVersionAssociationsPropertyDescriptor(this, i); + pds.Add(pd); + } + // return the property descriptor collection + return pds; + } + #endregion + } // Class + #region Property Descriptor + /// + /// Summary description for CollectionPropertyDescriptor. + /// + public partial class DocVersionAssociationsPropertyDescriptor : vlnListPropertyDescriptor + { + private DocVersionAssociation Item { get { return (DocVersionAssociation)_Item; } } + public DocVersionAssociationsPropertyDescriptor(DocVersionAssociations collection, int index) : base(collection, index) { ;} + } + #endregion + #region Converter + internal class DocVersionAssociationsConverter : ExpandableObjectConverter + { + public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType) + { + if (destType == typeof(string) && value is DocVersionAssociations) + { + // Return department and department role separated by comma. + return ((DocVersionAssociations)value).Items.Count.ToString() + " Associations"; + } + return base.ConvertTo(context, culture, value, destType); + } + } + #endregion +} // Namespace diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/DocVersionInfo.cs b/PROMS/VEPROMS.CSLA.Library/Generated/DocVersionInfo.cs index 8c0cdd25..3a7ffa36 100644 --- a/PROMS/VEPROMS.CSLA.Library/Generated/DocVersionInfo.cs +++ b/PROMS/VEPROMS.CSLA.Library/Generated/DocVersionInfo.cs @@ -230,6 +230,41 @@ namespace VEPROMS.CSLA.Library return _UserID; } } + private int _DocVersionAssociationCount = 0; + /// + /// Count of DocVersionAssociations for this DocVersion + /// + public int DocVersionAssociationCount + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("DocVersionAssociationCount", true); + return _DocVersionAssociationCount; + } + } + private AssociationInfoList _DocVersionAssociations = null; + [TypeConverter(typeof(AssociationInfoListConverter))] + public AssociationInfoList DocVersionAssociations + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("DocVersionAssociations", true); + if (_DocVersionAssociationCount < 0 || (_DocVersionAssociationCount > 0 && _DocVersionAssociations == null)) + _DocVersionAssociations = AssociationInfoList.GetByVersionID(_VersionID); + if (_DocVersionAssociationCount < 0) + _DocVersionAssociationCount = _DocVersionAssociations.Count; + return _DocVersionAssociations; + } + } + public void RefreshDocVersionAssociations() + { + ConvertListToDictionary(); + if (_CacheByPrimaryKey.ContainsKey(_VersionID.ToString())) + foreach (DocVersionInfo tmp in _CacheByPrimaryKey[_VersionID.ToString()]) + tmp._DocVersionAssociationCount = -1; // This will cause the data to be requeried + } // TODO: Replace base DocVersionInfo.ToString function as necessary /// /// Overrides Base ToString @@ -537,6 +572,7 @@ namespace VEPROMS.CSLA.Library _Config = dr.GetString("Config"); _DTS = dr.GetDateTime("DTS"); _UserID = dr.GetString("UserID"); + _DocVersionAssociationCount = dr.GetInt32("AssociationCount"); } catch (Exception ex) { diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/Figure.cs b/PROMS/VEPROMS.CSLA.Library/Generated/Figure.cs new file mode 100644 index 00000000..9849a97f --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Generated/Figure.cs @@ -0,0 +1,1171 @@ +// ======================================================================== +// Copyright 2007 - Volian Enterprises, Inc. All rights reserved. +// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE +// ------------------------------------------------------------------------ +// $Workfile: $ $Revision: $ +// $Author: $ $Date: $ +// +// $History: $ +// ======================================================================== + +using System; +using System.Data; +using System.Data.SqlClient; +using Csla; +using Csla.Data; +using System.Configuration; +using System.IO; +using System.ComponentModel; +using System.Collections.Generic; +using Csla.Validation; +namespace VEPROMS.CSLA.Library +{ + /// + /// Figure Generated by MyGeneration using the CSLA Object Mapping template + /// + [Serializable()] + [TypeConverter(typeof(FigureConverter))] + public partial class Figure : BusinessBase
, IDisposable, IVEHasBrokenRules + { + #region Log4Net + private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + #endregion + #region Refresh + private List
_RefreshFigures = new List
(); + private void AddToRefreshList(List
refreshFigures) + { + if (IsDirty) + refreshFigures.Add(this); + } + private void BuildRefreshList() + { + _RefreshFigures = new List
(); + AddToRefreshList(_RefreshFigures); + } + private void ProcessRefreshList() + { + foreach (Figure tmp in _RefreshFigures) + { + FigureInfo.Refresh(tmp); + if (tmp._MyROFst != null) ROFstInfo.Refresh(tmp._MyROFst); + if (tmp._MyROImage != null) ROImageInfo.Refresh(tmp._MyROImage); + } + } + #endregion + #region Collection + private static List
_CacheList = new List
(); + protected static void AddToCache(Figure figure) + { + if (!_CacheList.Contains(figure)) _CacheList.Add(figure); // In AddToCache + } + protected static void RemoveFromCache(Figure figure) + { + while (_CacheList.Contains(figure)) _CacheList.Remove(figure); // In RemoveFromCache + } + private static Dictionary> _CacheByPrimaryKey = new Dictionary>(); + private static Dictionary> _CacheByROFstID_ImageID = new Dictionary>(); + private static void ConvertListToDictionary() + { + List
remove = new List
(); + foreach (Figure tmp in _CacheList) + { + if (!_CacheByPrimaryKey.ContainsKey(tmp.FigureID.ToString())) + { + _CacheByPrimaryKey[tmp.FigureID.ToString()] = new List
(); // Add new list for PrimaryKey + _CacheByROFstID_ImageID[tmp.ROFstID.ToString() + "_" + tmp.ImageID.ToString()] = new List
(); // Add new list for ROFstID_ImageID + } + _CacheByPrimaryKey[tmp.FigureID.ToString()].Add(tmp); // Add to Primary Key list + _CacheByROFstID_ImageID[tmp.ROFstID.ToString() + "_" + tmp.ImageID.ToString()].Add(tmp); // Unique Index + remove.Add(tmp); + } + foreach (Figure tmp in remove) + RemoveFromCache(tmp); + } + protected static Figure GetCachedByPrimaryKey(int figureID) + { + ConvertListToDictionary(); + string key = figureID.ToString(); + if (_CacheByPrimaryKey.ContainsKey(key)) return _CacheByPrimaryKey[key][0]; + return null; + } + protected static Figure GetCachedByROFstID_ImageID(int rOFstID, int imageID) + { + ConvertListToDictionary(); + string key = rOFstID.ToString() + "_" + imageID.ToString(); + if (_CacheByROFstID_ImageID.ContainsKey(key)) return _CacheByROFstID_ImageID[key][0]; + return null; + } + #endregion + #region Business Methods + private string _ErrorMessage = string.Empty; + public string ErrorMessage + { + get { return _ErrorMessage; } + } + private static int _nextFigureID = -1; + public static int NextFigureID + { + get { return _nextFigureID--; } + } + private int _FigureID; + [System.ComponentModel.DataObjectField(true, true)] + public int FigureID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("FigureID", true); + return _FigureID; + } + } + private int _ROFstID; + public int ROFstID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ROFstID", true); + if (_MyROFst != null) _ROFstID = _MyROFst.ROFstID; + return _ROFstID; + } + } + private ROFst _MyROFst; + public ROFst MyROFst + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("MyROFst", true); + if (_MyROFst == null && _ROFstID != 0) _MyROFst = ROFst.Get(_ROFstID); + return _MyROFst; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("MyROFst", true); + if (_MyROFst != value) + { + _MyROFst = value; + PropertyHasChanged(); + } + } + } + private int _ImageID; + public int ImageID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ImageID", true); + if (_MyROImage != null) _ImageID = _MyROImage.ImageID; + return _ImageID; + } + } + private ROImage _MyROImage; + public ROImage MyROImage + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("MyROImage", true); + if (_MyROImage == null && _ImageID != 0) _MyROImage = ROImage.Get(_ImageID); + return _MyROImage; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("MyROImage", true); + if (_MyROImage != value) + { + _MyROImage = value; + PropertyHasChanged(); + } + } + } + private string _Config = string.Empty; + public string Config + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("Config", true); + return _Config; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("Config", true); + if (value == null) value = string.Empty; + if (_Config != value) + { + _Config = value; + PropertyHasChanged(); + } + } + } + private DateTime _DTS = new DateTime(); + public DateTime DTS + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("DTS", true); + return _DTS; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("DTS", true); + if (_DTS != value) + { + _DTS = value; + PropertyHasChanged(); + } + } + } + private string _UserID = string.Empty; + public string UserID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("UserID", true); + return _UserID; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("UserID", true); + if (value == null) value = string.Empty; + if (_UserID != value) + { + _UserID = value; + PropertyHasChanged(); + } + } + } + private byte[] _LastChanged = new byte[8];//timestamp + public override bool IsDirty + { + get { return base.IsDirty || (_MyROFst == null ? false : _MyROFst.IsDirty) || (_MyROImage == null ? false : _MyROImage.IsDirty); } + } + public override bool IsValid + { + get { return (IsNew && !IsDirty ? true : base.IsValid) && (_MyROFst == null ? true : _MyROFst.IsValid) && (_MyROImage == null ? true : _MyROImage.IsValid); } + } + // TODO: Replace base Figure.ToString function as necessary + /// + /// Overrides Base ToString + /// + /// A string representation of current Figure + //public override string ToString() + //{ + // return base.ToString(); + //} + // TODO: Check Figure.GetIdValue to assure that the ID returned is unique + /// + /// Overrides Base GetIdValue - Used internally by CSLA to determine equality + /// + /// A Unique ID for the current Figure + protected override object GetIdValue() + { + return _FigureID; + } + #endregion + #region ValidationRules + [NonSerialized] + private bool _CheckingBrokenRules = false; + public IVEHasBrokenRules HasBrokenRules + { + get + { + if (_CheckingBrokenRules) return null; + if ((IsDirty || !IsNew) && BrokenRulesCollection.Count > 0) return this; + try + { + _CheckingBrokenRules = true; + IVEHasBrokenRules hasBrokenRules = null; + if (_MyROFst != null && (hasBrokenRules = _MyROFst.HasBrokenRules) != null) return hasBrokenRules; + if (_MyROImage != null && (hasBrokenRules = _MyROImage.HasBrokenRules) != null) return hasBrokenRules; + return hasBrokenRules; + } + finally + { + _CheckingBrokenRules = false; + } + } + } + public BrokenRulesCollection BrokenRules + { + get + { + IVEHasBrokenRules hasBrokenRules = HasBrokenRules; + if (this.Equals(hasBrokenRules)) return BrokenRulesCollection; + return (hasBrokenRules != null ? hasBrokenRules.BrokenRules : null); + } + } + protected override void AddBusinessRules() + { + ValidationRules.AddRule
(MyROFstRequired, "MyROFst"); + ValidationRules.AddRule
(MyROImageRequired, "MyROImage"); + ValidationRules.AddRule( + Csla.Validation.CommonRules.StringMaxLength, + new Csla.Validation.CommonRules.MaxLengthRuleArgs("Config", 1073741823)); + ValidationRules.AddRule( + Csla.Validation.CommonRules.StringRequired, "UserID"); + ValidationRules.AddRule( + Csla.Validation.CommonRules.StringMaxLength, + new Csla.Validation.CommonRules.MaxLengthRuleArgs("UserID", 100)); + //ValidationRules.AddDependantProperty("x", "y"); + _FigureExtension.AddValidationRules(ValidationRules); + // TODO: Add other validation rules + } + protected override void AddInstanceBusinessRules() + { + _FigureExtension.AddInstanceValidationRules(ValidationRules); + // TODO: Add other validation rules + } + private static bool MyROFstRequired(Figure target, Csla.Validation.RuleArgs e) + { + if (target._ROFstID == 0 && target._MyROFst == null) // Required field missing + { + e.Description = "Required"; + return false; + } + return true; + } + private static bool MyROImageRequired(Figure target, Csla.Validation.RuleArgs e) + { + if (target._ImageID == 0 && target._MyROImage == null) // Required field missing + { + e.Description = "Required"; + return false; + } + return true; + } + // Sample data comparison validation rule + //private bool StartDateGTEndDate(object target, Csla.Validation.RuleArgs e) + //{ + // if (_started > _ended) + // { + // e.Description = "Start date can't be after end date"; + // return false; + // } + // else + // return true; + //} + #endregion + #region Authorization Rules + protected override void AddAuthorizationRules() + { + //TODO: Who can read/write which fields + //AuthorizationRules.AllowRead(FigureID, ""); + //AuthorizationRules.AllowRead(ROFstID, ""); + //AuthorizationRules.AllowRead(ImageID, ""); + //AuthorizationRules.AllowRead(Config, ""); + //AuthorizationRules.AllowRead(DTS, ""); + //AuthorizationRules.AllowRead(UserID, ""); + //AuthorizationRules.AllowWrite(ROFstID, ""); + //AuthorizationRules.AllowWrite(ImageID, ""); + //AuthorizationRules.AllowWrite(Config, ""); + //AuthorizationRules.AllowWrite(DTS, ""); + //AuthorizationRules.AllowWrite(UserID, ""); + _FigureExtension.AddAuthorizationRules(AuthorizationRules); + } + protected override void AddInstanceAuthorizationRules() + { + //TODO: Who can read/write which fields + _FigureExtension.AddInstanceAuthorizationRules(AuthorizationRules); + } + public static bool CanAddObject() + { + // TODO: Can Add Authorization + //return Csla.ApplicationContext.User.IsInRole("ProjectManager"); + return true; + } + public static bool CanGetObject() + { + // TODO: CanGet Authorization + return true; + } + public static bool CanDeleteObject() + { + // TODO: CanDelete Authorization + //bool result = false; + //if (Csla.ApplicationContext.User.IsInRole("ProjectManager"))result = true; + //if (Csla.ApplicationContext.User.IsInRole("Administrator"))result = true; + //return result; + return true; + } + public static bool CanEditObject() + { + // TODO: CanEdit Authorization + //return Csla.ApplicationContext.User.IsInRole("ProjectManager"); + return true; + } + #endregion + #region Factory Methods + public int CurrentEditLevel + { get { return EditLevel; } } + private static int _FigureUnique = 0; + protected static int FigureUnique + { get { return ++_FigureUnique; } } + private int _MyFigureUnique = FigureUnique; + public int MyFigureUnique + { get { return _MyFigureUnique; } } + protected Figure() + {/* require use of factory methods */ + AddToCache(this); + } + public void Dispose() + { + RemoveFromDictionaries(); + } + private void RemoveFromDictionaries() + { + RemoveFromCache(this); + if (_CacheByPrimaryKey.ContainsKey(FigureID.ToString())) + { + List
listFigure = _CacheByPrimaryKey[FigureID.ToString()]; // Get the list of items + while (listFigure.Contains(this)) listFigure.Remove(this); // Remove the item from the list + if (listFigure.Count == 0) //If there are no items left in the list + _CacheByPrimaryKey.Remove(FigureID.ToString()); // remove the list + } + string myKey; + myKey = null; + foreach (string key in _CacheByROFstID_ImageID.Keys) + if (_CacheByROFstID_ImageID[key].Contains(this)) + myKey = key; + if (myKey != null) + { + List
listFigure = _CacheByROFstID_ImageID[myKey]; // Get the list of items + listFigure.Remove(this); // Remove the item from the list + if (listFigure.Count == 0) //If there are no items left in the list + _CacheByROFstID_ImageID.Remove(myKey); // remove the list + } + } + public static Figure New() + { + if (!CanAddObject()) + throw new System.Security.SecurityException("User not authorized to add a Figure"); + try + { + return DataPortal.Create
(); + } + catch (Exception ex) + { + throw new DbCslaException("Error on Figure.New", ex); + } + } + public static Figure New(ROFst myROFst, ROImage myROImage) + { + Figure tmp = Figure.New(); + tmp.MyROFst = myROFst; + tmp.MyROImage = myROImage; + return tmp; + } + public static Figure New(ROFst myROFst, ROImage myROImage, string config, DateTime dts, string userID) + { + Figure tmp = Figure.New(); + tmp.MyROFst = myROFst; + tmp.MyROImage = myROImage; + tmp.Config = config; + tmp.DTS = dts; + tmp.UserID = userID; + return tmp; + } + public static Figure MakeFigure(ROFst myROFst, ROImage myROImage, string config, DateTime dts, string userID) + { + Figure tmp = Figure.New(myROFst, myROImage, config, dts, userID); + if (tmp.IsSavable) + { + Figure tmp2 = tmp; + tmp = tmp2.Save(); + tmp2.Dispose(); + } + else + { + Csla.Validation.BrokenRulesCollection brc = tmp.ValidationRules.GetBrokenRules(); + tmp._ErrorMessage = "Failed Validation:"; + foreach (Csla.Validation.BrokenRule br in brc) + { + tmp._ErrorMessage += "\r\n\tFailure: " + br.RuleName; + } + } + return tmp; + } + public static Figure New(ROFst myROFst, ROImage myROImage, string config) + { + Figure tmp = Figure.New(); + tmp.MyROFst = myROFst; + tmp.MyROImage = myROImage; + tmp.Config = config; + return tmp; + } + public static Figure MakeFigure(ROFst myROFst, ROImage myROImage, string config) + { + Figure tmp = Figure.New(myROFst, myROImage, config); + if (tmp.IsSavable) + { + Figure tmp2 = tmp; + tmp = tmp2.Save(); + tmp2.Dispose(); + } + else + { + Csla.Validation.BrokenRulesCollection brc = tmp.ValidationRules.GetBrokenRules(); + tmp._ErrorMessage = "Failed Validation:"; + foreach (Csla.Validation.BrokenRule br in brc) + { + tmp._ErrorMessage += "\r\n\tFailure: " + br.RuleName; + } + } + return tmp; + } + public static Figure Get(int figureID) + { + if (!CanGetObject()) + throw new System.Security.SecurityException("User not authorized to view a Figure"); + try + { + Figure tmp = GetCachedByPrimaryKey(figureID); + if (tmp == null) + { + tmp = DataPortal.Fetch
(new PKCriteria(figureID)); + AddToCache(tmp); + } + if (tmp.ErrorMessage == "No Record Found") + { + tmp.Dispose(); // Clean-up Figure + tmp = null; + } + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on Figure.Get", ex); + } + } + public static Figure GetByROFstID_ImageID(int rOFstID, int imageID) + { + if (!CanGetObject()) + throw new System.Security.SecurityException("User not authorized to view a Figure"); + try + { + Figure tmp = GetCachedByROFstID_ImageID(rOFstID, imageID); + if (tmp == null) + { + tmp = DataPortal.Fetch
(new ROFstID_ImageIDCriteria(rOFstID, imageID)); + AddToCache(tmp); + } + if (tmp.ErrorMessage == "No Record Found") + { + tmp.Dispose(); // Clean-up Figure + tmp = null; + } + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on Figure.GetByROFstID_ImageID", ex); + } + } + public static Figure Get(SafeDataReader dr) + { + if (dr.Read()) return new Figure(dr); + return null; + } + internal Figure(SafeDataReader dr) + { + ReadData(dr); + } + public static void Delete(int figureID) + { + if (!CanDeleteObject()) + throw new System.Security.SecurityException("User not authorized to remove a Figure"); + try + { + DataPortal.Delete(new PKCriteria(figureID)); + } + catch (Exception ex) + { + throw new DbCslaException("Error on Figure.Delete", ex); + } + } + public override Figure Save() + { + if (IsDeleted && !CanDeleteObject()) + throw new System.Security.SecurityException("User not authorized to remove a Figure"); + else if (IsNew && !CanAddObject()) + throw new System.Security.SecurityException("User not authorized to add a Figure"); + else if (!CanEditObject()) + throw new System.Security.SecurityException("User not authorized to update a Figure"); + try + { + BuildRefreshList(); + Figure figure = base.Save(); + RemoveFromDictionaries(); // if save is successful remove the previous Folder from the cache + AddToCache(figure);//Refresh the item in AllList + ProcessRefreshList(); + return figure; + } + catch (Exception ex) + { + throw new DbCslaException("Error on CSLA Save", ex); + } + } + #endregion + #region Data Access Portal + [Serializable()] + protected class PKCriteria + { + private int _FigureID; + public int FigureID + { get { return _FigureID; } } + public PKCriteria(int figureID) + { + _FigureID = figureID; + } + } + [Serializable()] + private class ROFstID_ImageIDCriteria + { + private int _ROFstID; + public int ROFstID + { get { return _ROFstID; } } + private int _ImageID; + public int ImageID + { get { return _ImageID; } } + public ROFstID_ImageIDCriteria(int rOFstID, int imageID) + { + _ROFstID = rOFstID; + _ImageID = imageID; + } + } + // TODO: If Create needs to access DB - It should not be marked RunLocal + [RunLocal()] + private new void DataPortal_Create() + { + _FigureID = NextFigureID; + // Database Defaults + _DTS = _FigureExtension.DefaultDTS; + _UserID = _FigureExtension.DefaultUserID; + // TODO: Add any defaults that are necessary + ValidationRules.CheckRules(); + } + private void ReadData(SafeDataReader dr) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.ReadData", GetHashCode()); + try + { + _FigureID = dr.GetInt32("FigureID"); + _ROFstID = dr.GetInt32("ROFstID"); + _ImageID = dr.GetInt32("ImageID"); + _Config = dr.GetString("Config"); + _DTS = dr.GetDateTime("DTS"); + _UserID = dr.GetString("UserID"); + dr.GetBytes("LastChanged", 0, _LastChanged, 0, 8); + MarkOld(); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.ReadData", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Figure.ReadData", ex); + } + } + private void DataPortal_Fetch(PKCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.DataPortal_Fetch", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + ApplicationContext.LocalContext["cn"] = cn; + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getFigure"; + cm.Parameters.AddWithValue("@FigureID", criteria.FigureID); + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + if (!dr.Read()) + { + _ErrorMessage = "No Record Found"; + return; + } + ReadData(dr); + } + } + // removing of item only needed for local data portal + if (ApplicationContext.ExecutionLocation == ApplicationContext.ExecutionLocations.Client) + ApplicationContext.LocalContext.Remove("cn"); + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.DataPortal_Fetch", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Figure.DataPortal_Fetch", ex); + } + } + private void DataPortal_Fetch(ROFstID_ImageIDCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.DataPortal_Fetch", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + ApplicationContext.LocalContext["cn"] = cn; + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getFigureByROFstID_ImageID"; + cm.Parameters.AddWithValue("@ROFstID", criteria.ROFstID); + cm.Parameters.AddWithValue("@ImageID", criteria.ImageID); + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + if (!dr.Read()) + { + _ErrorMessage = "No Record Found"; + return; + } + ReadData(dr); + } + } + // removing of item only needed for local data portal + if (ApplicationContext.ExecutionLocation == ApplicationContext.ExecutionLocations.Client) + ApplicationContext.LocalContext.Remove("cn"); + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.DataPortal_Fetch", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Figure.DataPortal_Fetch", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + protected override void DataPortal_Insert() + { + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + ApplicationContext.LocalContext["cn"] = cn; + SQLInsert(); + // removing of item only needed for local data portal + if (ApplicationContext.ExecutionLocation == ApplicationContext.ExecutionLocations.Client) + ApplicationContext.LocalContext.Remove("cn"); + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.DataPortal_Insert", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Figure.DataPortal_Insert", ex); + } + finally + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.DataPortal_Insert", GetHashCode()); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + internal void SQLInsert() + { + if (!this.IsDirty) return; + try + { + if (_MyROFst != null) _MyROFst.Update(); + if (_MyROImage != null) _MyROImage.Update(); + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "addFigure"; + // Input All Fields - Except Calculated Columns + cm.Parameters.AddWithValue("@ROFstID", ROFstID); + cm.Parameters.AddWithValue("@ImageID", ImageID); + cm.Parameters.AddWithValue("@Config", _Config); + if (_DTS.Year >= 1753 && _DTS.Year <= 9999) cm.Parameters.AddWithValue("@DTS", _DTS); + cm.Parameters.AddWithValue("@UserID", _UserID); + // Output Calculated Columns + SqlParameter param_FigureID = new SqlParameter("@newFigureID", SqlDbType.Int); + param_FigureID.Direction = ParameterDirection.Output; + cm.Parameters.Add(param_FigureID); + SqlParameter param_LastChanged = new SqlParameter("@newLastChanged", SqlDbType.Timestamp); + param_LastChanged.Direction = ParameterDirection.Output; + cm.Parameters.Add(param_LastChanged); + // TODO: Define any additional output parameters + cm.ExecuteNonQuery(); + // Save all values being returned from the Procedure + _FigureID = (int)cm.Parameters["@newFigureID"].Value; + _LastChanged = (byte[])cm.Parameters["@newLastChanged"].Value; + } + MarkOld(); + // update child objects + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.SQLInsert", GetHashCode()); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.SQLInsert", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Figure.SQLInsert", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + public static byte[] Add(SqlConnection cn, ref int figureID, ROFst myROFst, ROImage myROImage, string config, DateTime dts, string userID) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.Add", 0); + try + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "addFigure"; + // Input All Fields - Except Calculated Columns + cm.Parameters.AddWithValue("@ROFstID", myROFst.ROFstID); + cm.Parameters.AddWithValue("@ImageID", myROImage.ImageID); + cm.Parameters.AddWithValue("@Config", config); + if (dts.Year >= 1753 && dts.Year <= 9999) cm.Parameters.AddWithValue("@DTS", dts); + cm.Parameters.AddWithValue("@UserID", userID); + // Output Calculated Columns + SqlParameter param_FigureID = new SqlParameter("@newFigureID", SqlDbType.Int); + param_FigureID.Direction = ParameterDirection.Output; + cm.Parameters.Add(param_FigureID); + SqlParameter param_LastChanged = new SqlParameter("@newLastChanged", SqlDbType.Timestamp); + param_LastChanged.Direction = ParameterDirection.Output; + cm.Parameters.Add(param_LastChanged); + // TODO: Define any additional output parameters + cm.ExecuteNonQuery(); + // Save all values being returned from the Procedure + figureID = (int)cm.Parameters["@newFigureID"].Value; + return (byte[])cm.Parameters["@newLastChanged"].Value; + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.Add", ex); + throw new DbCslaException("Figure.Add", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + protected override void DataPortal_Update() + { + if (!IsDirty) return; // If not dirty - nothing to do + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.DataPortal_Update", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + ApplicationContext.LocalContext["cn"] = cn; + SQLUpdate(); + // removing of item only needed for local data portal + if (ApplicationContext.ExecutionLocation == ApplicationContext.ExecutionLocations.Client) + ApplicationContext.LocalContext.Remove("cn"); + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.DataPortal_Update", ex); + _ErrorMessage = ex.Message; + if (!ex.Message.EndsWith("has been edited by another user.")) throw ex; + } + } + [Transactional(TransactionalTypes.TransactionScope)] + internal void SQLUpdate() + { + if (!IsDirty) return; // If not dirty - nothing to do + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.SQLUpdate", GetHashCode()); + try + { + if (_MyROFst != null) _MyROFst.Update(); + if (_MyROImage != null) _MyROImage.Update(); + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + if (base.IsDirty) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "updateFigure"; + // All Fields including Calculated Fields + cm.Parameters.AddWithValue("@FigureID", _FigureID); + cm.Parameters.AddWithValue("@ROFstID", ROFstID); + cm.Parameters.AddWithValue("@ImageID", ImageID); + cm.Parameters.AddWithValue("@Config", _Config); + if (_DTS.Year >= 1753 && _DTS.Year <= 9999) cm.Parameters.AddWithValue("@DTS", _DTS); + cm.Parameters.AddWithValue("@UserID", _UserID); + cm.Parameters.AddWithValue("@LastChanged", _LastChanged); + // Output Calculated Columns + SqlParameter param_LastChanged = new SqlParameter("@newLastChanged", SqlDbType.Timestamp); + param_LastChanged.Direction = ParameterDirection.Output; + cm.Parameters.Add(param_LastChanged); + // TODO: Define any additional output parameters + cm.ExecuteNonQuery(); + // Save all values being returned from the Procedure + _LastChanged = (byte[])cm.Parameters["@newLastChanged"].Value; + } + } + MarkOld(); + // use the open connection to update child objects + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.SQLUpdate", ex); + _ErrorMessage = ex.Message; + if (!ex.Message.EndsWith("has been edited by another user.")) throw ex; + } + } + internal void Update() + { + if (!this.IsDirty) return; + if (base.IsDirty) + { + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + if (IsNew) + _LastChanged = Figure.Add(cn, ref _FigureID, _MyROFst, _MyROImage, _Config, _DTS, _UserID); + else + _LastChanged = Figure.Update(cn, ref _FigureID, _MyROFst, _MyROImage, _Config, _DTS, _UserID, ref _LastChanged); + MarkOld(); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + public static byte[] Update(SqlConnection cn, ref int figureID, ROFst myROFst, ROImage myROImage, string config, DateTime dts, string userID, ref byte[] lastChanged) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.Update", 0); + try + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "updateFigure"; + // Input All Fields - Except Calculated Columns + cm.Parameters.AddWithValue("@FigureID", figureID); + cm.Parameters.AddWithValue("@ROFstID", myROFst.ROFstID); + cm.Parameters.AddWithValue("@ImageID", myROImage.ImageID); + cm.Parameters.AddWithValue("@Config", config); + if (dts.Year >= 1753 && dts.Year <= 9999) cm.Parameters.AddWithValue("@DTS", dts); + cm.Parameters.AddWithValue("@UserID", userID); + cm.Parameters.AddWithValue("@LastChanged", lastChanged); + // Output Calculated Columns + SqlParameter param_LastChanged = new SqlParameter("@newLastChanged", SqlDbType.Timestamp); + param_LastChanged.Direction = ParameterDirection.Output; + cm.Parameters.Add(param_LastChanged); + // TODO: Define any additional output parameters + cm.ExecuteNonQuery(); + // Save all values being returned from the Procedure + return (byte[])cm.Parameters["@newLastChanged"].Value; + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.Update", ex); + throw new DbCslaException("Figure.Update", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + protected override void DataPortal_DeleteSelf() + { + DataPortal_Delete(new PKCriteria(_FigureID)); + } + [Transactional(TransactionalTypes.TransactionScope)] + private void DataPortal_Delete(PKCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.DataPortal_Delete", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "deleteFigure"; + cm.Parameters.AddWithValue("@FigureID", criteria.FigureID); + cm.ExecuteNonQuery(); + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.DataPortal_Delete", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Figure.DataPortal_Delete", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + public static void Remove(SqlConnection cn, int figureID) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.Remove", 0); + try + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "deleteFigure"; + // Input PK Fields + cm.Parameters.AddWithValue("@FigureID", figureID); + // TODO: Define any additional output parameters + cm.ExecuteNonQuery(); + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.Remove", ex); + throw new DbCslaException("Figure.Remove", ex); + } + } + #endregion + #region Exists + public static bool Exists(int figureID) + { + ExistsCommand result; + try + { + result = DataPortal.Execute(new ExistsCommand(figureID)); + return result.Exists; + } + catch (Exception ex) + { + throw new DbCslaException("Error on Figure.Exists", ex); + } + } + [Serializable()] + private class ExistsCommand : CommandBase + { + private int _FigureID; + private bool _exists; + public bool Exists + { + get { return _exists; } + } + public ExistsCommand(int figureID) + { + _FigureID = figureID; + } + protected override void DataPortal_Execute() + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Figure.DataPortal_Execute", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + cn.Open(); + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "existsFigure"; + cm.Parameters.AddWithValue("@FigureID", _FigureID); + int count = (int)cm.ExecuteScalar(); + _exists = (count > 0); + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Figure.DataPortal_Execute", ex); + throw new DbCslaException("Figure.DataPortal_Execute", ex); + } + } + } + #endregion + // Standard Default Code + #region extension + FigureExtension _FigureExtension = new FigureExtension(); + [Serializable()] + partial class FigureExtension : extensionBase + { + } + [Serializable()] + class extensionBase + { + // Default Values + public virtual DateTime DefaultDTS + { + get { return DateTime.Now; } + } + public virtual string DefaultUserID + { + get { return Environment.UserName.ToUpper(); } + } + // Authorization Rules + public virtual void AddAuthorizationRules(Csla.Security.AuthorizationRules rules) + { + // Needs to be overriden to add new authorization rules + } + // Instance Authorization Rules + public virtual void AddInstanceAuthorizationRules(Csla.Security.AuthorizationRules rules) + { + // Needs to be overriden to add new authorization rules + } + // Validation Rules + public virtual void AddValidationRules(Csla.Validation.ValidationRules rules) + { + // Needs to be overriden to add new validation rules + } + // InstanceValidation Rules + public virtual void AddInstanceValidationRules(Csla.Validation.ValidationRules rules) + { + // Needs to be overriden to add new validation rules + } + } + #endregion + } // Class + #region Converter + internal class FigureConverter : ExpandableObjectConverter + { + public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType) + { + if (destType == typeof(string) && value is Figure) + { + // Return the ToString value + return ((Figure)value).ToString(); + } + return base.ConvertTo(context, culture, value, destType); + } + } + #endregion +} // Namespace + + +//// The following is a sample Extension File. You can use it to create FigureExt.cs +//using System; +//using System.Collections.Generic; +//using System.Text; +//using Csla; + +//namespace VEPROMS.CSLA.Library +//{ +// public partial class Figure +// { +// partial class FigureExtension : extensionBase +// { +// // TODO: Override automatic defaults +// public virtual DateTime DefaultDTS +// { +// get { return DateTime.Now; } +// } +// public virtual string DefaultUserID +// { +// get { return Environment.UserName.ToUpper(); } +// } +// public new void AddAuthorizationRules(Csla.Security.AuthorizationRules rules) +// { +// //rules.AllowRead(Dbid, ""); +// } +// public new void AddInstanceAuthorizationRules(Csla.Security.AuthorizationRules rules) +// { +// //rules.AllowInstanceRead(Dbid, ""); +// } +// public new void AddValidationRules(Csla.Validation.ValidationRules rules) +// { +// rules.AddRule( +// Csla.Validation.CommonRules.StringMaxLength, +// new Csla.Validation.CommonRules.MaxLengthRuleArgs("Name", 100)); +// } +// public new void AddInstanceValidationRules(Csla.Validation.ValidationRules rules) +// { +// rules.AddInstanceRule(/* Instance Validation Rule */); +// } +// } +// } +//} diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/FigureInfo.cs b/PROMS/VEPROMS.CSLA.Library/Generated/FigureInfo.cs new file mode 100644 index 00000000..e3d744e1 --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Generated/FigureInfo.cs @@ -0,0 +1,459 @@ +// ======================================================================== +// Copyright 2007 - Volian Enterprises, Inc. All rights reserved. +// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE +// ------------------------------------------------------------------------ +// $Workfile: $ $Revision: $ +// $Author: $ $Date: $ +// +// $History: $ +// ======================================================================== + +using System; +using System.Data; +using System.Data.SqlClient; +using Csla; +using Csla.Data; +using System.Configuration; +using System.IO; +using System.ComponentModel; +using System.Collections.Generic; +namespace VEPROMS.CSLA.Library +{ + public delegate void FigureInfoEvent(object sender); + /// + /// FigureInfo Generated by MyGeneration using the CSLA Object Mapping template + /// + [Serializable()] + [TypeConverter(typeof(FigureInfoConverter))] + public partial class FigureInfo : ReadOnlyBase, IDisposable + { + public event FigureInfoEvent Changed; + private void OnChange() + { + if (Changed != null) Changed(this); + } + #region Log4Net + private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + #endregion + #region Collection + private static List _CacheList = new List(); + protected static void AddToCache(FigureInfo figureInfo) + { + if (!_CacheList.Contains(figureInfo)) _CacheList.Add(figureInfo); // In AddToCache + } + protected static void RemoveFromCache(FigureInfo figureInfo) + { + while (_CacheList.Contains(figureInfo)) _CacheList.Remove(figureInfo); // In RemoveFromCache + } + private static Dictionary> _CacheByPrimaryKey = new Dictionary>(); + private static void ConvertListToDictionary() + { + List remove = new List(); + foreach (FigureInfo tmp in _CacheList) + { + if (!_CacheByPrimaryKey.ContainsKey(tmp.FigureID.ToString())) + { + _CacheByPrimaryKey[tmp.FigureID.ToString()] = new List(); // Add new list for PrimaryKey + } + _CacheByPrimaryKey[tmp.FigureID.ToString()].Add(tmp); // Add to Primary Key list + remove.Add(tmp); + } + foreach (FigureInfo tmp in remove) + RemoveFromCache(tmp); + } + internal static void AddList(FigureInfoList lst) + { + foreach (FigureInfo item in lst) AddToCache(item); + } + protected static FigureInfo GetCachedByPrimaryKey(int figureID) + { + ConvertListToDictionary(); + string key = figureID.ToString(); + if (_CacheByPrimaryKey.ContainsKey(key)) return _CacheByPrimaryKey[key][0]; + return null; + } + #endregion + #region Business Methods + private string _ErrorMessage = string.Empty; + public string ErrorMessage + { + get { return _ErrorMessage; } + } + protected Figure _Editable; + private IVEHasBrokenRules HasBrokenRules + { + get + { + IVEHasBrokenRules hasBrokenRules = null; + if (_Editable != null) + hasBrokenRules = _Editable.HasBrokenRules; + return hasBrokenRules; + } + } + private int _FigureID; + [System.ComponentModel.DataObjectField(true, true)] + public int FigureID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("FigureID", true); + return _FigureID; + } + } + private int _ROFstID; + public int ROFstID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ROFstID", true); + if (_MyROFst != null) _ROFstID = _MyROFst.ROFstID; + return _ROFstID; + } + } + private ROFstInfo _MyROFst; + public ROFstInfo MyROFst + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("MyROFst", true); + if (_MyROFst == null && _ROFstID != 0) _MyROFst = ROFstInfo.Get(_ROFstID); + return _MyROFst; + } + } + private int _ImageID; + public int ImageID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ImageID", true); + if (_MyROImage != null) _ImageID = _MyROImage.ImageID; + return _ImageID; + } + } + private ROImageInfo _MyROImage; + public ROImageInfo MyROImage + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("MyROImage", true); + if (_MyROImage == null && _ImageID != 0) _MyROImage = ROImageInfo.Get(_ImageID); + return _MyROImage; + } + } + private string _Config = string.Empty; + public string Config + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("Config", true); + return _Config; + } + } + private DateTime _DTS = new DateTime(); + public DateTime DTS + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("DTS", true); + return _DTS; + } + } + private string _UserID = string.Empty; + public string UserID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("UserID", true); + return _UserID; + } + } + // TODO: Replace base FigureInfo.ToString function as necessary + /// + /// Overrides Base ToString + /// + /// A string representation of current FigureInfo + //public override string ToString() + //{ + // return base.ToString(); + //} + // TODO: Check FigureInfo.GetIdValue to assure that the ID returned is unique + /// + /// Overrides Base GetIdValue - Used internally by CSLA to determine equality + /// + /// A Unique ID for the current FigureInfo + protected override object GetIdValue() + { + return _FigureID; + } + #endregion + #region Factory Methods + private static int _FigureInfoUnique = 0; + private static int FigureInfoUnique + { get { return ++_FigureInfoUnique; } } + private int _MyFigureInfoUnique = FigureInfoUnique; + public int MyFigureInfoUnique + { get { return _MyFigureInfoUnique; } } + protected FigureInfo() + {/* require use of factory methods */ + AddToCache(this); + } + public void Dispose() + { + RemoveFromCache(this); + if (!_CacheByPrimaryKey.ContainsKey(FigureID.ToString())) return; + List listFigureInfo = _CacheByPrimaryKey[FigureID.ToString()]; // Get the list of items + while (listFigureInfo.Contains(this)) listFigureInfo.Remove(this); // Remove the item from the list + if (listFigureInfo.Count == 0) // If there are no items left in the list + _CacheByPrimaryKey.Remove(FigureID.ToString()); // remove the list + } + public virtual Figure Get() + { + return _Editable = Figure.Get(_FigureID); + } + public static void Refresh(Figure tmp) + { + string key = tmp.FigureID.ToString(); + ConvertListToDictionary(); + if (_CacheByPrimaryKey.ContainsKey(key)) + foreach (FigureInfo tmpInfo in _CacheByPrimaryKey[key]) + tmpInfo.RefreshFields(tmp); + } + protected virtual void RefreshFields(Figure tmp) + { + if (_ROFstID != tmp.ROFstID) + { + if (MyROFst != null) MyROFst.RefreshROFstFigures(); // Update List for old value + _ROFstID = tmp.ROFstID; // Update the value + } + _MyROFst = null; // Reset list so that the next line gets a new list + if (MyROFst != null) MyROFst.RefreshROFstFigures(); // Update List for new value + if (_ImageID != tmp.ImageID) + { + if (MyROImage != null) MyROImage.RefreshROImageFigures(); // Update List for old value + _ImageID = tmp.ImageID; // Update the value + } + _MyROImage = null; // Reset list so that the next line gets a new list + if (MyROImage != null) MyROImage.RefreshROImageFigures(); // Update List for new value + _Config = tmp.Config; + _DTS = tmp.DTS; + _UserID = tmp.UserID; + _FigureInfoExtension.Refresh(this); + if(_MyROFst != null) + { + _MyROFst.Dispose();// Dispose related value + _MyROFst = null;// Reset related value + } + if(_MyROImage != null) + { + _MyROImage.Dispose();// Dispose related value + _MyROImage = null;// Reset related value + } + OnChange();// raise an event + } + public static void Refresh(ROFstFigure tmp) + { + string key = tmp.FigureID.ToString(); + ConvertListToDictionary(); + if (_CacheByPrimaryKey.ContainsKey(key)) + foreach (FigureInfo tmpInfo in _CacheByPrimaryKey[key]) + tmpInfo.RefreshFields(tmp); + } + protected virtual void RefreshFields(ROFstFigure tmp) + { + if (_ImageID != tmp.ImageID) + { + if (MyROImage != null) MyROImage.RefreshROImageFigures(); // Update List for old value + _ImageID = tmp.ImageID; // Update the value + } + _MyROImage = null; // Reset list so that the next line gets a new list + if (MyROImage != null) MyROImage.RefreshROImageFigures(); // Update List for new value + _Config = tmp.Config; + _DTS = tmp.DTS; + _UserID = tmp.UserID; + _FigureInfoExtension.Refresh(this); + if(_MyROFst != null) + { + _MyROFst.Dispose();// Dispose related value + _MyROFst = null;// Reset related value + } + if(_MyROImage != null) + { + _MyROImage.Dispose();// Dispose related value + _MyROImage = null;// Reset related value + } + OnChange();// raise an event + } + public static void Refresh(ROImageFigure tmp) + { + string key = tmp.FigureID.ToString(); + ConvertListToDictionary(); + if (_CacheByPrimaryKey.ContainsKey(key)) + foreach (FigureInfo tmpInfo in _CacheByPrimaryKey[key]) + tmpInfo.RefreshFields(tmp); + } + protected virtual void RefreshFields(ROImageFigure tmp) + { + if (_ROFstID != tmp.ROFstID) + { + if (MyROFst != null) MyROFst.RefreshROFstFigures(); // Update List for old value + _ROFstID = tmp.ROFstID; // Update the value + } + _MyROFst = null; // Reset list so that the next line gets a new list + if (MyROFst != null) MyROFst.RefreshROFstFigures(); // Update List for new value + _Config = tmp.Config; + _DTS = tmp.DTS; + _UserID = tmp.UserID; + _FigureInfoExtension.Refresh(this); + if(_MyROFst != null) + { + _MyROFst.Dispose();// Dispose related value + _MyROFst = null;// Reset related value + } + if(_MyROImage != null) + { + _MyROImage.Dispose();// Dispose related value + _MyROImage = null;// Reset related value + } + OnChange();// raise an event + } + public static FigureInfo Get(int figureID) + { + //if (!CanGetObject()) + // throw new System.Security.SecurityException("User not authorized to view a Figure"); + try + { + FigureInfo tmp = GetCachedByPrimaryKey(figureID); + if (tmp == null) + { + tmp = DataPortal.Fetch(new PKCriteria(figureID)); + AddToCache(tmp); + } + if (tmp.ErrorMessage == "No Record Found") + { + tmp.Dispose(); // Clean-up FigureInfo + tmp = null; + } + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on FigureInfo.Get", ex); + } + } + #endregion + #region Data Access Portal + internal FigureInfo(SafeDataReader dr) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] FigureInfo.Constructor", GetHashCode()); + try + { + ReadData(dr); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("FigureInfo.Constructor", ex); + throw new DbCslaException("FigureInfo.Constructor", ex); + } + } + [Serializable()] + protected class PKCriteria + { + private int _FigureID; + public int FigureID + { get { return _FigureID; } } + public PKCriteria(int figureID) + { + _FigureID = figureID; + } + } + private void ReadData(SafeDataReader dr) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] FigureInfo.ReadData", GetHashCode()); + try + { + _FigureID = dr.GetInt32("FigureID"); + _ROFstID = dr.GetInt32("ROFstID"); + _ImageID = dr.GetInt32("ImageID"); + _Config = dr.GetString("Config"); + _DTS = dr.GetDateTime("DTS"); + _UserID = dr.GetString("UserID"); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("FigureInfo.ReadData", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("FigureInfo.ReadData", ex); + } + } + private void DataPortal_Fetch(PKCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] FigureInfo.DataPortal_Fetch", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + ApplicationContext.LocalContext["cn"] = cn; + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getFigure"; + cm.Parameters.AddWithValue("@FigureID", criteria.FigureID); + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + if (!dr.Read()) + { + _ErrorMessage = "No Record Found"; + return; + } + ReadData(dr); + } + } + // removing of item only needed for local data portal + if (ApplicationContext.ExecutionLocation == ApplicationContext.ExecutionLocations.Client) + ApplicationContext.LocalContext.Remove("cn"); + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("FigureInfo.DataPortal_Fetch", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("FigureInfo.DataPortal_Fetch", ex); + } + } + #endregion + // Standard Refresh + #region extension + FigureInfoExtension _FigureInfoExtension = new FigureInfoExtension(); + [Serializable()] + partial class FigureInfoExtension : extensionBase { } + [Serializable()] + class extensionBase + { + // Default Refresh + public virtual void Refresh(FigureInfo tmp) { } + } + #endregion + } // Class + #region Converter + internal class FigureInfoConverter : ExpandableObjectConverter + { + public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType) + { + if (destType == typeof(string) && value is FigureInfo) + { + // Return the ToString value + return ((FigureInfo)value).ToString(); + } + return base.ConvertTo(context, culture, value, destType); + } + } + #endregion +} // Namespace diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/FigureInfoList.cs b/PROMS/VEPROMS.CSLA.Library/Generated/FigureInfoList.cs new file mode 100644 index 00000000..ecdd1c3e --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Generated/FigureInfoList.cs @@ -0,0 +1,319 @@ +// ======================================================================== +// Copyright 2007 - Volian Enterprises, Inc. All rights reserved. +// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE +// ------------------------------------------------------------------------ +// $Workfile: $ $Revision: $ +// $Author: $ $Date: $ +// +// $History: $ +// ======================================================================== + +using System; +using System.Data; +using System.Data.SqlClient; +using Csla; +using Csla.Data; +using System.Configuration; +using System.IO; +using System.ComponentModel; +using System.Collections.Generic; +namespace VEPROMS.CSLA.Library +{ + /// + /// FigureInfoList Generated by MyGeneration using the CSLA Object Mapping template + /// + [Serializable()] + [TypeConverter(typeof(FigureInfoListConverter))] + public partial class FigureInfoList : ReadOnlyListBase, ICustomTypeDescriptor, IDisposable + { + #region Log4Net + private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + #endregion + #region Business Methods + internal new IList Items + { get { return base.Items; } } + public void AddEvents() + { + foreach (FigureInfo tmp in this) + { + tmp.Changed += new FigureInfoEvent(tmp_Changed); + } + } + void tmp_Changed(object sender) + { + for (int i = 0; i < Count; i++) + { + if (base[i] == sender) + this.OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, i)); + } + } + public void Dispose() + { + foreach (FigureInfo tmp in this) + { + tmp.Changed -= new FigureInfoEvent(tmp_Changed); + } + } + #endregion + #region Factory Methods + public static FigureInfoList _FigureInfoList = null; + /// + /// Return a list of all FigureInfo. + /// + public static FigureInfoList Get() + { + try + { + if (_FigureInfoList != null) + return _FigureInfoList; + FigureInfoList tmp = DataPortal.Fetch(); + FigureInfo.AddList(tmp); + tmp.AddEvents(); + _FigureInfoList = tmp; + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on FigureInfoList.Get", ex); + } + } + /// + /// Reset the list of all FigureInfo. + /// + public static void Reset() + { + _FigureInfoList = null; + } + // TODO: Add alternative gets - + //public static FigureInfoList Get() + //{ + // try + // { + // return DataPortal.Fetch(new FilteredCriteria()); + // } + // catch (Exception ex) + // { + // throw new DbCslaException("Error on FigureInfoList.Get", ex); + // } + //} + public static FigureInfoList GetByROFstID(int rOFstID) + { + try + { + FigureInfoList tmp = DataPortal.Fetch(new ROFstIDCriteria(rOFstID)); + FigureInfo.AddList(tmp); + tmp.AddEvents(); + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on FigureInfoList.GetByROFstID", ex); + } + } + public static FigureInfoList GetByImageID(int imageID) + { + try + { + FigureInfoList tmp = DataPortal.Fetch(new ImageIDCriteria(imageID)); + FigureInfo.AddList(tmp); + tmp.AddEvents(); + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on FigureInfoList.GetByImageID", ex); + } + } + private FigureInfoList() + { /* require use of factory methods */ } + #endregion + #region Data Access Portal + private void DataPortal_Fetch() + { + this.RaiseListChangedEvents = false; + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] FigureInfoList.DataPortal_Fetch", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getFigures"; + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + IsReadOnly = false; + while (dr.Read()) this.Add(new FigureInfo(dr)); + IsReadOnly = true; + } + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("FigureInfoList.DataPortal_Fetch", ex); + throw new DbCslaException("FigureInfoList.DataPortal_Fetch", ex); + } + this.RaiseListChangedEvents = true; + } + [Serializable()] + private class ROFstIDCriteria + { + public ROFstIDCriteria(int rOFstID) + { + _ROFstID = rOFstID; + } + private int _ROFstID; + public int ROFstID + { + get { return _ROFstID; } + set { _ROFstID = value; } + } + } + private void DataPortal_Fetch(ROFstIDCriteria criteria) + { + this.RaiseListChangedEvents = false; + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] FigureInfoList.DataPortal_FetchROFstID", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getFiguresByROFstID"; + cm.Parameters.AddWithValue("@ROFstID", criteria.ROFstID); + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + IsReadOnly = false; + while (dr.Read()) this.Add(new FigureInfo(dr)); + IsReadOnly = true; + } + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("FigureInfoList.DataPortal_FetchROFstID", ex); + throw new DbCslaException("FigureInfoList.DataPortal_Fetch", ex); + } + this.RaiseListChangedEvents = true; + } + [Serializable()] + private class ImageIDCriteria + { + public ImageIDCriteria(int imageID) + { + _ImageID = imageID; + } + private int _ImageID; + public int ImageID + { + get { return _ImageID; } + set { _ImageID = value; } + } + } + private void DataPortal_Fetch(ImageIDCriteria criteria) + { + this.RaiseListChangedEvents = false; + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] FigureInfoList.DataPortal_FetchImageID", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "getFiguresByImageID"; + cm.Parameters.AddWithValue("@ImageID", criteria.ImageID); + using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) + { + IsReadOnly = false; + while (dr.Read()) this.Add(new FigureInfo(dr)); + IsReadOnly = true; + } + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("FigureInfoList.DataPortal_FetchImageID", ex); + throw new DbCslaException("FigureInfoList.DataPortal_Fetch", ex); + } + this.RaiseListChangedEvents = true; + } + #endregion + #region ICustomTypeDescriptor impl + public String GetClassName() + { return TypeDescriptor.GetClassName(this, true); } + public AttributeCollection GetAttributes() + { return TypeDescriptor.GetAttributes(this, true); } + public String GetComponentName() + { return TypeDescriptor.GetComponentName(this, true); } + public TypeConverter GetConverter() + { return TypeDescriptor.GetConverter(this, true); } + public EventDescriptor GetDefaultEvent() + { return TypeDescriptor.GetDefaultEvent(this, true); } + public PropertyDescriptor GetDefaultProperty() + { return TypeDescriptor.GetDefaultProperty(this, true); } + public object GetEditor(Type editorBaseType) + { return TypeDescriptor.GetEditor(this, editorBaseType, true); } + public EventDescriptorCollection GetEvents(Attribute[] attributes) + { return TypeDescriptor.GetEvents(this, attributes, true); } + public EventDescriptorCollection GetEvents() + { return TypeDescriptor.GetEvents(this, true); } + public object GetPropertyOwner(PropertyDescriptor pd) + { return this; } + /// + /// Called to get the properties of this type. Returns properties with certain + /// attributes. this restriction is not implemented here. + /// + /// + /// + public PropertyDescriptorCollection GetProperties(Attribute[] attributes) + { return GetProperties(); } + /// + /// Called to get the properties of this type. + /// + /// + public PropertyDescriptorCollection GetProperties() + { + // Create a collection object to hold property descriptors + PropertyDescriptorCollection pds = new PropertyDescriptorCollection(null); + // Iterate the list + for (int i = 0; i < this.Items.Count; i++) + { + // Create a property descriptor for the item and add to the property descriptor collection + FigureInfoListPropertyDescriptor pd = new FigureInfoListPropertyDescriptor(this, i); + pds.Add(pd); + } + // return the property descriptor collection + return pds; + } + #endregion + } // Class + #region Property Descriptor + /// + /// Summary description for CollectionPropertyDescriptor. + /// + public partial class FigureInfoListPropertyDescriptor : vlnListPropertyDescriptor + { + private FigureInfo Item { get { return (FigureInfo)_Item; } } + public FigureInfoListPropertyDescriptor(FigureInfoList collection, int index) : base(collection, index) { ;} + } + #endregion + #region Converter + internal class FigureInfoListConverter : ExpandableObjectConverter + { + public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType) + { + if (destType == typeof(string) && value is FigureInfoList) + { + // Return department and department role separated by comma. + return ((FigureInfoList)value).Items.Count.ToString() + " Figures"; + } + return base.ConvertTo(context, culture, value, destType); + } + } + #endregion +} // Namespace