Beispiel #1
0
        public void InitFromSelectedElement(AddinDesignerEventArgs e)
        {
            Fields    = new List <AxTableFieldParm>();
            FieldsStr = "";

            int curPos = 0;

            foreach (BaseField baseField in e.SelectedElements.OfType <BaseField>())
            {
                curPos++;
                AxTableFieldParm fieldParm = new AxTableFieldParm();
                fieldParm.FieldName   = baseField.Name;
                fieldParm.FieldType   = baseField.ExtendedDataType;
                fieldParm.IsMandatory = baseField.Mandatory == NoYes.Yes ? true : false;
                fieldParm.Position    = curPos;
                if (fieldParm.FieldType == "")
                {
                    if (baseField is FieldEnum)
                    {
                        fieldParm.FieldType = (baseField as FieldEnum).EnumType;
                    }
                }

                Fields.Add(fieldParm);

                FieldsStr += fieldParm.FieldName + Environment.NewLine;
            }
            var     field   = (BaseField)e.SelectedElement;
            AxTable axTable = (AxTable)field.Table.GetMetadataType();

            TableName = axTable.Name;
            VarName   = AxHelper.GetVarNameFromType(TableName);
        }
        public override void InitFromSnippetsParms(SnippetsParms snippetsParms)
        {
            ClassName        = snippetsParms.GetParmStr(ClassNameParm);
            ClassDescription = snippetsParms.GetParmStr(DescriptionParmName);
            QueryTable       = snippetsParms.GetParmStr(QueryTableParmName);
            ExternalTable    = snippetsParms.GetParmStr(ExternalTableNameParmName);
            IsAddFileUpload  = snippetsParms.GetParmBool(AddFileUploadParmName);
            IsCreateMenuItem = snippetsParms.GetParmBool(CreateMenuItemParmName);
            if (ExternalTable != "")
            {
                ExternalTableVar      = new RunBaseBuilderVar();
                ExternalTableVar.Type = ExternalTable;
                ExternalTableVar.Name = $"caller{ExternalTable}";
            }
            List <List <string> > parmList = snippetsParms.GetParmListSeparated(ParametersParmName);

            FieldsList = new List <RunBaseBuilderVar>();

            foreach (List <string> subList in parmList)
            {
                RunBaseBuilderVar runBaseBuilderVars = new RunBaseBuilderVar();

                string item = subList[0];
                if (item[item.Length - 1] == MandatoryPropertySym)//check mandatory
                {
                    runBaseBuilderVars.IsMandatory = true;
                    runBaseBuilderVars.Type        = item.Remove(item.Length - 1).Trim();
                }
                else
                {
                    runBaseBuilderVars.IsMandatory = false;
                    runBaseBuilderVars.Type        = item;
                }

                if (String.IsNullOrEmpty(runBaseBuilderVars.Type))
                {
                    throw new Exception("Type should be specified");
                }

                if (subList.Count > 1 && !String.IsNullOrWhiteSpace(subList[1]))  //check var name
                {
                    runBaseBuilderVars.Name = subList[1];
                }
                else
                {
                    runBaseBuilderVars.Name = AxHelper.GetVarNameFromType(runBaseBuilderVars.Type);
                }
                if (subList.Count > 2 && !String.IsNullOrWhiteSpace(subList[2]))
                {
                    runBaseBuilderVars.Label = subList[2];
                }
                if (subList.Count > 3 && !String.IsNullOrWhiteSpace(subList[3]))
                {
                    runBaseBuilderVars.LabelHelp = subList[3];
                }

                runBaseBuilderVars.DlgName = $"dlg{AxHelper.UppercaseWords(runBaseBuilderVars.Name)}";
                FieldsList.Add(runBaseBuilderVars);
            }
        }
 private void TableNameTextBox_Validated(object sender, EventArgs e)
 {
     if (String.IsNullOrWhiteSpace(TableVarNameTextBox.Text) && !String.IsNullOrWhiteSpace(TableNameTextBox.Text))
     {
         TableVarNameTextBox.Text = AxHelper.GetVarNameFromType(TableNameTextBox.Text.Trim());
         _parms.TableVarName      = TableVarNameTextBox.Text;
     }
 }
