Added call to AddSlaveUnits method of ConfigInfo class when processing proc.ini file in Loader class

Added private methods AddSlaveUnits, GetUnitNames and GetMasterDir to Loader	class
This commit is contained in:
Rich 2012-12-04 22:35:48 +00:00
parent 7d1f4f4200
commit cd3e0af534

View File

@ -107,51 +107,52 @@ namespace DataLoader
DocVersion v = GetDocVersionFromName((Folder)parfld, vb.Title); DocVersion v = GetDocVersionFromName((Folder)parfld, vb.Title);
if (v == null) if (v == null)
{ {
ConfigFile cfg = new ConfigFile(); ConfigFile cfg = new ConfigFile();
XmlDocument d = cfg.IniToXml(vb.Path + "\\proc.ini"); XmlDocument d = cfg.IniToXml(vb.Path + "\\proc.ini");
//DocVersionConfig fld_cfg = new DocVersionConfig(d == null ? "" : d.InnerXml); AddSlaveUnits(d, vb.Path);
FolderConfig fld_cfg = (d == null) ? null : new FolderConfig(d.InnerXml); //DocVersionConfig fld_cfg = new DocVersionConfig(d == null ? "" : d.InnerXml);
// translate curset.dat into xml & add to d (somehow). FolderConfig fld_cfg = (d==null)?null:new FolderConfig(d.InnerXml);
string csfile = string.Format("{0}\\curset.dat", vb.Path); // translate curset.dat into xml & add to d (somehow).
string defPlantFmt = null; string csfile = string.Format("{0}\\curset.dat",vb.Path);
if (File.Exists(csfile)) string defPlantFmt = null;
{ if (File.Exists(csfile))
CurSet cs = new CurSet(csfile); {
try CurSet cs = new CurSet(csfile);
{ try
if (fld_cfg == null) fld_cfg = new FolderConfig(); {
fld_cfg = cs.Convert(fld_cfg); if (fld_cfg == null) fld_cfg = new FolderConfig();
defPlantFmt = cs.GetDefFmt(); fld_cfg = cs.Convert(fld_cfg);
} defPlantFmt = cs.GetDefFmt();
catch (Exception ex) }
{ catch (Exception ex)
log.ErrorFormat("error in convert curset.dat, ex = {0}", ex.Message); {
frmMain.AddError(ex, "error in convert curset.dat"); log.ErrorFormat("error in convert curset.dat, ex = {0}", ex.Message);
} frmMain.AddError(ex, "error in convert curset.dat");
} }
// *** RHM 20120613 - Fix }
// *** This was naming the DocVersion to the folder name // *** RHM 20120613 - Fix
//string titlepath = vb.Path + "\\" + "Title"; // *** This was naming the DocVersion to the folder name
//FileInfo fi = new FileInfo(titlepath); //string titlepath = vb.Path + "\\" + "Title";
//string thetitle = vb.Title; //FileInfo fi = new FileInfo(titlepath);
//if (File.Exists(titlepath)) //string thetitle = vb.Title;
//{ //if (File.Exists(titlepath))
// StreamReader myReader = new StreamReader(titlepath); //{
// thetitle = myReader.ReadLine(); // StreamReader myReader = new StreamReader(titlepath);
// myReader.Close(); // thetitle = myReader.ReadLine();
//} // myReader.Close();
Folder tmpfld = (Folder)parfld; //}
FormatInfo format = null; Folder tmpfld = (Folder)parfld;
if (defPlantFmt != null && defPlantFmt != "") FormatInfo format = null;
{ if (defPlantFmt != null && defPlantFmt != "")
format = GetFormat(defPlantFmt); {
} format = GetFormat(defPlantFmt);
else }
format = FormatInfo.Get(1); else
format = FormatInfo.Get(1);
using (Format fmt = format.Get()) using(Format fmt = format.Get())
v = DocVersion.MakeDocVersion(tmpfld, (int)DocVersionType(vb.Path.ToLower()), vb.Title, vb.Path.ToLower(), null, fmt, fld_cfg == null ? null : fld_cfg.ToString(), DateTime.Now, "Migration"); v = DocVersion.MakeDocVersion(tmpfld, (int)DocVersionType(vb.Path.ToLower()), vb.Title, vb.Path.ToLower(), null, fmt, fld_cfg == null ? null : fld_cfg.ToString(), DateTime.Now, "Migration");
} }
tn.Tag = v; tn.Tag = v;
MigrateDocVersion(v, false); MigrateDocVersion(v, false);
@ -159,6 +160,76 @@ namespace DataLoader
} }
return 0; return 0;
} }
private void AddSlaveUnits(XmlDocument d, string path)
{
string masterDir = GetMasterDir(d);
if (masterDir == null) return;
DirectoryInfo master = new DirectoryInfo(path);
if (master.Name.ToUpper() != masterDir.ToUpper()) return;
List<string> names = GetUnitNames(d);
DirectoryInfo[] slaves = master.Parent.GetDirectories(masterDir.ToUpper().Replace(".PRC",".SL*"));
XmlDocument units = new XmlDocument();
units.LoadXml("<Slaves/>");
int idx = 0;
foreach (DirectoryInfo slave in slaves)
{
FileInfo[] inis = slave.GetFiles("proc.ini");
if (inis.Length > 0)
{
FileInfo ini = inis[0];
ConfigFile cfg = new ConfigFile();
XmlDocument xSlave = cfg.IniToXml(ini.FullName);
xSlave.LoadXml(xSlave.OuterXml.Replace("<Unit", "<Slave"));
string slaveDir = GetMasterDir(xSlave);
if (slaveDir.ToUpper() == masterDir.ToUpper())
{
XmlNode unit = xSlave.SelectSingleNode("Config/Slave");
XmlAttribute oldindex = xSlave.CreateAttribute("oldindex");
oldindex.InnerText = slave.Extension.Replace(".SL", "");
unit.Attributes.SetNamedItem(oldindex);
XmlAttribute index = xSlave.CreateAttribute("index");
idx++;
index.InnerText = idx.ToString();
unit.Attributes.SetNamedItem(index);
if (names.Count == slaves.Length)
oldindex.InnerText = index.InnerText;
if (xSlave.SelectSingleNode("Config/ProcedureSet") != null)
{
XmlAttribute setName = xSlave.CreateAttribute("SetName");
setName.InnerText = xSlave.SelectSingleNode("Config/ProcedureSet/@Name").InnerText;
unit.Attributes.SetNamedItem(setName);
XmlAttribute setID = xSlave.CreateAttribute("SetID");
setID.InnerText = xSlave.SelectSingleNode("Config/ProcedureSet/@ID").InnerText;
unit.Attributes.SetNamedItem(setID);
}
units.DocumentElement.AppendChild(units.ImportNode(unit, true));
}
}
}
d.DocumentElement.AppendChild(d.ImportNode(units.DocumentElement, true));
//d.DocumentElement.RemoveChild(d.SelectSingleNode("Config/Unit"));
Console.WriteLine(d.OuterXml);
}
private List<string> GetUnitNames(XmlDocument d)
{
XmlNode zapp = d.SelectSingleNode("//Unit");
if (zapp == null) return null;
XmlNode zmstr = zapp.Attributes.GetNamedItem("Name");
if (zmstr == null) return null;
string[] names = zmstr.InnerText.Split(",".ToCharArray());
return new List<string>(names);
}
private static string GetMasterDir(XmlDocument d)
{
XmlNode zapp = d.SelectSingleNode("//Applicability");
if (zapp == null) return null;
XmlNode zmstr = zapp.Attributes.GetNamedItem("MasterDir");
if (zmstr == null) return null;
return zmstr.InnerText;
}
private string _OnlyThisFolder; private string _OnlyThisFolder;
public string OnlyThisFolder public string OnlyThisFolder
{ {
@ -196,17 +267,17 @@ namespace DataLoader
{ {
if (vb.Type != "version") if (vb.Type != "version")
{ {
vb.LoadChildren(vs.GetChildren(vb.ToString())); vb.LoadChildren(vs.GetChildren(vb.ToString()));
List<vlnObject> lv = vb.Children; List<vlnObject> lv = vb.Children;
foreach (vlnObject vbc in lv) foreach (vlnObject vbc in lv)
{ {
if (vbc.Path.ToUpper().StartsWith(OnlyThisFolder) || OnlyThisFolder.StartsWith(vbc.Path.ToUpper())) if (vbc.Path.ToUpper().StartsWith(OnlyThisFolder) || OnlyThisFolder.StartsWith(vbc.Path.ToUpper()))
{ {
TreeNode tnc = tn.Nodes.Add(vbc.Title); TreeNode tnc = tn.Nodes.Add(vbc.Title);
object idc = cslaObject(vbc, dbConn, parent, tnc); object idc = cslaObject(vbc, dbConn, parent, tnc);
frmMain.Status = "Loading " + vbc.Title; frmMain.Status = "Loading " + vbc.Title;
MigrateChildren(vbc, vs, dbConn, idc, tnc); MigrateChildren(vbc, vs, dbConn, idc, tnc);
} }
} }
} }
frmMain.Status = " "; frmMain.Status = " ";