1
|
package eu.dnetlib.data.claims.handler;
|
2
|
|
3
|
import eu.dnetlib.data.claims.utils.JsonldBuilder;
|
4
|
import eu.dnetlib.data.claims.entity.*;
|
5
|
import eu.dnetlib.data.claims.utils.ClaimUtils;
|
6
|
import eu.dnetlib.data.claims.utils.QueryGenerator;
|
7
|
import eu.dnetlib.data.claims.sql.SQLStoreException;
|
8
|
import eu.dnetlib.data.claims.sql.SqlDAO;
|
9
|
import org.apache.log4j.Logger;
|
10
|
|
11
|
import java.sql.ResultSet;
|
12
|
import java.sql.SQLException;
|
13
|
import java.text.DateFormat;
|
14
|
import java.text.SimpleDateFormat;
|
15
|
import java.util.ArrayList;
|
16
|
import java.util.Date;
|
17
|
import java.util.List;
|
18
|
|
19
|
/**
|
20
|
* Created by argirok on 9/3/2016.
|
21
|
*/
|
22
|
public class FetchClaimHandler {
|
23
|
private Logger log = Logger.getLogger(this.getClass());
|
24
|
|
25
|
SqlDAO sqlDAO = null;
|
26
|
QueryGenerator queryGenerator = null;
|
27
|
|
28
|
public FetchClaimHandler(){
|
29
|
// ApplicationContext context = new ClassPathXmlApplicationContext("../claims/migration/springContext-claims.xml");
|
30
|
// sqlDAO = context.getBean(SqlDAO.class);
|
31
|
|
32
|
}
|
33
|
|
34
|
public String claims2JSON(List<Claim> claims) throws Exception {
|
35
|
return JsonldBuilder.toJsonld(claims);
|
36
|
}
|
37
|
public String claim2JSON(Claim claim) throws Exception {
|
38
|
return JsonldBuilder.toJsonld(claim);
|
39
|
}
|
40
|
|
41
|
/**
|
42
|
*
|
43
|
* @param user - user e-mail stored in claims DB
|
44
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
45
|
* @param offset returns claims after 'offset' position (null for no offset)
|
46
|
* @return
|
47
|
* @throws Exception
|
48
|
*/
|
49
|
public List<Claim> fetchClaimsByUser(String user, Integer limit, Integer offset, List<String> types, boolean addCurationInfo) throws Exception, SQLStoreException {
|
50
|
return fetchClaimsByUser(user,limit,offset,null,"claim.claim_date",true, types, addCurationInfo);
|
51
|
}
|
52
|
/**
|
53
|
*
|
54
|
* @param user - user e-mail stored in claims DB
|
55
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
56
|
* @param offset returns claims after 'offset' position (null for no offset)
|
57
|
* @param keyword filters in specific fields per type (result: {title,doi},project: {name.acronym. funder_name, funder_acronym}, context: {name})
|
58
|
* @param orderField
|
59
|
* @param descending
|
60
|
* @return
|
61
|
* @throws Exception
|
62
|
*/
|
63
|
public List<Claim> fetchClaimsByUser(String user, Integer limit, Integer offset,String keyword,String orderField,boolean descending, List<String> types, boolean addCurationInfo) throws Exception, SQLStoreException {
|
64
|
log.info("Fetching claims for user"+user);
|
65
|
ArrayList<Object> params = new ArrayList<>();
|
66
|
String query = queryGenerator.generateFetchClaimsByUser(user, limit, offset,keyword,orderField,descending, types, params);
|
67
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
68
|
return fetchClaimsByResultSet(rs, addCurationInfo);
|
69
|
}
|
70
|
/**
|
71
|
*
|
72
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
73
|
* @param offset returns claims after 'offset' position (null for no offset)
|
74
|
* @return
|
75
|
* @throws Exception
|
76
|
*/
|
77
|
public List<Claim> fetchAllClaims( Integer limit, Integer offset, boolean addCurationInfo) throws Exception, SQLStoreException {
|
78
|
log.info("Fetching all claims");
|
79
|
return fetchAllClaims(limit,offset,null,"claim.claim_date",true,new ArrayList<String>(), addCurationInfo);
|
80
|
}
|
81
|
|
82
|
/**
|
83
|
*
|
84
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
85
|
* @param offset returns claims after 'offset' position (null for no offset)
|
86
|
* @param keyword filters in specific fields per type (result: {title,doi},project: {name.acronym. funder_name, funder_acronym}, context: {name})
|
87
|
* @param orderField
|
88
|
* @param descending
|
89
|
* @return
|
90
|
* @throws Exception
|
91
|
*/
|
92
|
public List<Claim> fetchAllClaims( Integer limit, Integer offset, String keyword, String orderField, boolean descending, List<String> types, boolean addCurationInfo) throws Exception, SQLStoreException {
|
93
|
log.info("Fetching all claims");
|
94
|
ArrayList<Object> params = new ArrayList<>();
|
95
|
String query = queryGenerator.generateFetchClaims(limit, offset,keyword,orderField,descending,types, params);
|
96
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
97
|
return fetchClaimsByResultSet(rs, addCurationInfo);
|
98
|
}
|
99
|
|
100
|
/**
|
101
|
*
|
102
|
* @param dateFrom
|
103
|
* @param dataTo
|
104
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
105
|
* @param offset returns claims after 'offset' position (null for no offset)
|
106
|
* @return
|
107
|
* @throws Exception
|
108
|
*/
|
109
|
public List<Claim> fetchClaimsByDate(String dateFrom, String dataTo, Integer limit, Integer offset, boolean addCurationInfo) throws Exception, SQLStoreException {
|
110
|
return fetchClaimsByDate(dateFrom, dataTo, limit, offset, null, "claim.claim_date",true, new ArrayList<String>(),addCurationInfo);
|
111
|
}
|
112
|
/**
|
113
|
*
|
114
|
* @param dateFrom
|
115
|
* @param dataTo
|
116
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
117
|
* @param offset returns claims after 'offset' position (null for no offset)
|
118
|
* @return
|
119
|
* @throws Exception
|
120
|
*/
|
121
|
public List<Claim> fetchClaimsByDate(String dateFrom, String dataTo, Integer limit, Integer offset, String keyword, String orderField, boolean descending, List<String> types, boolean addCurationInfo) throws Exception, SQLStoreException {
|
122
|
ArrayList<Object> params = new ArrayList<>();
|
123
|
String query = queryGenerator.generateFetchClaimsByDate(dateFrom, dataTo, limit, offset,keyword, orderField, descending,types, params);
|
124
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
125
|
return fetchClaimsByResultSet(rs, addCurationInfo);
|
126
|
}
|
127
|
|
128
|
public List<Claim> fetchClaimsByDateForDashboards(String dateFrom, String dataTo, Integer limit, Integer offset, boolean addCurationInfo, ArrayList<String> dashboards) throws Exception, SQLStoreException {
|
129
|
ArrayList<Object> params = new ArrayList<>();
|
130
|
String query = queryGenerator.generateFetchClaimsByDateForDashboards(dateFrom, dataTo, limit, offset,null, "claim.claim_date", true,new ArrayList<String>(), params, dashboards);
|
131
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
132
|
return fetchClaimsByResultSet(rs, addCurationInfo);
|
133
|
}
|
134
|
/**
|
135
|
*
|
136
|
* @param dateFrom
|
137
|
* @param dataTo
|
138
|
* @param openaireId for project
|
139
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
140
|
* @param offset returns claims after 'offset' position (null for no offset)
|
141
|
* @return
|
142
|
* @throws Exception
|
143
|
*/
|
144
|
public int fetchNumberOfClaimsByDateAndOpenaireId(String dateFrom, String dataTo, String openaireId, Integer limit, Integer offset, String keyword, String orderField, boolean descending, List<String> types, boolean addCurationInfo) throws Exception, SQLStoreException {
|
145
|
ArrayList<Object> params = new ArrayList<>();
|
146
|
String query = queryGenerator.generateFetchNumberOfClaimsByDateAndOpenaireId(dateFrom, dataTo, openaireId, limit, offset,keyword, orderField, descending,types, params);
|
147
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
148
|
return countClaimsByResultSet(rs);
|
149
|
}
|
150
|
|
151
|
/**
|
152
|
*
|
153
|
* @param openaireId for project
|
154
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
155
|
* @param offset returns claims after 'offset' position (null for no offset)
|
156
|
* @return
|
157
|
* @throws Exception
|
158
|
*/
|
159
|
public List<Claim> fetchClaimsByProject(String openaireId, Integer limit, Integer offset, boolean addCurationInfo) throws Exception, SQLStoreException {
|
160
|
|
161
|
return fetchClaimsByProject(openaireId,limit, offset, null, "claim.claim_date",true, new ArrayList<String>(), addCurationInfo);
|
162
|
}
|
163
|
/**
|
164
|
*
|
165
|
* @param openaireId for project
|
166
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
167
|
* @param offset returns claims after 'offset' position (null for no offset)
|
168
|
* @param orderField
|
169
|
* @param descending
|
170
|
* @return
|
171
|
* @throws Exception
|
172
|
*/
|
173
|
public List<Claim> fetchClaimsByProject(String openaireId, Integer limit, Integer offset, String keyword, String orderField, boolean descending, List<String> types, boolean addCurationInfo) throws Exception, SQLStoreException {
|
174
|
log.info("Fetching claims by project ID:"+openaireId);
|
175
|
ArrayList<Object> params = new ArrayList<>();
|
176
|
String query = queryGenerator.generateFetchClaimsByProject(openaireId, limit, offset, keyword, orderField,descending,types, params);
|
177
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
178
|
return fetchClaimsByResultSet(rs, addCurationInfo);
|
179
|
}
|
180
|
/**
|
181
|
*
|
182
|
* @param openaireId of Funder
|
183
|
* @param limit
|
184
|
* @param offset
|
185
|
* @return
|
186
|
* @throws Exception
|
187
|
*/
|
188
|
public List<Claim> fetchClaimsByFunder(String openaireId, Integer limit, Integer offset, boolean addCurationInfo) throws Exception, SQLStoreException {
|
189
|
return fetchClaimsByFunder(openaireId,limit,offset,null,"claim.claim_date",true, new ArrayList<String>(), addCurationInfo);
|
190
|
}
|
191
|
/**
|
192
|
*
|
193
|
* @param openaireId of Funder
|
194
|
* @param limit
|
195
|
* @param offset
|
196
|
* @param orderField
|
197
|
* @param descending
|
198
|
* @return
|
199
|
* @throws Exception
|
200
|
*/
|
201
|
public List<Claim> fetchClaimsByFunder(String openaireId, Integer limit, Integer offset,String keyword, String orderField, boolean descending, List<String> types, boolean addCurationInfo) throws Exception, SQLStoreException {
|
202
|
ArrayList<Object> params = new ArrayList<>();
|
203
|
String query = queryGenerator.generateFetchClaimsByFunder(openaireId, limit, offset,keyword, orderField,descending,types, params);
|
204
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
205
|
return fetchClaimsByResultSet(rs, addCurationInfo);
|
206
|
}
|
207
|
/**
|
208
|
*
|
209
|
* @param openaireId for result
|
210
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
211
|
* @param offset returns claims after 'offset' position (null for no offset)
|
212
|
* @return
|
213
|
* @throws Exception
|
214
|
*/
|
215
|
public List<Claim> fetchClaimsByResult(String openaireId, Integer limit, Integer offset, boolean addCurationInfo) throws Exception, SQLStoreException {
|
216
|
return fetchClaimsByResult(openaireId,limit,offset,null, "claim.claim_date",true, new ArrayList<String>(), addCurationInfo);
|
217
|
}
|
218
|
/**
|
219
|
*
|
220
|
* @param openaireId for result
|
221
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
222
|
* @param offset returns claims after 'offset' position (null for no offset)
|
223
|
* @param orderField
|
224
|
* @param descending
|
225
|
* @return
|
226
|
* @throws Exception
|
227
|
*/
|
228
|
public List<Claim> fetchClaimsByResult(String openaireId, Integer limit, Integer offset,String keyword, String orderField, boolean descending, List<String> types, boolean addCurationInfo) throws Exception, SQLStoreException {
|
229
|
log.info("Fetching claims by result ID:"+openaireId);
|
230
|
ArrayList<Object> params = new ArrayList<>();
|
231
|
String query = queryGenerator.generateFetchClaimsByResult(openaireId, limit, offset,keyword, orderField, descending,types, params);
|
232
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
233
|
return fetchClaimsByResultSet(rs, addCurationInfo);
|
234
|
}
|
235
|
/**
|
236
|
*
|
237
|
* @param openaireId
|
238
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
239
|
* @param offset returns claims after 'offset' position (null for no offset)
|
240
|
* @return
|
241
|
* @throws Exception
|
242
|
*/
|
243
|
public List<Claim> fetchClaimsByContext(String openaireId, Integer limit, Integer offset, boolean addCurationInfo) throws Exception, SQLStoreException {
|
244
|
return fetchClaimsByContext(openaireId,limit,offset,null,"claim.claim_date",true, new ArrayList<String>(), addCurationInfo);
|
245
|
}
|
246
|
/**
|
247
|
*
|
248
|
* @param openaireId
|
249
|
* @param limit returns at most 'limit' claims (use -1 or null for no limit)
|
250
|
* @param offset returns claims after 'offset' position (null for no offset)
|
251
|
* @param orderField
|
252
|
* @param descending
|
253
|
* @return
|
254
|
* @throws Exception
|
255
|
*/
|
256
|
public List<Claim> fetchClaimsByContext(String openaireId, Integer limit, Integer offset, String keyword, String orderField, boolean descending, List<String> types, boolean addCurationInfo) throws Exception, SQLStoreException {
|
257
|
log.info("Fetching claims by context ID:"+openaireId);
|
258
|
ArrayList<Object> params = new ArrayList<>();
|
259
|
String query = queryGenerator.generateFetchClaimsByContext(openaireId, limit, offset,keyword,orderField, descending,types, params);
|
260
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
261
|
return fetchClaimsByResultSet(rs, addCurationInfo);
|
262
|
}
|
263
|
public Claim fetchClaimById(String claimId, boolean addCurationInfo) throws Exception, SQLStoreException {
|
264
|
ArrayList<Object> params = new ArrayList<>();
|
265
|
String query = queryGenerator.generateSelectClaimQuery(claimId, params);
|
266
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
267
|
if(rs.next()) {
|
268
|
String sourceType =rs.getString(2);
|
269
|
// String sourceId =rs.getString(3);
|
270
|
String targetType =rs.getString(4);
|
271
|
// String targetId =rs.getString(5);
|
272
|
ArrayList<Object> params2 = new ArrayList<>();
|
273
|
String query2 = queryGenerator.generateFetchClaimsByClaimId(claimId,sourceType,targetType, params2);
|
274
|
rs = sqlDAO.executePreparedQuery(query2, params2);
|
275
|
}else{
|
276
|
log.info("No claim with id : "+ claimId+"\n");
|
277
|
}
|
278
|
Claim claim = null;
|
279
|
List<Claim> claims=fetchClaimsByResultSet(rs, addCurationInfo);
|
280
|
if(claims.size()==1){
|
281
|
claim=claims.get(0);
|
282
|
}
|
283
|
return claim;
|
284
|
}
|
285
|
|
286
|
/*
|
287
|
public List<Claim> fetchClaimsByToken(String token, String email, Integer limit, Integer offset, boolean addCurationInfo) throws Exception {
|
288
|
return fetchClaimsByToken(token, email, limit, offset, null, "claim.claim_date",true, new ArrayList<String>(), addCurationInfo);
|
289
|
}
|
290
|
|
291
|
public List<Claim> fetchClaimsByToken(String token, String email, Integer limit, Integer offset, String keyword, String orderField, boolean descending, List<String> types, boolean addCurationInfo) throws Exception {
|
292
|
ResultSet rs = sqlDAO.executePreparedQuery(queryGenerator.generateFetchClaimsByProjectToken(token, email, limit, offset, keyword, orderField,descending,types));
|
293
|
return fetchClaimsByResultSet(rs, addCurationInfo);
|
294
|
}
|
295
|
*/
|
296
|
|
297
|
|
298
|
public List<Claim> fetchClaimsByResultSet(ResultSet rs, boolean addCurationInfo) throws Exception {
|
299
|
List<Claim> claims= new ArrayList<Claim>();
|
300
|
while(rs.next()) {
|
301
|
Claim claim= new Claim();
|
302
|
claims.add(claim);
|
303
|
Integer i = 1;
|
304
|
claim.setId(rs.getString(i++));
|
305
|
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
306
|
Date date = format.parse(rs.getString(i++));
|
307
|
claim.setDate(date);
|
308
|
claim.setUserMail(rs.getString(i++));
|
309
|
claim.setSourceType(rs.getString(i++));
|
310
|
claim.setTargetType(rs.getString(i++));
|
311
|
claim.setSemantics(rs.getString(i++));
|
312
|
log.debug(addCurationInfo);
|
313
|
if(addCurationInfo) {
|
314
|
String curationDate =rs.getString(i++);
|
315
|
if(curationDate != null) {
|
316
|
date = format.parse(curationDate);
|
317
|
claim.setCurationDate(date);
|
318
|
}
|
319
|
claim.setCuratedBy(rs.getString(i++));
|
320
|
}else{
|
321
|
i+=2;
|
322
|
}
|
323
|
log.debug(i);
|
324
|
claim.setApproved(rs.getBoolean(i++));
|
325
|
claim.setClaimedInDashboard(rs.getString(i++));
|
326
|
claim.setSource(buildEntity(rs,i,claim.getSourceType()));
|
327
|
claim.setTarget(buildEntity(rs,i+12,claim.getTargetType()));
|
328
|
|
329
|
}
|
330
|
return claims;
|
331
|
}
|
332
|
public Integer countClaimsByResultSet(ResultSet rs) throws Exception {
|
333
|
|
334
|
while(rs.next()) {
|
335
|
return rs.getInt(1);
|
336
|
}
|
337
|
return null;
|
338
|
}
|
339
|
public List<Project> getProjectsByResultSet(ResultSet rs, boolean addCurationInfo) throws Exception {
|
340
|
List<Project> projects= new ArrayList<Project>();
|
341
|
while(rs.next()) {
|
342
|
Project project=(Project)(buildEntity(rs, 1, ClaimUtils.PROJECT));
|
343
|
projects.add(project);
|
344
|
}
|
345
|
return projects;
|
346
|
}
|
347
|
public List<Context> getContextsByResultSet(ResultSet rs, boolean addCurationInfo) throws Exception {
|
348
|
List<Context> contexts= new ArrayList<Context>();
|
349
|
while(rs.next()) {
|
350
|
Context context=(Context)(buildEntity(rs, 1, ClaimUtils.CONTEXT));
|
351
|
contexts.add(context);
|
352
|
}
|
353
|
return contexts;
|
354
|
}
|
355
|
public Integer countAllClaims(String keyword, List<String> types) throws Exception, SQLStoreException {
|
356
|
ArrayList<Object> params = new ArrayList<>();
|
357
|
String query = queryGenerator.generateCountAllClaims(keyword,types, params);
|
358
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
359
|
return countClaimsByResultSet(rs);
|
360
|
}
|
361
|
public Integer countClaimsByUser(String user,String keyword, List<String> types) throws Exception, SQLStoreException {
|
362
|
ArrayList<Object> params = new ArrayList<>();
|
363
|
String query = queryGenerator.generateCountByUser(user,keyword,types, params);
|
364
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
365
|
return countClaimsByResultSet(rs);
|
366
|
}
|
367
|
public Integer countClaimsByProject(String projectId,String keyword, List<String> types) throws Exception, SQLStoreException {
|
368
|
ArrayList<Object> params = new ArrayList<>();
|
369
|
String query = queryGenerator.generateCountByProject(projectId,keyword,types, params);
|
370
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
371
|
return countClaimsByResultSet(rs);
|
372
|
}
|
373
|
/*
|
374
|
public Integer countClaimsByProjectToken(String projectToken,String email,String keyword, List<String> types)throws Exception {
|
375
|
ResultSet rs = sqlDAO.executePreparedQuery(queryGenerator.generateCountByProjectToken(projectToken,email,keyword,types));
|
376
|
return countClaimsByResultSet(rs);
|
377
|
}
|
378
|
*/
|
379
|
public Integer countClaimsByFunder(String funderId,String keyword, List<String> types) throws Exception, SQLStoreException {
|
380
|
ArrayList<Object> params = new ArrayList<>();
|
381
|
String query = queryGenerator.generateCountByFunder(funderId,keyword,types, params);
|
382
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
383
|
return countClaimsByResultSet(rs);
|
384
|
}
|
385
|
public Integer countClaimsByResult(String resultId,String keyword, List<String> types) throws Exception, SQLStoreException {
|
386
|
ArrayList<Object> params = new ArrayList<>();
|
387
|
String query = queryGenerator.generateCountByResult(resultId,keyword,types, params);
|
388
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
389
|
return countClaimsByResultSet(rs);
|
390
|
}
|
391
|
public Integer countClaimsByContext(String contextId,String keyword, List<String> types) throws Exception, SQLStoreException {
|
392
|
ArrayList<Object> params = new ArrayList<>();
|
393
|
String query = queryGenerator.generateCountByContext(contextId,keyword,types, params);
|
394
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
395
|
return countClaimsByResultSet(rs);
|
396
|
}
|
397
|
public Integer countClaimsByDate(String dateFrom,String dateTo,String keyword, List<String> types) throws Exception, SQLStoreException {
|
398
|
ArrayList<Object> params = new ArrayList<>();
|
399
|
String query = queryGenerator.generateCountByDate(dateFrom,dateTo,keyword,types, params);
|
400
|
ResultSet rs = sqlDAO.executePreparedQuery(query, params);
|
401
|
return countClaimsByResultSet(rs);
|
402
|
}
|
403
|
|
404
|
public List<Project> getAllclaimedProjects(boolean addCurationInfo) throws Exception, SQLStoreException {
|
405
|
ResultSet rs = sqlDAO.executePreparedQuery(queryGenerator.generateFetchAllProjectsQuery());
|
406
|
return getProjectsByResultSet(rs,addCurationInfo);
|
407
|
}
|
408
|
public List<Context> getAllclaimedContexts( boolean addCurationInfo) throws Exception, SQLStoreException {
|
409
|
ResultSet rs = sqlDAO.executePreparedQuery(queryGenerator.generateFetchAllContextsQuery());
|
410
|
return getContextsByResultSet(rs,addCurationInfo);
|
411
|
}
|
412
|
/**
|
413
|
*
|
414
|
* @param rs
|
415
|
* @param index
|
416
|
* @return
|
417
|
* @throws SQLException
|
418
|
*/
|
419
|
private static Result buildResult(ResultSet rs, Integer index) throws SQLException {
|
420
|
Result result = new Result();
|
421
|
result.setOpenaireId(rs.getString(index));
|
422
|
result.setTitle(rs.getString(index + 1));
|
423
|
result.setResultType(rs.getString(index + 2));
|
424
|
result.setDoi(rs.getString(index + 3));
|
425
|
result.setOrcidworkid(rs.getString(index + 4));
|
426
|
result.setAccessRights(rs.getString(index + 5));
|
427
|
result.setEmbargoEndDate(rs.getString(index + 6));
|
428
|
result.setBestLicense(rs.getString(index + 7));
|
429
|
result.setExternalUrl(rs.getString(index + 8));
|
430
|
result.setCollectedFrom(rs.getString(index + 9));
|
431
|
result.setRecordPath(rs.getString(index + 10));
|
432
|
result.setRecordFormat(rs.getString(index + 11));
|
433
|
|
434
|
return result;
|
435
|
|
436
|
}
|
437
|
private static Project buildProject(ResultSet rs, Integer index) throws SQLException {
|
438
|
Project project = new Project();
|
439
|
project.setOpenaireId(rs.getString(index));
|
440
|
project.setName(rs.getString(index + 1));
|
441
|
project.setAcronym(rs.getString(index + 2));
|
442
|
project.setFunderId(rs.getString(index + 3));
|
443
|
project.setFunderName(rs.getString(index + 4));
|
444
|
project.setFunderShortName(rs.getString(index + 5));
|
445
|
String contactP = rs.getString(index + 7);
|
446
|
project.setContactEmails(new ArrayList<String>());
|
447
|
if(contactP != null) {
|
448
|
for (String s : contactP.split(",")) {
|
449
|
project.getContactEmails().add(s);
|
450
|
}
|
451
|
}
|
452
|
|
453
|
return project;
|
454
|
|
455
|
}
|
456
|
private static Context buildContext(ResultSet rs, Integer index) throws SQLException {
|
457
|
Context context = new Context();
|
458
|
context.setOpenaireId(rs.getString(index));
|
459
|
context.setTitle(rs.getString(index + 1));
|
460
|
return context;
|
461
|
|
462
|
}
|
463
|
private static OpenaireEntity buildEntity(ResultSet rs, Integer index, String type) throws SQLException {
|
464
|
OpenaireEntity openaireEntity = null;
|
465
|
if(type == null){
|
466
|
openaireEntity = null;
|
467
|
}else if(type.equals(ClaimUtils.PUBLICATION)||type.equals(ClaimUtils.DATASET)||type.equals(ClaimUtils.SOFTWARE)||type.equals(ClaimUtils.OTHER)) {
|
468
|
openaireEntity= buildResult(rs, index);
|
469
|
}else if(type.equals(ClaimUtils.PROJECT)){
|
470
|
openaireEntity = buildProject(rs,index);
|
471
|
}else if(type.equals(ClaimUtils.CONTEXT)){
|
472
|
openaireEntity = buildContext(rs,index);
|
473
|
}
|
474
|
return openaireEntity;
|
475
|
}
|
476
|
|
477
|
public SqlDAO getSqlDAO() {
|
478
|
return sqlDAO;
|
479
|
}
|
480
|
|
481
|
public void setSqlDAO(SqlDAO sqlDAO) {
|
482
|
this.sqlDAO = sqlDAO;
|
483
|
}
|
484
|
|
485
|
public QueryGenerator getQueryGenerator() {
|
486
|
return queryGenerator;
|
487
|
}
|
488
|
|
489
|
public void setQueryGenerator(QueryGenerator queryGenerator) {
|
490
|
this.queryGenerator = queryGenerator;
|
491
|
}
|
492
|
}
|