Index: /issm/trunk/src/m/classes/organizer.m
===================================================================
--- /issm/trunk/src/m/classes/organizer.m	(revision 8170)
+++ /issm/trunk/src/m/classes/organizer.m	(revision 8171)
@@ -1,48 +1,57 @@
 %ORGANIZER class definition
+%
+%   Supported options:
+%      repository: directory where all models will be saved
+%      prefix:     prefix for saved model names
+%      steps:      requested steps
+%      trunkprefix:prefix of previous run with a different prefix. Used to branch.
 %
 %   Usage:
 %      org = organizer(varargin)
 %
+%
 %   Examples:
-%      org = organizer;                             %build an empty organizer object
-%      org = organizer('../Models/');               %build an empty organizer object with a given repository
-%      org = organizer('../Models/','models.AGU.'); %build an empty organizer object with a given repository and a prefix
-%      org = organizer('../Models/','models.AGU.','model.init'); %repository, prefix, and initial trunk prefix
+%      org = organizer('repository','Models/','prefix','AGU2015','steps',0);  %build an empty organizer object with a given repository
 
 classdef organizer
     properties (SetAccess=private) 
 		 % {{{1
-		 num         =0;
+		 currentstep   =0;
 	 end
     properties (SetAccess=public) 
-		 repository  ='./';
-		 prefix      ='model.';
-		 trunkprefix ='';
-		 steps       =[];
+		 repository    ='./';
+		 prefix        ='model.';
+		 trunkprefix   ='';
+		 steps         =[];
+		 requestedsteps=[0];
 		 %}}}
 	 end
 	 methods
 		 function org=organizer(varargin) % {{{1
-			 if nargin>3,
-				 help organizer
-				 error('organizer constructor error message: bad usage');
-			 end
-			 if nargin>2,
-				 trunkprefix=varargin{3};
+
+			 %process options
+			 options=pairoptions(varargin{:});
+
+			 %Get prefix
+			 prefix=getfieldvalue(options,'prefix','model.');
+			 if ~ischar(prefix),                            error('prefix is not a string'); end
+			 if ~strcmp(regexprep(prefix,'\s+',''),prefix), error('prefix should not have any white space'); end
+			 org.prefix=prefix;
+
+			 %Get repository
+			 repository=getfieldvalue(options,'repository','./');
+			 if ~ischar(repository),        error('repository is not a string'); end
+			 if exist(repository,'dir')~=7, error(['Directory ' repository ' not found']), end
+			 org.repository=repository;
+
+			 %Get repository
+			 org.requestedsteps=getfieldvalue(options,'steps',0);
+
+			 %Get trunk prefix (only if provided by user)
+			 if exist(options,'trunkprefix'),
+				 trunkprefix=getfieldvalue(options,'trunkprefix','');
 				 if ~ischar(trunkprefix),                                 error('trunkprefix is not a string'); end
 				 if ~strcmp(regexprep(trunkprefix,'\s+',''),trunkprefix), error('trunkprefix should not have any white space'); end
 				 org.trunkprefix=trunkprefix;
-			 end
-			 if nargin>1,
-				 prefix=varargin{2};
-				 if ~ischar(prefix),                            error('prefix is not a string'); end
-				 if ~strcmp(regexprep(prefix,'\s+',''),prefix), error('prefix should not have any white space'); end
-				 org.prefix=prefix;
-			 end
-			 if nargin>0,
-				 repository=varargin{1};
-				 if ~ischar(repository),        error('repository is not a string'); end
-				 if exist(repository,'dir')~=7, error(['Directory ' repository ' not found']), end
-				 org.repository=repository;
 			 end
 		 end
@@ -86,5 +95,5 @@
 			 end
 		 end%}}}
-		 function bool=perform(org,steps,string) % {{{1
+		 function bool=perform(org,string) % {{{1
 			 
 			 bool=false;
@@ -93,5 +102,5 @@
 			 if ~ischar(string),                            error('Step provided should be a string'); end
 			 if ~strcmp(regexprep(string,'\s+',''),string), error('Step provided should not have any white space'); end
-			 if (org.num>0 & ismember({string},{org.steps.string})) 
+			 if (org.currentstep>0 & ismember({string},{org.steps.string})) 
 				 error(['Step ' string ' already present. Change name']); 
 			 end
@@ -100,17 +109,17 @@
 			 org.steps(end+1).id=length(org.steps)+1;
 			 org.steps(end).string=string;
-			 org.num=org.num+1;
+			 org.currentstep=org.currentstep+1;
 
-			 %if steps = 0, print all steps in org 
-			 if any(steps==0),
-				 if org.num==1,
-					 disp(sprintf('   prefix: %s',org.prefix(1:end-6)));
+			 %if requestedsteps = 0, print all steps in org 
+			 if any(org.requestedsteps==0),
+				 if org.currentstep==1,
+					 disp(sprintf('   prefix: %s',org.prefix));
 				 end
-				 disp(sprintf('   step #%2i : %s',org.steps(org.num).id,org.steps(org.num).string));
+				 disp(sprintf('   step #%2i : %s',org.steps(org.currentstep).id,org.steps(org.currentstep).string));
 			 end
 
-			 %Ok, now if num is a member of steps, return true
-			 if ismember(org.num,steps),
-				 disp(sprintf('\n   step #%i : %s\n',org.steps(org.num).id,org.steps(org.num).string));
+			 %Ok, now if currentstep is a member of steps, return true
+			 if ismember(org.currentstep,org.requestedsteps),
+				 disp(sprintf('\n   step #%i : %s\n',org.steps(org.currentstep).id,org.steps(org.currentstep).string));
 				 bool=true;
 			 end
@@ -123,13 +132,13 @@
 
 			 %check
-			 if (org.num==0), error('Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call'); end
-			 if (org.num>length(org.steps)), error('Cannot save model because organizer (org) is not up to date!'); end
+			 if (org.currentstep==0), error('Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call'); end
+			 if (org.currentstep>length(org.steps)), error('Cannot save model because organizer (org) is not up to date!'); end
 
-			 name=[org.repository '/' org.prefix org.steps(org.num).string ];
+			 name=[org.repository '/' org.prefix org.steps(org.currentstep).string ];
 			 disp(['saving model as: ' name]);
 			 
 			 %check that md is a model
 			 if ~isa(md,'model'),       error('savemodel error message: third argument is not a model'); end
-			 if (org.num>length(org.steps)), error(['organizer error message: element with id ' num2str(org.num) ' not found']); end
+			 if (org.currentstep>length(org.steps)), error(['organizer error message: element with id ' num2str(org.currentstep) ' not found']); end
 
 			 %before saving model, try and find a runme.m file, and save it.
