0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
1 % Retrieve a ltpda_uo from a 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 % FUNCTION: fromRepository
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
5 %
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
6 % DESCRIPTION: Retrieve a ltpda_uo from a repository
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
7 %
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
8 % CALL: obj = fromRepository(pl)
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
9 %
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
10 % PARAMETER: pl: Parameter list object
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
11 %
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
12 % VERSION: $Id: fromRepository.m,v 1.4 2010/03/16 19:16:20 ingo Exp $
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
13 %
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
19
|
15 function [objs, plhout, ii] = fromRepository(obj, pl, ii)
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
16
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
17 VERSION = 'ltpda_uo: $Id: fromRepository.m,v 1.4 2010/03/16 19:16:20 ingo Exp $';
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
18
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
19 requested_class = class(obj);
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
20
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
21 % Set the method version string in the minfo object
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
22 ii.setMversion([VERSION '-->' ii.mversion]);
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
23
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
24 % Get parameters
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
25 ids = find(pl, 'id');
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
26 cids = find(pl, 'cid');
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
27 bin = find(pl, 'binary');
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
28
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
29 % Make sure that 'ids' or 'cids' are empty arrays if they are empty.
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
30 % It might be that the GUI return an empty string.
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
31 if isempty(ids)
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
32 ids = [];
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
33 end
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
34 if isempty(cids)
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
35 cids = [];
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
36 end
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
37
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
38 % Check if some ID is defined
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
39 if isempty(ids) && isempty(cids)
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
40 error('### Please define at least one object ID or connection ID');
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
41 end
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
42
|
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
43 % check if using binary download
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
44 bin = utils.prog.yes2true(bin);
|
19
|
45
|
|
46 % database connection
|
|
47 conn = LTPDADatabaseConnectionManager().connect(pl);
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
48
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
49 if ~isempty(cids)
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
50 for kk=1:numel(cids)
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
51 cid = cids(kk);
|
19
|
52 % get the ids from the cid
|
|
53 ids = [ids utils.repository.getCollectionIDs(conn, cid)];
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
54 end
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
55 end
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
56
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
57 % Get each ID
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
58 Nids = length(ids);
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
59 objs = [];
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
60 plhout = [];
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
61
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
62 for kk=1:Nids
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
63
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
64 %---- copy the input plist because each object should get an other plist
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
65 plh = copy(pl, 1);
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
66
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
67 %---- This id
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
68 id = ids(kk);
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
69 utils.helper.msg(utils.const.msg.OPROC2, 'retrieving ID %d', id);
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
70
|
19
|
71 try
|
|
72 %---- call database constructor
|
|
73 if bin
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
74 obj = ltpda_uo.retrieve(conn, 'binary', id);
|
19
|
75 else
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
76 obj = ltpda_uo.retrieve(conn, id);
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
77 end
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
78
|
19
|
79 if ~strcmp(class(obj), requested_class)
|
|
80 error('### You have used the constructor ''%s'' but the object with id=%d is of class ''%s''', requested_class, id, class(obj));
|
|
81 end
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
82
|
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
83 %---- Set connection parameters in the plist
|
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
84 utils.repository.adjustPlist(conn, plh);
|
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
85
|
19
|
86 %---- Set only the ID of the current object to the plist
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
87 plh.pset('id', id);
|
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
88
|
19
|
89 %---- Add history-plist to output array
|
|
90 plhout = [plhout plh];
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
91
|
19
|
92 %---- Add to output array
|
|
93 objs = [objs obj];
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
94
|
19
|
95 catch ex
|
|
96 % close connection if we own it
|
|
97 if isempty(find(pl, 'conn'))
|
|
98 conn.close();
|
|
99 end
|
|
100 throw(ex)
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
101 end
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
102
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
103 end
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
104
|
19
|
105 % close connection if we own it
|
|
106 if isempty(find(pl, 'conn'))
|
|
107 conn.close();
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
108 end
|
24
056f8e1e995e
Properly record history in fromRepository constructors
Daniele Nicolodi <nicolodi@science.unitn.it>
diff
changeset
|
109
|
0
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
110 end
|
Daniele Nicolodi <nicolodi@science.unitn.it>
parents:
diff
changeset
|
111
|