Esempio n. 1
0
        private void AddLabel(bool addLabelToPolir = true)
        {
            // Adds a new label to table.
            int      counter = LabelTable.Count;
            LabelRow row     = new LabelRow()
            {
                Name  = "m" + counter,
                Index = counter
            };

            LabelTable.Add(row);

            // Adds label mi to if in the stack.
            OutputRow outputRow = stack.Pop();

            if (outputRow.RelatedLabels == null)
            {
                outputRow.RelatedLabels = new List <string>();
            }
            outputRow.RelatedLabels.Add(row.Name);
            stack.Push(outputRow);

            // Adds label mi to POLIR if addLabelToPolir == true
            if (addLabelToPolir == true)
            {
                AddToPolir(row.Name);
            }
        }
Esempio n. 2
0
        // Dones one iteration.
        public void DoStep()
        {
            currentLexem = (OutputRow)OutputTable[index];
            switch (MakeCompare(stack.Peek(), inputChain[0]))
            {
            case CompareSymbol.Less: IfLess(); break;

            case CompareSymbol.Bigger: IfBigger(); break;

            case CompareSymbol.Equal: IfEqual(); break;
            }
            stepCount++;
        }
        async public void WriteData()
        {
            await Task.Run(() =>
            {
                ResultList.Sort();
                try
                {
                    DateTime dtCurr    = DateTime.Now;
                    string strflOutput = strTemp + "\\" + Guid.NewGuid() + ".csv";
                    //MessageBox.Show(strflOutput);
                    System.IO.StreamWriter swFL = new System.IO.StreamWriter(strflOutput);
                    swFL.WriteLine("ASCII");
                    swFL.WriteLine(",");
                    swFL.WriteLine("Administrator,1,Server Local,10,0");

                    foreach (FastLoadData OutputRow in ResultList)
                    {
                        swFL.WriteLine(OutputRow.GetExportString());
                    }
                    System.Threading.Thread.Sleep(1);

                    swFL.Flush();
                    swFL.Close();

                    ResultList.Clear();
                    ResultList.TrimExcess();

                    string fileName = System.IO.Path.GetFileName(strflOutput);

                    string destFile = System.IO.Path.Combine(strFL, fileName);

                    try
                    {
                        System.IO.File.Move(strflOutput, destFile);
                    }
                    catch (Exception exCopy)
                    {
                        logger.Error("Error while copying file {0}: {1} ", fileName, exCopy.Message);
                    }
                }
                catch (Exception ex)
                {
                    logger.Error("Error while writing: {0}", ex.Message);
                }
            });
        }
Esempio n. 4
0
        // Compares to terms.
        private CompareSymbol MakeCompare(string first, string second)
        {
            Identify(ref first);

            int rowIndex = 0;

            for (int i = 0; i < CompareTable.Rows.Count; i++)
            {
                if (CompareTable.Rows[i].HeaderCell.Value.ToString() == first)
                {
                    rowIndex = i;
                    break;
                }
            }

            Identify(ref second);

            int columnIndex = 0;

            for (int i = 0; i < CompareTable.ColumnCount; i++)
            {
                if (CompareTable.Columns[i].HeaderCell.Value.ToString() == second)
                {
                    columnIndex = i;
                    break;
                }
            }
            string symbol = CompareTable[columnIndex, rowIndex].Value.ToString();

            if (symbol == "<")
            {
                return(CompareSymbol.Less);
            }
            if (symbol == ">")
            {
                return(CompareSymbol.Bigger);
            }
            if (symbol == "=")
            {
                return(CompareSymbol.Equal);
            }
            currentLexem = OutputTable[index];
            throw new SyntaxException("Порушено структуру програми. Помилковий елемент \"" +
                                      currentLexem.Name + "\", рядок " + currentLexem.Line);
        }
