Mercurial > hg > ltpda
diff m-toolbox/classes/@LTPDARepositoryManager/getSinfo.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/@LTPDARepositoryManager/getSinfo.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,146 @@ +% GETSINFO gets the submission information of an object in the repository. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DESCRIPTION: GETSINFO gets the submission information of an object in the +% repository. +% +% CALL: sinfo = LTPDARepositoryManager.getSinfo(pl); +% sinfo = LTPDARepositoryManager.getSinfo(ids); +% sinfo = LTPDARepositoryManager.getSinfo(ids, 'hostname'); +% sinfo = LTPDARepositoryManager.getSinfo(ids, 'hostname', 'database'); +% sinfo = LTPDARepositoryManager.getSinfo(ids, 'hostname', 'database', 'username'); +% +% If all required connection fields are input, the connection will be +% silently created and added to the manager. Otherwise, a connection dialog +% will be presented and the resulting connection added to the manager. +% +% <a href="matlab:web(LTPDARepositoryManager.getInfo('LTPDARepositoryManager.getSinfo').tohtml, '-helpbrowser')">Parameters Description</a> +% +% VERSION: $Id: getSinfo.m,v 1.4 2011/04/08 08:56:35 hewitson Exp $ +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function varargout = getSinfo(varargin) + + % Check if this is a call for parameters + if utils.helper.isinfocall(varargin{:}) + varargout{1} = getInfo(varargin{3}); + return + end + + import utils.const.* + utils.helper.msg(msg.PROC3, 'running %s/%s', mfilename('class'), mfilename); + + % Collect all plists + [pl, invars, rest] = utils.helper.collect_objects(varargin(:), 'plist'); + + pl = combine(pl, getDefaultPlist); + ids = pl.find('ids'); + hostname = pl.find('hostname'); + database = pl.find('database'); + username = pl.find('username'); + + % Check through 'rest' + if numel(rest) > 0 + ids = rest{1}; + end + if numel(rest) > 1 + hostname = rest{2}; + end + if numel(rest) > 2 + database = rest{3}; + end + if numel(rest) > 3 + username = rest{4}; + end + + % Some plausibility checks + if isempty(ids) + error('### This method needs at least one object id.'); + end + if nargout == 0 + error('### This method can not be used as a modifier method. Please give one output'); + end + + % Get complete experiment information for each input id + sinfo = []; + for ii=1:length(ids) + query = ['select name,experiment_title,experiment_desc,analysis_desc,quantity, '... + 'additional_authors,additional_comments,keywords,reference_ids FROM objmeta ' ... + sprintf('where objmeta.obj_id=%d',ids(ii))]; + + infoall = LTPDARepositoryManager.executeQuery(query, hostname, database, username); + if ~isempty(infoall) + s.name = infoall{1}; + s.experiment_title = infoall{2}; + s.experiment_description = infoall{3}; + s.analysis_description = infoall{4}; + s.quantity = infoall{5}; + s.additional_authors = infoall{6}; + s.additional_comments = infoall{7}; + s.keywords = infoall{8}; + s.reference_ids = infoall{9}; + sinfo = [sinfo s]; + else + warning('!!! Doesn''t find any submission information for the object id %d', ids(ii)); + end + end + + % Set output + varargout{1} = sinfo; + +end + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Local Functions % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% FUNCTION: getInfo +% +% DESCRIPTION: Returns the method-info object +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function ii = getInfo(varargin) + if nargin == 1 && strcmpi(varargin{1}, 'None') + sets = {}; + pl = []; + else + sets = {'Default'}; + pl = getDefaultPlist; + end + % Build info object + ii = minfo(mfilename, 'LTPDARepositoryManager', 'ltpda', utils.const.categories.helper, '$Id: getSinfo.m,v 1.4 2011/04/08 08:56:35 hewitson Exp $', sets, pl); +end + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% FUNCTION: getDefaultPlist +% +% DESCRIPTION: Returns the default PLIST +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function pl = getDefaultPlist() + + % Initialise plist + pl = plist(); + + % ids + p = param({'ids', 'Object identifications of which you need the submission information.'}, paramValue.EMPTY_DOUBLE); + pl.append(p); + + % hostname + p = param({'hostname', 'The hostname of the repository to connect to.'}, paramValue.EMPTY_STRING); + pl.append(p); + + % database + p = param({'database', 'The database on the repository.'}, paramValue.EMPTY_STRING); + pl.append(p); + + % username + p = param({'username', 'The username to connect with.'}, paramValue.EMPTY_STRING); + pl.append(p); + +end +