Project

General

Profile

« Previous | Next » 

Revision 46998

committing work in progress in the dedicated branch

View differences:

modules/dnet-openaireplus-datasource-manager-service/branches/dnet45/src/main/java/eu/dnetlib/enabling/datasources/DatasourceFunctions.java
303 303
		map.put("eissn", asSqlValue(ds.getEissn()));
304 304
		map.put("lissn", asSqlValue(ds.getLissn()));
305 305

  
306
		final ArrayList<Map<String, Object>> ifaces = new ArrayList<Map<String, Object>>();
306
		final ArrayList<Map<String, Object>> ifaces = new ArrayList<>();
307 307

  
308 308
		if (ds.getInterfaces() != null) {
309 309

  
modules/dnet-openaireplus-datasource-manager-service/branches/dnet45/src/main/java/eu/dnetlib/enabling/datasources/DatasourceManagerClients.java
46 46
	private UniqueServiceLocator serviceLocator;
47 47
	private ResultSetClientFactory resultSetClientFactory;
48 48

  
49
	public boolean isManaged(final String dsId) throws DatasourceManagerServiceException {
50
		try {
51

  
52

  
53
			serviceLocator.getService(DatabaseService.class).contains(getDb(), "datasources", "managed", "true");
54

  
55

  
56
			return true;
57
		} catch (final DatabaseException e) {
58
			throw new DatasourceManagerServiceException(e);
59
		}
60
	}
61

  
49 62
	public String findDatasourceId(final String profileId) throws DatasourceManagerServiceException {
50 63
		try {
51 64
			return serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(
modules/dnet-openaireplus-datasource-manager-service/branches/dnet45/src/main/java/eu/dnetlib/enabling/datasources/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);
modules/dnet-openaireplus-datasource-manager-service/branches/dnet45/src/main/resources/eu/dnetlib/enabling/datasources/searchRepoInterfaces.sql.st
1
SELECT * FROM (SELECT
2
	(array_agg(DISTINCT o.countryclass))[1] AS country,
3
	(array_agg(DISTINCT o.legalname))[1]    AS organization,
4
	d.id                                    AS repoid,
5
	d.officialname                          AS reponame,
6
	d.englishname                           AS othername,
7
	d.namespaceprefix                       AS repoprefix,
8
	d.websiteurl                            AS repourl,
9
	a.id                                    AS id,
10
	a.active                                AS active,
11
	a.protocolclass                         AS protocol,
12
	a.typologyclass                         AS type,
13
	CASE 
14
		WHEN (accomp.edited IS NOT NULL) THEN accomp.edited 
15
		WHEN (accomp.original IS NOT NULL) THEN accomp.original
16
		ELSE a.compatibilityclass
17
	END AS compliance,
18
	CASE 
19
		WHEN (acaggrdate.edited   IS NOT NULL) THEN acaggrdate.edited 
20
		WHEN (acaggrdate.original IS NOT NULL) THEN acaggrdate.original
21
		WHEN (acdowndate.edited   IS NOT NULL) THEN acdowndate.edited 
22
		WHEN (acdowndate.original IS NOT NULL) THEN acdowndate.original
23
		ELSE ''
24
	END AS aggrdate,
25
	CASE 
26
		WHEN (acaggrtotal.edited   IS NOT NULL) THEN acaggrtotal.edited 
27
		WHEN (acaggrtotal.original IS NOT NULL) THEN acaggrtotal.original
28
		WHEN (acdowntotal.edited   IS NOT NULL) THEN acdowntotal.edited 
29
		WHEN (acdowntotal.original IS NOT NULL) THEN acdowntotal.original
30
		ELSE '0'
31
	END AS aggrtotal
32
FROM
33
	api a 
34
	LEFT OUTER JOIN datasources d               ON (a.datasource = d.id)
35
	LEFT OUTER JOIN datasource_organization dao ON (d.id = dao.datasource)
36
	LEFT OUTER JOIN organizations o             ON (dao.organization = o.id)
37
	LEFT OUTER JOIN apicollections accomp       ON (a.id = accomp.api      AND accomp.param = 'overriding_compliance')
38
	LEFT OUTER JOIN apicollections acaggrdate   ON (a.id = acaggrdate.api  AND acaggrdate.param = 'last_aggregation_date')
39
	LEFT OUTER JOIN apicollections acaggrtotal  ON (a.id = acaggrtotal.api AND acaggrtotal.param = 'last_aggregation_total')
40
	LEFT OUTER JOIN apicollections acdowndate   ON (a.id = acdowndate.api  AND acdowndate.param = 'last_download_date')
41
	LEFT OUTER JOIN apicollections acdowntotal  ON (a.id = acdowntotal.api AND acdowntotal.param = 'last_download_total')
42
	GROUP BY
43
		d.id, d.officialname, d.englishname, d.namespaceprefix, d.websiteurl, 
44
		a.id, a.active, a.protocolclass, a.typologyclass, a.compatibilityclass,
45
		accomp.edited, accomp.original,
46
		acaggrdate.edited, acaggrdate.original, 
47
		acdowndate.edited, acdowndate.original,
48
		acaggrtotal.edited, acaggrtotal.original,
49
		acdowntotal.edited, acdowntotal.original
1
SELECT * FROM (
2
	SELECT
3
		(array_agg(DISTINCT o.country))[1]      AS country,
4
		(array_agg(DISTINCT o.legalname))[1]    AS organization,
5
		d.id                                    AS repoid,
6
		d.officialname                          AS reponame,
7
		d.englishname                           AS othername,
8
		d.namespaceprefix                       AS repoprefix,
9
		d.websiteurl                            AS repourl,
10
		a.id                                    AS id,
11
		a.active                                AS active,
12
		a.protocol                              AS protocol,
13
		a.typology                              AS type,
14
		a.compatibility                         AS compliance,
15
		CASE
16
			WHEN (a.last_aggregation_date IS NOT NULL) THEN to_char(a.last_aggregation_date, 'YYYY-MM-DD')
17
			WHEN (a.last_download_date IS NOT NULL) THEN to_char(a.last_download_date, 'YYYY-MM-DD')
18
			ELSE ''
19
		END AS aggrdate,
20
		CASE
21
			WHEN (a.last_aggregation_total IS NOT NULL) THEN to_char(a.last_aggregation_total, '')
22
			WHEN (a.last_download_total IS NOT NULL) THEN to_char(a.last_download_total, '')
23
			ELSE '0'
24
		END AS aggrtotal
25
	FROM
26
		api a
27
		LEFT OUTER JOIN datasources d               ON (a.datasource = d.id)
28
		LEFT OUTER JOIN datasource_organization dao ON (d.id = dao.datasource)
29
		LEFT OUTER JOIN organizations o             ON (dao.organization = o.id)
30
		GROUP BY
31
			d.id, d.officialname, d.englishname, d.namespaceprefix, d.websiteurl,
32
			a.id, a.active, a.protocol, a.typology, a.compatibility,
33
			a.last_aggregation_date, a.last_download_date,
34
			a.last_aggregation_total, a.last_download_total
50 35
) AS t WHERE
51 36
	$if(field)$
52 37
		$field$ = $delimeter$$value$$delimeter$
modules/dnet-openaireplus-datasource-manager-service/branches/dnet45/src/main/resources/eu/dnetlib/enabling/datasources/applicationContext-dnet-openaireplus-datasource-manager-service.properties
1
dnet.openaire.dsm.db.name   =   dnet_dsm
modules/dnet-openaireplus-datasource-manager-service/branches/dnet45/src/main/resources/eu/dnetlib/enabling/datasources/applicationContext-dnet-openaireplus-datasource-manager-service.xml
45 45

  
46 46
	<bean id="datasourceManagerClients" 
47 47
		class="eu.dnetlib.enabling.datasources.DatasourceManagerClients" 
48
		p:db="${dnet.openaire.db.name}"
48
		p:db="${dnet.openaire.dsm.db.name}"
49 49
		p:serviceLocator-ref="uniqueServiceLocator"
50 50
		p:resultSetClientFactory-ref="resultSetClientFactory" />
51 51

  
......
60 60
		t:name="datasourceManagerServiceRegistrationManager" t:service="datasourceManagerService"
61 61
		t:endpoint="datasourceManagerServiceEndpoint" t:jobScheduler="jobScheduler" />
62 62
		
63
</beans>
63
</beans>
modules/dnet-openaireplus-datasource-manager-service/branches/dnet45/pom.xml
26 26
		</dependency>
27 27
		<dependency>
28 28
			<groupId>eu.dnetlib</groupId>
29
			<artifactId>cnr-enabling-database-api</artifactId>
30
			<version>[2.0.0,3.0.0)</version>
29
			<artifactId>cnr-enabling-database-service</artifactId>
30
			<version>[3.0.0,4.0.0)</version>
31 31
		</dependency>
32 32
		<dependency>
33 33
			<groupId>eu.dnetlib</groupId>
modules/dnet-openaireplus-datasource-manager-service/branches/dnet45/dnet-openaireplus-datasource-manager-service.iml
1 1
<?xml version="1.0" encoding="UTF-8"?>
2 2
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
3
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
3
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
4 4
    <output url="file://$MODULE_DIR$/target/classes" />
5 5
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
6 6
    <content url="file://$MODULE_DIR$">
......
10 10
    </content>
11 11
    <orderEntry type="inheritedJdk" />
12 12
    <orderEntry type="sourceFolder" forTests="false" />
13
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-blackboard-common:2.2.0" level="project" />
14
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-service-utils:1.0.1" level="project" />
13
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-blackboard-common:2.2.1-SNAPSHOT" level="project" />
14
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-service-utils:1.0.2-SNAPSHOT" level="project" />
15 15
    <orderEntry type="library" name="Maven: apache:oro:2.0.8" level="project" />
16
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-frontend-jaxws:2.7.8" level="project" />
16
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-frontend-jaxws:3.1.5" level="project" />
17 17
    <orderEntry type="library" name="Maven: xml-resolver:xml-resolver:1.2" level="project" />
18
    <orderEntry type="library" name="Maven: asm:asm:3.3.1" level="project" />
19
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-core:2.7.8" level="project" />
20
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.6" level="project" />
21
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-bindings-soap:2.7.8" level="project" />
22
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-databinding-jaxb:2.7.8" level="project" />
23
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-bindings-xml:2.7.8" level="project" />
24
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-frontend-simple:2.7.8" level="project" />
25
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-transports-http:2.7.8" level="project" />
26
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-ws-addr:2.7.8" level="project" />
27
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-ws-policy:2.7.8" level="project" />
28
    <orderEntry type="library" name="Maven: org.apache.neethi:neethi:3.0.2" level="project" />
29
    <orderEntry type="library" name="Maven: org.springframework:spring-context:4.0.0.RELEASE" level="project" />
30
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.0.0.RELEASE" level="project" />
18
    <orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
19
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-bindings-soap:3.1.5" level="project" />
20
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-wsdl:3.1.5" level="project" />
21
    <orderEntry type="library" name="Maven: wsdl4j:wsdl4j:1.6.3" level="project" />
22
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-databinding-jaxb:3.1.5" level="project" />
23
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.11" level="project" />
24
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.11" level="project" />
25
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-bindings-xml:3.1.5" level="project" />
26
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-frontend-simple:3.1.5" level="project" />
27
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-ws-addr:3.1.5" level="project" />
28
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-ws-policy:3.1.5" level="project" />
29
    <orderEntry type="library" name="Maven: org.apache.neethi:neethi:3.0.3" level="project" />
30
    <orderEntry type="library" name="Maven: org.springframework:spring-context:4.2.5.RELEASE" level="project" />
31
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.2.5.RELEASE" level="project" />
31 32
    <orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
32
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.0.0.RELEASE" level="project" />
33
    <orderEntry type="library" name="Maven: org.springframework:spring-core:4.0.0.RELEASE" level="project" />
34
    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
35
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.0.0.RELEASE" level="project" />
36
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-notifications-common:2.1.0" level="project" />
37
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-service-common:2.1.5" level="project" />
33
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.2.5.RELEASE" level="project" />
34
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-notifications-common:2.1.1-SNAPSHOT" level="project" />
35
    <orderEntry type="module" module-name="cnr-service-common" />
38 36
    <orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2" level="project" />
39 37
    <orderEntry type="library" name="Maven: org.antlr:antlr:2.7.7" level="project" />
40
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.0.0.RELEASE" level="project" />
41 38
    <orderEntry type="module" module-name="cnr-misc-utils" />
42
    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
43
    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.8" level="project" />
44
    <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
45
    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" />
46
    <orderEntry type="library" name="Maven: jaxen:jaxen:1.1.6" level="project" />
39
    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.9" level="project" />
47 40
    <orderEntry type="library" name="Maven: saxonica:saxon:9.1.0.8" level="project" />
48 41
    <orderEntry type="library" name="Maven: saxonica:saxon-dom:9.1.0.8" level="project" />
49 42
    <orderEntry type="library" name="Maven: jgrapht:jgrapht:0.7.2" level="project" />
50
    <orderEntry type="library" name="Maven: org.springframework:spring-test:4.0.0.RELEASE" level="project" />
51
    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.0.0.RELEASE" level="project" />
52
    <orderEntry type="library" name="Maven: opensymphony:quartz:1.6.6" level="project" />
53
    <orderEntry type="library" name="Maven: eu.dnetlib:dnet-datasource-manager-rmi:4.0.0" level="project" />
54
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-rmi-api:2.4.2" level="project" />
55
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-api:2.7.8" level="project" />
56
    <orderEntry type="library" name="Maven: org.codehaus.woodstox:woodstox-core-asl:4.2.0" level="project" />
57
    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
58
    <orderEntry type="library" name="Maven: org.apache.ws.xmlschema:xmlschema-core:2.0.3" level="project" />
59
    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-javamail_1.4_spec:1.7.1" level="project" />
60
    <orderEntry type="library" name="Maven: wsdl4j:wsdl4j:1.6.3" level="project" />
61
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-enabling-database-api:2.0.0" level="project" />
62
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-resultset-client:2.1.1" level="project" />
63
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-resultset-service:2.0.2" level="project" />
43
    <orderEntry type="library" name="Maven: org.springframework:spring-test:4.2.5.RELEASE" level="project" />
44
    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.2.2" level="project" />
45
    <orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.1" level="project" />
46
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.7" level="project" />
47
    <orderEntry type="library" name="Maven: eu.dnetlib:dnet-datasource-manager-rmi:4.0.1-SNAPSHOT" level="project" />
48
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-rmi-api:2.6.1-SNAPSHOT" level="project" />
49
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-core:3.1.5" level="project" />
50
    <orderEntry type="library" name="Maven: org.codehaus.woodstox:woodstox-core-asl:4.4.1" level="project" />
51
    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.4" level="project" />
52
    <orderEntry type="library" name="Maven: org.apache.ws.xmlschema:xmlschema-core:2.2.1" level="project" />
53
    <orderEntry type="module" module-name="cnr-enabling-database-service" />
54
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.2.5.RELEASE" level="project" />
55
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.2.5.RELEASE" level="project" />
56
    <orderEntry type="library" name="Maven: org.springframework:spring-core:4.2.5.RELEASE" level="project" />
57
    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
58
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.2.5.RELEASE" level="project" />
59
    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.2.5.RELEASE" level="project" />
60
    <orderEntry type="library" name="Maven: org.apache.velocity:velocity:1.7" level="project" />
61
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
62
    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.4" level="project" />
63
    <orderEntry type="library" name="Maven: org.postgresql:jdbc4driver:8.3" level="project" />
64
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:4.3.2.Final" level="project" />
65
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.1.3.GA" level="project" />
66
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging-annotations:1.2.0.Beta1" level="project" />
67
    <orderEntry type="library" name="Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.0.0.Final" level="project" />
68
    <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
69
    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" />
70
    <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:4.0.4.Final" level="project" />
71
    <orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final" level="project" />
72
    <orderEntry type="library" name="Maven: org.javassist:javassist:3.18.1-GA" level="project" />
73
    <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
74
    <orderEntry type="library" name="Maven: org.jboss:jandex:1.1.0.Final" level="project" />
75
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-enabling-database-api:2.1.1-SNAPSHOT" level="project" />
76
    <orderEntry type="module" module-name="cnr-resultset-service" />
64 77
    <orderEntry type="library" name="Maven: com.google.guava:guava:18.0" level="project" />
65
    <orderEntry type="library" name="Maven: cglib:cglib-nodep:2.2" level="project" />
66
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-spring-utils:1.0.0" level="project" />
78
    <orderEntry type="module" module-name="cnr-spring-utils" />
67 79
    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
68
    <orderEntry type="library" name="Maven: org.springframework:spring-web:4.0.0.RELEASE" level="project" />
69
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.0.0.RELEASE" level="project" />
80
    <orderEntry type="library" name="Maven: org.springframework:spring-web:4.2.5.RELEASE" level="project" />
81
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.2.5.RELEASE" level="project" />
70 82
    <orderEntry type="library" name="Maven: jparsec:jparsec:2.0" level="project" />
71 83
    <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.8.0" level="project" />
72
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.6.6" level="project" />
73 84
    <orderEntry type="library" name="Maven: runcc:runcc:0.7" level="project" />
74
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.8.2" level="project" />
85
    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.2" level="project" />
86
    <orderEntry type="library" name="Maven: joda-time:joda-time:2.3" level="project" />
87
    <orderEntry type="library" name="Maven: jaxen:jaxen:1.1.6" level="project" />
88
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-resultset-client:2.1.2-SNAPSHOT" level="project" />
89
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-transports-http:3.1.5" level="project" />
90
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.9" level="project" />
91
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
75 92
    <orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
76 93
  </component>
77 94
</module>

Also available in: Unified diff