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 MagitekResult AddDataFile(DataFileModel dfModel, string parentNodePath, string fileLocation) { var fileSource = new FileDataSource(dfModel.Name, dfModel.Location); var dfNode = new DataFileNode(fileSource.Name, fileSource) { DiskLocation = fileLocation, Model = dfModel }; Tree.TryGetNode(parentNodePath, out var parentNode); parentNode.AttachChildNode(dfNode); if (!File.Exists(fileSource.FileLocation)) { return(new MagitekResult.Failed($"DataFile '{fileSource.Name}' does not exist at location '{fileSource.FileLocation}'")); } return(MagitekResult.SuccessResult); }