0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 1 % RETRIEVE retrieves a collection of objects from an LTPDA repository.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 3 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 4 % DESCRIPTION: This static method retrieves a collection of objects from an
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 5 % LTPDA repository.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 6 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 7 % CALL: objs = retrieve(conn, obj_id_1, obj_id_2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 8 % [o1,o2] = retrieve(conn, obj_id_1, obj_id_2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 9 % [o1,o2] = retrieve(conn, 'binary', obj_id_1, obj_id_2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 10 % objs = retrieve(conn, 'Collection', coll_id)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 11 % objs = retrieve(conn, 'binary', 'Collection', coll_id)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 12 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 13 % INPUTS:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 14 % conn - database connection object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 15 % obj_id_N - an object ID
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 16 % coll_id - a collection ID
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 17 % 'binary' - to retrieve a binary representation of the object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 18 % (if stored)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 19 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 20 % OUTPUTS:
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 21 % objs - the retrieved object(s) as a cell array.*
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 22 % o1,o2,...,oN - returns the first N objects
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 23 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 24 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 25 % If more than one object is retrieved and only one output is specified
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 26 % then the output is a cell array of objects.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 27 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 28 % If only a single object is requested, it is returned as an object,
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 29 % not packed in a cell array.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 30 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 31 % VERSION: $Id: retrieve.m,v 1.28 2011/07/01 14:38:57 ingo Exp $
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 32 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 33 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 34
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 35 function varargout = retrieve(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 36
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 37 % Check if this is a call for parameters
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 38 if utils.helper.isinfocall(varargin{:})
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 39 varargout{1} = getInfo(varargin{3});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 40 return
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 41 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 42
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 43 import utils.const.*
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 44 utils.helper.msg(msg.PROC3, 'running %s/%s', mfilename('class'), mfilename);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 45
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 46 if nargin == 0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 47 help(mfilename);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 48 error('### Incorrect inputs');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 49 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 50
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 51 objs = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 52 conn = varargin{1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 53 if ~isa(conn, 'mpipeline.repository.RepositoryConnection')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 54 error('### the first argument should be a mpipeline.repository.RepositoryConnection connection object.');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 55 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 56
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 57 % Unlock the connection only if the connection was not locked
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 58 unlockConnection = ~conn.isLocked();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 59
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 60 rm = LTPDARepositoryManager;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 61
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 62 try
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 63
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 64 if ~conn.isConnected
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 65 if isempty(conn.openConnection());
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 66 return
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 67 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 68 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 69
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 70 conn.setLocked(true);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 71
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 72 % reload connection table if we have a GUI
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 73 if ~isempty(rm.gui)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 74 rm.gui.reloadConnectionTable();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 75 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 76
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 77 % Get username and user id
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 78 username = char(conn.getUsername);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 79 userid = utils.jmysql.getUserID(conn, username);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 80
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 81 if ~isempty(userid)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 82 utils.helper.msg(msg.PROC1, 'got user id %d for user: %s', userid, username);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 83 if userid < 1 || isnan(userid) || strcmp(userid, 'No Data') || ischar(userid)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 84 error('### Unknown username.');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 85 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 86 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 87 error('### Could not determine user id. Can not proceed.');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 88 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 89
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 90 binary = false;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 91 if nargin >= 3 && ischar(varargin{2}) && strcmpi(varargin{2}, 'binary')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 92 %%% retrieve(conn, 'binary', obj_id_1, obj_id_2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 93 %%% retrieve(conn, 'binary', 'Collection', coll_id)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 94 binary = true;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 95 if nargin == 4 && ischar(varargin{3}) && strcmpi(varargin{3}, 'Collection') && isnumeric(varargin{4}) && numel(varargin{4}) == 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 96 cid = varargin{4};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 97 % Get a list of object IDs from the collection ID
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 98 ids = mpipeline.repository.MySQLUtils.getObjectIDsFromCollectionID(conn, cid);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 99 elseif nargin >= 3 && isnumeric([varargin{3:end}])
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 100 ids = [varargin{3:end}];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 101 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 102 help(mfilename)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 103 error('### Incorrect usage');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 104 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 105
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 106 elseif nargin == 3 && ischar(varargin{2}) && strcmpi(varargin{2}, 'Collection') && isnumeric(varargin{3}) && numel(varargin{3}) == 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 107 %%% retrieve(conn, 'Collection', coll_id)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 108 cid = varargin{3};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 109 % Get a list of object IDs from the collection ID
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 110 ids = mpipeline.repository.MySQLUtils.getObjectIDsFromCollectionID(conn, cid);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 111
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 112 elseif nargin >= 2 && isnumeric([varargin{2:end}])
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 113 %%% retrieve(conn, obj_id_1, obj_id_2)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 114 ids = [varargin{2:end}];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 115
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 116 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 117 help(mfilename)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 118 error('### Incorrect usage');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 119 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 120
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 121 utils.helper.msg(msg.PROC1, ['retrieving objects ' utils.xml.mat2str(ids)]);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 122
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 123 v = ver('LTPDA');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 124 for j=1:length(ids)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 125
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 126 % It is only possible to download the object if the object in the
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 127 % database was submitted with the same or lower LTPDA version as the
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 128 % current version.
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 129 q = sprintf('SELECT version FROM objmeta WHERE obj_id=%d', ids(j));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 130 try
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 131 vDb = utils.jmysql.dbquery(conn, q);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 132 catch ME
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 133 disp(ME);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 134 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 135 if utils.helper.ver2num(v.Version) < utils.helper.ver2num(vDb{1})
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 136 error('### The object with the ID %d was submitted with a higher LTPDA version than you use %s. Please update your LTPDA version.', ids(j), vDb{1});
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 137 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 138
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 139 % Get object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 140 if binary
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 141 % Retrieve the bytes
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 142 q = sprintf('select mat from bobjs where obj_id="%d"', ids(j));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 143 results = conn.query(q);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 144 while results.next
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 145 dd = results.getObject(1);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 146 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 147
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 148 if strcmp(dd, 'No Data') || isempty(dd)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 149 error('Failed to get binary data for object %d', ids(j));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 150 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 151 % Write bytes out to a temp MAT file
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 152 fname = [tempname '.mat'];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 153 fd = fopen(fname, 'w+');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 154 fwrite(fd, dd, 'int8');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 155 fclose(fd);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 156 % Load the MAT data to a structure
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 157 obj = load(fname);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 158 % Delete temp file
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 159 delete(fname);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 160 % Get the struct out
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 161 obj = obj.objs;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 162 % Get the object class
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 163 scl = char(mpipeline.repository.MySQLUtils.getObjectTypeForID(conn, ids(j)));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 164
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 165 % Check if the retrieved object is a struct
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 166 if isstruct(obj)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 167 % Call the constructor with this struct
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 168 fcn_name = [scl '.update_struct'];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 169 obj = feval(fcn_name, obj, obj.tbxver);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 170 obj = feval(scl, obj);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 171 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 172 % Add tyo object array
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 173 objs = [objs {obj}];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 174 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 175 xdoc = utils.jmysql.getXdoc(conn, ids(j));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 176 if ~isempty(xdoc)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 177 obj = utils.xml.xmlread(xdoc);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 178 if j==1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 179 objs = {obj};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 180 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 181 objs = [objs {obj}];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 182 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 183
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 184 % make transaction entry
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 185 t = time();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 186 tdate = t.format('yyyy-mm-dd HH:MM:SS');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 187 try
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 188 message = utils.jmysql.insert(conn, ...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 189 'transactions',...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 190 'obj_id', ids(j),...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 191 'user_id', userid,...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 192 'transdate', tdate,...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 193 'direction', 'out'...
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 194 );
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 195
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 196 utils.helper.msg(msg.PROC1, 'updated transactions table');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 197 catch
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 198 error('### Failed to make entry in transactions table');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 199 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 200 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 201 warning('!!! Error retrieving object: %d', ids(j));
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 202 end % End empty Xdoc
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 203 end % End binary
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 204 end % End id loop
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 205
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 206 catch ME
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 207 fprintf(2, [ME.message, '\n\n']);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 208 utils.helper.msg(msg.PROC1, '### Retrieve error.');
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 209 rethrow(ME)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 210 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 211
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 212 if unlockConnection
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 213 conn.setLocked(false);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 214 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 215
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 216 % reset Timer
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 217 LTPDARepositoryManager.resetTimer(rm.timerClearPass, conn);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 218 LTPDARepositoryManager.resetTimer(rm.timerDisconnect, conn);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 219
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 220 % Set outputs
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 221 if nargout == 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 222 if length(objs) == 1
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 223 varargout{1} = objs{1};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 224 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 225 varargout{1} = objs;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 226 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 227 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 228 for k=1:nargout
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 229 varargout{k} = objs{k};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 230 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 231 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 232 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 233
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 234 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 235 % Local Functions %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 236 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 237
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 238 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 239 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 240 function ii = getInfo(varargin)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 241 if nargin == 1 && strcmpi(varargin{1}, 'None')
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 242 sets = {};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 243 pl = [];
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 244 else
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 245 sets = {'Default'};
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 246 pl = getDefaultPlist;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 247 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 248 % Build info object
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 249 ii = minfo(mfilename, 'ltpda_uo', 'ltpda', utils.const.categories.internal, '$Id: retrieve.m,v 1.28 2011/07/01 14:38:57 ingo Exp $', sets, pl);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 250 ii.setModifier(false);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 251 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 252
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 253 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 254 %
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 255 function plout = getDefaultPlist()
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 256 persistent pl;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 257 if exist('pl', 'var')==0 || isempty(pl)
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 258 pl = buildplist();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 259 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 260 plout = pl;
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 261 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 262
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 263 function plo = buildplist()
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 264 plo = plist();
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 265
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 266 p = param({'conn', 'A database object'}, paramValue.EMPTY_DOUBLE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 267 plo.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 268
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 269 p = param({'ids', 'IDs which should be collected'}, paramValue.EMPTY_DOUBLE);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 270 plo.append(p);
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 271 end
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 272
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 273
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
+ − 274