/// <summary> /// Creates a new project /// </summary> /// <param name="projectFileName">File name for the specified project</param> /// <returns></returns> public virtual MagitekResult <ProjectTree> CreateNewProject(string projectFileName) { if (_projects.Any(x => string.Equals(x.Name, projectFileName, StringComparison.OrdinalIgnoreCase))) { return(new MagitekResult <ProjectTree> .Failed($"{projectFileName} already exists in the solution")); } var projectName = Path.GetFileNameWithoutExtension(projectFileName); var project = new ImageProject(projectName); var root = new ProjectNode(project.Name, project) { DiskLocation = Path.GetFullPath(projectFileName), BaseDirectory = Path.GetDirectoryName(projectFileName) }; var tree = new ProjectTree(root); var contents = _serializerFactory.CreateWriter(tree).SerializeResource(root); File.WriteAllText(root.DiskLocation, contents); _projects.Add(tree); UpdateNodeModel(tree, root); return(new MagitekResult <ProjectTree> .Success(tree)); }
public static ImageProjectModel MapToModel(this ImageProject project) { return(new ImageProjectModel() { Name = project.Name, Root = project.Root }); }
public virtual MagitekResult <ProjectTree> CreateNewProjectWithExistingFile(string projectFileName, string dataFileName) { if (_projects.Any(x => string.Equals(x.Name, projectFileName, StringComparison.OrdinalIgnoreCase))) { return(new MagitekResult <ProjectTree> .Failed($"{projectFileName} already exists in the solution")); } if (File.Exists(projectFileName)) { return(new MagitekResult <ProjectTree> .Failed($"Project file '{projectFileName}' already exists")); } if (!File.Exists(dataFileName)) { return(new MagitekResult <ProjectTree> .Failed($"Data file '{dataFileName}' does not exist")); } var projectName = Path.GetFileNameWithoutExtension(projectFileName); var project = new ImageProject(projectName); var root = new ProjectNode(project.Name, project) { DiskLocation = Path.GetFullPath(projectFileName), BaseDirectory = Path.GetDirectoryName(projectFileName) }; var tree = new ProjectTree(root); var dataFile = new FileDataSource(Path.GetFileNameWithoutExtension(dataFileName), dataFileName); var dataNode = new DataFileNode(dataFile.Name, dataFile); tree.AttachNodeToPath("", dataNode); _projects.Add(tree); var result = SaveProject(tree); if (result.HasSucceeded) { UpdateNodeModel(tree, root); return(new MagitekResult <ProjectTree> .Success(tree)); } else { return(new MagitekResult <ProjectTree> .Failed(result.AsError.Reason)); } }
public ProjectNode(string nodeName, ImageProject resource) : base(nodeName, resource) { }