outside transitions logic and annoations for unresolved transitions
This commit is contained in:
		@@ -26,14 +26,25 @@ namespace DataLoader
 | 
			
		||||
{
 | 
			
		||||
	public partial class Loader
 | 
			
		||||
	{
 | 
			
		||||
        private string AddTrans(Content fromCon, DataRow dr, DataRow dr2)
 | 
			
		||||
		Dictionary<int, List<string>> _ContentMigrationErrors = new Dictionary<int,List<string>>();
 | 
			
		||||
		List<string> _TransitionMigrationErrors = null;
 | 
			
		||||
		//private void AddContentMigrationError(Content fromCon,string errorMsg)
 | 
			
		||||
		//{
 | 
			
		||||
		//   if (!_ContentMigrationErrors.ContainsKey(fromCon.ContentID))
 | 
			
		||||
		//      _ContentMigrationErrors.Add(fromCon.ContentID,new List<string>());
 | 
			
		||||
		//   _ContentMigrationErrors[fromCon.ContentID].Add(errorMsg);
 | 
			
		||||
		//}
 | 
			
		||||
 | 
			
		||||
		private string AddTrans(OleDbConnection cn, Content fromCon, DataRow dr, DataRow dr2, string pth)
 | 
			
		||||
        {
 | 
			
		||||
			List<string> migrationErrors = new List<string>();
 | 
			
		||||
            //TODO: ZTransitions tr.Oldto = dr["OLDTO"].ToString();
 | 
			
		||||
            string thekey = dr["TONUMBER"].ToString() + "|" + dr["TOSEQUENCE"].ToString();
 | 
			
		||||
            string dti = dr["DTI"].ToString().PadRight(18, ' ');
 | 
			
		||||
            string userid = dti.Substring(13, 5).Trim();
 | 
			
		||||
            int itype = 0;
 | 
			
		||||
            ConfigInfo ci = null;
 | 
			
		||||
				//string otranskey = null;
 | 
			
		||||
            // The transition type was stored as a character & also, when read in thru
 | 
			
		||||
            // ado.net may have been converted into unicode.  So in order to get the 
 | 
			
		||||
            // correct type, first, use the TextConvert to eliminate the conversion done
 | 
			
		||||
@@ -60,6 +71,16 @@ namespace DataLoader
 | 
			
		||||
                itype = -1;
 | 
			
		||||
            }
 | 
			
		||||
            DateTime dts = GetDTS(MakeDate(dti.Substring(0, 8).Trim()), dti.Substring(8, 5).Trim());
 | 
			
		||||
 | 
			
		||||
			  //// if this is an Outside Transition, then decode the ToTrans to the procedure set path and
 | 
			
		||||
			  // // procedure number.  This will be saved in the tr.MyZTransition.Oldto for now.
 | 
			
		||||
			  // // Then, after all the set are processed, we'll grab these and find the proper ITEM for
 | 
			
		||||
			  // // the transition reference.
 | 
			
		||||
			  // if (itype == 6) // Outside Transition
 | 
			
		||||
			  // {
 | 
			
		||||
			  //     = ProcessOutSideTrans(cn, thekey, pth);
 | 
			
		||||
			  // }
 | 
			
		||||
 | 
			
		||||
            // if it's in the dictionary of structure elements already migrated, just use this 
 | 
			
		||||
            // structure id, or if it's in the dictionary of structure elements that have
 | 
			
		||||
            // not been migrated but a record was created from this code, use it.  Otherwise
 | 
			
		||||
@@ -67,6 +88,20 @@ namespace DataLoader
 | 
			
		||||
            // a structure record.
 | 
			
		||||
            Item toItem = null;
 | 
			
		||||
			Item toItem2 = null;
 | 
			
		||||
			if (itype == 6) // Outside Transition
 | 
			
		||||
			{
 | 
			
		||||
				ItemInfo tmp = _OutTran.GetItem(thekey);
 | 
			
		||||
				if (tmp != null)
 | 
			
		||||
					toItem = tmp.Get();
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					toItem = Item.New(null, TransDummyCont, DateTime.Now, "Migration");
 | 
			
		||||
					migrationErrors.Add("Transition Error: Missing Data - "+_OutTran.GetDescription(thekey));
 | 
			
		||||
				}
 | 
			
		||||
				toItem2 = toItem;
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				if (dicTrans_ItemDone.ContainsKey(thekey))
 | 
			
		||||
				{
 | 
			
		||||
					toItem = dicTrans_ItemDone[thekey];
 | 
			
		||||
@@ -83,6 +118,7 @@ namespace DataLoader
 | 
			
		||||
						//toItem = Item.MakeItem(null, fromCon, DateTime.Now, "Migration");
 | 
			
		||||
						toItem = Item.New(null, TransDummyCont, DateTime.Now, "Migration");
 | 
			
		||||
						dicTrans_ItemIds.Add(thekey, toItem);
 | 
			
		||||
						_TransitionMigrationErrors.Add(thekey);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
@@ -109,15 +145,20 @@ namespace DataLoader
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
            if (userid == null || userid == "") userid = "Migration";
 | 
			
		||||
            Transition tr = null;
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                tr = Transition.New(fromCon, toItem, toItem2, itype, ci!=null?ci.ToString():null, dts, userid);
 | 
			
		||||
					 //if (otranskey != null)
 | 
			
		||||
					 //  tr.MyZTransition.Oldto = otranskey; // info to finish outside transition processing later
 | 
			
		||||
					 //else
 | 
			
		||||
						tr.MyZTransition.Oldto = dr["OLDTO"].ToString();
 | 
			
		||||
				if (!tr.IsSavable) ErrorRpt.ErrorReport(tr);
 | 
			
		||||
				tr.Save();
 | 
			
		||||
				if (migrationErrors.Count > 0)
 | 
			
		||||
					_ContentMigrationErrors.Add(fromCon.ContentID, migrationErrors);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
@@ -160,7 +201,97 @@ namespace DataLoader
 | 
			
		||||
            return trtxt.ToString();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private string MigrateTrans(OleDbConnection cn, string textm, string seqcvt, Content content)
 | 
			
		||||
		//private bool pathsAreEqual(string setpth, string pth)
 | 
			
		||||
		//{
 | 
			
		||||
		//   bool eql = false;
 | 
			
		||||
		//   string cpth = (pth.Substring(3)).ToUpper();
 | 
			
		||||
		//   string spth = setpth.ToUpper();
 | 
			
		||||
		//   eql = cpth.Equals(spth);
 | 
			
		||||
		//   if (!eql) // full path not equal, check for a partial path match
 | 
			
		||||
		//   {
 | 
			
		||||
		//      int idx = spth.LastIndexOf('\\');
 | 
			
		||||
		//      idx = spth.LastIndexOf('\\', idx - 1);
 | 
			
		||||
		//      spth = spth.Substring(idx);
 | 
			
		||||
		//      idx = cpth.LastIndexOf('\\');
 | 
			
		||||
		//      idx = cpth.LastIndexOf('\\', idx - 1);
 | 
			
		||||
		//      cpth = cpth.Substring(idx);
 | 
			
		||||
		//      eql = (cpth.Equals(spth));
 | 
			
		||||
		//   }
 | 
			
		||||
		//   return eql;
 | 
			
		||||
		//}
 | 
			
		||||
 | 
			
		||||
		//private string ProcessOutSideTrans(OleDbConnection cn, string thekey, string pth)
 | 
			
		||||
		//{
 | 
			
		||||
		//   string xtransstring = null;
 | 
			
		||||
		//   DataTable dt = null;
 | 
			
		||||
		//   DataSet ds = null;
 | 
			
		||||
		//   OleDbDataAdapter da = null;
 | 
			
		||||
 | 
			
		||||
		//   DataTable dt2 = null;
 | 
			
		||||
		//   DataSet ds2 = null;
 | 
			
		||||
		//   OleDbDataAdapter da2 = null;
 | 
			
		||||
 | 
			
		||||
		//   string tosetid = thekey.Substring(0, 8);
 | 
			
		||||
		//   string toprocid = thekey.Substring(8, 8);
 | 
			
		||||
 | 
			
		||||
		//   /// Get the path to the procedure set from the SETID 
 | 
			
		||||
		//   string xtsetcmd = "SELECT * FROM [xtsetid] WHERE [SETID]='" + tosetid +"'";
 | 
			
		||||
		//   string xtproccmd = "SELECT * FROM [xtprocid] WHERE [SETID]='" + tosetid +"' AND [PROCID]='" + toprocid +"'";
 | 
			
		||||
 | 
			
		||||
		//   da = new OleDbDataAdapter(xtsetcmd, cn);
 | 
			
		||||
		//   da2 = new OleDbDataAdapter(xtproccmd, cn);
 | 
			
		||||
 | 
			
		||||
		//   // get xtsetid records.
 | 
			
		||||
		//   ds = new DataSet();
 | 
			
		||||
		//   try
 | 
			
		||||
		//   {
 | 
			
		||||
		//      da.Fill(ds);
 | 
			
		||||
		//      dt = ds.Tables[0];
 | 
			
		||||
		//      dt.CaseSensitive = true;
 | 
			
		||||
		//   }
 | 
			
		||||
		//   catch (Exception ex)
 | 
			
		||||
		//   {
 | 
			
		||||
		//      log.Error("Error getting XTSETID");
 | 
			
		||||
		//      log.ErrorFormat("to number = {0}", thekey);
 | 
			
		||||
		//      log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException);
 | 
			
		||||
		//      //return textm;
 | 
			
		||||
		//   }
 | 
			
		||||
		//   DataRow dr = dt.Rows[0]; // there should be only one entry!
 | 
			
		||||
		//   string setpth = dr["Path"].ToString(); // this should be the path to the proc set!
 | 
			
		||||
 | 
			
		||||
		//   // get xtprocid records
 | 
			
		||||
		//   ds2 = new DataSet();
 | 
			
		||||
		//   try
 | 
			
		||||
		//   {
 | 
			
		||||
		//      da2.Fill(ds2);
 | 
			
		||||
		//      dt2 = ds2.Tables[0];
 | 
			
		||||
		//      dt2.CaseSensitive = true;
 | 
			
		||||
		//   }
 | 
			
		||||
		//   catch (Exception ex)
 | 
			
		||||
		//   {
 | 
			
		||||
		//      log.Error("Error getting XTPROCID");
 | 
			
		||||
		//      log.ErrorFormat("to number = {0}", thekey);
 | 
			
		||||
		//      log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException);
 | 
			
		||||
		//      //return textm;
 | 
			
		||||
		//   }
 | 
			
		||||
		//   DataRow dr2 = dt2.Rows[0]; // there should be only one entry!
 | 
			
		||||
		//   string procnum = dr2["Procnum"].ToString(); // this should be the procedure number!
 | 
			
		||||
 | 
			
		||||
		//   xtransstring = setpth + "\\" + procnum; // ex: VEHLP\PROCS\0POP05-EO00
 | 
			
		||||
 | 
			
		||||
		//   //if (pathsAreEqual(setpth, pth))
 | 
			
		||||
		//   //{
 | 
			
		||||
		//   //   // Outside Transiton is to this procedure set (not really outsde)
 | 
			
		||||
		//   //   // need to find the item id that references the proc number and title
 | 
			
		||||
		//   //   // - find the setpth in the doc.version
 | 
			
		||||
		//   //}
 | 
			
		||||
		//   //else
 | 
			
		||||
		//      //return thekey; // is a true outside transition
 | 
			
		||||
 | 
			
		||||
		//   return xtransstring;
 | 
			
		||||
		//}
 | 
			
		||||
 | 
			
		||||
        private string MigrateTrans(OleDbConnection cn, string textm, string seqcvt, Content content, string pth)
 | 
			
		||||
		{
 | 
			
		||||
			StringBuilder trtxt = new StringBuilder();
 | 
			
		||||
			int instance = 0;
 | 
			
		||||
@@ -217,10 +348,10 @@ namespace DataLoader
 | 
			
		||||
                    {
 | 
			
		||||
                        instance++;
 | 
			
		||||
                        DataRow dr2 = dt.Rows[instance];
 | 
			
		||||
                        rectxt = AddTrans(content, dr, dr2);
 | 
			
		||||
								rectxt = AddTrans(cn, content, dr, dr2, pth);
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
						rectxt = AddTrans(content, dr, null);
 | 
			
		||||
							  rectxt = AddTrans(cn, content, dr, null, pth);
 | 
			
		||||
					trtxt.Append(textm[tok]);
 | 
			
		||||
                    trtxt.Append(rectxt);
 | 
			
		||||
				}
 | 
			
		||||
@@ -245,19 +376,48 @@ namespace DataLoader
 | 
			
		||||
		}
 | 
			
		||||
		private void ShowMissingTransitions()
 | 
			
		||||
		{
 | 
			
		||||
			log.Info("Missing Transitions from Dictionary");
 | 
			
		||||
			if (dicTrans_ItemIds.Keys.Count > 0)
 | 
			
		||||
			log.Warn("Missing Transitions from Dictionary");
 | 
			
		||||
			foreach (string s in dicTrans_ItemIds.Keys)
 | 
			
		||||
			{
 | 
			
		||||
				log.InfoFormat("{0} - {1}", s, dicTrans_ItemIds[s]);
 | 
			
		||||
				log.WarnFormat("{0} - {1}", s, dicTrans_ItemIds[s]);
 | 
			
		||||
				//AddItemAnnotation(dicTrans_ItemIds[s]);
 | 
			
		||||
			}
 | 
			
		||||
			foreach (string s in dicTrans_MigrationErrors.Keys)
 | 
			
		||||
			{
 | 
			
		||||
				foreach (Item itm in dicTrans_MigrationErrors[s])
 | 
			
		||||
				{
 | 
			
		||||
					ItemAnnotation ia = itm.ItemAnnotations.Add(MigrationErrorType);
 | 
			
		||||
					ia.SearchText = "Transition Error: Destination Missing - " + s;
 | 
			
		||||
					ia.UserID = "Migration";
 | 
			
		||||
					itm.Save();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			log.Info("Bad transitions to 'dummy' content");
 | 
			
		||||
			if (TransDummyCont.ContentItemCount > 0)
 | 
			
		||||
				log.Warn("Bad transitions to 'dummy' content");
 | 
			
		||||
			foreach (ContentItem itm in TransDummyCont.ContentItems)
 | 
			
		||||
			{
 | 
			
		||||
				log.InfoFormat("ItemID = {0}", itm.ItemID);
 | 
			
		||||
				log.WarnFormat("ItemID = {0}", itm.ItemID);
 | 
			
		||||
				//AddItemAnnotation(itm.MyItem);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
            log.Info("End of Missing Transitions");
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		private void AddItemAnnotation(Item itm)
 | 
			
		||||
		{
 | 
			
		||||
			foreach (ItemTransition_ToID tmp in itm.ItemTransitions_ToID)
 | 
			
		||||
			{
 | 
			
		||||
				foreach (ContentItem ci in tmp.MyContent.ContentItems)
 | 
			
		||||
				{
 | 
			
		||||
					ItemAnnotation ia = ci.MyItem.ItemAnnotations.Add(MigrationErrorType);
 | 
			
		||||
					ia.SearchText = "Transition Error: Missing end point";
 | 
			
		||||
					ia.UserID = "Migration";
 | 
			
		||||
					ci.MyItem.Save();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user