Changeset 8171
- Timestamp:
- 05/06/11 10:44:34 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/classes/organizer.m
r8151 r8171 1 1 %ORGANIZER class definition 2 % 3 % Supported options: 4 % repository: directory where all models will be saved 5 % prefix: prefix for saved model names 6 % steps: requested steps 7 % trunkprefix:prefix of previous run with a different prefix. Used to branch. 2 8 % 3 9 % Usage: 4 10 % org = organizer(varargin) 5 11 % 12 % 6 13 % Examples: 7 % org = organizer; %build an empty organizer object 8 % org = organizer('../Models/'); %build an empty organizer object with a given repository 9 % org = organizer('../Models/','models.AGU.'); %build an empty organizer object with a given repository and a prefix 10 % org = organizer('../Models/','models.AGU.','model.init'); %repository, prefix, and initial trunk prefix 14 % org = organizer('repository','Models/','prefix','AGU2015','steps',0); %build an empty organizer object with a given repository 11 15 12 16 classdef organizer 13 17 properties (SetAccess=private) 14 18 % {{{1 15 num=0;19 currentstep =0; 16 20 end 17 21 properties (SetAccess=public) 18 repository ='./'; 19 prefix ='model.'; 20 trunkprefix =''; 21 steps =[]; 22 repository ='./'; 23 prefix ='model.'; 24 trunkprefix =''; 25 steps =[]; 26 requestedsteps=[0]; 22 27 %}}} 23 28 end 24 29 methods 25 30 function org=organizer(varargin) % {{{1 26 if nargin>3, 27 help organizer 28 error('organizer constructor error message: bad usage'); 29 end 30 if nargin>2, 31 trunkprefix=varargin{3}; 31 32 %process options 33 options=pairoptions(varargin{:}); 34 35 %Get prefix 36 prefix=getfieldvalue(options,'prefix','model.'); 37 if ~ischar(prefix), error('prefix is not a string'); end 38 if ~strcmp(regexprep(prefix,'\s+',''),prefix), error('prefix should not have any white space'); end 39 org.prefix=prefix; 40 41 %Get repository 42 repository=getfieldvalue(options,'repository','./'); 43 if ~ischar(repository), error('repository is not a string'); end 44 if exist(repository,'dir')~=7, error(['Directory ' repository ' not found']), end 45 org.repository=repository; 46 47 %Get repository 48 org.requestedsteps=getfieldvalue(options,'steps',0); 49 50 %Get trunk prefix (only if provided by user) 51 if exist(options,'trunkprefix'), 52 trunkprefix=getfieldvalue(options,'trunkprefix',''); 32 53 if ~ischar(trunkprefix), error('trunkprefix is not a string'); end 33 54 if ~strcmp(regexprep(trunkprefix,'\s+',''),trunkprefix), error('trunkprefix should not have any white space'); end 34 55 org.trunkprefix=trunkprefix; 35 end36 if nargin>1,37 prefix=varargin{2};38 if ~ischar(prefix), error('prefix is not a string'); end39 if ~strcmp(regexprep(prefix,'\s+',''),prefix), error('prefix should not have any white space'); end40 org.prefix=prefix;41 end42 if nargin>0,43 repository=varargin{1};44 if ~ischar(repository), error('repository is not a string'); end45 if exist(repository,'dir')~=7, error(['Directory ' repository ' not found']), end46 org.repository=repository;47 56 end 48 57 end … … 86 95 end 87 96 end%}}} 88 function bool=perform(org,st eps,string) % {{{197 function bool=perform(org,string) % {{{1 89 98 90 99 bool=false; … … 93 102 if ~ischar(string), error('Step provided should be a string'); end 94 103 if ~strcmp(regexprep(string,'\s+',''),string), error('Step provided should not have any white space'); end 95 if (org. num>0 & ismember({string},{org.steps.string}))104 if (org.currentstep>0 & ismember({string},{org.steps.string})) 96 105 error(['Step ' string ' already present. Change name']); 97 106 end … … 100 109 org.steps(end+1).id=length(org.steps)+1; 101 110 org.steps(end).string=string; 102 org. num=org.num+1;111 org.currentstep=org.currentstep+1; 103 112 104 %if steps = 0, print all steps in org105 if any( steps==0),106 if org. num==1,107 disp(sprintf(' prefix: %s',org.prefix (1:end-6)));113 %if requestedsteps = 0, print all steps in org 114 if any(org.requestedsteps==0), 115 if org.currentstep==1, 116 disp(sprintf(' prefix: %s',org.prefix)); 108 117 end 109 disp(sprintf(' step #%2i : %s',org.steps(org. num).id,org.steps(org.num).string));118 disp(sprintf(' step #%2i : %s',org.steps(org.currentstep).id,org.steps(org.currentstep).string)); 110 119 end 111 120 112 %Ok, now if numis a member of steps, return true113 if ismember(org. num,steps),114 disp(sprintf('\n step #%i : %s\n',org.steps(org. num).id,org.steps(org.num).string));121 %Ok, now if currentstep is a member of steps, return true 122 if ismember(org.currentstep,org.requestedsteps), 123 disp(sprintf('\n step #%i : %s\n',org.steps(org.currentstep).id,org.steps(org.currentstep).string)); 115 124 bool=true; 116 125 end … … 123 132 124 133 %check 125 if (org. num==0), error('Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call'); end126 if (org. num>length(org.steps)), error('Cannot save model because organizer (org) is not up to date!'); end134 if (org.currentstep==0), error('Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call'); end 135 if (org.currentstep>length(org.steps)), error('Cannot save model because organizer (org) is not up to date!'); end 127 136 128 name=[org.repository '/' org.prefix org.steps(org. num).string ];137 name=[org.repository '/' org.prefix org.steps(org.currentstep).string ]; 129 138 disp(['saving model as: ' name]); 130 139 131 140 %check that md is a model 132 141 if ~isa(md,'model'), error('savemodel error message: third argument is not a model'); end 133 if (org. num>length(org.steps)), error(['organizer error message: element with id ' num2str(org.num) ' not found']); end142 if (org.currentstep>length(org.steps)), error(['organizer error message: element with id ' num2str(org.currentstep) ' not found']); end 134 143 135 144 %before saving model, try and find a runme.m file, and save it.
Note:
See TracChangeset
for help on using the changeset viewer.