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 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 // TODO: Check ContentRoUsage.GetIdValue to assure that the ID returned is unique
/// <summary> /// <summary>
/// Overrides Base GetIdValue - Used internally by CSLA to determine equality /// Overrides Base GetIdValue - Used internally by CSLA to determine equality
@ -161,6 +262,14 @@ namespace VEPROMS.CSLA.Library
//{ //{
// return base.ToString(); // 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 #endregion
#region ValidationRules #region ValidationRules
[NonSerialized] [NonSerialized]
@ -175,6 +284,7 @@ namespace VEPROMS.CSLA.Library
{ {
_CheckingBrokenRules = true; _CheckingBrokenRules = true;
IVEHasBrokenRules hasBrokenRules = null; IVEHasBrokenRules hasBrokenRules = null;
if (_MyRODb != null && (hasBrokenRules = _MyRODb.HasBrokenRules) != null) return hasBrokenRules;
return hasBrokenRules; return hasBrokenRules;
} }
finally finally
@ -207,8 +317,18 @@ namespace VEPROMS.CSLA.Library
ValidationRules.AddRule( ValidationRules.AddRule(
Csla.Validation.CommonRules.StringMaxLength, Csla.Validation.CommonRules.StringMaxLength,
new Csla.Validation.CommonRules.MaxLengthRuleArgs("UserID", 100)); new Csla.Validation.CommonRules.MaxLengthRuleArgs("UserID", 100));
ValidationRules.AddRule<ContentRoUsage>(MyRODbRequired, "MyRODb");
// TODO: Add other validation rules // 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 // Sample data comparison validation rule
//private bool StartDateGTEndDate(object target, Csla.Validation.RuleArgs e) //private bool StartDateGTEndDate(object target, Csla.Validation.RuleArgs e)
//{ //{
@ -234,6 +354,8 @@ namespace VEPROMS.CSLA.Library
//AuthorizationRules.AllowWrite(DTS, "<Role(s)>"); //AuthorizationRules.AllowWrite(DTS, "<Role(s)>");
//AuthorizationRules.AllowRead(UserID, "<Role(s)>"); //AuthorizationRules.AllowRead(UserID, "<Role(s)>");
//AuthorizationRules.AllowWrite(UserID, "<Role(s)>"); //AuthorizationRules.AllowWrite(UserID, "<Role(s)>");
//AuthorizationRules.AllowRead(RODbID, "<Role(s)>");
//AuthorizationRules.AllowWrite(RODbID, "<Role(s)>");
} }
public static bool CanAddObject() public static bool CanAddObject()
{ {
@ -265,9 +387,9 @@ namespace VEPROMS.CSLA.Library
#region Factory Methods #region Factory Methods
public int CurrentEditLevel public int CurrentEditLevel
{ get { return EditLevel; } } { 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) internal static ContentRoUsage Get(SafeDataReader dr)
{ {
@ -281,13 +403,14 @@ namespace VEPROMS.CSLA.Library
_UserID = _ContentRoUsageExtension.DefaultUserID; _UserID = _ContentRoUsageExtension.DefaultUserID;
ValidationRules.CheckRules(); ValidationRules.CheckRules();
} }
private ContentRoUsage(string roid) private ContentRoUsage(string roid, RODb myRODb)
{ {
MarkAsChild(); MarkAsChild();
// TODO: Add any initialization & defaults // TODO: Add any initialization & defaults
_DTS = _ContentRoUsageExtension.DefaultDTS; _DTS = _ContentRoUsageExtension.DefaultDTS;
_UserID = _ContentRoUsageExtension.DefaultUserID; _UserID = _ContentRoUsageExtension.DefaultUserID;
_ROID = roid; _ROID = roid;
_MyRODb = myRODb;
ValidationRules.CheckRules(); ValidationRules.CheckRules();
} }
internal ContentRoUsage(SafeDataReader dr) internal ContentRoUsage(SafeDataReader dr)
@ -308,6 +431,13 @@ namespace VEPROMS.CSLA.Library
_DTS = dr.GetDateTime("DTS"); _DTS = dr.GetDateTime("DTS");
_UserID = dr.GetString("UserID"); _UserID = dr.GetString("UserID");
dr.GetBytes("LastChanged", 0, _LastChanged, 0, 8); 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 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 we're not dirty then don't update the database
if (!this.IsDirty) return; if (!this.IsDirty) return;
SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; 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(); MarkOld();
} }
internal void Update(Content myContent) 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 we're not dirty then don't update the database
if (!this.IsDirty) return; if (!this.IsDirty) return;
SqlConnection cn = (SqlConnection)ApplicationContext.LocalContext["cn"]; 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(); MarkOld();
} }
internal void DeleteSelf(Content myContent) internal void DeleteSelf(Content myContent)

View File

@ -57,9 +57,9 @@ namespace VEPROMS.CSLA.Library
return roUsage; return roUsage;
return null; 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); this.Add(roUsage);
return roUsage; return roUsage;
} }