/// <summary> /// Generate a default extension(".cs") file without renaming /// </summary> /// <param name="host"></param> /// <param name="engine"></param> /// <param name="fileName"></param> /// <param name="aliasName"></param> /// <param name="extension"></param> private void GenerateFileAsDefault(CustomerHost host, Engine engine, string fileName, string aliasName, string extension, int retryCount) { // if the extension is not null, then specify the output file extension // else use the default value(.cs) as the output file extension host.TemplateFileValue = fileName; if (extension != null) { host.SetFileExtension(extension); } string inputFileStreamName = fileName.Replace(templateRootDirection, "").TrimStart('\\').Replace('\\', '.'); // if the aliasName is not null, then specify the output file as the alias name // else use the input file name(exclude the extension) as the fileName string outputFileName = aliasName ?? Path.GetFileNameWithoutExtension(fileName); // how to determine the output file's direction? // if the text template exists in the Assertion folder,then put the // output file to the Assertion folder, and if it exists in LTS folder, // put the output file to LTS folder, and so on // if the input file direction is null, then we define it "" string inputFileDirection = Path.GetDirectoryName(fileName) ?? string.Empty; string outputFileDirection; if (inputFileDirection.EndsWith("Main")) { outputFileDirection = solutionMainDirection; } else if (inputFileDirection.Contains("Main\\Properties")) { outputFileDirection = solutionMainPropertiesDirection; } else if (inputFileDirection.Contains("Properties")) { outputFileDirection = solutionPropertiesDirection; } else if (fileName.Contains("Assertions")) { // the assertions direction outputFileDirection = solutionAssertionDirection; } else if (fileName.Contains("Sample")) { // the LTS direction outputFileDirection = solutionLtsSampleDirection; } else if (fileName.Contains("LTS")) { // the LTS direction outputFileDirection = solutionLtsDirection; } else if (fileName.Contains("Ultility")) { // the ultility direction outputFileDirection = solutionUltilityDirection; } else if (fileName.EndsWith("PAT3 Source.ptt")) { // the ultility direction outputFileDirection = solutionRootDirection; } else { // if none of above, then put the output file to the home direction outputFileDirection = solutionHomeDirection; } outputFileName = Path.Combine(outputFileDirection, outputFileName) + host.FileExtension; Assembly myAssembly = Assembly.GetExecutingAssembly(); Stream myStream = myAssembly.GetManifestResourceStream("PAT.GUI.Docs.Template." + inputFileStreamName); if (extension == "resources") { byte[] buf = new byte[myStream.Length]; //declare arraysize myStream.Read(buf, 0, buf.Length); // read from stream to byte array File.WriteAllBytes(outputFileName, buf); } else { StreamReader reader = new StreamReader(myStream); string text = reader.ReadToEnd(); // use the engine to transfor the template string output = engine.ProcessTemplate(text, host); // write the generated file into the output file specified before // use the encoding style set in host File.WriteAllText(outputFileName, output, host.FileEncoding); } // after the generate, add the classes in the local classes field which will be used to // generate the .csproj file if (!inputFileDirection.Contains("\\Main") && !fileName.EndsWith("PAT3 Source.ptt") && retryCount == 1) { solutionClasses += outputFileName.Replace(solutionHomeDirection, "").TrimStart('\\') + "|"; } // reset the host extension property host.ResetFileExtension(); if (host.Errors.Count > 0) { if (retryCount <= RetryBound) { GenerateFileAsDefault(host, engine, fileName, aliasName, extension, retryCount + 1); } else { foreach (var error in host.Errors) { MessageBox.Show( string.Format("File[{0}] is Generated unsuccessfully for: {1}", outputFileName, error), Common.Utility.Utilities.APPLICATION_NAME, MessageBoxButtons.OK); } } } }
/// <summary> /// Generate a default extension(".cs") file without renaming /// </summary> /// <param name="host"></param> /// <param name="engine"></param> /// <param name="fileName"></param> /// <param name="aliasName"></param> /// <param name="extension"></param> private void GenerateFileAsDefault(CustomerHost host, Engine engine, string fileName, string aliasName, string extension, int retryCount) { // if the extension is not null, then specify the output file extension // else use the default value(.cs) as the output file extension host.TemplateFileValue = fileName; if(extension != null) { host.SetFileExtension(extension); } string inputFileStreamName = fileName.Replace(templateRootDirection, "").TrimStart('\\').Replace('\\', '.'); // if the aliasName is not null, then specify the output file as the alias name // else use the input file name(exclude the extension) as the fileName string outputFileName = aliasName ?? Path.GetFileNameWithoutExtension(fileName); // how to determine the output file's direction? // if the text template exists in the Assertion folder,then put the // output file to the Assertion folder, and if it exists in LTS folder, // put the output file to LTS folder, and so on // if the input file direction is null, then we define it "" string inputFileDirection = Path.GetDirectoryName(fileName)??string.Empty; string outputFileDirection; if (inputFileDirection.EndsWith("Main")) { outputFileDirection = solutionMainDirection; } else if (inputFileDirection.Contains("Main\\Properties")) { outputFileDirection = solutionMainPropertiesDirection; } else if (inputFileDirection.Contains("Properties")) { outputFileDirection = solutionPropertiesDirection; } else if (fileName.Contains("Assertions")) { // the assertions direction outputFileDirection = solutionAssertionDirection; } else if (fileName.Contains("Sample")) { // the LTS direction outputFileDirection = solutionLtsSampleDirection; } else if (fileName.Contains("LTS")) { // the LTS direction outputFileDirection = solutionLtsDirection; } else if (fileName.Contains("Ultility")) { // the ultility direction outputFileDirection = solutionUltilityDirection; } else if (fileName.EndsWith("PAT3 Source.ptt")) { // the ultility direction outputFileDirection = solutionRootDirection; } else { // if none of above, then put the output file to the home direction outputFileDirection = solutionHomeDirection; } outputFileName = Path.Combine(outputFileDirection, outputFileName) + host.FileExtension; Assembly myAssembly = Assembly.GetExecutingAssembly(); Stream myStream = myAssembly.GetManifestResourceStream("PAT.GUI.Docs.Template." + inputFileStreamName); if (extension == "resources") { byte[] buf = new byte[myStream.Length]; //declare arraysize myStream.Read(buf, 0, buf.Length); // read from stream to byte array File.WriteAllBytes(outputFileName, buf); } else { StreamReader reader = new StreamReader(myStream); string text = reader.ReadToEnd(); // use the engine to transfor the template string output = engine.ProcessTemplate(text, host); // write the generated file into the output file specified before // use the encoding style set in host File.WriteAllText(outputFileName, output, host.FileEncoding); } // after the generate, add the classes in the local classes field which will be used to // generate the .csproj file if (!inputFileDirection.Contains("\\Main") && !fileName.EndsWith("PAT3 Source.ptt") && retryCount == 1) { solutionClasses += outputFileName.Replace(solutionHomeDirection, "").TrimStart('\\') + "|"; } // reset the host extension property host.ResetFileExtension(); if (host.Errors.Count > 0) { if (retryCount <= RetryBound) { GenerateFileAsDefault(host, engine, fileName, aliasName, extension, retryCount + 1); } else { foreach (var error in host.Errors) { MessageBox.Show( string.Format("File[{0}] is Generated unsuccessfully for: {1}", outputFileName, error), Common.Utility.Utilities.APPLICATION_NAME, MessageBoxButtons.OK); } } } }