From b136252ff66865b725473a727b5f9c3fdacb0960 Mon Sep 17 00:00:00 2001 From: Rich Date: Tue, 18 Jan 2011 21:06:41 +0000 Subject: [PATCH] Added Grids and Images --- PROMS/VEPROMS.CSLA.Library/Generated/Grid.cs | 1018 +++++++++++++++ .../Generated/GridInfo.cs | 351 ++++++ PROMS/VEPROMS.CSLA.Library/Generated/Image.cs | 1088 +++++++++++++++++ .../Generated/ImageInfo.cs | 378 ++++++ 4 files changed, 2835 insertions(+) create mode 100644 PROMS/VEPROMS.CSLA.Library/Generated/Grid.cs create mode 100644 PROMS/VEPROMS.CSLA.Library/Generated/GridInfo.cs create mode 100644 PROMS/VEPROMS.CSLA.Library/Generated/Image.cs create mode 100644 PROMS/VEPROMS.CSLA.Library/Generated/ImageInfo.cs diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/Grid.cs b/PROMS/VEPROMS.CSLA.Library/Generated/Grid.cs new file mode 100644 index 00000000..a33f052b --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Generated/Grid.cs @@ -0,0 +1,1018 @@ +// ======================================================================== +// 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 +{ + /// + /// Grid Generated by MyGeneration using the CSLA Object Mapping template + /// + [Serializable()] + [TypeConverter(typeof(GridConverter))] + public partial class Grid : BusinessBase, IDisposable, IVEHasBrokenRules + { + #region Log4Net + private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + #endregion + #region Refresh + private List _RefreshGrids = new List(); + private void AddToRefreshList(List refreshGrids) + { + if (IsDirty) + refreshGrids.Add(this); + } + private void BuildRefreshList() + { + _RefreshGrids = new List(); + AddToRefreshList(_RefreshGrids); + } + private void ProcessRefreshList() + { + foreach (Grid tmp in _RefreshGrids) + { + GridInfo.Refresh(tmp); + } + } + #endregion + #region Collection + private static List _CacheList = new List(); + protected static void AddToCache(Grid grid) + { + if (!_CacheList.Contains(grid)) _CacheList.Add(grid); // In AddToCache + } + protected static void RemoveFromCache(Grid grid) + { + while (_CacheList.Contains(grid)) _CacheList.Remove(grid); // In RemoveFromCache + } + private static Dictionary> _CacheByPrimaryKey = new Dictionary>(); + private static void ConvertListToDictionary() + { + while (_CacheList.Count > 0) // Move Grid(s) from temporary _CacheList to _CacheByPrimaryKey + { + Grid tmp = _CacheList[0]; // Get the first Grid + string pKey = tmp.ContentID.ToString(); + if (!_CacheByPrimaryKey.ContainsKey(pKey)) + { + _CacheByPrimaryKey[pKey] = new List(); // Add new list for PrimaryKey + } + _CacheByPrimaryKey[pKey].Add(tmp); // Add to Primary Key list + _CacheList.RemoveAt(0); // Remove the first Grid + } + } + protected static Grid GetCachedByPrimaryKey(int contentID) + { + ConvertListToDictionary(); + string key = contentID.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; } + } + private int _ContentID; + [System.ComponentModel.DataObjectField(true, true)] + public int ContentID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ContentID", true); + if (_MyContent != null) _ContentID = _MyContent.ContentID; + return _ContentID; + } + } + private Content _MyContent; + [System.ComponentModel.DataObjectField(true, true)] + public Content MyContent + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("MyContent", true); + if (_MyContent == null && _ContentID != 0) _MyContent = Content.Get(_ContentID); + return _MyContent; + } + } + private string _Data = string.Empty; + public string Data + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("Data", true); + return _Data; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("Data", true); + if (value == null) value = string.Empty; + if (_Data != value) + { + _Data = 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; } + } + public bool IsDirtyList(List list) + { + return base.IsDirty; + } + public override bool IsValid + { + get { return (IsNew && !IsDirty) ? true : base.IsValid; } + } + public bool IsValidList(List list) + { + return (IsNew && !IsDirty) ? true : base.IsValid; + } + // CSLATODO: Replace base Grid.ToString function as necessary + /// + /// Overrides Base ToString + /// + /// A string representation of current Grid + //public override string ToString() + //{ + // return base.ToString(); + //} + // CSLATODO: Check Grid.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 Grid + protected override object GetIdValue() + { + return MyGridUnique; // Absolutely Unique ID + } + #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; + 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( + Csla.Validation.CommonRules.StringRequired, "Data"); + ValidationRules.AddRule( + Csla.Validation.CommonRules.StringMaxLength, + new Csla.Validation.CommonRules.MaxLengthRuleArgs("Data", 1073741823)); + 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"); + _GridExtension.AddValidationRules(ValidationRules); + // CSLATODO: Add other validation rules + } + protected override void AddInstanceBusinessRules() + { + _GridExtension.AddInstanceValidationRules(ValidationRules); + // CSLATODO: Add other validation rules + } + // 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() + { + //CSLATODO: Who can read/write which fields + //AuthorizationRules.AllowRead(ContentID, ""); + //AuthorizationRules.AllowRead(Data, ""); + //AuthorizationRules.AllowRead(Config, ""); + //AuthorizationRules.AllowRead(DTS, ""); + //AuthorizationRules.AllowRead(UserID, ""); + //AuthorizationRules.AllowWrite(Data, ""); + //AuthorizationRules.AllowWrite(Config, ""); + //AuthorizationRules.AllowWrite(DTS, ""); + //AuthorizationRules.AllowWrite(UserID, ""); + _GridExtension.AddAuthorizationRules(AuthorizationRules); + } + protected override void AddInstanceAuthorizationRules() + { + //CSLATODO: Who can read/write which fields + _GridExtension.AddInstanceAuthorizationRules(AuthorizationRules); + } + public static bool CanAddObject() + { + // CSLATODO: Can Add Authorization + //return Csla.ApplicationContext.User.IsInRole("ProjectManager"); + return true; + } + public static bool CanGetObject() + { + // CSLATODO: CanGet Authorization + return true; + } + public static bool CanDeleteObject() + { + // CSLATODO: 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() + { + // CSLATODO: CanEdit Authorization + //return Csla.ApplicationContext.User.IsInRole("ProjectManager"); + return true; + } + #endregion + #region Factory Methods + public int CurrentEditLevel + { get { return EditLevel; } } + private static int _GridUnique = 0; + protected static int GridUnique + { get { return ++_GridUnique; } } + private int _MyGridUnique = GridUnique; + public int MyGridUnique // Absolutely Unique ID - Editable + { get { return _MyGridUnique; } } + protected Grid() + {/* require use of factory methods */ + AddToCache(this); + } + public void Dispose() + { + RemoveFromDictionaries(); + } + private void RemoveFromDictionaries() + { + RemoveFromCache(this); + if (_CacheByPrimaryKey.ContainsKey(ContentID.ToString())) + { + List listGrid = _CacheByPrimaryKey[ContentID.ToString()]; // Get the list of items + while (listGrid.Contains(this)) listGrid.Remove(this); // Remove the item from the list + if (listGrid.Count == 0) //If there are no items left in the list + _CacheByPrimaryKey.Remove(ContentID.ToString()); // remove the list + } + } + public static Grid New() + { + if (!CanAddObject()) + throw new System.Security.SecurityException("User not authorized to add a Grid"); + try + { + return DataPortal.Create(); + } + catch (Exception ex) + { + throw new DbCslaException("Error on Grid.New", ex); + } + } + public static Grid New(Content myContent, string data) + { + Grid tmp = Grid.New(); + tmp._MyContent = myContent; + tmp.Data = data; + return tmp; + } + public static Grid New(Content myContent, string data, string config, DateTime dts, string userID) + { + Grid tmp = Grid.New(); + tmp._MyContent = myContent; + tmp.Data = data; + tmp.Config = config; + tmp.DTS = dts; + tmp.UserID = userID; + return tmp; + } + public static Grid MakeGrid(Content myContent, string data, string config, DateTime dts, string userID) + { + Grid tmp = Grid.New(myContent, data, config, dts, userID); + if (tmp.IsSavable) + { + Grid 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 Grid New(Content myContent, string data, string config) + { + Grid tmp = Grid.New(); + tmp._MyContent = myContent; + tmp.Data = data; + tmp.Config = config; + return tmp; + } + public static Grid MakeGrid(Content myContent, string data, string config) + { + Grid tmp = Grid.New(myContent, data, config); + if (tmp.IsSavable) + { + Grid 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 Grid New(Content myContent) + { + Grid tmp = Grid.New(); + tmp._MyContent = myContent; + tmp.MarkClean(); + tmp.MarkAsChild(); + return tmp; + } + public static Grid Get(int contentID) + { + if (!CanGetObject()) + throw new System.Security.SecurityException("User not authorized to view a Grid"); + try + { + Grid tmp = GetCachedByPrimaryKey(contentID); + if (tmp == null) + { + tmp = DataPortal.Fetch(new PKCriteria(contentID)); + AddToCache(tmp); + } + if (tmp.ErrorMessage == "No Record Found") + { + tmp.Dispose(); // Clean-up Grid + tmp = null; + } + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on Grid.Get", ex); + } + } + public static Grid Get(SafeDataReader dr) + { + if (dr.Read()) return new Grid(dr); + return null; + } + internal Grid(SafeDataReader dr) + { + ReadData(dr); + } + public static void Delete(int contentID) + { + if (!CanDeleteObject()) + throw new System.Security.SecurityException("User not authorized to remove a Grid"); + try + { + DataPortal.Delete(new PKCriteria(contentID)); + } + catch (Exception ex) + { + throw new DbCslaException("Error on Grid.Delete", ex); + } + } + public override Grid Save() + { + if (IsDeleted && !CanDeleteObject()) + throw new System.Security.SecurityException("User not authorized to remove a Grid"); + else if (IsNew && !CanAddObject()) + throw new System.Security.SecurityException("User not authorized to add a Grid"); + else if (!CanEditObject()) + throw new System.Security.SecurityException("User not authorized to update a Grid"); + try + { + BuildRefreshList(); + Grid grid = base.Save(); + RemoveFromDictionaries(); // if save is successful remove the previous Folder from the cache + AddToCache(grid);//Refresh the item in AllList + ProcessRefreshList(); + return grid; + } + catch (Exception ex) + { + throw new DbCslaException("Error on CSLA Save", ex); + } + } + #endregion + #region Data Access Portal + [Serializable()] + protected class PKCriteria + { + private int _ContentID; + public int ContentID + { get { return _ContentID; } } + public PKCriteria(int contentID) + { + _ContentID = contentID; + } + } + // CSLATODO: If Create needs to access DB - It should not be marked RunLocal + [RunLocal()] + private new void DataPortal_Create() + { + + // Database Defaults + _DTS = _GridExtension.DefaultDTS; + _UserID = _GridExtension.DefaultUserID; + // CSLATODO: Add any defaults that are necessary + ValidationRules.CheckRules(); + } + private void ReadData(SafeDataReader dr) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Grid.ReadData", GetHashCode()); + try + { + _ContentID = dr.GetInt32("ContentID"); + _Data = dr.GetString("Data"); + _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("Grid.ReadData", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Grid.ReadData", ex); + } + } + private void DataPortal_Fetch(PKCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Grid.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 = "getGrid"; + cm.Parameters.AddWithValue("@ContentID", criteria.ContentID); + 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("Grid.DataPortal_Fetch", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Grid.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("Grid.DataPortal_Insert", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Grid.DataPortal_Insert", ex); + } + finally + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Grid.DataPortal_Insert", GetHashCode()); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + internal void SQLInsert() + { + if (!this.IsDirty) return; + try + { + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "addGrid"; + // Input All Fields - Except Calculated Columns + cm.Parameters.AddWithValue("@ContentID", ContentID); + cm.Parameters.AddWithValue("@Data", _Data); + 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_LastChanged = new SqlParameter("@newLastChanged", SqlDbType.Timestamp); + param_LastChanged.Direction = ParameterDirection.Output; + cm.Parameters.Add(param_LastChanged); + // CSLATODO: Define any additional output parameters + cm.ExecuteNonQuery(); + // Save all values being returned from the Procedure + _LastChanged = (byte[])cm.Parameters["@newLastChanged"].Value; + } + MarkOld(); + // update child objects + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Grid.SQLInsert", GetHashCode()); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Grid.SQLInsert", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Grid.SQLInsert", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + public static byte[] Add(SqlConnection cn, Content myContent, string data, string config, DateTime dts, string userID) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Grid.Add", 0); + try + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "addGrid"; + // Input All Fields - Except Calculated Columns + cm.Parameters.AddWithValue("@ContentID", myContent.ContentID); + cm.Parameters.AddWithValue("@Data", data); + 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_LastChanged = new SqlParameter("@newLastChanged", SqlDbType.Timestamp); + param_LastChanged.Direction = ParameterDirection.Output; + cm.Parameters.Add(param_LastChanged); + // CSLATODO: 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("Grid.Add", ex); + throw new DbCslaException("Grid.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}] Grid.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("Grid.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}] Grid.SQLUpdate", GetHashCode()); + try + { + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + if (base.IsDirty) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "updateGrid"; + // All Fields including Calculated Fields + cm.Parameters.AddWithValue("@ContentID", ContentID); + cm.Parameters.AddWithValue("@Data", _Data); + 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); + // CSLATODO: 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("Grid.SQLUpdate", ex); + _ErrorMessage = ex.Message; + if (!ex.Message.EndsWith("has been edited by another user.")) throw ex; + } + } + internal void Update(Content content) + { + if (!this.IsDirty) return; + if (base.IsDirty) + { + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + if (IsNew) + _LastChanged = Grid.Add(cn, content, _Data, _Config, _DTS, _UserID); + else + _LastChanged = Grid.Update(cn, content.ContentID, _Data, _Config, _DTS, _UserID, ref _LastChanged); + MarkOld(); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + public static byte[] Update(SqlConnection cn, int contentID, string data, string config, DateTime dts, string userID, ref byte[] lastChanged) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Grid.Update", 0); + try + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "updateGrid"; + // Input All Fields - Except Calculated Columns + cm.Parameters.AddWithValue("@ContentID", contentID); + cm.Parameters.AddWithValue("@Data", data); + 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); + // CSLATODO: 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("Grid.Update", ex); + throw new DbCslaException("Grid.Update", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + protected override void DataPortal_DeleteSelf() + { + DataPortal_Delete(new PKCriteria(_ContentID)); + } + [Transactional(TransactionalTypes.TransactionScope)] + private void DataPortal_Delete(PKCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Grid.DataPortal_Delete", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "deleteGrid"; + cm.Parameters.AddWithValue("@ContentID", criteria.ContentID); + cm.ExecuteNonQuery(); + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Grid.DataPortal_Delete", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Grid.DataPortal_Delete", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + public static void Remove(SqlConnection cn, int contentID) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Grid.Remove", 0); + try + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "deleteGrid"; + // Input PK Fields + cm.Parameters.AddWithValue("@ContentID", contentID); + // CSLATODO: Define any additional output parameters + cm.ExecuteNonQuery(); + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Grid.Remove", ex); + throw new DbCslaException("Grid.Remove", ex); + } + } + #endregion + #region Exists + public static bool Exists(int contentID) + { + ExistsCommand result; + try + { + result = DataPortal.Execute(new ExistsCommand(contentID)); + return result.Exists; + } + catch (Exception ex) + { + throw new DbCslaException("Error on Grid.Exists", ex); + } + } + [Serializable()] + private class ExistsCommand : CommandBase + { + private int _ContentID; + private bool _exists; + public bool Exists + { + get { return _exists; } + } + public ExistsCommand(int contentID) + { + _ContentID = contentID; + } + protected override void DataPortal_Execute() + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Grid.DataPortal_Execute", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + cn.Open(); + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "existsGrid"; + cm.Parameters.AddWithValue("@ContentID", _ContentID); + int count = (int)cm.ExecuteScalar(); + _exists = (count > 0); + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Grid.DataPortal_Execute", ex); + throw new DbCslaException("Grid.DataPortal_Execute", ex); + } + } + } + #endregion + // Standard Default Code + #region extension + GridExtension _GridExtension = new GridExtension(); + [Serializable()] + partial class GridExtension : 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 GridConverter : ExpandableObjectConverter + { + public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType) + { + if (destType == typeof(string) && value is Grid) + { + // Return the ToString value + return ((Grid)value).ToString(); + } + return base.ConvertTo(context, culture, value, destType); + } + } + #endregion +} // Namespace + + +//// The following is a sample Extension File. You can use it to create GridExt.cs +//using System; +//using System.Collections.Generic; +//using System.Text; +//using Csla; + +//namespace VEPROMS.CSLA.Library +//{ +// public partial class Grid +// { +// partial class GridExtension : extensionBase +// { +// // CSLATODO: 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/GridInfo.cs b/PROMS/VEPROMS.CSLA.Library/Generated/GridInfo.cs new file mode 100644 index 00000000..102bb877 --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Generated/GridInfo.cs @@ -0,0 +1,351 @@ +// ======================================================================== +// 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 GridInfoEvent(object sender); + /// + /// GridInfo Generated by MyGeneration using the CSLA Object Mapping template + /// + [Serializable()] + [TypeConverter(typeof(GridInfoConverter))] + public partial class GridInfo : ReadOnlyBase, IDisposable + { + public event GridInfoEvent 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(GridInfo gridInfo) + { + if (!_CacheList.Contains(gridInfo)) _CacheList.Add(gridInfo); // In AddToCache + } + protected static void RemoveFromCache(GridInfo gridInfo) + { + while (_CacheList.Contains(gridInfo)) _CacheList.Remove(gridInfo); // In RemoveFromCache + } + private static Dictionary> _CacheByPrimaryKey = new Dictionary>(); + private static void ConvertListToDictionary() + { + while (_CacheList.Count > 0) // Move GridInfo(s) from temporary _CacheList to _CacheByPrimaryKey + { + GridInfo tmp = _CacheList[0]; // Get the first GridInfo + string pKey = tmp.ContentID.ToString(); + if (!_CacheByPrimaryKey.ContainsKey(pKey)) + { + _CacheByPrimaryKey[pKey] = new List(); // Add new list for PrimaryKey + } + _CacheByPrimaryKey[pKey].Add(tmp); // Add to Primary Key list + _CacheList.RemoveAt(0); // Remove the first GridInfo + } + } + protected static GridInfo GetCachedByPrimaryKey(int contentID) + { + ConvertListToDictionary(); + string key = contentID.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 Grid _Editable; + private IVEHasBrokenRules HasBrokenRules + { + get + { + IVEHasBrokenRules hasBrokenRules = null; + if (_Editable != null) + hasBrokenRules = _Editable.HasBrokenRules; + return hasBrokenRules; + } + } + private int _ContentID; + [System.ComponentModel.DataObjectField(true, true)] + public int ContentID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ContentID", true); + if (_MyContent != null) _ContentID = _MyContent.ContentID; + return _ContentID; + } + } + private ContentInfo _MyContent; + [System.ComponentModel.DataObjectField(true, true)] + public ContentInfo MyContent + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("MyContent", true); + if (_MyContent == null && _ContentID != 0) _MyContent = ContentInfo.Get(_ContentID); + return _MyContent; + } + } + private string _Data = string.Empty; + public string Data + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("Data", true); + return _Data; + } + } + 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; + } + } + // CSLATODO: Replace base GridInfo.ToString function as necessary + /// + /// Overrides Base ToString + /// + /// A string representation of current GridInfo + //public override string ToString() + //{ + // return base.ToString(); + //} + // CSLATODO: Check GridInfo.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 GridInfo + protected override object GetIdValue() + { + return MyGridInfoUnique; // Absolutely Unique ID + } + #endregion + #region Factory Methods + private static int _GridInfoUnique = 0; + private static int GridInfoUnique + { get { return ++_GridInfoUnique; } } + private int _MyGridInfoUnique = GridInfoUnique; + public int MyGridInfoUnique // Absolutely Unique ID - Info + { get { return _MyGridInfoUnique; } } + protected GridInfo() + {/* require use of factory methods */ + AddToCache(this); + } + public void Dispose() + { + RemoveFromCache(this); + if (!_CacheByPrimaryKey.ContainsKey(ContentID.ToString())) return; + List listGridInfo = _CacheByPrimaryKey[ContentID.ToString()]; // Get the list of items + while (listGridInfo.Contains(this)) listGridInfo.Remove(this); // Remove the item from the list + if (listGridInfo.Count == 0) // If there are no items left in the list + _CacheByPrimaryKey.Remove(ContentID.ToString()); // remove the list + } + public virtual Grid Get() + { + return _Editable = Grid.Get(_ContentID); + } + public static void Refresh(Grid tmp) + { + string key = tmp.ContentID.ToString(); + ConvertListToDictionary(); + if (_CacheByPrimaryKey.ContainsKey(key)) + foreach (GridInfo tmpInfo in _CacheByPrimaryKey[key]) + tmpInfo.RefreshFields(tmp); + } + protected virtual void RefreshFields(Grid tmp) + { + _Data = tmp.Data; + _Config = tmp.Config; + _DTS = tmp.DTS; + _UserID = tmp.UserID; + _GridInfoExtension.Refresh(this); +//RHM Removed 20090724 - Duplicates function of code above. +// - Dispose caused error when a new step was added. +// - Resequence of transitions did not work properly. +// if(_MyContent != null) +// { +// _MyContent.Dispose();// Dispose related value +// _MyContent = null;// Reset related value +// } + OnChange();// raise an event + } + public static GridInfo Get(int contentID) + { + //if (!CanGetObject()) + // throw new System.Security.SecurityException("User not authorized to view a Grid"); + try + { + GridInfo tmp = GetCachedByPrimaryKey(contentID); + if (tmp == null) + { + tmp = DataPortal.Fetch(new PKCriteria(contentID)); + AddToCache(tmp); + } + if (tmp.ErrorMessage == "No Record Found") + { + tmp.Dispose(); // Clean-up GridInfo + tmp = null; + } + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on GridInfo.Get", ex); + } + } + #endregion + #region Data Access Portal + internal GridInfo(SafeDataReader dr) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] GridInfo.Constructor", GetHashCode()); + try + { + ReadData(dr); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("GridInfo.Constructor", ex); + throw new DbCslaException("GridInfo.Constructor", ex); + } + } + [Serializable()] + protected class PKCriteria + { + private int _ContentID; + public int ContentID + { get { return _ContentID; } } + public PKCriteria(int contentID) + { + _ContentID = contentID; + } + } + private void ReadData(SafeDataReader dr) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] GridInfo.ReadData", GetHashCode()); + try + { + _ContentID = dr.GetInt32("ContentID"); + _Data = dr.GetString("Data"); + _Config = dr.GetString("Config"); + _DTS = dr.GetDateTime("DTS"); + _UserID = dr.GetString("UserID"); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("GridInfo.ReadData", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("GridInfo.ReadData", ex); + } + } + private void DataPortal_Fetch(PKCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] GridInfo.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 = "getGrid"; + cm.Parameters.AddWithValue("@ContentID", criteria.ContentID); + 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("GridInfo.DataPortal_Fetch", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("GridInfo.DataPortal_Fetch", ex); + } + } + #endregion + // Standard Refresh + #region extension + GridInfoExtension _GridInfoExtension = new GridInfoExtension(); + [Serializable()] + partial class GridInfoExtension : extensionBase { } + [Serializable()] + class extensionBase + { + // Default Refresh + public virtual void Refresh(GridInfo tmp) { } + } + #endregion + } // Class + #region Converter + internal class GridInfoConverter : ExpandableObjectConverter + { + public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType) + { + if (destType == typeof(string) && value is GridInfo) + { + // Return the ToString value + return ((GridInfo)value).ToString(); + } + return base.ConvertTo(context, culture, value, destType); + } + } + #endregion +} // Namespace diff --git a/PROMS/VEPROMS.CSLA.Library/Generated/Image.cs b/PROMS/VEPROMS.CSLA.Library/Generated/Image.cs new file mode 100644 index 00000000..b56a2d03 --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Generated/Image.cs @@ -0,0 +1,1088 @@ +// ======================================================================== +// 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 +{ + /// + /// Image Generated by MyGeneration using the CSLA Object Mapping template + /// + [Serializable()] + [TypeConverter(typeof(ImageConverter))] + public partial class Image : BusinessBase, IDisposable, IVEHasBrokenRules + { + #region Log4Net + private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + #endregion + #region Refresh + private List _RefreshImages = new List(); + private void AddToRefreshList(List refreshImages) + { + if (IsDirty) + refreshImages.Add(this); + } + private void BuildRefreshList() + { + _RefreshImages = new List(); + AddToRefreshList(_RefreshImages); + } + private void ProcessRefreshList() + { + foreach (Image tmp in _RefreshImages) + { + ImageInfo.Refresh(tmp); + } + } + #endregion + #region Collection + private static List _CacheList = new List(); + protected static void AddToCache(Image image) + { + if (!_CacheList.Contains(image)) _CacheList.Add(image); // In AddToCache + } + protected static void RemoveFromCache(Image image) + { + while (_CacheList.Contains(image)) _CacheList.Remove(image); // In RemoveFromCache + } + private static Dictionary> _CacheByPrimaryKey = new Dictionary>(); + private static void ConvertListToDictionary() + { + while (_CacheList.Count > 0) // Move Image(s) from temporary _CacheList to _CacheByPrimaryKey + { + Image tmp = _CacheList[0]; // Get the first Image + string pKey = tmp.ContentID.ToString(); + if (!_CacheByPrimaryKey.ContainsKey(pKey)) + { + _CacheByPrimaryKey[pKey] = new List(); // Add new list for PrimaryKey + } + _CacheByPrimaryKey[pKey].Add(tmp); // Add to Primary Key list + _CacheList.RemoveAt(0); // Remove the first Image + } + } + protected static Image GetCachedByPrimaryKey(int contentID) + { + ConvertListToDictionary(); + string key = contentID.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; } + } + private int _ContentID; + [System.ComponentModel.DataObjectField(true, true)] + public int ContentID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ContentID", true); + if (_MyContent != null) _ContentID = _MyContent.ContentID; + return _ContentID; + } + } + private Content _MyContent; + [System.ComponentModel.DataObjectField(true, true)] + public Content MyContent + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("MyContent", true); + if (_MyContent == null && _ContentID != 0) _MyContent = Content.Get(_ContentID); + return _MyContent; + } + } + private int _ImageType; + /// + /// 1 - Figure, 2 - Video, 3 - Audio + /// + public int ImageType + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ImageType", true); + return _ImageType; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("ImageType", true); + if (_ImageType != value) + { + _ImageType = value; + PropertyHasChanged(); + } + } + } + private string _FileName = string.Empty; + public string FileName + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("FileName", true); + return _FileName; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("FileName", true); + if (value == null) value = string.Empty; + if (_FileName != value) + { + _FileName = value; + PropertyHasChanged(); + } + } + } + private byte[] _Data; + public byte[] Data + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("Data", true); + return _Data; + } + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + set + { + CanWriteProperty("Data", true); + if (_Data != value) + { + _Data = 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; } + } + public bool IsDirtyList(List list) + { + return base.IsDirty; + } + public override bool IsValid + { + get { return (IsNew && !IsDirty) ? true : base.IsValid; } + } + public bool IsValidList(List list) + { + return (IsNew && !IsDirty) ? true : base.IsValid; + } + // CSLATODO: Replace base Image.ToString function as necessary + /// + /// Overrides Base ToString + /// + /// A string representation of current Image + //public override string ToString() + //{ + // return base.ToString(); + //} + // CSLATODO: Check Image.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 Image + protected override object GetIdValue() + { + return MyImageUnique; // Absolutely Unique ID + } + #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; + 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( + Csla.Validation.CommonRules.StringRequired, "FileName"); + ValidationRules.AddRule( + Csla.Validation.CommonRules.StringMaxLength, + new Csla.Validation.CommonRules.MaxLengthRuleArgs("FileName", 255)); + 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"); + _ImageExtension.AddValidationRules(ValidationRules); + // CSLATODO: Add other validation rules + } + protected override void AddInstanceBusinessRules() + { + _ImageExtension.AddInstanceValidationRules(ValidationRules); + // CSLATODO: Add other validation rules + } + // 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() + { + //CSLATODO: Who can read/write which fields + //AuthorizationRules.AllowRead(ContentID, ""); + //AuthorizationRules.AllowRead(ImageType, ""); + //AuthorizationRules.AllowRead(FileName, ""); + //AuthorizationRules.AllowRead(Data, ""); + //AuthorizationRules.AllowRead(Config, ""); + //AuthorizationRules.AllowRead(DTS, ""); + //AuthorizationRules.AllowRead(UserID, ""); + //AuthorizationRules.AllowWrite(ImageType, ""); + //AuthorizationRules.AllowWrite(FileName, ""); + //AuthorizationRules.AllowWrite(Data, ""); + //AuthorizationRules.AllowWrite(Config, ""); + //AuthorizationRules.AllowWrite(DTS, ""); + //AuthorizationRules.AllowWrite(UserID, ""); + _ImageExtension.AddAuthorizationRules(AuthorizationRules); + } + protected override void AddInstanceAuthorizationRules() + { + //CSLATODO: Who can read/write which fields + _ImageExtension.AddInstanceAuthorizationRules(AuthorizationRules); + } + public static bool CanAddObject() + { + // CSLATODO: Can Add Authorization + //return Csla.ApplicationContext.User.IsInRole("ProjectManager"); + return true; + } + public static bool CanGetObject() + { + // CSLATODO: CanGet Authorization + return true; + } + public static bool CanDeleteObject() + { + // CSLATODO: 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() + { + // CSLATODO: CanEdit Authorization + //return Csla.ApplicationContext.User.IsInRole("ProjectManager"); + return true; + } + #endregion + #region Factory Methods + public int CurrentEditLevel + { get { return EditLevel; } } + private static int _ImageUnique = 0; + protected static int ImageUnique + { get { return ++_ImageUnique; } } + private int _MyImageUnique = ImageUnique; + public int MyImageUnique // Absolutely Unique ID - Editable + { get { return _MyImageUnique; } } + protected Image() + {/* require use of factory methods */ + AddToCache(this); + } + public void Dispose() + { + RemoveFromDictionaries(); + } + private void RemoveFromDictionaries() + { + RemoveFromCache(this); + if (_CacheByPrimaryKey.ContainsKey(ContentID.ToString())) + { + List listImage = _CacheByPrimaryKey[ContentID.ToString()]; // Get the list of items + while (listImage.Contains(this)) listImage.Remove(this); // Remove the item from the list + if (listImage.Count == 0) //If there are no items left in the list + _CacheByPrimaryKey.Remove(ContentID.ToString()); // remove the list + } + } + public static Image New() + { + if (!CanAddObject()) + throw new System.Security.SecurityException("User not authorized to add a Image"); + try + { + return DataPortal.Create(); + } + catch (Exception ex) + { + throw new DbCslaException("Error on Image.New", ex); + } + } + public static Image New(Content myContent, string fileName, byte[] data) + { + Image tmp = Image.New(); + tmp._MyContent = myContent; + tmp.FileName = fileName; + tmp.Data = data; + return tmp; + } + public static Image New(Content myContent, int imageType, string fileName, byte[] data, string config, DateTime dts, string userID) + { + Image tmp = Image.New(); + tmp._MyContent = myContent; + tmp.ImageType = imageType; + tmp.FileName = fileName; + tmp.Data = data; + tmp.Config = config; + tmp.DTS = dts; + tmp.UserID = userID; + return tmp; + } + public static Image MakeImage(Content myContent, int imageType, string fileName, byte[] data, string config, DateTime dts, string userID) + { + Image tmp = Image.New(myContent, imageType, fileName, data, config, dts, userID); + if (tmp.IsSavable) + { + Image 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 Image New(Content myContent, string fileName, byte[] data, string config) + { + Image tmp = Image.New(); + tmp._MyContent = myContent; + tmp.FileName = fileName; + tmp.Data = data; + tmp.Config = config; + return tmp; + } + public static Image MakeImage(Content myContent, string fileName, byte[] data, string config) + { + Image tmp = Image.New(myContent, fileName, data, config); + if (tmp.IsSavable) + { + Image 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 Image New(Content myContent) + { + Image tmp = Image.New(); + tmp._MyContent = myContent; + tmp.MarkClean(); + tmp.MarkAsChild(); + return tmp; + } + public static Image Get(int contentID) + { + if (!CanGetObject()) + throw new System.Security.SecurityException("User not authorized to view a Image"); + try + { + Image tmp = GetCachedByPrimaryKey(contentID); + if (tmp == null) + { + tmp = DataPortal.Fetch(new PKCriteria(contentID)); + AddToCache(tmp); + } + if (tmp.ErrorMessage == "No Record Found") + { + tmp.Dispose(); // Clean-up Image + tmp = null; + } + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on Image.Get", ex); + } + } + public static Image Get(SafeDataReader dr) + { + if (dr.Read()) return new Image(dr); + return null; + } + internal Image(SafeDataReader dr) + { + ReadData(dr); + } + public static void Delete(int contentID) + { + if (!CanDeleteObject()) + throw new System.Security.SecurityException("User not authorized to remove a Image"); + try + { + DataPortal.Delete(new PKCriteria(contentID)); + } + catch (Exception ex) + { + throw new DbCslaException("Error on Image.Delete", ex); + } + } + public override Image Save() + { + if (IsDeleted && !CanDeleteObject()) + throw new System.Security.SecurityException("User not authorized to remove a Image"); + else if (IsNew && !CanAddObject()) + throw new System.Security.SecurityException("User not authorized to add a Image"); + else if (!CanEditObject()) + throw new System.Security.SecurityException("User not authorized to update a Image"); + try + { + BuildRefreshList(); + Image image = base.Save(); + RemoveFromDictionaries(); // if save is successful remove the previous Folder from the cache + AddToCache(image);//Refresh the item in AllList + ProcessRefreshList(); + return image; + } + catch (Exception ex) + { + throw new DbCslaException("Error on CSLA Save", ex); + } + } + #endregion + #region Data Access Portal + [Serializable()] + protected class PKCriteria + { + private int _ContentID; + public int ContentID + { get { return _ContentID; } } + public PKCriteria(int contentID) + { + _ContentID = contentID; + } + } + // CSLATODO: If Create needs to access DB - It should not be marked RunLocal + [RunLocal()] + private new void DataPortal_Create() + { + + // Database Defaults + _ImageType = _ImageExtension.DefaultImageType; + _DTS = _ImageExtension.DefaultDTS; + _UserID = _ImageExtension.DefaultUserID; + // CSLATODO: Add any defaults that are necessary + ValidationRules.CheckRules(); + } + private void ReadData(SafeDataReader dr) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Image.ReadData", GetHashCode()); + try + { + _ContentID = dr.GetInt32("ContentID"); + _ImageType = dr.GetInt32("ImageType"); + _FileName = dr.GetString("FileName"); + _Data = (byte[])dr.GetValue("Data"); + _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("Image.ReadData", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Image.ReadData", ex); + } + } + private void DataPortal_Fetch(PKCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Image.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 = "getImage"; + cm.Parameters.AddWithValue("@ContentID", criteria.ContentID); + 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("Image.DataPortal_Fetch", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Image.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("Image.DataPortal_Insert", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Image.DataPortal_Insert", ex); + } + finally + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Image.DataPortal_Insert", GetHashCode()); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + internal void SQLInsert() + { + if (!this.IsDirty) return; + try + { + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "addImage"; + // Input All Fields - Except Calculated Columns + cm.Parameters.AddWithValue("@ContentID", ContentID); + cm.Parameters.AddWithValue("@ImageType", _ImageType); + cm.Parameters.AddWithValue("@FileName", _FileName); + cm.Parameters.AddWithValue("@Data", _Data); + 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_LastChanged = new SqlParameter("@newLastChanged", SqlDbType.Timestamp); + param_LastChanged.Direction = ParameterDirection.Output; + cm.Parameters.Add(param_LastChanged); + // CSLATODO: Define any additional output parameters + cm.ExecuteNonQuery(); + // Save all values being returned from the Procedure + _LastChanged = (byte[])cm.Parameters["@newLastChanged"].Value; + } + MarkOld(); + // update child objects + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Image.SQLInsert", GetHashCode()); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Image.SQLInsert", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Image.SQLInsert", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + public static byte[] Add(SqlConnection cn, Content myContent, int imageType, string fileName, byte[] data, string config, DateTime dts, string userID) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Image.Add", 0); + try + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "addImage"; + // Input All Fields - Except Calculated Columns + cm.Parameters.AddWithValue("@ContentID", myContent.ContentID); + cm.Parameters.AddWithValue("@ImageType", imageType); + cm.Parameters.AddWithValue("@FileName", fileName); + cm.Parameters.AddWithValue("@Data", data); + 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_LastChanged = new SqlParameter("@newLastChanged", SqlDbType.Timestamp); + param_LastChanged.Direction = ParameterDirection.Output; + cm.Parameters.Add(param_LastChanged); + // CSLATODO: 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("Image.Add", ex); + throw new DbCslaException("Image.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}] Image.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("Image.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}] Image.SQLUpdate", GetHashCode()); + try + { + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + if (base.IsDirty) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "updateImage"; + // All Fields including Calculated Fields + cm.Parameters.AddWithValue("@ContentID", ContentID); + cm.Parameters.AddWithValue("@ImageType", _ImageType); + cm.Parameters.AddWithValue("@FileName", _FileName); + cm.Parameters.AddWithValue("@Data", _Data); + 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); + // CSLATODO: 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("Image.SQLUpdate", ex); + _ErrorMessage = ex.Message; + if (!ex.Message.EndsWith("has been edited by another user.")) throw ex; + } + } + internal void Update(Content content) + { + if (!this.IsDirty) return; + if (base.IsDirty) + { + SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; + if (IsNew) + _LastChanged = Image.Add(cn, content, _ImageType, _FileName, _Data, _Config, _DTS, _UserID); + else + _LastChanged = Image.Update(cn, content.ContentID, _ImageType, _FileName, _Data, _Config, _DTS, _UserID, ref _LastChanged); + MarkOld(); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + public static byte[] Update(SqlConnection cn, int contentID, int imageType, string fileName, byte[] data, string config, DateTime dts, string userID, ref byte[] lastChanged) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Image.Update", 0); + try + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "updateImage"; + // Input All Fields - Except Calculated Columns + cm.Parameters.AddWithValue("@ContentID", contentID); + cm.Parameters.AddWithValue("@ImageType", imageType); + cm.Parameters.AddWithValue("@FileName", fileName); + cm.Parameters.AddWithValue("@Data", data); + 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); + // CSLATODO: 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("Image.Update", ex); + throw new DbCslaException("Image.Update", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + protected override void DataPortal_DeleteSelf() + { + DataPortal_Delete(new PKCriteria(_ContentID)); + } + [Transactional(TransactionalTypes.TransactionScope)] + private void DataPortal_Delete(PKCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Image.DataPortal_Delete", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "deleteImage"; + cm.Parameters.AddWithValue("@ContentID", criteria.ContentID); + cm.ExecuteNonQuery(); + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Image.DataPortal_Delete", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("Image.DataPortal_Delete", ex); + } + } + [Transactional(TransactionalTypes.TransactionScope)] + public static void Remove(SqlConnection cn, int contentID) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Image.Remove", 0); + try + { + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "deleteImage"; + // Input PK Fields + cm.Parameters.AddWithValue("@ContentID", contentID); + // CSLATODO: Define any additional output parameters + cm.ExecuteNonQuery(); + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Image.Remove", ex); + throw new DbCslaException("Image.Remove", ex); + } + } + #endregion + #region Exists + public static bool Exists(int contentID) + { + ExistsCommand result; + try + { + result = DataPortal.Execute(new ExistsCommand(contentID)); + return result.Exists; + } + catch (Exception ex) + { + throw new DbCslaException("Error on Image.Exists", ex); + } + } + [Serializable()] + private class ExistsCommand : CommandBase + { + private int _ContentID; + private bool _exists; + public bool Exists + { + get { return _exists; } + } + public ExistsCommand(int contentID) + { + _ContentID = contentID; + } + protected override void DataPortal_Execute() + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Image.DataPortal_Execute", GetHashCode()); + try + { + using (SqlConnection cn = Database.VEPROMS_SqlConnection) + { + cn.Open(); + using (SqlCommand cm = cn.CreateCommand()) + { + cm.CommandType = CommandType.StoredProcedure; + cm.CommandText = "existsImage"; + cm.Parameters.AddWithValue("@ContentID", _ContentID); + int count = (int)cm.ExecuteScalar(); + _exists = (count > 0); + } + } + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("Image.DataPortal_Execute", ex); + throw new DbCslaException("Image.DataPortal_Execute", ex); + } + } + } + #endregion + // Standard Default Code + #region extension + ImageExtension _ImageExtension = new ImageExtension(); + [Serializable()] + partial class ImageExtension : extensionBase + { + } + [Serializable()] + class extensionBase + { + // Default Values + public virtual int DefaultImageType + { + get { return 1; } + } + 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 ImageConverter : ExpandableObjectConverter + { + public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType) + { + if (destType == typeof(string) && value is Image) + { + // Return the ToString value + return ((Image)value).ToString(); + } + return base.ConvertTo(context, culture, value, destType); + } + } + #endregion +} // Namespace + + +//// The following is a sample Extension File. You can use it to create ImageExt.cs +//using System; +//using System.Collections.Generic; +//using System.Text; +//using Csla; + +//namespace VEPROMS.CSLA.Library +//{ +// public partial class Image +// { +// partial class ImageExtension : extensionBase +// { +// // CSLATODO: Override automatic defaults +// public virtual int DefaultImageType +// { +// get { return 1; } +// } +// 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/ImageInfo.cs b/PROMS/VEPROMS.CSLA.Library/Generated/ImageInfo.cs new file mode 100644 index 00000000..f84311e6 --- /dev/null +++ b/PROMS/VEPROMS.CSLA.Library/Generated/ImageInfo.cs @@ -0,0 +1,378 @@ +// ======================================================================== +// 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 ImageInfoEvent(object sender); + /// + /// ImageInfo Generated by MyGeneration using the CSLA Object Mapping template + /// + [Serializable()] + [TypeConverter(typeof(ImageInfoConverter))] + public partial class ImageInfo : ReadOnlyBase, IDisposable + { + public event ImageInfoEvent 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(ImageInfo imageInfo) + { + if (!_CacheList.Contains(imageInfo)) _CacheList.Add(imageInfo); // In AddToCache + } + protected static void RemoveFromCache(ImageInfo imageInfo) + { + while (_CacheList.Contains(imageInfo)) _CacheList.Remove(imageInfo); // In RemoveFromCache + } + private static Dictionary> _CacheByPrimaryKey = new Dictionary>(); + private static void ConvertListToDictionary() + { + while (_CacheList.Count > 0) // Move ImageInfo(s) from temporary _CacheList to _CacheByPrimaryKey + { + ImageInfo tmp = _CacheList[0]; // Get the first ImageInfo + string pKey = tmp.ContentID.ToString(); + if (!_CacheByPrimaryKey.ContainsKey(pKey)) + { + _CacheByPrimaryKey[pKey] = new List(); // Add new list for PrimaryKey + } + _CacheByPrimaryKey[pKey].Add(tmp); // Add to Primary Key list + _CacheList.RemoveAt(0); // Remove the first ImageInfo + } + } + protected static ImageInfo GetCachedByPrimaryKey(int contentID) + { + ConvertListToDictionary(); + string key = contentID.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 Image _Editable; + private IVEHasBrokenRules HasBrokenRules + { + get + { + IVEHasBrokenRules hasBrokenRules = null; + if (_Editable != null) + hasBrokenRules = _Editable.HasBrokenRules; + return hasBrokenRules; + } + } + private int _ContentID; + [System.ComponentModel.DataObjectField(true, true)] + public int ContentID + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ContentID", true); + if (_MyContent != null) _ContentID = _MyContent.ContentID; + return _ContentID; + } + } + private ContentInfo _MyContent; + [System.ComponentModel.DataObjectField(true, true)] + public ContentInfo MyContent + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("MyContent", true); + if (_MyContent == null && _ContentID != 0) _MyContent = ContentInfo.Get(_ContentID); + return _MyContent; + } + } + private int _ImageType; + /// + /// 1 - Figure, 2 - Video, 3 - Audio + /// + public int ImageType + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("ImageType", true); + return _ImageType; + } + } + private string _FileName = string.Empty; + public string FileName + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("FileName", true); + return _FileName; + } + } + private byte[] _Data; + public byte[] Data + { + [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + get + { + CanReadProperty("Data", true); + return _Data; + } + } + 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; + } + } + // CSLATODO: Replace base ImageInfo.ToString function as necessary + /// + /// Overrides Base ToString + /// + /// A string representation of current ImageInfo + //public override string ToString() + //{ + // return base.ToString(); + //} + // CSLATODO: Check ImageInfo.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 ImageInfo + protected override object GetIdValue() + { + return MyImageInfoUnique; // Absolutely Unique ID + } + #endregion + #region Factory Methods + private static int _ImageInfoUnique = 0; + private static int ImageInfoUnique + { get { return ++_ImageInfoUnique; } } + private int _MyImageInfoUnique = ImageInfoUnique; + public int MyImageInfoUnique // Absolutely Unique ID - Info + { get { return _MyImageInfoUnique; } } + protected ImageInfo() + {/* require use of factory methods */ + AddToCache(this); + } + public void Dispose() + { + RemoveFromCache(this); + if (!_CacheByPrimaryKey.ContainsKey(ContentID.ToString())) return; + List listImageInfo = _CacheByPrimaryKey[ContentID.ToString()]; // Get the list of items + while (listImageInfo.Contains(this)) listImageInfo.Remove(this); // Remove the item from the list + if (listImageInfo.Count == 0) // If there are no items left in the list + _CacheByPrimaryKey.Remove(ContentID.ToString()); // remove the list + } + public virtual Image Get() + { + return _Editable = Image.Get(_ContentID); + } + public static void Refresh(Image tmp) + { + string key = tmp.ContentID.ToString(); + ConvertListToDictionary(); + if (_CacheByPrimaryKey.ContainsKey(key)) + foreach (ImageInfo tmpInfo in _CacheByPrimaryKey[key]) + tmpInfo.RefreshFields(tmp); + } + protected virtual void RefreshFields(Image tmp) + { + _ImageType = tmp.ImageType; + _FileName = tmp.FileName; + _Data = tmp.Data; + _Config = tmp.Config; + _DTS = tmp.DTS; + _UserID = tmp.UserID; + _ImageInfoExtension.Refresh(this); +//RHM Removed 20090724 - Duplicates function of code above. +// - Dispose caused error when a new step was added. +// - Resequence of transitions did not work properly. +// if(_MyContent != null) +// { +// _MyContent.Dispose();// Dispose related value +// _MyContent = null;// Reset related value +// } + OnChange();// raise an event + } + public static ImageInfo Get(int contentID) + { + //if (!CanGetObject()) + // throw new System.Security.SecurityException("User not authorized to view a Image"); + try + { + ImageInfo tmp = GetCachedByPrimaryKey(contentID); + if (tmp == null) + { + tmp = DataPortal.Fetch(new PKCriteria(contentID)); + AddToCache(tmp); + } + if (tmp.ErrorMessage == "No Record Found") + { + tmp.Dispose(); // Clean-up ImageInfo + tmp = null; + } + return tmp; + } + catch (Exception ex) + { + throw new DbCslaException("Error on ImageInfo.Get", ex); + } + } + #endregion + #region Data Access Portal + internal ImageInfo(SafeDataReader dr) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ImageInfo.Constructor", GetHashCode()); + try + { + ReadData(dr); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("ImageInfo.Constructor", ex); + throw new DbCslaException("ImageInfo.Constructor", ex); + } + } + [Serializable()] + protected class PKCriteria + { + private int _ContentID; + public int ContentID + { get { return _ContentID; } } + public PKCriteria(int contentID) + { + _ContentID = contentID; + } + } + private void ReadData(SafeDataReader dr) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ImageInfo.ReadData", GetHashCode()); + try + { + _ContentID = dr.GetInt32("ContentID"); + _ImageType = dr.GetInt32("ImageType"); + _FileName = dr.GetString("FileName"); + _Data = (byte[])dr.GetValue("Data"); + _Config = dr.GetString("Config"); + _DTS = dr.GetDateTime("DTS"); + _UserID = dr.GetString("UserID"); + } + catch (Exception ex) + { + if (_MyLog.IsErrorEnabled) _MyLog.Error("ImageInfo.ReadData", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("ImageInfo.ReadData", ex); + } + } + private void DataPortal_Fetch(PKCriteria criteria) + { + if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] ImageInfo.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 = "getImage"; + cm.Parameters.AddWithValue("@ContentID", criteria.ContentID); + 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("ImageInfo.DataPortal_Fetch", ex); + _ErrorMessage = ex.Message; + throw new DbCslaException("ImageInfo.DataPortal_Fetch", ex); + } + } + #endregion + // Standard Refresh + #region extension + ImageInfoExtension _ImageInfoExtension = new ImageInfoExtension(); + [Serializable()] + partial class ImageInfoExtension : extensionBase { } + [Serializable()] + class extensionBase + { + // Default Refresh + public virtual void Refresh(ImageInfo tmp) { } + } + #endregion + } // Class + #region Converter + internal class ImageInfoConverter : ExpandableObjectConverter + { + public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType) + { + if (destType == typeof(string) && value is ImageInfo) + { + // Return the ToString value + return ((ImageInfo)value).ToString(); + } + return base.ConvertTo(context, culture, value, destType); + } + } + #endregion +} // Namespace