public void CreateProjectDetailsFile(IDesignerProject project, string folder) { string text = GetText(project, WriteProjectDetailsXML); string filePath = folder.PathSlash(GetFilenameFor(project)); fileController.WriteAllText(filePath, text); }
protected virtual void ProcessProjectReferences(XmlNodeList nodes, IDesignerProject project, string projectFilename) { if (nodes == null) { return; } List <ReferencedFile> referencedFiles = new List <ReferencedFile>(); foreach (XmlNode referenceNode in nodes) { NodeProcessor proc = new NodeProcessor(referenceNode); string relativeFileName = proc.Attributes.GetString("filename"); bool mergeWithAssembly = proc.Attributes.GetBool("mergewithassembly"); bool useInWorkbench = proc.Attributes.GetBool("useinworkbench"); bool isProvider = proc.Attributes.GetBool("isprovider"); string fileName = controller.ToAbsolutePath(relativeFileName, projectFilename); ReferencedFile file = new ReferencedFile(fileName, mergeWithAssembly, useInWorkbench); file.IsProvider = isProvider; referencedFiles.Add(file); } project.SetReferencedFiles(referencedFiles); }
protected virtual void ProcessConfig(XmlNode node, IDesignerProject project, string projectFilename) { NodeProcessor proc = new NodeProcessor(node); string relativeCompilePath = proc.GetString("RelativeCompilePath"); project.CompileFolderName = controller.ToAbsolutePath(relativeCompilePath, projectFilename); project.Version = proc.GetString("Version"); project.ProjType = proc.GetEnum <ProjectTypes>("ProjectType"); string relativeDebugProjectFile = proc.GetString("DebugProjectFile"); project.DebugProjectFile = controller.ToAbsolutePath(relativeDebugProjectFile, projectFilename); var relativeTestGenerateDirectory = proc.GetString("TestGenerateDirectory"); project.TestGenerateDirectory = controller.ToAbsolutePath(relativeTestGenerateDirectory, projectFilename); var namespaceNodes = node.SelectNodes("IncludedNamespaces/Namespace"); if (namespaceNodes != null) { foreach (XmlNode namespaceNode in namespaceNodes) { project.AddNamespace(namespaceNode.InnerText); } } var refereceNodes = node.SelectNodes("References/Reference"); ProcessProjectReferences(refereceNodes, project, projectFilename); }
public void LoadProject(string projectFilename, IDesignerProject project) { LoadProjectFile(projectFilename, project); string projectFolder = Path.GetDirectoryName(projectFilename).PathSlash(ProjectSerialiserV1.ProjectFilesFolder); var apiExtensions = LoadApiExtensionFiles(projectFolder.PathSlash(ProjectSerialiserV1.ApiExtensionFolder)); var options = LoadUserOptions(projectFolder.PathSlash(ProjectSerialiserV1.UserOptionFolder)); var functions = LoadFunctionFiles(projectFolder.PathSlash(ProjectSerialiserV1.FunctionFilesFolder)); var rootFolder = LoadOutputsFile(projectFolder); var includedFiles = LoadStaticFilenames(projectFolder.PathSlash(ProjectSerialiserV1.StaticFilesFolder)); project.ApiExtensions = apiExtensions; project.SetUserOptions(options); project.Functions.Clear(); project.Functions.AddRange(functions); project.RootOutput = rootFolder; project.ClearIncludedFiles(); project.AddIncludedFiles(includedFiles); project.SetupDynamicfilesAndFolders(); }
public void The_Load_Method_Loads_Namespaces_Correctly() { ProjectDeserialiserV1 deserialiser = new ProjectDeserialiserV1(fileController); IDesignerProject project = MockRepository.GenerateMock <IDesignerProject>(); deserialiser.ReadProject(ExpectedXml.GetXmlDocRoot(), project, "Folder\\Project.aad"); project.AssertWasCalled(p => p.AddNamespace(Arg <string> .Is.Equal("Ns1"))); }
public void SetUp() { fileController = MockRepository.GenerateMock <IFileController>(); fileController.Stub(f => f.DirectoryExists("Folder")).Return(true); fileController.Stub(f => f.CanCreateFilesIn("Folder")).Return(true); project = MockRepository.GenerateStub <IDesignerProject>(); project.ProjectName = "Project"; project.Stub(p => p.Namespaces).Return(new List <string>()); project.Stub(p => p.References).Return(new List <ReferencedFile>().AsReadOnly()); }
public virtual void ReadProject(XmlNode projectElement, IDesignerProject project, string projectFilename) { if (projectElement == null) { throw new DeserialisationException("Could not find Project node"); } NodeProcessor proc = new NodeProcessor(projectElement); project.ProjectName = proc.GetString("Name"); project.ProjectDescription = proc.GetString("Description"); ProcessConfig(projectElement.SelectSingleNode("Config"), project, projectFilename); }
private void ReadFunctions(XmlNode functions, IDesignerProject project) { var functionNodes = functions.SelectNodes("Function"); if (functionNodes == null) { return; } foreach (XmlElement fNode in functionNodes) { var func = ReadFunction(fNode); project.Functions.Add(func); } }
public void SetUp() { fileController = MockRepository.GenerateMock <IFileController>(); project = MockRepository.GenerateStub <IDesignerProject>(); project.ProjectName = "Test"; project.ProjectDescription = "Desc"; project.DebugProjectFile = "debug.wbproj"; project.Stub(p => p.GetCompiledDLLDirectory()).Return("temp-compile"); project.Stub(p => p.GetPathRelativeToProjectFile("debug.wbproj")).Return("debug.wbproj"); project.Stub(p => p.GetPathRelativeToProjectFile("test gen")).Return("test gen"); project.Version = "1.2.3.2.1"; project.TestGenerateDirectory = "test gen"; project.Stub(p => p.Namespaces).Return(new List <string>()); project.Stub(p => p.References).Return(new List <ReferencedFile>().AsReadOnly()); }
public void The_Load_Method_Creates_The_Correct_Project() { ProjectDeserialiserV1 deserialiser = new ProjectDeserialiserV1(fileController); IDesignerProject project = MockRepository.GenerateMock <IDesignerProject>(); deserialiser.ReadProject(ExpectedXml.GetXmlDocRoot(), project, "Folder\\Project.aad"); project.AssertWasCalled(p => p.ProjectName = "Test"); project.AssertWasCalled(p => p.ProjectDescription = "Desc"); project.AssertWasCalled(p => p.CompileFolderName = "Folder\\temp-compile"); // This should be the absolute path. project.AssertWasCalled(p => p.Version = "1.2.3.2.1"); project.AssertWasCalled(p => p.ProjType = ProjectTypes.None); project.AssertWasCalled(p => p.DebugProjectFile = "Folder\\debug.wbproj"); // Absolute path project.AssertWasCalled(p => p.TestGenerateDirectory = "Folder\\test gen"); // Absolute path }
public void SetUp() { fileController = MockRepository.GenerateMock<IFileController>(); project = MockRepository.GenerateStub<IDesignerProject>(); project.ProjectName = "Test"; project.ProjectDescription = "Desc"; project.DebugProjectFile = "debug.wbproj"; project.Stub(p => p.GetCompiledDLLDirectory()).Return("temp-compile"); project.Stub(p => p.GetPathRelativeToProjectFile("debug.wbproj")).Return("debug.wbproj"); project.Stub(p => p.GetPathRelativeToProjectFile("test gen")).Return("test gen"); project.Version = "1.2.3.2.1"; project.TestGenerateDirectory = "test gen"; project.Stub(p => p.Namespaces).Return(new List<string>()); project.Stub(p => p.References).Return(new List<ReferencedFile>().AsReadOnly()); }
private void ReadAllApiExtensions(XmlNode extensions, IDesignerProject project) { if (extensions == null) { project.ApiExtensions = new List <ApiExtensionMethod>(); return; } var apiExtensions = new List <ApiExtensionMethod>(); foreach (XmlNode extNode in extensions) { apiExtensions.AddRange(ReadApiExtensions(extNode)); } project.ApiExtensions = apiExtensions; }
public void WriteProjectToDisk(IDesignerProject project, string projectFolder) { string projectFilesFolder = projectFolder.PathSlash(ProjectFilesFolder); CheckFolder(projectFolder); CheckFolder(projectFilesFolder); CheckFolder(projectFilesFolder.PathSlash(ApiExtensionFolder)); CheckFolder(projectFilesFolder.PathSlash(FunctionFilesFolder), true); CheckFolder(projectFilesFolder.PathSlash(UserOptionFolder)); CreateProjectDetailsFile(project, projectFolder); CreateOutputFile(project.RootOutput, projectFilesFolder); CreateApiExtensionFiles(project.ApiExtensions, projectFilesFolder.PathSlash(ApiExtensionFolder)); CreateFunctionFiles(project.Functions, projectFilesFolder.PathSlash(FunctionFilesFolder)); CreateUserOptionsFiles(project.UserOptions, projectFilesFolder.PathSlash(UserOptionFolder)); CreateUserOptionDetailsFile(project.UserOptions, projectFilesFolder.PathSlash(UserOptionFolder)); CreateStaticFiles(project.IncludedFiles, projectFilesFolder.PathSlash(StaticFilesFolder)); }
public virtual void LoadProjectFile(string projectFilePath, IDesignerProject project) { if (controller.FileExists(projectFilePath) == false) { throw new FileNotFoundException("Could not find project file at path " + projectFilePath); } if (controller.CanReadFile(projectFilePath) == false) { throw new IOException(string.Format("Cannot read from file {0}: Access Denied.", projectFilePath)); } if (project == null) { throw new DeserialisationException("Cannot load into Project: The given Project was null."); } string projectFileXML = controller.ReadAllText(projectFilePath); ReadProject(projectFileXML.GetXmlDocRoot(), project, projectFilePath); }
private void WriteProjectToSingleXmlFile(IDesignerProject project, XmlWriter writer) { Document doc = new Document(writer); using (doc.StartElement("MegaProject")) { WriteProjectDetailsXML(project, writer); using (doc.StartElement("AllApiExtensions")) { var apiGroupsByType = project.ApiExtensions.GroupBy(a => a.ExtendedMethod.DeclaringType); foreach (var extendedType in apiGroupsByType) { WriteApiExtensionMethodXML(extendedType, extendedType.Key, writer); } } using (doc.StartElement("Functions")) { writer.WriteAttributeString("version", "1"); foreach (var function in project.Functions) { WriteFunctionXML(function, writer); } } using (doc.StartElement("UserOptions")) { writer.WriteAttributeString("version", "1"); foreach (var uo in project.UserOptions) { WriteUserOptionXML(uo, writer); } WriteUserOptionDetailsXML(project.UserOptions, writer); } WriteStaticFilesDetails(project.IncludedFiles, writer); WriteOutputsXML(project.RootOutput, writer); } }
private void ReadUserOptions(XmlNode options, IDesignerProject project) { var userOptionNodes = options.SelectNodes("Option"); if (userOptionNodes == null) { return; } List <UserOption> userOptions = new List <UserOption>(); foreach (XmlElement uoNode in userOptionNodes) { var uo = ReadUserOption(uoNode); userOptions.Add(uo); } ReadUserOptionDetails(userOptions, options.SelectSingleNode("UserOptionDetails")); project.SetUserOptions(userOptions); }
public virtual void LoadDefaultApiFunctionBodies(XmlNode functionsElement, IDesignerProject project) { if (functionsElement == null) { throw new DeserialisationException("Could not find FunctionInformation element"); } CheckVersion(functionsElement); project.ClearOverriddenFunctionInformation(); var functionInformations = new List <OverriddenFunctionInformation>(); var functions = functionsElement.SelectNodes("Function"); if (functions == null) { return; } foreach (XmlNode funcNode in functions) { var proc = new NodeProcessor(funcNode); var parameters = proc.GetStrings("Parameter").Select(p => GetTypeNamed(p)); string functionName = proc.Attributes.GetString("name"); string typeName = proc.Attributes.GetString("type"); string xmlcomments = proc.GetString("XmlComments"); string functionBody = proc.GetString("BodyText"); functionInformations.Add( new OverriddenFunctionInformation(GetTypeNamed(typeName), functionName, parameters, xmlcomments, functionBody)); } project.AddOverriddenFunctionInformation(functionInformations); }
public void WriteProjectDetailsXML(IDesignerProject project, XmlWriter writer) { Document doc = new Document(writer); using (doc.StartElement("Project")) { writer.WriteAttributeString("version", "1"); writer.WriteElementString("Name", project.ProjectName); writer.WriteElementString("Description", project.ProjectDescription); using (doc.StartElement("Config")) { writer.WriteElementString("RelativeCompilePath", project.GetCompiledDLLDirectory()); writer.WriteElementString("Version", project.Version); writer.WriteElementString("ProjectType", project.ProjType.ToString()); writer.WriteElementString("DebugProjectFile", project.GetPathRelativeToProjectFile(project.DebugProjectFile)); writer.WriteElementString("TestGenerateDirectory", project.GetPathRelativeToProjectFile(project.TestGenerateDirectory)); using (doc.StartElement("IncludedNamespaces")) { foreach (var ns in project.Namespaces.OrderBy(n => n)) { writer.WriteElementString("Namespace", ns); } } using (doc.StartElement("References")) { foreach (var reference in project.References.OrderBy(r => r.FileName)) { WriteProjectReference(reference, writer, project); } } } } }
public virtual void LoadProjectFile(string projectFilePath, IDesignerProject project) { if (controller.FileExists(projectFilePath) == false) throw new FileNotFoundException("Could not find project file at path " + projectFilePath); if (controller.CanReadFile(projectFilePath) == false) throw new IOException(string.Format("Cannot read from file {0}: Access Denied.", projectFilePath)); if (project == null) throw new DeserialisationException("Cannot load into Project: The given Project was null."); string projectFileXML = controller.ReadAllText(projectFilePath); ReadProject(projectFileXML.GetXmlDocRoot(), project, projectFilePath); }
public virtual void ReadProject(XmlNode projectElement, IDesignerProject project, string projectFilename) { if (projectElement == null) throw new DeserialisationException("Could not find Project node"); NodeProcessor proc = new NodeProcessor(projectElement); project.ProjectName = proc.GetString("Name"); project.ProjectDescription = proc.GetString("Description"); ProcessConfig(projectElement.SelectSingleNode("Config"), project, projectFilename); }
protected virtual void ProcessConfig(XmlNode node, IDesignerProject project, string projectFilename) { NodeProcessor proc = new NodeProcessor(node); string relativeCompilePath = proc.GetString("RelativeCompilePath"); project.CompileFolderName = controller.ToAbsolutePath(relativeCompilePath, projectFilename); project.Version = proc.GetString("Version"); project.ProjType = proc.GetEnum<ProjectTypes>("ProjectType"); string relativeDebugProjectFile = proc.GetString("DebugProjectFile"); project.DebugProjectFile = controller.ToAbsolutePath(relativeDebugProjectFile, projectFilename); var relativeTestGenerateDirectory = proc.GetString("TestGenerateDirectory"); project.TestGenerateDirectory = controller.ToAbsolutePath(relativeTestGenerateDirectory, projectFilename); var namespaceNodes = node.SelectNodes("IncludedNamespaces/Namespace"); if (namespaceNodes != null) foreach (XmlNode namespaceNode in namespaceNodes) project.AddNamespace(namespaceNode.InnerText); var refereceNodes = node.SelectNodes("References/Reference"); ProcessProjectReferences(refereceNodes, project, projectFilename); }
protected virtual void ProcessProjectReferences(XmlNodeList nodes, IDesignerProject project, string projectFilename) { if (nodes == null) return; List<ReferencedFile> referencedFiles = new List<ReferencedFile>(); foreach (XmlNode referenceNode in nodes) { NodeProcessor proc = new NodeProcessor(referenceNode); string relativeFileName = proc.Attributes.GetString("filename"); bool mergeWithAssembly = proc.Attributes.GetBool("mergewithassembly"); bool useInWorkbench = proc.Attributes.GetBool("useinworkbench"); bool isProvider = proc.Attributes.GetBool("isprovider"); string fileName = controller.ToAbsolutePath(relativeFileName, projectFilename); ReferencedFile file = new ReferencedFile(fileName, mergeWithAssembly, useInWorkbench); file.IsProvider = isProvider; referencedFiles.Add(file); } project.SetReferencedFiles(referencedFiles); }
private string GetFilenameFor(IDesignerProject project) { return(project.ProjectName + ".aad"); }
private void ReadFunctions(XmlNode functions, IDesignerProject project) { var functionNodes = functions.SelectNodes("Function"); if (functionNodes == null) return; foreach (XmlElement fNode in functionNodes) { var func = ReadFunction(fNode); project.Functions.Add(func); } }
private void ReadUserOptions(XmlNode options, IDesignerProject project) { var userOptionNodes = options.SelectNodes("Option"); if (userOptionNodes == null) return; List<UserOption> userOptions = new List<UserOption>(); foreach (XmlElement uoNode in userOptionNodes) { var uo = ReadUserOption(uoNode); userOptions.Add(uo); } ReadUserOptionDetails(userOptions, options.SelectSingleNode("UserOptionDetails")); project.SetUserOptions(userOptions); }
public string WriteProjectToSingleXmlFile(IDesignerProject project) { return(GetText(project, WriteProjectToSingleXmlFile)); }
public void SetUp() { fileController = MockRepository.GenerateMock<IFileController>(); fileController.Stub(f => f.DirectoryExists("Folder")).Return(true); fileController.Stub(f => f.CanCreateFilesIn("Folder")).Return(true); project = MockRepository.GenerateStub<IDesignerProject>(); project.ProjectName = "Project"; project.Stub(p => p.Namespaces).Return(new List<string>()); project.Stub(p => p.References).Return(new List<ReferencedFile>().AsReadOnly()); }
private void ReadAllApiExtensions(XmlNode extensions, IDesignerProject project) { if (extensions == null) { project.ApiExtensions = new List<ApiExtensionMethod>(); return; } var apiExtensions = new List<ApiExtensionMethod>(); foreach (XmlNode extNode in extensions) { apiExtensions.AddRange(ReadApiExtensions(extNode)); } project.ApiExtensions = apiExtensions; }
public virtual void LoadDefaultApiFunctionBodies(XmlNode functionsElement, IDesignerProject project) { if (functionsElement == null) throw new DeserialisationException("Could not find FunctionInformation element"); CheckVersion(functionsElement); project.ClearOverriddenFunctionInformation(); var functionInformations = new List<OverriddenFunctionInformation>(); var functions = functionsElement.SelectNodes("Function"); if (functions == null) return; foreach (XmlNode funcNode in functions) { var proc = new NodeProcessor(funcNode); var parameters = proc.GetStrings("Parameter").Select(p => GetTypeNamed(p)); string functionName = proc.Attributes.GetString("name"); string typeName = proc.Attributes.GetString("type"); string xmlcomments = proc.GetString("XmlComments"); string functionBody = proc.GetString("BodyText"); functionInformations.Add( new OverriddenFunctionInformation(GetTypeNamed(typeName), functionName, parameters, xmlcomments, functionBody)); } project.AddOverriddenFunctionInformation(functionInformations); }
private void WriteProjectReference(ReferencedFile reference, XmlWriter writer, IDesignerProject project) { writer.WriteStartElement("Reference"); writer.WriteAttributeString("filename", project.GetPathRelativeToProjectFile(reference.FileName)); writer.WriteAttributeString("mergewithassembly", reference.MergeWithAssembly.ToString(CultureInfo.InvariantCulture)); writer.WriteAttributeString("useinworkbench", reference.UseInWorkbench.ToString(CultureInfo.InvariantCulture)); writer.WriteAttributeString("isprovider", reference.IsProvider.ToString(CultureInfo.InvariantCulture)); writer.WriteEndElement(); }