diff m-toolbox/classes/@time/time.m @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/classes/@time/time.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,270 @@
+% TIME Time object class constructor.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% DESCRIPTION: Time object class constructor.  Time objects are lightweight
+%              ltpda user objects that can be used to operate with times.
+%              Their use in the graphical user interface is limited to
+%              their creation.
+%
+% SUPERCLASSES: ltpda_nuo < ltpda_obj
+%
+% CONSTRUCTORS:
+%
+%       t1 = time()
+%       t1 = time('14:00:05.000')
+%       t1 = time('2007-06-06 14:00:05')
+%       t1 = time('14:00:05 2007-06-06')
+%       t1 = time(1234.5)
+%       t1 = time([0 2000 6000])
+%       t1 = time(plist)
+%
+% PLIST CONSTRUCTORS:
+%
+% From Milliseconds
+% -----------------
+%
+%   Construct a time object from its representation in milliseconds since the
+%   unix epoch, 1970-01-01 00:00:00.000 UTC:
+%
+%     'milliseconds' - time in milliseconds. default: 0
+%
+% From Time
+% ---------
+%
+%   Construct a time object from its representation as a string or its
+%   representation as number of seconds since the unix epoch, 1970-01-01
+%   00:00:00.000 UTC:
+%
+%     'time' - time string or double. default: '1970-01-01 00:00:00.000 UTC'
+%
+%   If the time is specified as a string it is possible to specify the format
+%   and the timezone that must be used to interpret the string:
+%
+%     'timezone'    - timezone. default: ''
+%     'timeformat'  - time format string. default: ''
+%
+%
+% SEE ALSO: timespan
+%
+% VERSION: $Id: time.m,v 1.90 2011/03/28 17:02:29 ingo Exp $
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+classdef time < ltpda_nuo
+
+  % private read-only properties
+  properties (SetAccess = private)
+    utc_epoch_milli = 0;  % unix epoch time in milliseconds
+  end
+
+  % protected properties
+  properties (SetAccess = protected)
+  end
+
+  % constant properties
+  properties (Constant = true)
+    timeformat;
+    timezone;
+  end
+
+  % constant properties access methods
+  methods
+    function value = get.timezone(obj)
+      p = getappdata(0, 'LTPDApreferences');
+      value = char(p.getTimePrefs.getTimeTimezone);
+      if ischar(value)
+        value = java.util.TimeZone.getTimeZone(value);
+      end
+    end
+
+    function value = get.timeformat(obj)
+      p = getappdata(0, 'LTPDApreferences');
+      value = char(p.getTimePrefs.getTimestringFormat);
+    end
+  end
+  
+  % constructor
+  methods
+    function obj = time(varargin)
+
+      switch nargin
+        case 0
+          % no input arguments. return the current time
+          obj.utc_epoch_milli = time.now();
+        case 1
+          % one input
+
+          if isa(varargin{1}, 'time')
+            % t1 = time(time-object)
+            obj = copy(varargin{1}, 1);
+
+          elseif ischar(varargin{1})
+            % t1 = time('2007-08-03 10:00:00')
+            obj.utc_epoch_milli = time.parse(varargin{1});
+
+          elseif isstruct(varargin{1})
+            % t1 = time(structure)
+            obj = fromStruct(obj, varargin{1});
+
+          elseif isnumeric(varargin{1})
+            % t1 = time(12345)
+            for kk = 1:numel(varargin{1})
+              obj(kk).utc_epoch_milli = 1000*varargin{1}(kk);
+            end
+            obj = reshape(obj, size(varargin{1}));
+
+          elseif iscell(varargin{1})
+            % t1 = time({'14:00:00', '15:00:00'})
+            for kk = 1:numel(varargin{1})
+              obj(kk) = time(varargin{1}{kk});
+            end
+            obj = reshape(obj, size(varargin{1}));
+
+          elseif isa(varargin{1}, 'plist')
+            % t1 = time(plist)
+            pl = varargin{1};
+            pl_msec = find(pl, 'milliseconds');
+            pl_time = find(pl, 'time');
+
+            if ~isempty(pl_msec)
+              % construct from milliseconds time definition
+              obj.utc_epoch_milli = pl_msec;
+
+            elseif ~isempty(pl_time)
+              % construct from numefic value or string
+              if ischar(pl_time)
+                pl_timezone = find(pl, 'timezone');
+                pl_format   = find(pl, 'timeformat');
+                obj.utc_epoch_milli = time.parse(pl_time, pl_format, pl_timezone);
+              elseif isnumeric(pl_time)
+                obj.utc_epoch_milli = 1000*pl_time;
+              end
+
+            else
+              % if the plist is empty then return the default time object
+              if nparams(pl) == 0
+                % default time object
+              else
+                error('### Unknown TIME constructor method.');
+              end
+            end
+
+          else
+            error('### Unknown single argument constructor.');
+          end
+
+        case 2
+          % two input
+
+          if iscellstr(varargin)
+            % t1 = time('14:00:00', 'HH:MM:SS')
+            obj.utc_epoch_milli = time.parse(varargin{1}, varargin{2});
+            
+          elseif isnumeric(varargin{1}) && ischar(varargin{2})
+            % t1 = time(1234.5, 'HH:MM:SS')
+            % NOTE: this is kept for back compatibility only. the second argument is just ignored
+            warning('LTPDA:time', 'time(numeric, char) costructor is deprecated and will be soon removed');
+            obj = time(varargin{1});
+
+          elseif isa(varargin{1}, 'time') && ischar(varargin{2})
+            % t1 = time(1234.5, 'HH:MM:SS')
+            % NOTE: this is kept for back compatibility only. the second argument is just ignored
+            warning('LTPDA:time', 'time(time, char) costructor is deprecated and will be soon removed');
+            obj = time(varargin{1});
+            
+          elseif isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl') && isa(varargin{2}, 'history')
+            % t1 = time(dom-node, history-objects)
+            obj = fromDom(obj, varargin{1}, varargin{2});            
+            
+          else
+            error('### Unknown constructor with two inputs: %s %s.', class(varargin{1}), class(varargin{2}));
+          end
+
+        otherwise
+          error('### Unknown number of constructor arguments.');
+      end
+
+    end
+  end
+
+  % public methods
+  methods
+    varargout = copy(varargin)
+    varargout = format(varargin)
+    varargout = minus(varargin)
+    varargout = plus(varargin)
+    varargout = string(varargin)
+    varargout = double(varargin)
+    varargout = datenum(varargin)
+  end
+
+  % hidden methods
+  methods (Hidden = true)
+    varargout = attachToDom(varargin)
+  end
+
+  % private methods
+  methods (Access = private)
+  end
+  
+  % protected methods
+  methods (Access = protected)
+    varargout = fromStruct(varargin)
+    varargout = fromDom(varargin)
+  end
+
+  % static methods
+  methods (Static)
+
+    varargout = parse(varargin);
+    varargout = getdateform(varargin);
+    varargout = matfrmt2javafrmt(varargin);
+    varargout = strftime(varargin);
+    varargout = getTimezones(varargin)
+
+    function msec = now()
+      msec = java.util.Date().getTime();
+    end
+
+    function ii = getInfo(varargin)
+      ii = utils.helper.generic_getInfo(varargin{:}, 'time');
+    end
+
+    function out = VEROUT()
+      out = '$Id: time.m,v 1.90 2011/03/28 17:02:29 ingo Exp $';
+    end
+
+    function out = SETS()
+      out = {...
+        'Default', ...
+        'From Milliseconds', ...
+        'From Time' };
+    end
+
+    function out = getDefaultPlist(set)
+      switch lower(set)
+        case 'default'
+          out = plist();
+        case 'from milliseconds'
+          out = plist('milliseconds', 0);
+        case 'from time'
+          out = plist('time', '1970-01-01 00:00:00.000 UTC', 'timezone', '', 'timeformat', '');
+        otherwise
+          error('### Unknown set ''%s'' to get the default plist.', set);
+      end
+    end
+
+    function obj = initObjectWithSize(n,m)
+      obj = time.newarray([n m]);
+    end
+
+  end % end static methods
+
+  % static hidden methods
+  methods (Static = true, Hidden = true)
+    varargout = loadobj(varargin)
+    varargout = update_struct(varargin)
+  end
+
+end % end classdef
+