Mercurial > hg > ltpda
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