Added GetByItemIDAndRevisionNumberAndUnitID method to Revision class

Added GetByItemIDandUnitID method to RevisionInfoList class
Added UnitID property to ItemCriteria class of RevisionInfo class
Added CurrentItemUnitCriteria class implementing ItemCriteria class of RevisionInfo class
Added GetCurrentByItemIDandUnitID method to RevisonInfo class
Added DataPortal_Fetch method using CurrentItemUnitCriteria parameter to RevisionInfo class
Changed how DocVersionInfo was obatained to support multi unit
Changed how ROFstInfo was obtained to support multi unit
Set ROFstInfo objects DocVersion to support multi unit
Changed docVer property of ROFstInfo class to DocVersionInfo class
Changed how docVer property was assigned value in ROFstInfo class
Changed ResolvePathTo method of TransitionInfo class to support multi unit
Changed how thisTab variable value is set in TransitionText class to support multi unit
This commit is contained in:
Rich 2012-12-04 22:59:40 +00:00
parent 3036b5fb7d
commit 5eeb573a43
3 changed files with 271 additions and 15 deletions

View File

@ -138,15 +138,16 @@ namespace VEPROMS.CSLA.Library
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
#endregion
#region PropertiesAndData
private DocVersion _docVer;
public DocVersion docVer
private DocVersionInfo _docVer;
public DocVersionInfo docVer
{
get
{
if (_docVer == null)
{
if (ROFstAssociations.Count == 0) return null;
_docVer = DocVersion.Get(this.ROFstAssociations[0].MyDocVersion.VersionID);
// _docVer = DocVersion.Get(this.ROFstAssociations[0].MyDocVersion.VersionID);
_docVer = this.ROFstAssociations[0].MyDocVersion;
}
return _docVer;
}
@ -557,15 +558,15 @@ namespace VEPROMS.CSLA.Library
{
using (Figure figure = Figure.GetByROFstID_ImageID(this.ROFstID, roImg.ImageID))
{
if (figure != null) return;
if (figure != null) return;
Figure.MakeFigure(rofst, roImg, null).Dispose();
myAddedROImages.Add(key);
}
}
myAddedROImages.Add(key);
}
}
}
}
}
}
private int FindExisting(Dictionary<string, int> myExistingROImages, string imgname, string imgfile, byte[] cmpFileContents, byte[] fileContents)
{

View File

@ -432,6 +432,94 @@ namespace VEPROMS.CSLA.Library
throw new DbCslaException("Revision.DataPortal_Fetch", ex);
}
}
//jcb 20120625
public static Revision GetByItemIDAndRevisionNumberAndUnitID(int itemID, string revisionNumber, int unitID)
{
if (!CanGetObject())
throw new System.Security.SecurityException("User not authorized to view a Revision");
try
{
//Revision tmp = GetCachedByPrimaryKey(revisionID);
//if (tmp == null)
//{
Revision tmp = DataPortal.Fetch<Revision>(new UnitItemRevisionNumberCriteria(itemID, revisionNumber, unitID));
// AddToCache(tmp);
//}
if (tmp.ErrorMessage == "No Record Found")
{
tmp.Dispose(); // Clean-up Revision
tmp = null;
}
return tmp;
}
catch (Exception ex)
{
throw new DbCslaException("Error on Revision.GetByItemIDAndRevisionNumber", ex);
}
}
[Serializable()]
protected class UnitItemRevisionNumberCriteria
{
private int _ItemID;
public int ItemID
{ get { return _ItemID; } }
private string _RevisionNumber;
public string RevisionNumber
{ get { return _RevisionNumber; } }
private int _UnitID;
public int UnitID
{ get { return _UnitID; } }
public UnitItemRevisionNumberCriteria(int itemID, string revisionNumber, int unitID)
{
_ItemID = itemID;
_RevisionNumber = revisionNumber;
_UnitID = unitID;
}
}
private void DataPortal_Fetch(UnitItemRevisionNumberCriteria criteria)
{
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] Revision.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 = "getRevisionByItemIDandRevisionNumberAndUnitID";
cm.Parameters.AddWithValue("@ItemID", criteria.ItemID);
cm.Parameters.AddWithValue("@RevisionNumber", criteria.RevisionNumber);
cm.Parameters.AddWithValue("@UnitID", criteria.UnitID);
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
{
if (!dr.Read())
{
_ErrorMessage = "No Record Found";
return;
}
ReadData(dr);
// load child objects
dr.NextResult();
_RevisionChecks = RevisionChecks.Get(dr);
// load child objects
dr.NextResult();
_RevisionVersions = RevisionVersions.Get(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("Revision.DataPortal_Fetch", ex);
_ErrorMessage = ex.Message;
throw new DbCslaException("Revision.DataPortal_Fetch", ex);
}
}
//end jcb 20120625
}
public partial class RevisionInfoList
{
@ -493,6 +581,70 @@ namespace VEPROMS.CSLA.Library
}
this.RaiseListChangedEvents = true;
}
//jcb 20120626
public static RevisionInfoList GetByItemIDandUnitID(int itemID, int unitID)
{
try
{
//if (_RevisionInfoList != null)
// return _RevisionInfoList;
RevisionInfoList tmp = DataPortal.Fetch<RevisionInfoList>(new ItemUnitCriteria(itemID, unitID));
RevisionInfo.AddList(tmp);
tmp.AddEvents();
//_RevisionInfoList = tmp;
return tmp;
}
catch (Exception ex)
{
throw new DbCslaException("Error on RevisionInfoList.GetByItemID", ex);
}
}
[Serializable()]
protected class ItemUnitCriteria
{
private int _ItemID;
public int ItemID
{ get { return _ItemID; } }
private int _UnitID;
public int UnitID
{ get { return _UnitID; } }
public ItemUnitCriteria(int itemID, int unitID)
{
_ItemID = itemID;
_UnitID = unitID;
}
}
private void DataPortal_Fetch(ItemUnitCriteria criteria)
{
this.RaiseListChangedEvents = false;
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] RevisionInfoList.DataPortal_Fetch", GetHashCode());
try
{
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandType = CommandType.StoredProcedure;
cm.CommandText = "getRevisionsByItemIDandUnitID";
cm.Parameters.AddWithValue("@ItemID", criteria.ItemID);
cm.Parameters.AddWithValue("@UnitID", criteria.UnitID);
using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
{
IsReadOnly = false;
while (dr.Read()) this.Add(new RevisionInfo(dr));
IsReadOnly = true;
}
}
}
}
catch (Exception ex)
{
if (_MyLog.IsErrorEnabled) _MyLog.Error("RevisionInfoList.DataPortal_Fetch", ex);
throw new DbCslaException("RevisionInfoList.DataPortal_Fetch", ex);
}
this.RaiseListChangedEvents = true;
}
//end jcb 20120626
}
public partial class RevisionInfo
{
@ -517,6 +669,12 @@ namespace VEPROMS.CSLA.Library
{
_ItemID = itemID;
}
private int _UnitID = 0;
public int UnitID
{
get{return _UnitID;}
set{_UnitID = value;}
}
}
[Serializable()]
protected class CurrentItemCriteria : ItemCriteria
@ -527,6 +685,15 @@ namespace VEPROMS.CSLA.Library
}
}
[Serializable()]
protected class CurrentItemUnitCriteria : ItemCriteria
{
public CurrentItemUnitCriteria(int itemID, int unitID)
: base(itemID)
{
UnitID = unitID;
}
}
[Serializable()]
protected class PreviousItemCriteria : ItemCriteria
{
public PreviousItemCriteria(int itemID)
@ -557,6 +724,23 @@ namespace VEPROMS.CSLA.Library
throw new DbCslaException("Error on RevisionInfo.GetCurrentByItemID", ex);
}
}
public static RevisionInfo GetCurrentByItemIDandUnitID(int itemID, int unitID)
{
try
{
RevisionInfo tmp = DataPortal.Fetch<RevisionInfo>(new CurrentItemUnitCriteria(itemID, unitID));
if (tmp.ErrorMessage == "No Record Found")
{
tmp.Dispose(); // Clean-up RevisionInfo
tmp = null;
}
return tmp;
}
catch (Exception ex)
{
throw new DbCslaException("Error on RevisionInfo.GetCurrentByItemID", ex);
}
}
public static RevisionInfo GetPreviousByItemID(int itemID)
{
try
@ -652,6 +836,42 @@ namespace VEPROMS.CSLA.Library
throw new DbCslaException("RevisionInfo.DataPortal_Fetch", ex);
}
}
private void DataPortal_Fetch(CurrentItemUnitCriteria criteria)
{
if (_MyLog.IsDebugEnabled) _MyLog.DebugFormat("[{0}] RevisionInfo.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 = "getCurrentRevisionByItemIDandUnitID";
cm.Parameters.AddWithValue("@ItemID", criteria.ItemID);
cm.Parameters.AddWithValue("@UnitID", criteria.UnitID);
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("RevisionInfo.DataPortal_Fetch", ex);
_ErrorMessage = ex.Message;
throw new DbCslaException("RevisionInfo.DataPortal_Fetch", ex);
}
}
#endregion
//jcb stuff
public VersionInfo LatestVersion
@ -698,10 +918,12 @@ namespace VEPROMS.CSLA.Library
myROIDs.Add(myRO.ROID.ToUpper());
//create checkro record for each roid
//_MyTimer.ActiveProcess = "Get DocVersionInfo";
DocVersionInfo dbi = proc.ActiveParent as DocVersionInfo;
// DocVersionInfo dbi = proc.ActiveParent as DocVersionInfo;
DocVersionInfo dvi = proc.MyDocVersion;
//_MyTimer.ActiveProcess = "Get MyROFst";
ROFstInfo rofst = ROFstInfo.GetJustROFst(dbi.DocVersionAssociations[0].ROFstID);
ROFstInfo rofst = ROFstInfo.GetJustROFst(dvi.DocVersionAssociations[0].ROFstID);
//_MyTimer.ActiveProcess = "Get ROFst Lookup";
rofst.docVer = dvi;
ROFSTLookup lookup = rofst.ROFSTLookup;
//_MyTimer.ActiveProcess = "Populating RevisionChecksXML table";
cc.ROConsistency.ROFstDate = rofst.DTS;

