Project

General

Profile

« Previous | Next » 

Revision 46998

committing work in progress in the dedicated branch

View differences:

DatasourceManagerServiceImpl.java
1 1
package eu.dnetlib.enabling.datasources;
2 2

  
3 3
import java.io.StringReader;
4
import java.util.Collections;
5
import java.util.Date;
6
import java.util.HashMap;
7
import java.util.List;
8
import java.util.Map;
4
import java.util.*;
9 5
import java.util.Map.Entry;
6
import java.util.stream.Collectors;
10 7

  
8
import com.google.common.collect.Iterables;
9
import com.google.common.collect.Lists;
10
import com.google.common.collect.Maps;
11
import eu.dnetlib.enabling.datasources.rmi.*;
12
import eu.dnetlib.enabling.tools.AbstractBaseService;
11 13
import org.apache.commons.lang.StringEscapeUtils;
12 14
import org.apache.commons.lang.StringUtils;
13 15
import org.apache.commons.lang.math.NumberUtils;
......
18 20
import org.dom4j.io.SAXReader;
19 21
import org.springframework.beans.factory.annotation.Required;
20 22

  
21
import com.google.common.base.Function;
22
import com.google.common.collect.Iterables;
23
import com.google.common.collect.Lists;
24
import com.google.common.collect.Maps;
23
import static eu.dnetlib.enabling.datasources.DatasourceFunctions.asMapOfSqlValues;
24
import static eu.dnetlib.enabling.datasources.DatasourceFunctions.asSqlValue;
25 25

  
26
import eu.dnetlib.enabling.datasources.rmi.BrowsableField;
27
import eu.dnetlib.enabling.datasources.rmi.BrowseTerm;
28
import eu.dnetlib.enabling.datasources.rmi.DatasourceConstants;
29
import eu.dnetlib.enabling.datasources.rmi.DatasourceDesc;
30
import eu.dnetlib.enabling.datasources.rmi.DatasourceManagerService;
31
import eu.dnetlib.enabling.datasources.rmi.DatasourceManagerServiceException;
32
import eu.dnetlib.enabling.datasources.rmi.IfaceDesc;
33
import eu.dnetlib.enabling.datasources.rmi.RepositoryMapEntry;
34
import eu.dnetlib.enabling.datasources.rmi.SearchInterfacesEntry;
35
import eu.dnetlib.enabling.datasources.rmi.SimpleDatasourceDesc;
36
import eu.dnetlib.enabling.tools.AbstractBaseService;
37 26

  
38 27
public class DatasourceManagerServiceImpl extends AbstractBaseService implements DatasourceManagerService {
39 28

  
......
49 38
			ds.setAggregator("OPENAIRE");
50 39
		}
51 40

  
52
		final Map<String, Object> params = DatasourceFunctions.asMapOfSqlValues(ds);
41
		final Map<String, Object> params = asMapOfSqlValues(ds);
