Пример #1
0
        private string GenerateCode(SCGTemplate template, string inputFileName, string inputFileContent)
        {
            StringBuilder sb = new StringBuilder();

            string path = Path.GetFullPath(Path.GetDirectoryName(this.InputFilePath) + template.FolderPath);

            CreateFolder(path);

            // Replace the supplied file contents with the template we want to run
            inputFileContent = ASCIIEncoding.UTF8.GetString(template.Template);
            // Substitute the name of the current model file into the template.
            FileInfo fi = new FileInfo(inputFileName);

            inputFileContent = inputFileContent.Replace("Sample.ui", fi.Name);
            inputFileContent = inputFileContent.Replace("namespace PowerFunctionsReportDSL", "namespace " + FileNamespace);

            // Pass parameter to new template:
            string delimiterGuid = Guid.NewGuid().ToString();
            string delimiter     = "::::" + delimiterGuid + ":::";

            CallContext.LogicalSetData("delimiter", delimiter + "{0}:::");
            CallContext.LogicalSetData("inputFilePath", Path.GetFullPath(Path.GetDirectoryName(this.InputFilePath)));

            // Now just delegate the rest of the work to the base class
            byte[] data;
            data = base.GenerateCode(inputFileName, inputFileContent);
            byte[] ascii = new byte[data.Length - 3];
            Array.Copy(data, 3, ascii, 0, data.Length - 3);


            string joinedFiles = Encoding.ASCII.GetString(ascii);

            string[] separateFiles = joinedFiles.Split(new string[] { delimiter }, StringSplitOptions.None);

            string filePath;

            foreach (string nameAndFile in separateFiles)
            {
                if (string.IsNullOrWhiteSpace(nameAndFile))
                {
                    continue;
                }
                string[] parts = nameAndFile.Split(new string[] { ":::" }, 2, StringSplitOptions.None);
                if (parts.Length < 2 || string.IsNullOrWhiteSpace(parts[1]))
                {
                    continue;
                }
                filePath = path + "\\" + template.GetFileName(parts[0]) + template.Extension;
                sb.Append("Generate: [").Append(filePath + "] ").AppendLine(" [" + parts[0] + "]");
                // Generate a file from this item:
                File.WriteAllText(filePath, parts[1]);
            }


            return(sb.ToString());
        }
Пример #2
0
        protected override byte[] GenerateCode(string inputFileName, string inputFileContent)
        {
            FileInfo fi       = new FileInfo(inputFileName);
            string   fileName = fi.Name.Replace(".ui", "");

            //JMS code generation
            StringBuilder sb = new StringBuilder();
            string        folderRelativePath = "..\\..\\..\\..\\Services\\JobManagerService\\" + fileName + "Report";

            sb.AppendLine("JMS ::::\n\n");

            SCGTemplate JMSModelTemplate = new SCGTemplate(CodeGenerationResource.JMSModelTemplate, folderRelativePath, ".cs", "Record");
            string      genCode          = GenerateCode(JMSModelTemplate, inputFileName, inputFileContent);

            sb.AppendLine(genCode);

            SCGTemplate JMSModelResultsTemplate = new SCGTemplate(CodeGenerationResource.JMSModelResultsTemplate, folderRelativePath, ".cs", "Results");

            genCode = GenerateCode(JMSModelResultsTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            SCGTemplate JMSJobTemplate = new SCGTemplate(CodeGenerationResource.JMSJobTemplate, folderRelativePath, ".cs", "ReportJob");

            genCode = GenerateCode(JMSJobTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            SCGTemplate JMSBeanTemplate = new SCGTemplate(CodeGenerationResource.JMSBeanTemplate, folderRelativePath, ".cs", "RecordBean");

            genCode = GenerateCode(JMSBeanTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            SCGTemplate JMSJobparamTemplate = new SCGTemplate(CodeGenerationResource.JMSJobParam, folderRelativePath, ".cs", "ReportJobParam");

            genCode = GenerateCode(JMSJobparamTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            SCGTemplate JMSReportResultTemplate = new SCGTemplate(CodeGenerationResource.JMSReportResult, folderRelativePath, ".cs", "ReportResult");

            genCode = GenerateCode(JMSReportResultTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            SCGTemplate JMSReportTypeTemplate = new SCGTemplate(CodeGenerationResource.JMSReportTypeTemplate, folderRelativePath, ".cs", "ReportType");

            genCode = GenerateCode(JMSReportTypeTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            /*SCGTemplate JMSEnumTemplate = new SCGTemplate(CodeGenerationResource.JMSEnumTemplate, folderRelativePath, ".cs");
             * genCode = GenerateCode(JMSEnumTemplate, inputFileName, inputFileContent);
             * sb.AppendLine(genCode);*/

            folderRelativePath = "\\";
            sb.AppendLine("UI ::::\n\n");

            SCGTemplate UILocalizedStringsTemplate = new SCGTemplate(CodeGenerationResource.UILocalizedStringsTemplate, folderRelativePath, ".cs", "");

            genCode = GenerateCode(UILocalizedStringsTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            SCGTemplate UIModuleCommandsTemplate = new SCGTemplate(CodeGenerationResource.UIModuleCommandsTemplate, folderRelativePath, ".cs", "ModuleCommands");

            genCode = GenerateCode(UIModuleCommandsTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            folderRelativePath = "\\Models";
            sb.AppendLine("UI Models ::::\n\n");

            SCGTemplate UIReportDataProviderTemplate = new SCGTemplate(CodeGenerationResource.UIReportDataProvider, folderRelativePath, ".cs", "ReportDataProvider");

            genCode = GenerateCode(UIReportDataProviderTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            folderRelativePath = "\\ViewModels";
            sb.AppendLine("UI View Model ::::\n\n");

            SCGTemplate UIViewModelTemplate = new SCGTemplate(CodeGenerationResource.UIViewModelTemplate, folderRelativePath, ".cs", "ViewModel");

            genCode = GenerateCode(UIViewModelTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            SCGTemplate UIReportViewModelTemplate = new SCGTemplate(CodeGenerationResource.UIReportViewModelTemplate, folderRelativePath, ".cs", "ReportViewModel");

            genCode = GenerateCode(UIReportViewModelTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            folderRelativePath = "\\View";
            sb.AppendLine("UI View ::::\n\n");

            SCGTemplate UIViewTemplate = new SCGTemplate(CodeGenerationResource.UIViewTemplate, folderRelativePath, ".xaml", "ReportView");

            genCode = GenerateCode(UIViewTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            SCGTemplate UIViewCsTemplate = new SCGTemplate(CodeGenerationResource.UIViewCsTemplate, folderRelativePath, ".xaml.cs", "ReportView");

            genCode = GenerateCode(UIViewCsTemplate, inputFileName, inputFileContent);
            sb.AppendLine(genCode);

            return(Encoding.ASCII.GetBytes(sb.ToString()));
        }