Beispiel #4
0
        public void InitFromRelation(Relation relation)
        {
            Table1 = relation.RelatedTable;
            Table2 = relation.Table.Name;

            Table1Var = AxHelper.GetVarNameFromType(Table1);
            Table2Var = AxHelper.GetVarNameFromType(Table2);
            string relationName;

            relationName = relation.Name;

            RelationsList = new List <RelationDef>();

            AxHelper        axHelper        = new AxHelper();
            AxTable         axTable         = axHelper.MetadataProvider.Tables.Read(Table2);
            AxTableRelation axTableRelation = axTable.Relations[relationName];

            foreach (AxTableRelationConstraint relationPair in axTableRelation.Constraints)
            {
                RelationDef pair = new RelationDef();

                if (relationPair is AxTableRelationConstraintField)
                {
                    pair.Field1 = (relationPair as AxTableRelationConstraintField).RelatedField;
                    pair.Field2 = (relationPair as AxTableRelationConstraintField).Field;
                }
                else
                {
                    if (relationPair is AxTableRelationConstraintFixed)
                    {
                        pair.Field1      = (relationPair as AxTableRelationConstraintFixed).ValueStr;
                        pair.Field2      = (relationPair as AxTableRelationConstraintFixed).Field;
                        pair.Field1Fixed = true;
                    }
                    else
                    {
                        if (relationPair is AxTableRelationConstraintRelatedFixed)
                        {
                            pair.Field1      = (relationPair as AxTableRelationConstraintRelatedFixed).RelatedField;
                            pair.Field2      = (relationPair as AxTableRelationConstraintRelatedFixed).ValueStr;
                            pair.Field2Fixed = true;
                        }
                    }
                }

                if (!String.IsNullOrEmpty(pair.Field1))
                {
                    RelationsList.Add(pair);
                }
            }
        }
Beispiel #5
0
        private void TableNameTextBox_Validated(object sender, EventArgs e)
        {
            if (!String.IsNullOrWhiteSpace(TableNameTextBox.Text))
            {
                FormNameTextBox.Text = TableNameTextBox.Text;
                _parms.FormName      = FormNameTextBox.Text;

                TableVarNameTextBox.Text = AxHelper.GetVarNameFromType(TableNameTextBox.Text.Trim());
                _parms.TableVarName      = TableVarNameTextBox.Text;
                if (!_parms.IsExternalEDT)
                {
                    PrimaryKeyEDTTextBox.Text = $@"{TableNameTextBox.Text}Id";
                    _parms.PrimaryKeyEdtName  = PrimaryKeyEDTTextBox.Text;
                }

                FieldNameTextBox.Text = $@"{AxHelper.UppercaseWords(TableVarNameTextBox.Text)}Id";
                _parms.KeyFieldName   = FieldNameTextBox.Text;
            }
        }
        public override void InitFromSnippetsParms(SnippetsParms snippetsParms)
        {
            ClassName = snippetsParms.GetParmStr(ClassNameParm);
            GenerateReportController = snippetsParms.GetParmBool(GenerateReportControllerParm);
            GenerateReportDP         = snippetsParms.GetParmBool(GenerateReportDPParm);
            ReportDPTableName        = snippetsParms.GetParmStr(ReportDPTableNameParm);
            if (String.IsNullOrWhiteSpace(ReportDPTableName))
            {
                ReportDPTableName = "TableTemDB";
            }
            ReportDPTableVarName = AxHelper.GetVarNameFromType(ReportDPTableName);
            string baseStr = ClassName;

            if (ClassName.ToLower().EndsWith("contract"))
            {
                baseStr = ClassName.Substring(0, ClassName.Length - "contract".Length);
            }
            ClassNameDP         = $"{baseStr}DP";
            ClassNameController = $"{baseStr}Controller";

            List <List <string> > parmList = snippetsParms.GetParmListSeparated(ParametersParmName);

            FieldsList = new List <DataContractBuilderVar>();
            GroupsList = new List <DataContractBuilderVar>();
            int groupNum = 0;

            IsAnyMandatory = false;

            Dictionary <string, int> groutPosDict = new Dictionary <string, int>();

            foreach (List <string> subList in parmList)
            {
                DataContractBuilderVar builderVar = new DataContractBuilderVar();

                string item = subList[0];
                if (item[item.Length - 1] == MandatoryPropertySym)//check mandatory
                {
                    builderVar.IsMandatory = true;
                    builderVar.Type        = item.Remove(item.Length - 1).Trim();
                }
                else
                {
                    builderVar.IsMandatory = false;
                    builderVar.Type        = item;
                }

                if (String.IsNullOrEmpty(builderVar.Type))
                {
                    throw new Exception("Type should be specified");
                }

                if (subList.Count > 1 && !String.IsNullOrWhiteSpace(subList[1]))  //check var name
                {
                    builderVar.Name = subList[1];
                }
                else
                {
                    builderVar.Name = AxHelper.GetVarNameFromType(builderVar.Type);
                }
                if (subList.Count > 2 && !String.IsNullOrWhiteSpace(subList[2]))
                {
                    builderVar.Label = subList[2];
                }
                if (subList.Count > 3 && !String.IsNullOrWhiteSpace(subList[3]))
                {
                    builderVar.LabelHelp = subList[3];
                }
                if (subList.Count > 4 && !String.IsNullOrWhiteSpace(subList[4]))
                {
                    builderVar.GroupName = subList[4];
                }
                if (subList.Count > 5 && !String.IsNullOrWhiteSpace(subList[5]))
                {
                    builderVar.GroupLabel = subList[5];
                }

                //calculate
                if (!groutPosDict.ContainsKey(builderVar.GroupName))
                {
                    groutPosDict.Add(builderVar.GroupName, 0);
                    if (!String.IsNullOrWhiteSpace(builderVar.GroupName))
                    {
                        groupNum++;
                        var varGr = new DataContractBuilderVar
                        {
                            GroupName       = builderVar.GroupName,
                            GroupLabel      = builderVar.GroupLabel,
                            PositionInGroup = groupNum
                        };
                        GroupsList.Add(varGr);
                    }
                }
                groutPosDict[builderVar.GroupName]++;
                if (builderVar.IsMandatory)
                {
                    IsAnyMandatory = true;
                }

                builderVar.PositionInGroup = groutPosDict[builderVar.GroupName];

                FieldsList.Add(builderVar);
            }
        }
