diff m-toolbox/classes/@history/history.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/@history/history.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,311 @@
+% HISTORY History object class constructor.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% DESCRIPTION: HISTORY History object class constructor.
+%              Create a history object.
+%
+% SUPERCLASSES: ltpda_nuo < ltpda_obj
+%
+% CONSTRUCTORS:
+%
+%              h = history()
+%              h = history(proctime, minfo, plist)
+%              h = history(proctime, minfo, plist, in_names, oldUUID, in_hists)
+%
+%              h = history(filename)
+%              h = history(structure)
+%              h = history(history-object)
+%              h = history('database', ...)
+%
+% INPUTS:      minfo:    Minfo-object which is created in the called method.
+%              plist:    Plist-object which is used in the called method.
+%              in_names: Variable names which are used for the called method.
+%              in_hist:  Older history-objects
+%
+% VERSION:     $Id: history.m,v 1.72 2011/03/28 17:02:27 ingo Exp $
+%
+% SEE ALSO:    ltpda_obj, ltpda_nuo, minfo, plist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+classdef (Sealed = true, Hidden = true) history < ltpda_nuo
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                            Property definition                            %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  %---------- Public (read/write) Properties  ----------
+  properties
+  end
+  
+  %---------- Protected read-only Properties ----------
+  properties (SetAccess = protected)
+    methodInfo   = []; % minfo-object which is created in the called method
+    plistUsed    = []; % plist-object which is used in the called method
+    methodInvars = {}; % variable names which are used for the called method
+    inhists      = []; % the older history-objects
+    proctime     = []; % creation time of the history object
+    UUID         = []; % UUID of the object that was changed
+    objectClass  = ''; % The class of the object the history was attached to
+    creator      = provenance();
+  end
+  
+  %---------- Private Properties ----------
+  properties (GetAccess = public, SetAccess = private)
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                          Check property setting                           %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods
+    function set.methodInfo(obj, val)
+      if ~(isa(val, 'minfo') || isempty(val))
+        error('### The value for the property ''methodInfo''\n### must be a minfo-object or empty but\n### it is from the class %s', class(val));
+      end
+      obj.methodInfo = val;
+    end
+    function set.plistUsed(obj, val)
+      if ~(isa(val, 'plist') || isempty(val))
+        error('### The value for the property ''plistUsed''\n### must be a plist-object or empty but\n### it is from the class %s', class(val));
+      end
+      obj.plistUsed = val;
+    end
+    function set.methodInvars(obj, val)
+      if ~iscell(val)
+        error('### The value for the property ''methodInvars''\n### must be a cell-array but\n### it is from the class %s', class(val));
+      end
+      obj.methodInvars = val;
+    end
+    function set.inhists(obj, val)
+      if ~(isa(val, 'history') || isempty(val) || ischar(val))
+        error('### The value for the property ''inhists''\n### must be a history-object or empty but\n### it is from the class %s', class(val));
+      end
+      obj.inhists = val;
+    end
+    
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                                Constructor                                %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods
+    
+    function obj = history(varargin)
+      
+      switch nargin
+        case 0
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%   no input   %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          
+          % Do nothing
+          
+        case 1
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%   one input   %%%%%%%%%%%%%%%%%%%%%%%%%%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          
+          %%%%%%%%%%% From File %%%%%%%%%%%%%%%%
+          if ischar(varargin{1})
+            
+            filename = varargin{1};
+            [path, name, ext] = fileparts(filename);
+            switch ext
+              case '.mat'
+                obj = load(filename);
+                obj = obj.a;
+              case '.xml'
+                root_node = xmlread(filename);
+                obj = utils.xml.xmlread(root_node, 'history');
+              otherwise
+                error('### Unknown file type.');
+            end
+            
+            %%%%%%%%%%  h = history(struct)   %%%%%%%%%%
+          elseif isstruct(varargin{1})
+            obj = fromStruct(obj, varargin{1});
+            
+            %%%%%%%%%%  h = history(history)   %%%%%%%%%%
+          elseif isa(varargin{1}, 'history')
+            obj = copy(varargin{1}, 1);
+            
+            %%%%%%%%%%  h = history(plist)   %%%%%%%%%%
+          elseif isa(varargin{1}, 'plist')
+            %%% is the plist is empty then return an empty history object
+            if nparams(varargin{1}) == 0
+              obj.plistUsed = varargin{1};
+            else
+              error('### Unknown history constructor method.');
+            end
+            
+          else
+            error('### Unknown history constructor method.');
+          end
+          
+        case 2
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%   two input   %%%%%%%%%%%%%%%%%%%%%%%%%%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          
+          if  isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl') && ...
+              isa(varargin{2}, 'history')
+            %%%%%%%%%%   obj = history(DOM node, history-objects)   %%%%%%%%%%
+            obj = fromDom(obj, varargin{1}, varargin{2});
+            
+          else
+            error('### Unknown constructor method for two inputs.');
+          end
+          
+        case 3
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%   three inputs   %%%%%%%%%%%%%%%%%%%%%%%%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          
+          %%%%%%%%%%  h = history(proctime, minfo, plist)  %%%%
+          %%% Use default values
+          if ~isempty(varargin{1})
+            obj.proctime = varargin{1};
+          end
+          if ~isempty(varargin{2})
+            obj.methodInfo   = varargin{2};
+          end
+          if ~isempty(varargin{3})
+            obj.plistUsed    = varargin{3};
+          end
+          
+        case 6
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%   five  inputs   %%%%%%%%%%%%%%%%%%%%%%%%%
+          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+          
+          %%%%%%%%%%  h = history(proctime, minfo, plist, in_names, oldUUID, in_hists)  %%%%
+          
+          %%% Use default values
+          if ~isempty(varargin{1})
+            obj.proctime = varargin{1};
+          end
+          if ~isempty(varargin{2})
+            obj.methodInfo   = varargin{2};
+          end
+          if isempty(varargin{3})
+            obj.plistUsed    = plist();
+          else
+            obj.plistUsed    = varargin{3};
+          end
+          
+          if ~isempty(varargin{4})
+            obj.methodInvars = varargin{4};
+          end
+          if ~isempty(varargin{5})
+            % Don't store the 'old' UUID inside the history object because we
+            % use the UUID of the history object for creating the history
+            % tree. For this it is necessary that the history have its own
+            % independent UUID.
+            %
+            obj.UUID = varargin{5};
+          end
+          if ~isempty(varargin{6})
+            obj.inhists      = varargin{6};
+          end
+          
+        otherwise
+          error('### Unknown number of constructor arguments.');
+      end
+      
+    end
+    
+  end
+  
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                              Methods (public)                             %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods
+    %%% Define Abstract methods
+    varargout = char(varargin)
+    varargout = copy(varargin)
+    varargout = display(varargin)
+    
+    varargout = getNodes(varargin)
+    varargout = hist2dot(varargin)
+    varargout = hist2m(varargin)
+    varargout = plot(varargin)
+    varargout = string(varargin)
+  end
+  
+  methods (Hidden = true)
+    varargout = attachToDom(varargin)
+    varargout = getObjectClass(varargin);
+    varargout = setObjectClass(varargin);
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                              Methods (protected)                          %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods (Access = protected)
+    varargout = fromStruct(varargin)
+    varargout = fromDom(varargin)
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                               Methods (private)                           %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods (Access = private)
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                          Methods (Static, Public)                         %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods (Static = true)
+    
+    function out = VEROUT()
+      out = '$Id: history.m,v 1.72 2011/03/28 17:02:27 ingo Exp $';
+    end
+    
+    function ii = getInfo(varargin)
+      ii = utils.helper.generic_getInfo(varargin{:}, 'history');
+    end
+    
+    function out = SETS()
+      out = {'Default'};
+    end
+    
+    function out = getDefaultPlist(set)
+      switch lower(set)
+        case 'default'
+          out = plist();
+          
+        otherwise
+          error('### Unknown set [%s]', set);
+      end
+    end
+    
+    function obj = initObjectWithSize(n,m)
+      obj = history.newarray([n m]);
+    end
+    
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                          Methods (Static, Private)                        %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods (Static = true, Access = private)
+  end
+  
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  %                         Methods (static, hidden)                          %
+  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+  methods (Static = true, Hidden = true)
+    varargout = loadobj(varargin)
+    varargout = update_struct(varargin);
+  end
+  
+end