//dict должен быть с компаратором на название объекта public InfaParser(List <FileInfo> files, InfaObjectDict dict) { foreach (FileInfo file in files) { if (file.Extension.Equals(".xml", StringComparison.CurrentCultureIgnoreCase)) { if (file.Exists) { xDoc = new XmlDocument(); xDoc.Load(file.FullName); XmlNode objNode = null; Type type = null; objNode = GetObjNode(xDoc, ref type); if (objNode == null) { throw new ArgumentException("В файле " + file.FullName + " не найден тип объекта"); } objName = objNode.Attributes.GetNamedItem("NAME").Value; InfaBaseObject obj = CreateInfaObject(type, objName, xDoc, file); dict.AddObjectConsiderIntersections(obj, file); } else { dict.notFoundFiles.Add(file); } } } }
public void GenerateParentNames(XmlNode currNode, InfaObjectDict dict) { foreach (XmlNode subNode in currNode) { if (subNode.Name == "INSTANCE") { foreach (XmlAttribute attr in subNode.Attributes) { if (attr.Name == "TYPE" && infaParentTypes.Contains(attr.Value)) { InfaBaseObject parentPattern = InfaParser.CreateInfaObject(subNode.Attributes.GetNamedItem("TYPE").Value, subNode.Attributes.GetNamedItem("NAME").Value, subNode, null); if (dict.baseDict.objFilesPairs.ContainsKey(parentPattern)) { var currParents = dict.baseDict.objFilesPairs.Where(kvp => new InfaObjectNameComparer().Equals(kvp.Key, parentPattern)).Select(kvp => kvp.Key); parents.UnionWith(currParents); } else { if (!dict.notFoundObject.ContainsKey(this)) { dict.notFoundObject[this] = new HashSet <InfaBaseObject>(); } dict.notFoundObject[this].Add(parentPattern); } } } } else { GenerateParentNames(subNode, dict); } } }
public static void AddInfaWrongOrderInDGV(DataGridView dictDGV, InfaObjectDict dict) { bool colorDeterminator = false; foreach (KeyValuePair <InfaBaseObject, InfaBaseObject> item in dict.orderMistakes) { InfaBaseObject infaObj1 = item.Key; DataGridViewRow row1 = new DataGridViewRow(); row1.Cells.AddRange(new DataGridViewTextBoxCell(), new DataGridViewTextBoxCell(), new DataGridViewTextBoxCell()); row1.Cells[0].Value = infaObj1.objName; row1.Cells[1].Value = infaObj1.GetType().Name; row1.Cells[2].Value = infaObj1.file.FullName; row1.DefaultCellStyle.BackColor = colorDeterminator ? Color.LightCyan : Color.LightYellow; dictDGV.Rows.Add(row1); InfaBaseObject infaObj2 = item.Value; DataGridViewRow row2 = new DataGridViewRow(); row2.Cells.AddRange(new DataGridViewTextBoxCell(), new DataGridViewTextBoxCell(), new DataGridViewTextBoxCell()); row2.Cells[0].Value = infaObj2.objName; row2.Cells[1].Value = infaObj2.GetType().Name; row2.Cells[2].Value = infaObj2.file.FullName; row2.DefaultCellStyle.BackColor = colorDeterminator ? Color.LightCyan : Color.LightYellow; dictDGV.Rows.Add(row2); colorDeterminator = !colorDeterminator; } dictDGV.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); }
public static void AddInfaNotFoundObjectsInDGV(DataGridView dictDGV, InfaObjectDict dict) { foreach (KeyValuePair <InfaBaseObject, HashSet <InfaBaseObject> > item in dict.notFoundObject) { InfaBaseObject infaObj = item.Key; DataGridViewRow row1 = new DataGridViewRow(); row1.Cells.AddRange(new DataGridViewTextBoxCell(), new DataGridViewTextBoxCell(), new DataGridViewTextBoxCell()); row1.Cells[0].Value = infaObj.objName; row1.Cells[1].Value = infaObj.GetType().Name; row1.Cells[2].Value = infaObj.file.FullName; row1.DefaultCellStyle.BackColor = Color.Cyan; dictDGV.Rows.Add(row1); foreach (InfaBaseObject notFoundObj in item.Value) { DataGridViewRow row2 = new DataGridViewRow(); row2.Cells.AddRange(new DataGridViewTextBoxCell(), new DataGridViewTextBoxCell(), new DataGridViewTextBoxCell()); row2.Cells[0].Value = notFoundObj.objName; row2.Cells[1].Value = notFoundObj.GetType().Name; row2.DefaultCellStyle.BackColor = Color.LightYellow; dictDGV.Rows.Add(row2); } } dictDGV.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); }
public static void AddNotFoundFiles(DataGridView dictDGV, InfaObjectDict dict) { foreach (FileInfo file in dict.notFoundFiles) { dictDGV.Rows.Add(file.FullName); } dictDGV.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); }
public void RetrieveObjectsFromFiles(List <FileInfo> files, InfaObjectDict dict) { StartOfCheck(); foreach (KeyValuePair <InfaBaseObject, HashSet <FileInfo> > kvp in dict.baseDict.objFilesPairs) { kvp.Key.GenerateParentNames(dict); ProgressChanged(); } CheckOrderMistakes(files, dict); EndOfCheck(); }
public static void AddInfaObjectsInDGV(DataGridView dictDGV, InfaObjectDict dict) { foreach (KeyValuePair <InfaBaseObject, HashSet <FileInfo> > item in dict.baseDict.objFilesPairs) { InfaBaseObject infaObj = item.Key; foreach (FileInfo file in item.Value) { dictDGV.Rows.Add(infaObj.objName, infaObj.GetType().Name, file.FullName); } } dictDGV.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); }
public void CheckOrderMistakes(List <FileInfo> files, InfaObjectDict dict) { foreach (KeyValuePair <InfaBaseObject, HashSet <FileInfo> > kvp in dict.baseDict.objFilesPairs) { ProgressChanged(); InfaBaseObject obj = kvp.Key; foreach (InfaBaseObject parent in obj.parents) { if (files.IndexOf(parent.file) > files.IndexOf(obj.file)) { dict.orderMistakes.Add(new KeyValuePair <InfaBaseObject, InfaBaseObject>(parent, obj)); } } } }
public static void AddInfaIntersectionsInDGV(DataGridView dictDGV, InfaObjectDict dict) { bool colorDeterminator = false; foreach (KeyValuePair <InfaBaseObject, HashSet <FileInfo> > item in dict.intersections.objFilesPairs) { InfaBaseObject infaObj = item.Key; foreach (FileInfo file in item.Value) { DataGridViewRow row = new DataGridViewRow(); row.Cells.AddRange(new DataGridViewTextBoxCell(), new DataGridViewTextBoxCell(), new DataGridViewTextBoxCell()); row.Cells[0].Value = infaObj.objName; row.Cells[1].Value = infaObj.GetType().Name; row.Cells[2].Value = file.FullName; row.DefaultCellStyle.BackColor = colorDeterminator ? Color.LightCyan : Color.LightYellow; dictDGV.Rows.Add(row); } colorDeterminator = !colorDeterminator; } dictDGV.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); }
private void TSMIFileScPrereq_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Файлы сценария (*.txt)|*.txt|Все файлы (*.*)|*.*"; infaDict = new InfaObjectDict(); oraDict = new OraObjectDict(); List <FileInfo> fileScs = new List <FileInfo>(); List <FileInfo> files = FileScUtils.GetListOfFiles(fileScs); if (ofd.ShowDialog() == DialogResult.OK) { fileScs.Add(new FileInfo(ofd.FileName)); files = FileScUtils.GetListOfFiles(fileScs); infaParser = new InfaParser(files, infaDict); sqlParser = new SqlParser(); PBChecks.Value = 0; PBChecks.Maximum = infaParser.WorkAmount(infaDict) + sqlParser.WorkAmoumt(files); sqlParser.StartOfCheck += () => PBChecks.Invoke(new Action(() => PBChecks.Visible = true)); infaParser.StartOfCheck += () => PBChecks.Invoke(new Action(() => PBChecks.Visible = true)); sqlParser.ProgressChanged += () => PBChecks.Invoke(new Action(() => PBChecks.Value++)); infaParser.ProgressChanged += () => PBChecks.Invoke(new Action(() => PBChecks.Value++)); sqlParser.EndOfCheck += () => PBChecks.Invoke(new Action(() => PBChecks.Visible = false)); infaParser.EndOfCheck += () => PBChecks.Invoke(new Action(() => PBChecks.Visible = false)); checkThread = new Thread(() => { sqlParser.RetrieveObjectsFromFile(files, oraDict); infaParser.RetrieveObjectsFromFiles(files, infaDict); _checked = true; }); checkThread.Start(); } }
public int WorkAmount(InfaObjectDict dict) { return(2 * dict.baseDict.objFilesPairs.Count); }
public void GenerateParentNames(InfaObjectDict dict) { GenerateParentNames(objNode, dict); }