line source
+ − % COPYOBJECTS This function copies objects from one repository to another.
+ − %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ − %
+ − % description: This static function copies objects from one repository to another.
+ − %
+ − % call: LTPDARepositoryManager.copyObjects(pl);
+ − % LTPDARepositoryManager.copyObjects([1 2 3],
+ − % 'hostname1',
+ − % 'database1',
+ − % 'username1',
+ − % 'hostname2',
+ − % 'database2',
+ − % 'username2');
+ − %
+ − % <a href="matlab:web(LTPDARepositoryManager.getInfo('LTPDARepositoryManager.copyObjects').tohtml, '-helpbrowser')">Parameters Description</a>
+ − %
+ − % version: $Id: copyObjects.m,v 1.5 2011/04/08 08:56:35 hewitson Exp $
+ − %
+ − %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ −
+ − function varargout = copyObjects(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');
+ − hostname1 = pl.find('hostname1');
+ − database1 = pl.find('database1');
+ − username1 = pl.find('username1');
+ − hostname2 = pl.find('hostname2');
+ − database2 = pl.find('database2');
+ − username2 = pl.find('username2');
+ −
+ − % Check through 'rest'
+ − if numel(rest) > 0
+ − ids = rest{1};
+ − end
+ − if numel(rest) > 1
+ − hostname1 = rest{2};
+ − end
+ − if numel(rest) > 2
+ − database1 = rest{3};
+ − end
+ − if numel(rest) > 3
+ − username1 = rest{4};
+ − end
+ − if numel(rest) > 4
+ − hostname2 = rest{5};
+ − end
+ − if numel(rest) > 5
+ − database2 = rest{6};
+ − end
+ − if numel(rest) > 6
+ − username2 = rest{7};
+ − end
+ −
+ − % Some plausibility checks
+ − if isempty(ids)
+ − error('### This method needs at least one object id which you want to copy.');
+ − end
+ −
+ − % Get the repository manager - there should only be one!
+ − rm = LTPDARepositoryManager();
+ −
+ − % Get connection
+ − conn1 = rm.findConnections(hostname1, database1, username1);
+ − if numel(conn1) == 0
+ − conn1 = rm.newConnection(hostname1, database1, username1);
+ − elseif numel(conn1) > 1
+ − conn1 = rm.manager.selectConnection([]);
+ − end
+ −
+ − if isempty(conn1)
+ − error('### It is necessary to create or select a connection.');
+ − end
+ −
+ − % open connection
+ − conn1.openConnection();
+ − if ~conn1.isConnected()
+ − error('### Can not open the connection.');
+ − end
+ −
+ − try
+ −
+ − objs = ltpda_uo.retrieve(conn1, ids);
+ − if ~iscell(objs)
+ − objs = {objs};
+ − end
+ − sinfo = LTPDARepositoryManager.getSinfo(ids, ...
+ − char(conn1.getHostname), char(conn1.getDatabase), char(conn1.getUsername));
+ −
+ − pl = plist('hostname', hostname2, 'database', database2, 'username', username2, 'no dialog', true);
+ − for oo = 1:numel(objs)
+ − obj = objs{oo};
+ − obj.submit(sinfo(oo), pl);
+ − end
+ − catch Exception
+ − disp(Exception.message);
+ − error('### Copying failed.');
+ − end
+ −
+ − 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: copyObjects.m,v 1.5 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 want to copy.'}, paramValue.EMPTY_DOUBLE);
+ − pl.append(p);
+ −
+ − % hostname1
+ − p = param({'hostname1', 'The hostname of the ''old'' repository.'}, paramValue.EMPTY_STRING);
+ − pl.append(p);
+ −
+ − % database1
+ − p = param({'database1', 'The database of the ''old'' repository.'}, paramValue.EMPTY_STRING);
+ − pl.append(p);
+ −
+ − % username1
+ − p = param({'username1', 'The username for the ''old'' repository.'}, paramValue.EMPTY_STRING);
+ − pl.append(p);
+ −
+ − % hostname2
+ − p = param({'hostname2', 'The hostname of the ''new'' repository.'}, paramValue.EMPTY_STRING);
+ − pl.append(p);
+ −
+ − % database2
+ − p = param({'database2', 'The database of the ''new'' repository.'}, paramValue.EMPTY_STRING);
+ − pl.append(p);
+ −
+ − % username2
+ − p = param({'username2', 'The username for the ''new'' repository.'}, paramValue.EMPTY_STRING);
+ − pl.append(p);
+ −
+ − end