Beispiel #1
0
    /// <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));
    }
Beispiel #2
0
 public static ImageProjectModel MapToModel(this ImageProject project)
 {
     return(new ImageProjectModel()
     {
         Name = project.Name,
         Root = project.Root
     });
 }
Beispiel #3
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));
        }
    }
Beispiel #4
0
 public ProjectNode(string nodeName, ImageProject resource) : base(nodeName, resource)
 {
 }