This commit is contained in:
Kathy Ruffing 2009-01-27 15:38:09 +00:00
parent c5dd724569
commit 08e529bf26
2 changed files with 137 additions and 7 deletions

View File

@ -143,6 +143,107 @@ namespace VEPROMS.CSLA.Library
}
}
private byte[] _LastChanged = new byte[8];//timestamp
private int _RODbID;
public int RODbID
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
CanReadProperty("RODbID", true);
if (_MyRODb != null) _RODbID = _MyRODb.RODbID;
return _RODbID;
}
}
private RODb _MyRODb;
public RODb MyRODb
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
CanReadProperty("MyRODb", true);
if (_MyRODb == null && _RODbID != 0) _MyRODb = RODb.Get(_RODbID);
return _MyRODb;
}
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
set
{
CanWriteProperty("MyRODb", true);
if (_MyRODb != value)
{
_MyRODb = value;
PropertyHasChanged();
}
}
}
private string _RODb_ROName = string.Empty;
/// <summary>
/// Hook for future - to allow the user to select multiple RO Databases assocaiated with on DocVersion
/// </summary>
public string RODb_ROName
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
CanReadProperty("RODb_ROName", true);
return _RODb_ROName;
}
}
private string _RODb_FolderPath = string.Empty;
/// <summary>
/// Path to the RO database
/// </summary>
public string RODb_FolderPath
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
CanReadProperty("RODb_FolderPath", true);
return _RODb_FolderPath;
}
}
private string _RODb_DBConnectionString = string.Empty;
/// <summary>
/// Connection String - Default could just be the full path and name of the database
/// </summary>
public string RODb_DBConnectionString
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
CanReadProperty("RODb_DBConnectionString", true);
return _RODb_DBConnectionString;
}
}
private string _RODb_Config = string.Empty;
public string RODb_Config
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
CanReadProperty("RODb_Config", true);
return _RODb_Config;
}
}
private DateTime _RODb_DTS = new DateTime();
public DateTime RODb_DTS
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
CanReadProperty("RODb_DTS", true);
return _RODb_DTS;
}
}
private string _RODb_UserID = string.Empty;
public string RODb_UserID
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
CanReadProperty("RODb_UserID", true);
return _RODb_UserID;
}
}
// TODO: Check ContentRoUsage.GetIdValue to assure that the ID returned is unique
/// <summary>
/// Overrides Base GetIdValue - Used internally by CSLA to determine equality
@ -161,6 +262,14 @@ namespace VEPROMS.CSLA.Library
//{
// return base.ToString();
//}
public override bool IsDirty
{
get { return base.IsDirty || (_MyRODb == null ? false : _MyRODb.IsDirty); }
}
public override bool IsValid
{
get { return (IsNew && !IsDirty ? true : base.IsValid) && (_MyRODb == null ? true : _MyRODb.IsValid); }
}
#endregion
#region ValidationRules
[NonSerialized]
@ -175,6 +284,7 @@ namespace VEPROMS.CSLA.Library
{
_CheckingBrokenRules = true;
IVEHasBrokenRules hasBrokenRules = null;
if (_MyRODb != null && (hasBrokenRules = _MyRODb.HasBrokenRules) != null) return hasBrokenRules;
return hasBrokenRules;
}
finally
@ -207,8 +317,18 @@ namespace VEPROMS.CSLA.Library
ValidationRules.AddRule(
Csla.Validation.CommonRules.StringMaxLength,
new Csla.Validation.CommonRules.MaxLengthRuleArgs("UserID", 100));
ValidationRules.AddRule<ContentRoUsage>(MyRODbRequired, "MyRODb");
// TODO: Add other validation rules
}
private static bool MyRODbRequired(ContentRoUsage target, Csla.Validation.RuleArgs e)
{
if (target._RODbID == 0 && target._MyRODb == null) // Required field missing
{
e.Description = "Required";
return false;
}
return true;
}
// Sample data comparison validation rule
//private bool StartDateGTEndDate(object target, Csla.Validation.RuleArgs e)
//{
@ -234,6 +354,8 @@ namespace VEPROMS.CSLA.Library
//AuthorizationRules.AllowWrite(DTS, "<Role(s)>");
//AuthorizationRules.AllowRead(UserID, "<Role(s)>");
//AuthorizationRules.AllowWrite(UserID, "<Role(s)>");
//AuthorizationRules.AllowRead(RODbID, "<Role(s)>");
//AuthorizationRules.AllowWrite(RODbID, "<Role(s)>");
}
public static bool CanAddObject()
{
@ -265,9 +387,9 @@ namespace VEPROMS.CSLA.Library
#region Factory Methods
public int CurrentEditLevel
{ get { return EditLevel; } }
internal static ContentRoUsage New(string roid)
internal static ContentRoUsage New(string roid, RODb myRODb)
{
return new ContentRoUsage(roid);
return new ContentRoUsage(roid, myRODb);
}
internal static ContentRoUsage Get(SafeDataReader dr)
{
@ -281,13 +403,14 @@ namespace VEPROMS.CSLA.Library
_UserID = _ContentRoUsageExtension.DefaultUserID;
ValidationRules.CheckRules();
}
private ContentRoUsage(string roid)
private ContentRoUsage(string roid, RODb myRODb)
{
MarkAsChild();
// TODO: Add any initialization & defaults
_DTS = _ContentRoUsageExtension.DefaultDTS;
_UserID = _ContentRoUsageExtension.DefaultUserID;
_ROID = roid;
_MyRODb = myRODb;
ValidationRules.CheckRules();
}
internal ContentRoUsage(SafeDataReader dr)
@ -308,6 +431,13 @@ namespace VEPROMS.CSLA.Library
_DTS = dr.GetDateTime("DTS");
_UserID = dr.GetString("UserID");
dr.GetBytes("LastChanged", 0, _LastChanged, 0, 8);
_RODbID = dr.GetInt32("RODbID");
_RODb_ROName = dr.GetString("RODb_ROName");
_RODb_FolderPath = dr.GetString("RODb_FolderPath");
_RODb_DBConnectionString = dr.GetString("RODb_DBConnectionString");
_RODb_Config = dr.GetString("RODb_Config");
_RODb_DTS = dr.GetDateTime("RODb_DTS");
_RODb_UserID = dr.GetString("RODb_UserID");
}
catch (Exception ex) // FKItem Fetch
{
@ -321,7 +451,7 @@ namespace VEPROMS.CSLA.Library
// if we're not dirty then don't update the database
if (!this.IsDirty) return;
SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"];
_LastChanged = RoUsage.Add(cn, ref _ROUsageID, myContent, _ROID, _Config, _DTS, _UserID);
_LastChanged = RoUsage.Add(cn, ref _ROUsageID, myContent, _ROID, _Config, _DTS, _UserID, _MyRODb);
MarkOld();
}
internal void Update(Content myContent)
@ -329,7 +459,7 @@ namespace VEPROMS.CSLA.Library
// if we're not dirty then don't update the database
if (!this.IsDirty) return;
SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"];
_LastChanged = RoUsage.Update(cn, ref _ROUsageID, myContent, _ROID, _Config, _DTS, _UserID, ref _LastChanged);
_LastChanged = RoUsage.Update(cn, ref _ROUsageID, myContent, _ROID, _Config, _DTS, _UserID, ref _LastChanged, _MyRODb);
MarkOld();
}
internal void DeleteSelf(Content myContent)

View File

@ -57,9 +57,9 @@ namespace VEPROMS.CSLA.Library
return roUsage;
return null;
}
public ContentRoUsage Add(string roid) // One to Many
public ContentRoUsage Add(string roid, RODb myRODb) // One to Many
{
ContentRoUsage roUsage = ContentRoUsage.New(roid);
ContentRoUsage roUsage = ContentRoUsage.New(roid, myRODb);
this.Add(roUsage);
return roUsage;
}