classdef Project < bioinfo.pipeline.internal.VersionMixin
    % PROJECT Stores biopipelineDesigner data
    %
    % PROJECT stores all the information needed to re-open a
    % biopipelineDesigner session.

    properties (SetAccess = ?bioinfo.pipeline.internal.designer.PipelineController)
        Pipeline bioinfo.pipeline.Pipeline = bioinfo.pipeline.Pipeline
    end

    properties (Hidden, Access = ?bioinfo.pipeline.internal.designer.PipelineController)
        PipelineMap bioinfo.pipeline.internal.designer.PipelineMap
        JSONData(1,1) string
        UIMetaData struct
        ResultsDirectory(1,1) string {mustBeNonzeroLengthText} = fullfile(pwd, 'PipelineResults')
    end

    methods
        function obj = Project(p, pMap)
            arguments
                p bioinfo.pipeline.Pipeline
                pMap(1,1) bioinfo.pipeline.internal.designer.PipelineMap = bioinfo.pipeline.internal.designer.PipelineMap
            end

            obj.Pipeline    = p;
            obj.PipelineMap = pMap;
        end
    end
end