Beispiel #7
0
        void SrcRun()
        {
            CodeGenerate.SetMethodName("run");
            CodeGenerate.AppendLine("public void run()");
            CodeGenerate.BeginBlock();

            foreach (RunBaseBuilderVar df in FieldsList)
            {
                CodeGenerate.AppendLine($"info(strFmt(\"{df.Name}=%1\", {df.Name}));");
            }
            if (IsAddFileUpload != FileUploadType.None)
            {
                CodeGenerate.AppendLine("System.IO.MemoryStream memoryStreamFile;");
                CodeGenerate.AppendLine("try");
                CodeGenerate.AppendLine("{");
                CodeGenerate.AppendLine("    if (!fileUploadResult)");
                CodeGenerate.AppendLine("    {");
                CodeGenerate.AppendLine("        throw error(\"File is empty\");");
                CodeGenerate.AppendLine("    }");
                CodeGenerate.AppendLine("    //get file names");
                CodeGenerate.AppendLine("    container fileNameCon = Docu::splitFilename(fileUploadResult.getFileName());");
                CodeGenerate.AppendLine("    if (!fileNameCon)");
                CodeGenerate.AppendLine("    {");
                CodeGenerate.AppendLine("        throw error(\"File is empty\");");
                CodeGenerate.AppendLine("    }");
                CodeGenerate.AppendLine("    str fileName   = strFmt('%1.%2', conPeek(fileNameCon, 1), conPeek(fileNameCon, 2));");
                CodeGenerate.AppendLine("    str folderName = strFmt('%1', conPeek(fileNameCon, 3));");
                CodeGenerate.AppendLine("    //get file data");
                CodeGenerate.AppendLine("    memoryStreamFile = fileUploadResult.openResult();");
                switch (IsAddFileUpload)
                {
                case FileUploadType.CSV:
                    CodeGenerate.AppendLine("    //https://github.com/TrudAX/XppTools#devcommon-model");
                    CodeGenerate.AppendLine("    DEVFileReaderCSV   fileReader   = new DEVFileReaderCSV();");
                    CodeGenerate.AppendLine("    fileReader.readCSVFile(memoryStreamFile);");
                    CodeGenerate.AppendLine("    fileReader.readHeaderRow();");
                    CodeGenerate.AppendLine("    while (fileReader.readNextRow())");
                    CodeGenerate.AppendLine("    {");
                    CodeGenerate.AppendLine("        info(strFmt(\"row: % 1\", fileReader.getCurRow()));");
                    CodeGenerate.AppendLine("        info(strFmt(\" % 1, % 2, % 3\",");
                    CodeGenerate.AppendLine("            fileReader.getStringByName('Main account'),");
                    CodeGenerate.AppendLine("            fileReader.getStringByName('BusinessUnit'),");
                    CodeGenerate.AppendLine("            fileReader.getRealByName('Amount')");
                    CodeGenerate.AppendLine("            ));");
                    CodeGenerate.AppendLine("    }");
                    break;

                case FileUploadType.Excel:
                    CodeGenerate.AppendLine("    //https://github.com/TrudAX/XppTools#devcommon-model");
                    CodeGenerate.AppendLine("    DEVFileReaderExcel   fileReader   = new DEVFileReaderExcel();");
                    CodeGenerate.AppendLine("    fileReader.openFile(memoryStreamFile);");
                    CodeGenerate.AppendLine("    fileReader.readHeaderRow();");
                    CodeGenerate.AppendLine("    while (fileReader.readNextRow())");
                    CodeGenerate.AppendLine("    {");
                    CodeGenerate.AppendLine("        info(strFmt(\"row: % 1\", fileReader.getCurRow()));");
                    CodeGenerate.AppendLine("        info(strFmt(\" % 1, % 2, % 3\",");
                    CodeGenerate.AppendLine("            fileReader.getStringByName(\"Main account\"),");
                    CodeGenerate.AppendLine("            fileReader.getStringByName(\"BusinessUnit\"),");
                    CodeGenerate.AppendLine("            fileReader.getRealByName(\"Amount\")");
                    CodeGenerate.AppendLine("            ));");
                    CodeGenerate.AppendLine("    }");
                    break;

                default:
                    CodeGenerate.AppendLine("    AsciiStreamIo asciiIo = AsciiStreamIo::constructForRead(memoryStreamFile);");
                    CodeGenerate.AppendLine("    asciiIo.inRecordDelimiter('\\n');");
                    CodeGenerate.AppendLine("    while (asciiIo.status() == IO_Status::Ok)");
                    CodeGenerate.AppendLine("    {");
                    CodeGenerate.AppendLine("        container c = asciiIo.read();");
                    CodeGenerate.AppendLine("        if (conLen(c) > 0)");
                    CodeGenerate.AppendLine("        {");
                    CodeGenerate.AppendLine("            info(strFmt(\"File data:%1\", conPeek(c, 1)));");
                    CodeGenerate.AppendLine("        }");
                    CodeGenerate.AppendLine("    }");
                    break;
                }


                CodeGenerate.AppendLine("}");
                CodeGenerate.AppendLine("catch (Exception::Error)");
                CodeGenerate.AppendLine("{");
                CodeGenerate.AppendLine("    exceptionTextFallThrough();");
                CodeGenerate.AppendLine("}");
                CodeGenerate.AppendLine("finally");
                CodeGenerate.AppendLine("{");
                CodeGenerate.AppendLine("    fileUploadResult.deleteResult();");
                CodeGenerate.AppendLine("    memoryStreamFile = null;");
                CodeGenerate.AppendLine("}");
            }

            if (!String.IsNullOrEmpty(QueryTable))
            {
                string queryCursor = AxHelper.GetVarNameFromType(QueryTable);
                CodeGenerate.AppendLine("int                     processedCounter;");
                CodeGenerate.AppendLine("QueryBuildDataSource    qBDS;");
                CodeGenerate.AppendLine($"{QueryTable}    {queryCursor};");
                CodeGenerate.AppendLine("");
                CodeGenerate.AppendLine($"qBDS = queryRun.query().dataSourceTable(tableNum({QueryTable}));");
                CodeGenerate.AppendLine($"SysQuery::findOrCreateRange(qBDS, fieldnum({QueryTable}, RecId)).value(queryValue(\"\"));");
                CodeGenerate.AppendLine("");
                CodeGenerate.AppendLine("this.progressInit(RunBase::getDescription(classIdGet(this)),");
                CodeGenerate.AppendLine("                  SysQuery::countTotal(queryRun),");
                CodeGenerate.AppendLine("                  #AviSearch);");
                CodeGenerate.AppendLine("");
                CodeGenerate.AppendLine("while (queryRun.next())");
                CodeGenerate.BeginBlock();
                CodeGenerate.AppendLine($"{queryCursor} = queryRun.get(tablenum({QueryTable}));");
                CodeGenerate.AppendLine("");
                CodeGenerate.AppendLine("processedCounter++;");
                CodeGenerate.AppendLine("progress.incCount();");
                CodeGenerate.EndBlock();
                CodeGenerate.AppendLine("info(strfmt(\" %1 record(s) processed\", processedCounter));");
            }
            else
            {
                if (IsAddFileUpload == FileUploadType.None)
                {
                    CodeGenerate.AppendLine("if (! this.validate())");
                    CodeGenerate.AppendLine("{");
                    CodeGenerate.AppendLine("    throw error(\"Validation error\");");
                    CodeGenerate.AppendLine("}");
                    CodeGenerate.AppendLine("");
                    CodeGenerate.AppendLine("ttsbegin;");
                    CodeGenerate.AppendLine("");
                    CodeGenerate.AppendLine("ttscommit;");
                }
            }
            CodeGenerate.EndBlock();
        }