Rich 52a088a775 Added DROUsages table to capture ROUsages in Documents
Changed lookup to use ROID rather than id when expanding the tree
to show the selected RO.  Previously used GetRoChildFromID which
was not working
2011-01-20 20:23:35 +00:00

323 lines
9.6 KiB
C#

// ========================================================================
// 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
{
/// <summary>
/// RODbDROUsages Generated by MyGeneration using the CSLA Object Mapping template
/// </summary>
[Serializable()]
[TypeConverter(typeof(RODbDROUsagesConverter))]
public partial class RODbDROUsages : BusinessListBase<RODbDROUsages, RODbDROUsage>, 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 RODbDROUsage this[DROUsage myDROUsage]
{
get
{
foreach (RODbDROUsage dROUsage in this)
if (dROUsage.DROUsageID == myDROUsage.DROUsageID)
return dROUsage;
return null;
}
}
public new System.Collections.Generic.IList<RODbDROUsage> Items
{
get { return base.Items; }
}
public RODbDROUsage GetItem(DROUsage myDROUsage)
{
foreach (RODbDROUsage dROUsage in this)
if (dROUsage.DROUsageID == myDROUsage.DROUsageID)
return dROUsage;
return null;
}
public RODbDROUsage Add(string roid) // One to Many
{
RODbDROUsage dROUsage = RODbDROUsage.New(roid);
this.Add(dROUsage);
return dROUsage;
}
public void Remove(DROUsage myDROUsage)
{
foreach (RODbDROUsage dROUsage in this)
{
if (dROUsage.DROUsageID == myDROUsage.DROUsageID)
{
Remove(dROUsage);
break;
}
}
}
public bool Contains(DROUsage myDROUsage)
{
foreach (RODbDROUsage dROUsage in this)
if (dROUsage.DROUsageID == myDROUsage.DROUsageID)
return true;
return false;
}
public bool ContainsDeleted(DROUsage myDROUsage)
{
foreach (RODbDROUsage dROUsage in DeletedList)
if (dROUsage.DROUsageID == myDROUsage.DROUsageID)
return true;
return false;
}
public bool IsDirtyList(List<object> list)
{
// any non-new deletions make us dirty
foreach (RODbDROUsage item in DeletedList)
if (!item.IsNew)
return true;
// run through all the child objects
// and if any are dirty then then
// collection is dirty
foreach (RODbDROUsage child in this)
if (child.IsDirtyList(list))
return true;
return false;
}
public override bool IsValid
{
get { return IsValidList(new List<object>()); }
}
public bool IsValidList(List<object> list)
{
// run through all the child objects
// and if any are invalid then the
// collection is invalid
foreach (RODbDROUsage child in this)
if (!child.IsValidList(list))
{
//Console.WriteLine("Valid {0} Child {1} - {2}", child.IsValid, child.GetType().Name,child.ToString());
return false;
}
return true;
}
#endregion
#region ValidationRules
public IVEHasBrokenRules HasBrokenRules
{
get
{
IVEHasBrokenRules hasBrokenRules = null;
foreach (RODbDROUsage rODbDROUsage in this)
if ((hasBrokenRules = rODbDROUsage.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 RODbDROUsages New()
{
return new RODbDROUsages();
}
internal static RODbDROUsages Get(SafeDataReader dr)
{
return new RODbDROUsages(dr);
}
public static RODbDROUsages GetByRODbID(int rODbID)
{
try
{
return DataPortal.Fetch<RODbDROUsages>(new RODbIDCriteria(rODbID));
}
catch (Exception ex)
{
throw new DbCslaException("Error on RODbDROUsages.GetByRODbID", ex);
}
}
private RODbDROUsages()
{
MarkAsChild();
}
internal RODbDROUsages(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(RODbDROUsage.Get(dr));
this.RaiseListChangedEvents = true;
}
[Serializable()]
private class RODbIDCriteria
{
public RODbIDCriteria(int rODbID)
{
_RODbID = rODbID;
}
private int _RODbID;
public int RODbID
{
get { return _RODbID; }
set { _RODbID = value; }
}
}
private void DataPortal_Fetch(RODbIDCriteria criteria)
{
this.RaiseListChangedEvents = false;
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] RODbDROUsages.DataPortal_FetchRODbID", GetHashCode());
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "getDROUsagesByRODbID";
cm.Parameters.AddWithValue("@RODbID", criteria.RODbID);
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
{
while (dr.Read()) this.Add(new RODbDROUsage(dr));
}
}
}
}
catch (Exception ex)
{
if (_MyLog.IsErrorEnabled) _MyLog.Error("RODbDROUsages.DataPortal_FetchRODbID", ex);
throw new DbCslaException("RODbDROUsages.DataPortal_Fetch", ex);
}
this.RaiseListChangedEvents = true;
}
internal void Update(RODb rODb)
{
this.RaiseListChangedEvents = false;
try
{
// update (thus deleting) any deleted child objects
foreach (RODbDROUsage obj in DeletedList)
obj.DeleteSelf(rODb);// Deletes related record
// now that they are deleted, remove them from memory too
DeletedList.Clear();
// add/update any current child objects
foreach (RODbDROUsage obj in this)
{
if (obj.IsNew)
obj.Insert(rODb);
else
obj.Update(rODb);
}
}
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; }
/// <summary>
/// Called to get the properties of this type. Returns properties with certain
/// attributes. this restriction is not implemented here.
/// </summary>
/// <param name="attributes"></param>
/// <returns></returns>
public PropertyDescriptorCollection GetProperties(Attribute[] attributes)
{ return GetProperties(); }
/// <summary>
/// Called to get the properties of this type.
/// </summary>
/// <returns></returns>
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
RODbDROUsagesPropertyDescriptor pd = new RODbDROUsagesPropertyDescriptor(this, i);
pds.Add(pd);
}
// return the property descriptor collection
return pds;
}
#endregion
} // Class
#region Property Descriptor
/// <summary>
/// Summary description for CollectionPropertyDescriptor.
/// </summary>
public partial class RODbDROUsagesPropertyDescriptor : vlnListPropertyDescriptor
{
private RODbDROUsage Item { get { return (RODbDROUsage)_Item; } }
public RODbDROUsagesPropertyDescriptor(RODbDROUsages collection, int index) : base(collection, index) { ;}
}
#endregion
#region Converter
internal class RODbDROUsagesConverter : ExpandableObjectConverter
{
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType)
{
if (destType == typeof(string) && value is RODbDROUsages)
{
// Return department and department role separated by comma.
return ((RODbDROUsages)value).Items.Count.ToString() + " DROUsages";
}
return base.ConvertTo(context, culture, value, destType);
}
}
#endregion
} // Namespace