Esempio n. 5
0
 // This is the custom mapping. We now separate it into a method, so that we can use it both in training and in loading.
 public static void IncomeMapping(InputRow input, OutputRow output) => output.Label = input.Income > 50000;
        public List <OutputRow> Convert(ExelSheet sheet, string[] conversionDataLimiter = null,
                                        Action <int> progressAction = null,
                                        Action <Exception, int> additionalErrorAction = null,
                                        Func <bool> isCanceled = null)
        {
            Guid logSession = Helpers.Old.Log.SessionStart("ExelConvertionRule.Convert()");
            var  result     = new List <OutputRow>();

            try
            {
                if (sheet.MainHeader != null)
                {
                    var initialRow = 0;
                    var headers    = sheet.SheetHeaders.Headers;
                    var subheaders = sheet.SheetHeaders.Subheaders;

                    initialRow = sheet.Rows.IndexOf(sheet.MainHeader) + sheet.MainHeaderRowCount;
                    int  excludeRow = 0;
                    bool hasError   = false;

                    int logPart = 0;

                    var exceptions = new List <Exception>();

                    for (var i = initialRow; i < sheet.Rows.Count; i++)
                    {
                        if (isCanceled != null && isCanceled())
                        {
                            break;
                        }

                        var outputRow = new OutputRow();
                        try
                        {
                            exceptions.Clear();
                            hasError = false;

                            if (progressAction != null)
                            {
                                progressAction((int)(((decimal)i / (decimal)sheet.Rows.Count) * 100m));
                            }

                            logPart = 1;
                            if (headers.Any(h => h.RowNumber == i) || subheaders.Any(h => h.RowNumber == i))
                            {
                                continue;
                            }

                            outputRow.OriginalIndex = sheet.Rows[i].Index;
                            outputRow.OriginalSheet = sheet.Name;

                            logPart++;
                            foreach (var convertionData in (conversionDataLimiter == null ? ConvertionData : ConvertionData.Where(i2 => conversionDataLimiter.Contains(i2.PropertyId))))
                            {
                                var cellResultContent = string.Empty;
                                int subLogPart        = 1;
                                try
                                {
                                    var propertyOld = typeof(OutputRow).GetProperty("Original" + convertionData.PropertyId);
                                    if (propertyOld != null)
                                    {
                                        string oldValue = null;
                                        subLogPart++;
                                        var blocks = convertionData.Blocks.Blocks.FirstOrDefault();
                                        if (blocks != null)
                                        {
                                            subLogPart++;
                                            var startFunc = blocks.UsedFunctions.FirstOrDefault();
                                            if (startFunc != null)
                                            {
                                                subLogPart++;
                                                if (startFunc.Function.SelectedParameter == FunctionParameters.CellName)
                                                {
                                                    subLogPart++;
                                                    var header       = sheet.Rows[sheet.Rows.IndexOf(sheet.MainHeader)].HeaderCells.Select(c => c.Value).ToList();
                                                    var columnNumber = header.IndexOf(header.Where(s => s.Trim().ToLower() == startFunc.Function.ColumnName.Trim().ToLower()).FirstOrDefault());
                                                    if (columnNumber >= 0 && sheet.Rows.ElementAt(i).Cells.Count > columnNumber)
                                                    {
                                                        oldValue = sheet.Rows.ElementAt(i).Cells.ElementAt(columnNumber).Value;
                                                    }
                                                }
                                                else if (startFunc.Function.SelectedParameter == FunctionParameters.CellNumber)
                                                {
                                                    subLogPart++;
                                                    if (sheet.Rows.ElementAt(i).Cells.Count > startFunc.Function.ColumnNumber)
                                                    {
                                                        oldValue = sheet.Rows.ElementAt(i).Cells.ElementAt(startFunc.Function.ColumnNumber).Value;
                                                    }
                                                }
                                            }
                                        }
                                        if (oldValue != null)
                                        {
                                            propertyOld.SetValue(outputRow, oldValue.Trim(), null);
                                        }
                                    }

                                    try
                                    {
                                        cellResultContent = convertionData.Blocks.Run(sheet, i, convertionData);
                                        //if (cellResultContent != null)
                                        //{
                                        //    cellResultContent = cellResultContent.Trim();
                                        //}
                                    }
                                    catch (Exception ex)
                                    {
                                        throw new Exception(string.Format("Сетка '{0}'. Ошибка для правил столбца '{1}' ('{2}')", sheet.Name, convertionData.FieldName, convertionData.PropertyId), ex);
                                    }

                                    var property = typeof(OutputRow).GetProperty(convertionData.PropertyId);
                                    if (property != null)
                                    {
                                        property.SetValue(outputRow, cellResultContent, null);
                                    }
                                }
                                catch (Exception ex)
                                {
                                    hasError = true;
                                    if (additionalErrorAction != null)
                                    {
                                        Helpers.Old.Log.Add(logSession, ex);
                                        exceptions.Add(ex);
                                    }
                                    else
                                    {
                                        throw new Exception(string.Format("exception on update field '{0}' at sub step '{1}';", convertionData.PropertyId, subLogPart), ex);
                                    }
                                }
                            }
                            logPart++;
                            if (!string.IsNullOrWhiteSpace(outputRow.Region) && outputRow.Region.Contains('(') && outputRow.Region.Contains(')'))
                            {
                                //outputRow.Region = outputRow.Region.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();
                                outputRow.Region = outputRow.Region.Substring(0, outputRow.Region.LastIndexOf("(") - 1).Trim();
                            }
                            logPart++;
                            if (!string.IsNullOrWhiteSpace(outputRow.Size) && outputRow.Size.Contains('(') && outputRow.Size.Contains(')'))
                            {
                                //outputRow.Size = outputRow.Size.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();
                                outputRow.Size = outputRow.Size.Substring(0, outputRow.Size.LastIndexOf("(") - 1).Trim();
                            }
                            logPart++;
                            if (!string.IsNullOrWhiteSpace(outputRow?.Code?.Trim()) || (hasError && additionalErrorAction != null))
                            {
                                if (additionalErrorAction != null)
                                {
                                    foreach (var ex in exceptions)
                                    {
                                        additionalErrorAction(ex, i - initialRow - excludeRow);
                                    }
                                    exceptions.Clear();
                                }
                                result.Add(outputRow);
                            }
                            else
                            {
                                excludeRow++;
                            }
                        }
                        catch (Exception ex)
                        {
                            if (additionalErrorAction != null)
                            {
                                Helpers.Old.Log.Add(logSession, ex);
                                if (!result.Contains(outputRow))
                                {
                                    result.Add(outputRow);
                                }
                                additionalErrorAction(ex, i - initialRow - excludeRow);
                            }
                            else
                            {
                                throw new Exception(string.Format("exception at row line: '{0}', log part: '{1}';", i, logPart), ex);
                            }
                        }
                    }
                }
                else
                {
                    Log.Add(string.Format("sheet '{0}' has not header!", sheet.Name));
                }
            }
            catch (Exception ex)
            {
                Helpers.Old.Log.Add(logSession, ex);
            }
            finally
            {
                RemoveRepeatingId(result);
                Helpers.Old.Log.SessionEnd(logSession);
            }

            return(result);
        }
        private bool ReadGENX()
        {
            XmlNodeList nameList = xmlReadDoc.GetElementsByTagName("UpdateVersion");

            foreach (XmlNode xn in nameList)
            {
                string version = xn.Attributes["Version"].Value;
                //Console.WriteLine(version);

                XmlNodeList childNode = xn.ChildNodes;

                foreach (XmlNode xnc in childNode)
                {
                    if (xnc.Name == "Topics")
                    {
                        XmlNodeList xnl = xmlReadDoc.GetElementsByTagName("FeatureClass");
                        foreach (XmlNode x1 in xnl)
                        {
                            string fClassName = x1.Attributes["Name"].Value;
                            string fClassOperation = x1.Attributes["Operation"].Value;

                            string fClassCaption = String.Empty;
                            if (x1["Caption"] != null)
                            {
                                fClassCaption = x1["Caption"].InnerXml;
                            }

                            OutputRow outputRowForCopy = new OutputRow(version);
                            outputRowForCopy.SetFeatureClass(fClassOperation, fClassName, fClassCaption);

                            if (x1["Attributes"] == null) continue;
                            foreach (XmlNode x2 in x1["Attributes"])
                            {
                                string attributName = x2.Attributes["Name"].Value;
                                string attributOperation = x2.Attributes["Operation"].Value;

                                string attributCatption = String.Empty;
                                if (x2["Caption"] != null)
                                {
                                    attributCatption = x2["Caption"].InnerXml;
                                }

                                OutputRow outPutRow = (OutputRow)outputRowForCopy.Clone();
                                outPutRow.SetAttribut(attributOperation, attributName, attributCatption);
                                convertControler.AddFeatureClassRow(outPutRow);

                            }
                        }
                    }

                    else if (xnc.Name == "DomainTables")
                    {
                        foreach (XmlNode xnd in xnc)
                        {
                            string domainClassName = xnd.Attributes["Name"].Value;
                            string domainClassOperation = xnd.Attributes["Operation"].Value;

                            string domainClassDescription = String.Empty;
                            if (xnd["Caption"] != null)
                            {
                                domainClassDescription = xnd["Caption"].InnerXml;
                            }

                            OutputRow outputRowForCopy = new OutputRow(version);
                            outputRowForCopy.SetDomainClass(domainClassOperation, domainClassName, domainClassDescription);

                            foreach (XmlNode xne in xnd.ChildNodes)
                            {
                                if (xne.Name != "DomainEntries") continue;
                                foreach (XmlNode xna in xne.ChildNodes)
                                {
                                    string id = xna.Attributes["Id"].Value;
                                    string value = String.Empty;
                                    if (xna["Value"] != null)
                                    {
                                        value = xna["Value"].InnerXml;
                                    }
                                    string operation = xna.Attributes["Operation"].Value;
                                    string active = xna.Attributes["Active"].Value;

                                    OutputRow domainRow = (OutputRow)outputRowForCopy.Clone();
                                    domainRow.SetDomainEntry(operation, value, id, active);

                                    convertControler.AddFeatureClassRow(domainRow);
                                }
                            }
                        }
                    }
                }

            }

            return true;
        }
 public void AddFeatureClassRow(OutputRow listEntry)
 {
     OutputRows.Add(listEntry);
 }