0001 function ts = set(ts, varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 VERSION = '$Id: set.html,v 1.12 2008/03/31 10:27:39 hewitson Exp $';
0029 CATEGORY = 'Helper';
0030 DEFAULT_PLIST = plist('name', '', ...
0031 'start', time(), ...
0032 'end', time(), ...
0033 'timeformat', timeformat(), ...
0034 'interval', '', ...
0035 'timezone', java.util.TimeZone.getTimeZone('UTC'), ...
0036 'version', '', ...
0037 'plist', plist(), ...
0038 'created', time);
0039
0040 timespan_fields = fieldnames(ts);
0041 property_argin = varargin;
0042
0043
0044 if length(timespan_fields) ~= nparams(DEFAULT_PLIST)
0045 error('\n### The DEFAULT_PLIST doesn''t contain all field names of the %s-class!', class(ts));
0046 end
0047
0048
0049 if ~isempty(varargin{1}) == 1 && ischar(varargin{1})
0050 in = varargin{1};
0051 if strcmp(in, 'Params')
0052 ts = DEFAULT_PLIST;
0053 return
0054 elseif strcmp(in, 'Version')
0055 ts = VERSION;
0056 return
0057 elseif strcmp(in, 'Category')
0058 ts = CATEGORY;
0059 return
0060 end
0061 end
0062
0063
0064
0065
0066 if nargin >= 2 && isa(property_argin{1}, 'plist')
0067 pl = property_argin{1};
0068 property_argin = {};
0069 for ii = 1:nparams(pl)
0070
0071
0072
0073 property_argin{end+1} = lower(pl.params(ii).key);
0074 property_argin{end+1} = pl.params(ii).val;
0075 end
0076 end
0077
0078 if (nargout ~= 0)
0079
0080 while length(property_argin) >= 2
0081 prop = property_argin{1};
0082 val = property_argin{2};
0083 property_argin = property_argin(3:end);
0084
0085 if ~ismember(prop, timespan_fields)
0086 error('### ''%s'' is not a valid %s-object property.', prop, class(ts));
0087 else
0088
0089
0090
0091
0092 if strcmp(prop, 'end') || strcmp(prop, 'start')
0093
0094 if isa(val, 'time')
0095 val = set(val, 'timeformat', ts.timeformat);
0096 ts.(prop) = val;
0097 elseif ischar(val)
0098 ts_format = char(ts.timeformat);
0099 if ~isnan(str2double(ts_format))
0100 ts_format = str2double(ts_format);
0101 end
0102 tt = time(val, ts_format);
0103 tt = set(tt, 'timeformat', ts.timeformat);
0104 ts.(prop) = tt;
0105 end
0106
0107
0108 ts = compute_interval(ts);
0109
0110
0111
0112
0113 elseif strcmp(prop, 'timeformat')
0114
0115 if isa(val, 'timeformat')
0116 ts.timeformat = val;
0117
0118 ts.start = set(ts.start, 'timeformat', char(val));
0119 ts.end = set(ts.end, 'timeformat', char(val));
0120
0121 elseif ischar(val) || isnumeric(val)
0122 ts.start = set(ts.start, 'timeformat', val);
0123 ts.end = set(ts.end, 'timeformat', val);
0124
0125 ts.timeformat = ts.start.timeformat;
0126 end
0127
0128
0129
0130
0131 elseif strcmp(prop, 'timezone')
0132
0133 ts.start = set(ts.start, 'timezone', val);
0134 ts.end = set(ts.end, 'timezone', val);
0135
0136 ts.timezone = ts.start.timezone;
0137
0138
0139
0140
0141 else
0142 ts.(prop) = val;
0143 end
0144 end
0145
0146 end
0147
0148 else
0149 display(ts);
0150 error('\n### No output variable!\n### Please use: %s = set(%s, ''key'', ''value'');', inputname(1), inputname(1));
0151 end