コード例 #1
0
ファイル: InfaParser.cs プロジェクト: ledenevdmitry/CoreApp
 //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);
             }
         }
     }
 }
コード例 #2
0
 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);
         }
     }
 }
コード例 #3
0
ファイル: FormUtil.cs プロジェクト: ledenevdmitry/CoreApp
        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);
        }
コード例 #4
0
ファイル: FormUtil.cs プロジェクト: ledenevdmitry/CoreApp
        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);
        }
コード例 #5
0
ファイル: FormUtil.cs プロジェクト: ledenevdmitry/CoreApp
 public static void AddNotFoundFiles(DataGridView dictDGV, InfaObjectDict dict)
 {
     foreach (FileInfo file in dict.notFoundFiles)
     {
         dictDGV.Rows.Add(file.FullName);
     }
     dictDGV.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
 }
コード例 #6
0
ファイル: InfaParser.cs プロジェクト: ledenevdmitry/CoreApp
 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();
 }
コード例 #7
0
ファイル: FormUtil.cs プロジェクト: ledenevdmitry/CoreApp
 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);
 }
コード例 #8
0
ファイル: InfaParser.cs プロジェクト: ledenevdmitry/CoreApp
 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));
             }
         }
     }
 }
コード例 #9
0
ファイル: FormUtil.cs プロジェクト: ledenevdmitry/CoreApp
        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);
        }
コード例 #10
0
        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();
            }
        }
コード例 #11
0
ファイル: InfaParser.cs プロジェクト: ledenevdmitry/CoreApp
 public int WorkAmount(InfaObjectDict dict)
 {
     return(2 * dict.baseDict.objFilesPairs.Count);
 }
コード例 #12
0
 public void GenerateParentNames(InfaObjectDict dict)
 {
     GenerateParentNames(objNode, dict);
 }