Example #1
0
    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));
        }
    }
Example #2
0
    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);
    }