View File

@ -43,10 +43,42 @@ namespace VEPROMS.CSLA.Library
//Console.WriteLine("TranType = {0}", TranType);
//Console.WriteLine("MyItemToID = {0}", MyItemToID);
//Console.WriteLine("MyItemRangeID = {0}", MyItemRangeID);
string retval = ResolvePathTo(item.ActiveFormat, item, TranType, MyItemToID, MyItemRangeID);
if (item.NewTransToUnNumberedItem)
NewTransToUnNumberedItem = true;
return retval;
return ResolvePathTo(item.ActiveFormat, item, TranType, MyItemToID, MyItemRangeID);
}
public string ResolvePathTo(TransitionLookup tranLookup)
{
MyContent.RefreshContentItems();
ItemInfo item = MyContent.ContentItems[0];
ItemInfo myItemToID = MyItemToID;
if (tranLookup.ContainsKey(ToID))
myItemToID = tranLookup[ToID];
else
{
//different proc
//_MyLog.WarnFormat("Transition May Not Be Correct at Location From {0} To {1}", item.SearchPath, myItemToID.SearchPath);
tranLookup.AddProcLookup(myItemToID.MyProcedure.ItemID, ProcedureInfo.GetNewLookup(tranLookup, new TransitionLookupEventArgs(ToID, tranLookup.ApplicabilityUnit, MyItemToID.MyDocVersion, tranLookup)).MyLookup);
if (tranLookup.ContainsKey(ToID))
myItemToID = tranLookup[ToID];
//Console.WriteLine("Transition May Not Be Correct at Location");
}
ItemInfo myItemRangeID = MyItemRangeID;
if (tranLookup.ContainsKey(RangeID))
myItemRangeID = tranLookup[RangeID];
else
{
//different proc
//_MyLog.WarnFormat("Transition May Not Be Correct at Location From {0} To {1}", item.SearchPath, myItemRangeID.SearchPath);
tranLookup.AddProcLookup(MyItemRangeID.MyProcedure.ItemID, ProcedureInfo.GetNewLookup(tranLookup, new TransitionLookupEventArgs(RangeID, tranLookup.ApplicabilityUnit,MyItemRangeID.MyDocVersion, tranLookup)).MyLookup);
if (tranLookup.ContainsKey(RangeID))
myItemRangeID = tranLookup[RangeID];
//Console.WriteLine("Transition May Not Be Correct at Location");
//Console.WriteLine("Format = {0}", item.ActiveFormat);
//Console.WriteLine("item = {0}", item.ItemID);
//Console.WriteLine("TranType = {0}", TranType);
//Console.WriteLine("MyItemToID = {0}", MyItemToID);
//Console.WriteLine("MyItemRangeID = {0}", MyItemRangeID);
}
return ResolvePathTo(item.ActiveFormat, item, TranType, myItemToID, myItemRangeID);
}
}
#region AffectedTransitons
@ -372,7 +404,7 @@ namespace VEPROMS.CSLA.Library
{
_Results.Append(Prefix);
_Prefix = null;
}
}
}
@ -606,7 +638,8 @@ namespace VEPROMS.CSLA.Library
while (!pitem.IsHigh)
{
string thisTab = StepInfo.Get(pitem.ItemID).MyTab.CleanText;
//string thisTab = StepInfo.Get(pitem.ItemID).MyTab.CleanText;
string thisTab = pitem.MyTab.CleanText;// StepInfo.Get(pitem.ItemID).MyTab.CleanText;
// remove delimiters of '.' and ')' in tab.
if (!hasDelim)
{