line source
% COLLECTION constructor for collection class.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% DESCRIPTION: COLLECTION constructor for collection class.
%
% CONSTRUCTOR:
%
% fb = collection() - creates an empty collection object
% fb = collection(objs) - construct from an array of objects
% fb = collection(pl) - create a collection object from a parameter list
%
% <a href="matlab:utils.helper.displayMethodInfo('collection', 'collection')">Parameters Description</a>
%
% VERSION: $Id: collection.m,v 1.29 2011/04/08 08:56:22 hewitson Exp $
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
classdef collection < ltpda_uoh
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Property definition %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%---------- Public (read/write) Properties ----------
properties
objs = {}; % objects in collection
end
%---------- Protected read-only Properties ----------
properties (SetAccess = protected)
end
%---------- Private Properties ----------
properties (GetAccess = protected, SetAccess = protected)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Check property setting %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
methods
function set.objs(obj, val)
if ~iscell(val)
error('### The value for the property ''objs'' must be a cell object');
end
obj.objs = reshape(val, 1, []);
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Constructor %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
methods
function obj = collection(varargin)
import utils.const.*
utils.helper.msg(msg.OMNAME, 'running %s/%s', mfilename('class'), mfilename);
% Collect all collection objects
[colls, invars, rest] = utils.helper.collect_objects(varargin(:), 'collection');
if (isempty(rest) || ...
((numel(rest) == 1) && ...
(isa(rest{1}, 'plist')) && ...
(nparams(rest{1}) == 0)) ) && ~isempty(colls)
% Do copy constructor and return
utils.helper.msg(msg.OPROC1, 'copy constructor');
obj = copy(colls, 1);
for kk=1:numel(obj)
obj(kk).addHistory(collection.getInfo('collection', 'None'), [], [], obj(kk).hist);
end
return
end
switch nargin
case 0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% no input %%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
utils.helper.msg(msg.OPROC1, 'empty constructor');
obj.addHistory(collection.getInfo('collection', 'None'), plist(), [], []);
case 1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% one input %%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if ischar(varargin{1})
%%%%%%%%%% pzm = collection('foo.mat') %%%%%%%%%%
%%%%%%%%%% pzm = collection('foo.xml') %%%%%%%%%%
utils.helper.msg(msg.OPROC1, 'constructing from file %s', varargin{1});
obj = fromFile(obj, varargin{1});
elseif isstruct(varargin{1})
%%%%%%%%%% r = collection(struct) %%%%%%%%%%
utils.helper.msg(msg.OPROC1, 'constructing from struct');
obj = fromStruct(obj, varargin{1});
elseif isa(varargin{1}, 'ltpda_uoh')
%%%%%%%%%% f = collection(a1) %%%%%%%%%%
obj = obj.fromInput(plist('objs', varargin));
elseif isa(varargin{1}, 'plist')
%%%%%%%%%% r = collection(plist) %%%%%%%%%%
pl = varargin{1};
if numel(pl) > 1
% The input is a vector of PLISTS
obj = obj.fromInput(plist('objs', num2cell(reshape(pl, 1, []))));
else
if pl.isparam('filename')
utils.helper.msg(msg.PROC2, 'constructing from file %s', pl.find('filename'));
obj = obj.fromFile(pl);
elseif pl.isparam('hostname') || pl.isparam('conn')
utils.helper.msg(msg.PROC2, 'constructing from repository %s', pl.find('hostname'));
obj = obj.fromRepository(pl);
elseif pl.isparam('objs')
obj = obj.fromInput(pl);
elseif pl.isparam('plist')
obj = collection(pl.find('plist'));
elseif pl.isparam('built-in')
utils.helper.msg(msg.OPROC1, 'constructing from built-in model');
obj = fromModel(obj, pl);
else
if pl.shouldIgnore()
% The PLIST is not a configuration PLIST
obj = obj.fromInput(plist('objs', {pl}));
else
obj.setProperties(pl);
obj.addHistory(collection.getInfo('collection', 'None'), pl, [], []);
end
end
end
else
error('### Unknown single argument constructor.');
end
case 2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% two inputs %%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if isa(varargin{1}, 'ltpda_uo') && isa(varargin{2}, 'ltpda_uo')
%%%%%%%%%% f = collection(a1, a2) %%%%%%%%%%
inObjs = [num2cell(reshape(varargin{1}, 1, [])), num2cell(reshape(varargin{2}, 1, []))];
obj = obj.fromInput(plist('objs', inObjs));
elseif (isa(varargin{1}, 'database') || isa(varargin{1}, 'mpipeline.repository.RepositoryConnection')) && isnumeric(varargin{2})
%%%%%%%%%% f = collection(<database-object>, [IDs]) %%%%%%%%%%
utils.helper.msg(msg.OPROC1, 'retrieve from repository');
obj = obj.fromRepository(plist('conn', varargin{1}, 'id', varargin{2}));
elseif isa(varargin{1}, 'ltpda_uo') && isa(varargin{2}, 'plist') && isempty(varargin{2}.params)
%%%%%%%%%% f = collection(collection-object, <empty plist>) %%%%%%%%%%
obj = collection(varargin{1});
elseif isa(varargin{1}, 'org.apache.xerces.dom.DeferredElementImpl') && ...
isa(varargin{2}, 'history')
%%%%%%%%%% obj = collection(DOM node, history-objects) %%%%%%%%%%
obj = fromDom(obj, varargin{1}, varargin{2});
elseif isa(varargin{1}, 'ltpda_uoh') && isa(varargin{2}, 'plist')
%%%%%%%%%%% collection(<ltpda_uoh>-object, plist-object) %%%%%%%%%%
% always recreate from plist
% If we are trying to load from file, and the file exists, do
% that. Otherwise, copy the input object.
if varargin{2}.isparam('filename')
if exist(fullfile('.', find(varargin{2}, 'filename')), 'file')==2
obj = collection(varargin{2});
else
obj = collection(varargin{1});
end
else
obj = collection(varargin{2});
end
else
error('### Unknown 2 argument constructor.');
end
otherwise
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% any input %%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
obj = obj.fromInput(plist('objs', varargin));
end
end % End constructor
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Methods (static) %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
methods (Static)
function mdls = getBuiltInModels(varargin)
mdls = ltpda_uo.getBuiltInModels('collection');
end
function out = VEROUT()
out = '$Id: collection.m,v 1.29 2011/04/08 08:56:22 hewitson Exp $';
end
function ii = getInfo(varargin)
ii = utils.helper.generic_getInfo(varargin{:}, 'collection');
end
function out = SETS()
out = [SETS@ltpda_uoh, {'From Input'}];
end
function plout = getDefaultPlist(set)
persistent pl;
persistent lastset;
if exist('pl', 'var')==0 || isempty(pl) || ~strcmp(lastset, set)
pl = collection.buildplist(set);
lastset = set;
end
plout = pl;
end
function out = buildplist(set)
if ~utils.helper.ismember(lower(collection.SETS), lower(set))
error('### Unknown set [%s]', set);
end
out = plist();
out = collection.addGlobalKeys(out);
out = buildplist@ltpda_uoh(out, set);
switch lower(set)
case 'from input'
p = param({'objs', 'Objects of the collection.<br>Please use a cell array if the objects are not from the same type.'}, paramValue.EMPTY_DOUBLE);
out.append(p);
end
end % function out = getDefaultPlist(varargin)
function obj = initObjectWithSize(n,m)
obj = collection.newarray([n m]);
end
varargout = identifyInsideObjs(varargin)
end % End static methods
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Methods (static, private) %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
methods (Static, Access=private)
end % End static, private methods
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Methods (static, hidden) %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
methods (Static = true, Hidden = true)
varargout = loadobj(varargin)
varargout = update_struct(varargin);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Methods (public) %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
methods
varargout = char(varargin)
varargout = display(varargin)
varargout = copy(varargin)
varargout = setObjs(varargin)
varargout = setObjectAtIndex(varargin)
varargout = getObjectAtIndex(varargin)
varargout = removeObjectAtIndex(varargin)
varargout = getObjectsOfClass(varargin)
end
methods (Hidden = true)
varargout = attachToDom(varargin)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Methods (protected) %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
methods (Access = protected)
varargout = fromRepository(varargin)
varargout = fromInput(varargin)
varargout = fromStruct(varargin)
varargout = fromDom(varargin)
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Methods (private) %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
methods (Access = private)
end
end % End classdef