53 42

  
54 43
		if ((ds.getOrganization() != null) && !ds.getOrganization().trim().isEmpty()) {
55 44
			params.put("hasOrganization", 1);
......
61 50
	public boolean deleteDatasource(final String dsId) throws DatasourceManagerServiceException {
62 51
		final Map<String, Object> params = Maps.newHashMap();
63 52

  
64
		params.put("dsId", DatasourceFunctions.asSqlValue(dsId));
65 53

  
54

  
55
		params.put("dsId", asSqlValue(dsId));
56

  
66 57
		return datasourceManagerClients.updateSQL(dsId, "deleteDatasource.sql.st", params, true, true);
67 58
	}
68 59

  
69 60
	@Override
70 61
	public DatasourceDesc getDatasource(final String dsId) throws DatasourceManagerServiceException {
71
		final List<DatasourceDesc> list = datasourceManagerClients.getDatasourcesByCondition("ds.id = " + DatasourceFunctions.asSqlValue(dsId));
62
		final List<DatasourceDesc> list = datasourceManagerClients.getDatasourcesByCondition("ds.id = " + asSqlValue(dsId));
72 63
		if (list.size() != 1) { throw new DatasourceManagerServiceException("Datasource not found, id=" + dsId); }
73 64

  
74 65
		return list.get(0);
......
91 82
			if (!cond.isEmpty()) {
92 83
				cond += " and ";
93 84
			}
94
			cond += "ag.compatibilityclass=" + DatasourceFunctions.asSqlValue(compliance);
85
			cond += "ag.compatibilityclass=" + asSqlValue(compliance);
95 86
		}
96 87

  
97 88
		if ((contentDescription != null) && !contentDescription.isEmpty()) {
98 89
			if (!cond.isEmpty()) {
99 90
				cond += " and ";
100 91
			}
101
			cond += "ag.contentdescriptionclass=" + DatasourceFunctions.asSqlValue(contentDescription);
92
			cond += "ag.contentdescriptionclass=" + asSqlValue(contentDescription);
102 93
		}
103 94

  
104 95
		if ((iisProcessingWorkflow != null) && !iisProcessingWorkflow.isEmpty()) {
......
112 103
			if (!cond.isEmpty()) {
113 104
				cond += " and ";
114 105
			}
115
			cond += "ds.collectedfrom=" + DatasourceFunctions.asSqlValue(collectedFrom);
106
			cond += "ds.collectedfrom=" + asSqlValue(collectedFrom);
116 107
		}
117 108

  
118 109
		return datasourceManagerClients.getDatasourcesByCondition(cond);
......
122 113
	public boolean updateActivationStatus(final String dsId, final String ifaceId, final boolean active) throws DatasourceManagerServiceException {
123 114
		final Map<String, Object> params = Maps.newHashMap();
124 115

  
125
		params.put("active", DatasourceFunctions.asSqlValue(active));
126
		params.put("ifaceId", DatasourceFunctions.asSqlValue(ifaceId));
127
		params.put("dsId", DatasourceFunctions.asSqlValue(dsId));
116
		params.put("active", asSqlValue(active));
117
		params.put("ifaceId", asSqlValue(ifaceId));
118
		params.put("dsId", asSqlValue(dsId));
128 119

  
129 120
		return datasourceManagerClients.updateSQL(dsId, "updateActivationStatus.sql.st", params, false, true);
130 121
	}
......
133 124
	public boolean updateLevelOfCompliance(final String dsId, final String ifaceId, final String level) throws DatasourceManagerServiceException {
134 125
		final Map<String, Object> params = Maps.newHashMap();
135 126

  
136
		params.put("level", DatasourceFunctions.asSqlValue(level));
137
		params.put("ifaceId", DatasourceFunctions.asSqlValue(ifaceId));
138
		params.put("dsId", DatasourceFunctions.asSqlValue(dsId));
127
		params.put("level", asSqlValue(level));
128
		params.put("ifaceId", asSqlValue(ifaceId));
129
		params.put("dsId", asSqlValue(dsId));
139 130

  
140 131
		return datasourceManagerClients.updateSQL(dsId, "updateLevelOfCompliance.sql.st", params, false, true);
141 132
	}
......
148 139
	@Override
149 140
	public boolean updateContentDescription(final String dsId, final String ifaceId, final String desc) throws DatasourceManagerServiceException {
150 141
		final Map<String, Object> params = Maps.newHashMap();
151
		params.put("desc", DatasourceFunctions.asSqlValue(desc));
152
		params.put("ifaceId", DatasourceFunctions.asSqlValue(ifaceId));
153
		params.put("dsId", DatasourceFunctions.asSqlValue(dsId));
142
		params.put("desc", asSqlValue(desc));
143
		params.put("ifaceId", asSqlValue(ifaceId));
144
		params.put("dsId", asSqlValue(dsId));
154 145

  
155 146
		return datasourceManagerClients.updateSQL(dsId, "updateContentDescription.sql.st", params, false, true);
156 147
	}
......
164 155
	public boolean addInterface(final String dsId, final IfaceDesc iface) throws DatasourceManagerServiceException {
165 156
		final Map<String, Object> params = Maps.newHashMap();
166 157

  
167
		params.put("datasource", DatasourceFunctions.asSqlValue(dsId));
168
		params.put("id", DatasourceFunctions.asSqlValue(iface.getId()));
169
		params.put("typology", DatasourceFunctions.asSqlValue(iface.getTypology()));
170
		params.put("protocol", DatasourceFunctions.asSqlValue(iface.getAccessProtocol()));
171
		params.put("baseUrl", DatasourceFunctions.asSqlValue(iface.getBaseUrl()));
172
		params.put("description", DatasourceFunctions.asSqlValue(iface.getContentDescription()));
173
		params.put("compliance", DatasourceFunctions.asSqlValue(iface.getCompliance()));
158
		params.put("datasource", asSqlValue(dsId));
159
		params.put("id", asSqlValue(iface.getId()));
160
		params.put("typology", asSqlValue(iface.getTypology()));
161
		params.put("protocol", asSqlValue(iface.getAccessProtocol()));
162
		params.put("baseUrl", asSqlValue(iface.getBaseUrl()));
163
		params.put("description", asSqlValue(iface.getContentDescription()));
164
		params.put("compliance", asSqlValue(iface.getCompliance()));
174 165

  
175
		final Map<String, String> accessParams = new HashMap<String, String>();
166
		final Map<String, String> accessParams = new HashMap<>();
176 167
		if (iface.getAccessParams() != null) {
177 168
			for (final Entry<String, String> e : iface.getAccessParams().entrySet()) {
178
				accessParams.put(DatasourceFunctions.asSqlValue(e.getKey()), DatasourceFunctions.asSqlValue(e.getValue()));
169
				accessParams.put(asSqlValue(e.getKey()), asSqlValue(e.getValue()));
179 170
			}
180 171
		}
181 172
		params.put("accessParams", accessParams);
182 173

  
183
		final Map<String, String> extraFields = new HashMap<String, String>();
174
		final Map<String, String> extraFields = new HashMap<>();
184 175
		if (iface.getExtraFields() != null) {
185 176
			for (final Entry<String, String> e : iface.getExtraFields().entrySet()) {
186
				extraFields.put(DatasourceFunctions.asSqlValue(e.getKey()), DatasourceFunctions.asSqlValue(e.getValue()));
177
				extraFields.put(asSqlValue(e.getKey()), asSqlValue(e.getValue()));
187 178
			}
188 179
		}
189 180
		params.put("extraFields", extraFields);
......
195 186
	public boolean deleteInterface(final String dsId, final String ifcId) throws DatasourceManagerServiceException {
196 187
		final Map<String, Object> params = Maps.newHashMap();
197 188

  
198
		params.put("datasource", DatasourceFunctions.asSqlValue(dsId));
199
		params.put("id", DatasourceFunctions.asSqlValue(ifcId));
189
		params.put("datasource", asSqlValue(dsId));
190
		params.put("id", asSqlValue(ifcId));
200 191

  
201 192
		return datasourceManagerClients.updateSQL(dsId, "deleteInterface.sql.st", params, false, true);
202 193
	}
......
224 215

  
225 216
		final Map<String, Object> params = Maps.newHashMap();
226 217

  
227
		params.put("dsId", DatasourceFunctions.asSqlValue(openaireDsId));
228
		params.put("ifaceId", DatasourceFunctions.asSqlValue(ifaceId));
229
		params.put("field", DatasourceFunctions.asSqlValue(field));
218
		params.put("dsId", asSqlValue(openaireDsId));
219
		params.put("ifaceId", asSqlValue(ifaceId));
220
		params.put("field", asSqlValue(field));
230 221
		params.put("accessParam", accessParam);
231 222

  
232 223
		if (value != null) {
233
			params.put("value", DatasourceFunctions.asSqlValue(value));
224
			params.put("value", asSqlValue(value));
234 225
		}
235 226

  
236 227
		if (datasourceManagerClients.isDefinedParam(ifaceId, field)) {
......
247 238
	public boolean deleteAccessParamOrExtraField(final String dsId, final String ifaceId, final String field) throws DatasourceManagerServiceException {
248 239
		final Map<String, Object> params = Maps.newHashMap();
249 240

  
250
		params.put("dsId", DatasourceFunctions.asSqlValue(dsId));
251
		params.put("ifaceId", DatasourceFunctions.asSqlValue(ifaceId));
252
		params.put("field", DatasourceFunctions.asSqlValue(field));
241
		params.put("dsId", asSqlValue(dsId));
242
		params.put("ifaceId", asSqlValue(ifaceId));
243
		params.put("field", asSqlValue(field));
253 244

  
254 245
		return datasourceManagerClients.updateSQL(dsId, "deleteApiCollectionsRow.sql.st", params, false, true);
255 246
	}
......
295 286
	private boolean deleteOldExtraFields(final String dsId, final String ifaceId) throws DatasourceManagerServiceException {
296 287
		final Map<String, Object> params = Maps.newHashMap();
297 288

  
298
		params.put("dsId", DatasourceFunctions.asSqlValue(dsId));
299
		params.put("ifaceId", DatasourceFunctions.asSqlValue(ifaceId));
289
		params.put("dsId", asSqlValue(dsId));
290
		params.put("ifaceId", asSqlValue(ifaceId));
300 291

  
301 292
		return datasourceManagerClients.updateSQL(dsId, "deleteOldExtraFields.sql.st", params, false, false);
302 293
	}
......
305 296
			throws DatasourceManagerServiceException {
306 297
		final Map<String, Object> params = Maps.newHashMap();
307 298

  
308
		params.put("dsId", DatasourceFunctions.asSqlValue(dsId));
309
		params.put("ifaceId", DatasourceFunctions.asSqlValue(ifaceId));
310
		params.put("field", DatasourceFunctions.asSqlValue(field));
299
		params.put("dsId", asSqlValue(dsId));
300
		params.put("ifaceId", asSqlValue(ifaceId));
301
		params.put("field", asSqlValue(field));
311 302
		params.put("accessParam", accessParam);
312 303

  
313 304
		if (value != null) {
314
			params.put("value", DatasourceFunctions.asSqlValue(value));
305
			params.put("value", asSqlValue(value));
315 306
		}
316 307

  
317 308
		if (accessParam && datasourceManagerClients.isDefinedParam(ifaceId, field)) {
......
337 328
		final String dsId = datasourceManagerClients.findDatasourceId(repoId);
338 329

  
339 330
		final Map<String, Object> params = Maps.newHashMap();
340
		params.put("dsId", DatasourceFunctions.asSqlValue(dsId));
341
		params.put("ifaceId", DatasourceFunctions.asSqlValue(ifaceId));
342
		params.put("field", DatasourceFunctions.asSqlValue(DatasourceConstants.OVERRIDING_COMPLIANCE_FIELD));
331
		params.put("dsId", asSqlValue(dsId));
332
		params.put("ifaceId", asSqlValue(ifaceId));
333
		params.put("field", asSqlValue(DatasourceConstants.OVERRIDING_COMPLIANCE_FIELD));
343 334

  
344 335
		if (StringUtils.isEmpty(compliance)) {
345 336
			params.put("delete", true);
346 337
			log.debug("Removing compliance");
347 338
		} else {
348
			params.put("value", DatasourceFunctions.asSqlValue(compliance));
339
			params.put("value", asSqlValue(compliance));
349 340
			if (datasourceManagerClients.isDefinedParam(ifaceId, DatasourceConstants.OVERRIDING_COMPLIANCE_FIELD)) {
350 341
				params.put("update", true);
351 342
				log.debug("Updating compliance: " + compliance);
......
359 350

  
360 351
	@Override
361 352
	public List<BrowsableField> listBrowsableFields() throws DatasourceManagerServiceException {
362
		return Lists.transform(getBrowsableFields(), new Function<DbBrowsableField, BrowsableField>() {
363

  
364
			@Override
365
			public BrowsableField apply(final DbBrowsableField f) {
366
				return new BrowsableField(f.getId(), f.getLabel());
367
			}
368
		});
353
		return getBrowsableFields().stream()
354
				.map(f -> new BrowsableField(f.getId(), f.getLabel()))
355
				.collect(Collectors.toList());
369 356
	}
370 357

  
371 358
	@Override
......
410 397

  
411 398
			final SAXReader reader = new SAXReader();
412 399
			final Iterable<String> iter = datasourceManagerClients.searchSQL("searchRepoInterfaces.sql.st", params);
413
			return Lists.newArrayList(Iterables.transform(iter, new Function<String, SearchInterfacesEntry>() {
400
			return Lists.newArrayList(Iterables.transform(iter, s -> {
401
				final SearchInterfacesEntry iface = new SearchInterfacesEntry();
402
				try {
403
					final Document doc = reader.read(new StringReader(s));
404
					final String country = doc.valueOf("/ROW/FIELD[@name='country']");
414 405

  
415
				@Override
416
				public SearchInterfacesEntry apply(final String s) {
417
					final SearchInterfacesEntry iface = new SearchInterfacesEntry();
418
					try {
419
						final Document doc = reader.read(new StringReader(s));
420
						final String country = doc.valueOf("/ROW/FIELD[@name='country']");
406
					iface.setRepoId(doc.valueOf("/ROW/FIELD[@name='repoid']"));
407
					iface.setRepoCountry(StringUtils.isEmpty(country) ? "-" : country.toUpperCase());
408
					iface.setRepoName(StringEscapeUtils.unescapeXml(doc.valueOf("/ROW/FIELD[@name='reponame']")));
409
					iface.setRepoPrefix(doc.valueOf("/ROW/FIELD[@name='repoprefix']"));
421 410

  
422
						iface.setRepoId(doc.valueOf("/ROW/FIELD[@name='repoid']"));
423
						iface.setRepoCountry(StringUtils.isEmpty(country) ? "-" : country.toUpperCase());
424
						iface.setRepoName(StringEscapeUtils.unescapeXml(doc.valueOf("/ROW/FIELD[@name='reponame']")));
425
						iface.setRepoPrefix(doc.valueOf("/ROW/FIELD[@name='repoprefix']"));
426

  
427
						iface.setId(doc.valueOf("/ROW/FIELD[@name='id']"));
428
						iface.setActive(Boolean.valueOf(doc.valueOf("/ROW/FIELD[@name='active']")));
429
						iface.setProtocol(doc.valueOf("/ROW/FIELD[@name='protocol']"));
430
						iface.setCompliance(doc.valueOf("/ROW/FIELD[@name='compliance']"));
431
						iface.setAggrDate(doc.valueOf("/ROW/FIELD[@name='aggrdate']"));
432
						iface.setAggrTotal(NumberUtils.toInt(doc.valueOf("/ROW/FIELD[@name='aggrtotal']"), 0));
433
					} catch (final Exception e) {
434
						log.error(e);
435
					}
436
					return iface;
411
					iface.setId(doc.valueOf("/ROW/FIELD[@name='id']"));
412
					iface.setActive(Boolean.valueOf(doc.valueOf("/ROW/FIELD[@name='active']")));
413
					iface.setProtocol(doc.valueOf("/ROW/FIELD[@name='protocol']"));
414
					iface.setCompliance(doc.valueOf("/ROW/FIELD[@name='compliance']"));
415
					iface.setAggrDate(doc.valueOf("/ROW/FIELD[@name='aggrdate']"));
416
					iface.setAggrTotal(NumberUtils.toInt(doc.valueOf("/ROW/FIELD[@name='aggrtotal']"), 0));
417
				} catch (final Exception e) {
418
					log.error(e);
437 419
				}
420
				return iface;
438 421
			}));
439 422
		} catch (final Exception e) {
440 423
			log.error("Error searching field " + field + " - value: " + value, e);
......
455 438

  
456 439
		try {
457 440
			final Iterable<String> iter = datasourceManagerClients.searchSQL("findReposMap.sql.st", null);
458
			return Lists.newArrayList(Iterables.transform(iter, new Function<String, RepositoryMapEntry>() {
459

  
460
				@Override
461
				public RepositoryMapEntry apply(final String s) {
462
					final RepositoryMapEntry r = new RepositoryMapEntry();
463
					try {
464
						final Document doc = reader.read(new StringReader(s));
465
						r.setId(doc.valueOf("/ROW/FIELD[@name='id']"));
466
						r.setName(StringEscapeUtils.unescapeXml(doc.valueOf("/ROW/FIELD[@name='name']")));
467
						r.setLat(NumberUtils.toFloat(doc.valueOf("/ROW/FIELD[@name='lat']"), 0));
468
						r.setLng(NumberUtils.toFloat(doc.valueOf("/ROW/FIELD[@name='lng']"), 0));
469
					} catch (final Exception e) {
470
						log.error(e);
471
					}
472
					return r;
441
			return Lists.newArrayList(Iterables.transform(iter, s -> {
442
				final RepositoryMapEntry r = new RepositoryMapEntry();
443
				try {
444
					final Document doc = reader.read(new StringReader(s));
445
					r.setId(doc.valueOf("/ROW/FIELD[@name='id']"));
446
					r.setName(StringEscapeUtils.unescapeXml(doc.valueOf("/ROW/FIELD[@name='name']")));
447
					r.setLat(NumberUtils.toFloat(doc.valueOf("/ROW/FIELD[@name='lat']"), 0));
448
					r.setLng(NumberUtils.toFloat(doc.valueOf("/ROW/FIELD[@name='lng']"), 0));
449
				} catch (final Exception e) {
450
					log.error(e);
473 451
				}
452
				return r;
474 453
			}));
475 454
		} catch (final Exception e) {
476 455
			log.error("Error obtaing repo map entries", e);

Also available in: Unified diff