Revision 62954
Added by Michele Artini 11 months ago
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/isDefinedParam.sql | ||
---|---|---|
1 |
SELECT * FROM dsm_apiparams WHERE api = :apiId AND lower(param) = lower(:param) |
|
2 |
|
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/applicationContext-dnet-openaire-datasource-manager.properties | ||
---|---|---|
1 |
dnet.openaire.db.url = jdbc:postgresql://localhost:5432/dnet_openaire |
|
2 |
dnet.openaire.db.username = dnet |
|
3 |
dnet.openaire.db.password = |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/java/eu/dnetlib/enabling/datasources/DatasourceManagerClients.java | ||
---|---|---|
1 |
package eu.dnetlib.enabling.datasources; |
|
2 |
|
|
3 |
import java.text.ParseException; |
|
4 |
import java.util.Date; |
|
5 |
import java.util.List; |
|
6 |
import java.util.Map; |
|
7 |
import java.util.stream.Collectors; |
|
8 |
|
|
9 |
import org.apache.commons.io.IOUtils; |
|
10 |
import org.apache.commons.logging.Log; |
|
11 |
import org.apache.commons.logging.LogFactory; |
|
12 |
import org.quartz.CronExpression; |
|
13 |
import org.springframework.beans.factory.annotation.Autowired; |
|
14 |
import org.springframework.beans.factory.annotation.Required; |
|
15 |
import org.springframework.core.io.ClassPathResource; |
|
16 |
import org.springframework.core.io.Resource; |
|
17 |
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; |
|
18 |
import org.springframework.transaction.annotation.Transactional; |
|
19 |
|
|
20 |
import com.google.common.collect.ImmutableMap; |
|
21 |
|
|
22 |
import eu.dnetlib.enabling.datasources.common.Api; |
|
23 |
import eu.dnetlib.enabling.datasources.common.ApiParam; |
|
24 |
import eu.dnetlib.enabling.datasources.common.Datasource; |
|
25 |
import eu.dnetlib.enabling.datasources.common.DsmException; |
|
26 |
import eu.dnetlib.enabling.datasources.common.Identity; |
|
27 |
import eu.dnetlib.enabling.datasources.common.Organization; |
|
28 |
import eu.dnetlib.enabling.datasources.common.PidSystem; |
|
29 |
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpDocumentNotFoundException; |
|
30 |
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException; |
|
31 |
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService; |
|
32 |
import eu.dnetlib.enabling.locators.UniqueServiceLocator; |
|
33 |
|
|
34 |
public class DatasourceManagerClients { |
|
35 |
|
|
36 |
private static final Log log = LogFactory.getLog(DatasourceManagerClients.class); |
|
37 |
|
|
38 |
private static final Resource dsQuery = new ClassPathResource(LocalOpenaireDatasourceManagerImpl.QUERY_BASEDIR + "getDatasource.sql"); |
|
39 |
private static final Resource dsQueryByPrefix = new ClassPathResource(LocalOpenaireDatasourceManagerImpl.QUERY_BASEDIR + "getDatasourceByPrefix.sql"); |
|
40 |
private static final Resource dsIdentitiesQuery = new ClassPathResource(LocalOpenaireDatasourceManagerImpl.QUERY_BASEDIR + "dsIdentitiesQuery.sql"); |
|
41 |
private static final Resource dsOrganizationsQuery = new ClassPathResource(LocalOpenaireDatasourceManagerImpl.QUERY_BASEDIR + "dsOrganizationsQuery.sql"); |
|
42 |
private static final Resource listApisByDsId = new ClassPathResource(LocalOpenaireDatasourceManagerImpl.QUERY_BASEDIR + "listApisByDsId.sql"); |
|
43 |
private static final Resource isDefinedParamQuery = new ClassPathResource(LocalOpenaireDatasourceManagerImpl.QUERY_BASEDIR + "isDefinedParam.sql"); |
|
44 |
|
|
45 |
private NamedParameterJdbcTemplate jdbcTemplate; |
|
46 |
|
|
47 |
@Autowired |
|
48 |
private UniqueServiceLocator serviceLocator; |
|
49 |
|
|
50 |
@Transactional(readOnly = true) |
|
51 |
public List<Map<String, Object>> searchSQL(final String sql, final Map<String, Object> sqlParams) throws DsmException { |
|
52 |
try { |
|
53 |
log.debug("Executing SQL: " + sql); |
|
54 |
return jdbcTemplate.queryForList(sql, sqlParams); |
|
55 |
} catch (final Exception e) { |
|
56 |
log.error("Error executing sql", e); |
|
57 |
|
|
58 |
throw new DsmException(-1, "Error obtaining datasources from db", e); |
|
59 |
} |
|
60 |
} |
|
61 |
|
|
62 |
@Transactional(readOnly = true) |
|
63 |
public List<Map<String, Object>> searchSQL(final Resource sqlResource, final Map<String, Object> sqlParams) throws DsmException { |
|
64 |
try { |
|
65 |
return searchSQL(IOUtils.toString(sqlResource.getInputStream()), sqlParams); |
|
66 |
} catch (final Exception e) { |
|
67 |
log.error("Error executing sql", e); |
|
68 |
throw new DsmException(-1, "Error obtaining datasources from db", e); |
|
69 |
} |
|
70 |
} |
|
71 |
|
|
72 |
@Transactional |
|
73 |
public void updateSQL(final String dsId, final String sql, final Map<String, Object> sqlparams) |
|
74 |
throws DsmException { |
|
75 |
log.debug("Executing query SQL: " + sql); |
|
76 |
|
|
77 |
jdbcTemplate.update(sql, sqlparams); |
|
78 |
} |
|
79 |
|
|
80 |
@Transactional |
|
81 |
public void updateSQL(final String dsId, final Resource sqlResource, final Map<String, Object> sqlparams) |
|
82 |
throws DsmException { |
|
83 |
try { |
|
84 |
updateSQL(dsId, IOUtils.toString(sqlResource.getInputStream()), sqlparams); |
|
85 |
} catch (final Exception e) { |
|
86 |
log.error("Error in updateSQL", e); |
|
87 |
throw new DsmException(-1, "Error in updateSQL", e); |
|
88 |
} |
|
89 |
} |
|
90 |
|
|
91 |
@Transactional(readOnly = true) |
|
92 |
public Datasource<Organization<?>, Identity, PidSystem> getDatasourceById(final String id) throws DsmException { |
|
93 |
final List<Map<String, Object>> list = searchSQL(dsQuery, ImmutableMap.of("dsId", id)); |
|
94 |
|
|
95 |
if (list.size() != 1) { throw new DsmException("Invalid number of ds with id: " + id); } |
|
96 |
|
|
97 |
final Datasource<Organization<?>, Identity, PidSystem> ds = DatasourceFunctions.mapToDatasource(list.get(0)); |
|
98 |
ds.setIdentities(searchSQL(dsIdentitiesQuery, ImmutableMap.of("dsId", id)) |
|
99 |
.stream() |
|
100 |
.map(DatasourceFunctions::mapToDsIdentity) |
|
101 |
.collect(Collectors.toSet())); |
|
102 |
ds.setOrganizations(searchSQL(dsOrganizationsQuery, ImmutableMap.of("dsId", id)) |
|
103 |
.stream() |
|
104 |
.map(DatasourceFunctions::mapToDsOrganization) |
|
105 |
.collect(Collectors.toSet())); |
|
106 |
|
|
107 |
return ds; |
|
108 |
} |
|
109 |
|
|
110 |
public Datasource<Organization<?>, Identity, PidSystem> getDatasourceByPrefix(final String prefix) throws DsmException { |
|
111 |
final List<Map<String, Object>> list = searchSQL(dsQueryByPrefix, ImmutableMap.of("prefix", prefix)); |
|
112 |
|
|
113 |
if (list.size() != 1) { throw new DsmException("Invalid number of ds with prefix: " + prefix); } |
|
114 |
|
|
115 |
final Datasource<Organization<?>, Identity, PidSystem> ds = DatasourceFunctions.mapToDatasource(list.get(0)); |
|
116 |
ds.setIdentities(searchSQL(dsIdentitiesQuery, ImmutableMap.of("dsId", ds.getId())) |
|
117 |
.stream() |
|
118 |
.map(DatasourceFunctions::mapToDsIdentity) |
|
119 |
.collect(Collectors.toSet())); |
|
120 |
ds.setOrganizations(searchSQL(dsOrganizationsQuery, ImmutableMap.of("dsId", ds.getId())) |
|
121 |
.stream() |
|
122 |
.map(DatasourceFunctions::mapToDsOrganization) |
|
123 |
.collect(Collectors.toSet())); |
|
124 |
|
|
125 |
return ds; |
|
126 |
} |
|
127 |
|
|
128 |
@Transactional(readOnly = true) |
|
129 |
public List<Api<ApiParam>> getApis(final String dsId) throws DsmException { |
|
130 |
|
|
131 |
return searchSQL(listApisByDsId, ImmutableMap.of("dsId", dsId)) |
|
132 |
.stream() |
|
133 |
.map(DatasourceFunctions::mapToApi) |
|
134 |
.collect(Collectors.toList()); |
|
135 |
} |
|
136 |
|
|
137 |
@Transactional(readOnly = true) |
|
138 |
public boolean isDefinedParam(final String apiId, final String param) throws DsmException { |
|
139 |
return !searchSQL(isDefinedParamQuery, ImmutableMap.of("apiId", apiId, "param", param)).isEmpty(); |
|
140 |
} |
|
141 |
|
|
142 |
public Date findNextScheduledExecution(final String dsId, final String ifaceId) throws DsmException { |
|
143 |
final String xquery = "/*[.//DATAPROVIDER/@interface='" + ifaceId + "' and .//SCHEDULING/@enabled='true']//CRON/text()"; |
|
144 |
try { |
|
145 |
final String cronExpression = serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(xquery); |
|
146 |
final CronExpression cron = new CronExpression(cronExpression); |
|
147 |
return cron.getNextValidTimeAfter(new Date()); |
|
148 |
} catch (final ISLookUpDocumentNotFoundException e) { |
|
149 |
// When the value is not found a null value must be returned |
|
150 |
return null; |
|
151 |
} catch (final ISLookUpException e) { |
|
152 |
log.error("Error in xquery: " + xquery, e); |
|
153 |
throw new DsmException(-1, "Error in xquery: " + xquery, e); |
|
154 |
} catch (final ParseException e) { |
|
155 |
log.error("Error parsing cron expression", e); |
|
156 |
throw new DsmException(-1, "Error parsing cron expression", e); |
|
157 |
} |
|
158 |
} |
|
159 |
|
|
160 |
public NamedParameterJdbcTemplate getJdbcTemplate() { |
|
161 |
return jdbcTemplate; |
|
162 |
} |
|
163 |
|
|
164 |
@Required |
|
165 |
public void setJdbcTemplate(final NamedParameterJdbcTemplate jdbcTemplate) { |
|
166 |
this.jdbcTemplate = jdbcTemplate; |
|
167 |
} |
|
168 |
|
|
169 |
} |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/pom.xml | ||
---|---|---|
1 |
<?xml version="1.0" encoding="UTF-8"?> |
|
2 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> |
|
3 |
<parent> |
|
4 |
<groupId>eu.dnetlib</groupId> |
|
5 |
<artifactId>dnet45-parent</artifactId> |
|
6 |
<version>1.0.0</version> |
|
7 |
</parent> |
|
8 |
<modelVersion>4.0.0</modelVersion> |
|
9 |
<groupId>eu.dnetlib</groupId> |
|
10 |
<artifactId>dnet-openaire-datasource-manager</artifactId> |
|
11 |
<packaging>jar</packaging> |
|
12 |
<version>2.1.0</version> |
|
13 |
<scm> |
|
14 |
<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0</developerConnection> |
|
15 |
</scm> |
|
16 |
<dependencies> |
|
17 |
<dependency> |
|
18 |
<groupId>eu.dnetlib</groupId> |
|
19 |
<artifactId>cnr-service-common</artifactId> |
|
20 |
<version>[2.1.0,3.0.0)</version> |
|
21 |
</dependency> |
|
22 |
<dependency> |
|
23 |
<groupId>eu.dnetlib</groupId> |
|
24 |
<artifactId>dnet-datasource-manager-common</artifactId> |
|
25 |
<version>[2.1.0,3.0.0)</version> |
|
26 |
</dependency> |
|
27 |
<dependency> |
|
28 |
<groupId>org.springframework</groupId> |
|
29 |
<artifactId>spring-tx</artifactId> |
|
30 |
<version>${spring.version}</version> |
|
31 |
</dependency> |
|
32 |
<dependency> |
|
33 |
<groupId>org.springframework</groupId> |
|
34 |
<artifactId>spring-jdbc</artifactId> |
|
35 |
<version>${spring.version}</version> |
|
36 |
</dependency> |
|
37 |
<dependency> |
|
38 |
<groupId>org.springframework</groupId> |
|
39 |
<artifactId>spring-context-support</artifactId> |
|
40 |
<version>${spring.version}</version> |
|
41 |
</dependency> |
|
42 |
<dependency> |
|
43 |
<groupId>junit</groupId> |
|
44 |
<artifactId>junit</artifactId> |
|
45 |
<version>${junit.version}</version> |
|
46 |
<scope>test</scope> |
|
47 |
</dependency> |
|
48 |
</dependencies> |
|
49 |
</project> |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/searchApisNormal.sql | ||
---|---|---|
1 |
SELECT |
|
2 |
a.id AS "id", |
|
3 |
a.protocol AS "protocol", |
|
4 |
coalesce(a.compatibility_override, a.compatibility) AS "compliance", |
|
5 |
a.active AS "active", |
|
6 |
a.baseurl AS "baseUrl", |
|
7 |
coalesce(a.last_aggregation_date::text, '') AS "aggrDate", |
|
8 |
coalesce(a.last_aggregation_total, 0) AS "aggrTotal", |
|
9 |
coalesce(a.last_aggregation_mdid, '') AS "aggrMdId", |
|
10 |
coalesce(a.last_collection_date::text, '') AS "collDate", |
|
11 |
coalesce(a.last_collection_total, 0) AS "collTotal", |
|
12 |
coalesce(a.last_collection_mdid, '') AS "collMdId", |
|
13 |
ds.id AS "dsId", |
|
14 |
ds.officialname AS "name", |
|
15 |
ds.englishname AS "alternativeName", |
|
16 |
ds.namespaceprefix AS "prefix", |
|
17 |
ds.websiteurl AS "websiteUrl", |
|
18 |
coalesce((array_agg(o.country))[1], '-') AS "country", |
|
19 |
(array_agg(o.legalname))[1] AS "organization", |
|
20 |
ds.consenttermsofuse AS "consenttermsofuse", |
|
21 |
ds.fulltextdownload AS "fulltextdownload" |
|
22 |
FROM dsm_api a |
|
23 |
LEFT OUTER JOIN dsm_services ds ON (a.service = ds.id) |
|
24 |
LEFT OUTER JOIN dsm_service_organization dsorg ON (ds.id = dsorg.service) |
|
25 |
LEFT OUTER JOIN dsm_organizations o ON (dsorg.organization = o.id) |
|
26 |
WHERE |
|
27 |
ds.dedup_main_service = true AND ( |
|
28 |
ds.id ILIKE :value |
|
29 |
OR ds.officialname ILIKE :value |
|
30 |
OR ds.englishname ILIKE :value |
|
31 |
OR ds.namespaceprefix ILIKE :value |
|
32 |
OR ds.websiteurl ILIKE :value |
|
33 |
OR a.baseurl ILIKE :value |
|
34 |
OR o.legalname ILIKE :value |
|
35 |
) |
|
36 |
GROUP BY |
|
37 |
a.id, |
|
38 |
a.protocol, |
|
39 |
a.compatibility_override, |
|
40 |
a.compatibility, |
|
41 |
a.active, |
|
42 |
a.last_aggregation_date, |
|
43 |
a.last_download_date, |
|
44 |
a.last_collection_date, |
|
45 |
a.last_aggregation_total, |
|
46 |
a.last_download_total, |
|
47 |
a.last_collection_total, |
|
48 |
a.last_aggregation_mdid, |
|
49 |
a.last_download_objid, |
|
50 |
a.last_collection_mdid, |
|
51 |
ds.id, |
|
52 |
ds.officialname, |
|
53 |
ds.englishname, |
|
54 |
ds.namespaceprefix, |
|
55 |
ds.websiteurl, |
|
56 |
ds.consenttermsofuse, |
|
57 |
ds.fulltextdownload |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/searchApisUsingField.sql | ||
---|---|---|
1 |
SELECT * FROM (SELECT |
|
2 |
a.id AS "id", |
|
3 |
a.protocol AS "protocol", |
|
4 |
coalesce(a.compatibility_override, a.compatibility) AS "compliance", |
|
5 |
a.active AS "active", |
|
6 |
a.baseurl AS "baseUrl", |
|
7 |
ds.eosc_datasource_type AS "type", |
|
8 |
coalesce(a.last_aggregation_date::text, '') AS "aggrDate", |
|
9 |
coalesce(a.last_aggregation_total, 0) AS "aggrTotal", |
|
10 |
coalesce(a.last_aggregation_mdid, '') AS "aggrMdId", |
|
11 |
coalesce(a.last_collection_date::text, '') AS "collDate", |
|
12 |
coalesce(a.last_collection_total, 0) AS "collTotal", |
|
13 |
coalesce(a.last_collection_mdid, '') AS "collMdId", |
|
14 |
ds.id AS "dsId", |
|
15 |
ds.officialname AS "name", |
|
16 |
ds.englishname AS "alternativeName", |
|
17 |
ds.namespaceprefix AS "prefix", |
|
18 |
ds.websiteurl AS "websiteUrl", |
|
19 |
coalesce((array_agg(o.country))[1], '-') AS "country", |
|
20 |
(array_agg(o.legalname))[1] AS "organization", |
|
21 |
ds.consenttermsofuse AS "consenttermsofuse", |
|
22 |
ds.fulltextdownload AS "fulltextdownload" |
|
23 |
FROM dsm_api a |
|
24 |
LEFT OUTER JOIN dsm_services ds ON (a.service = ds.id) |
|
25 |
LEFT OUTER JOIN dsm_service_organization dsorg ON (ds.id = dsorg.service) |
|
26 |
LEFT OUTER JOIN dsm_organizations o ON (dsorg.organization = o.id) |
|
27 |
WHERE ds.dedup_main_service = true |
|
28 |
GROUP BY |
|
29 |
a.id, |
|
30 |
a.protocol, |
|
31 |
a.compatibility_override, |
|
32 |
a.compatibility, |
|
33 |
a.active, |
|
34 |
a.last_aggregation_date, |
|
35 |
a.last_download_date, |
|
36 |
a.last_collection_date, |
|
37 |
a.last_aggregation_total, |
|
38 |
a.last_download_total, |
|
39 |
a.last_collection_total, |
|
40 |
a.last_aggregation_mdid, |
|
41 |
a.last_download_objid, |
|
42 |
a.last_collection_mdid, |
|
43 |
ds.id, |
|
44 |
ds.officialname, |
|
45 |
ds.englishname, |
|
46 |
ds.namespaceprefix, |
|
47 |
ds.websiteurl, |
|
48 |
ds.consenttermsofuse, |
|
49 |
ds.fulltextdownload, |
|
50 |
eosc_datasource_type |
|
51 |
) AS t WHERE |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/setLastCollectionInfo.sql | ||
---|---|---|
1 |
UPDATE dsm_api |
|
2 |
SET (last_collection_mdid, last_collection_total, last_collection_date) = (:mdId, :total, :date) |
|
3 |
WHERE id = :apiId AND service = :dsId; |
|
4 |
|
|
5 |
UPDATE dsm_api |
|
6 |
SET first_collection_date = :date |
|
7 |
WHERE id = :apiId AND service = :dsId AND first_collection_date IS NULL; |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/dsOrganizationsQuery.sql | ||
---|---|---|
1 |
SELECT |
|
2 |
org.id AS id, |
|
3 |
org.legalshortname AS legalshortname, |
|
4 |
org.legalname AS legalname, |
|
5 |
org.websiteurl AS websiteurl, |
|
6 |
org.logourl AS logourl, |
|
7 |
org.country AS country, |
|
8 |
org.collectedfrom AS collectedfrom, |
|
9 |
org.dateofcollection AS dateofcollection, |
|
10 |
org.provenanceaction AS provenanceaction |
|
11 |
FROM |
|
12 |
dsm_organizations org |
|
13 |
LEFT OUTER JOIN dsm_service_organization dso ON (org.id = dso.organization) |
|
14 |
WHERE |
|
15 |
dso.service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/addDatasource.sql | ||
---|---|---|
1 |
INSERT INTO dsm_services( |
|
2 |
id, |
|
3 |
officialname, |
|
4 |
englishname, |
|
5 |
websiteurl, |
|
6 |
logourl, |
|
7 |
contactemail, |
|
8 |
latitude, |
|
9 |
longitude, |
|
10 |
timezone, |
|
11 |
namespaceprefix, |
|
12 |
languages,--array |
|
13 |
collectedfrom, |
|
14 |
dateofvalidation, |
|
15 |
provenanceaction, |
|
16 |
platform, |
|
17 |
activationid, |
|
18 |
description, |
|
19 |
releasestartdate, |
|
20 |
releaseenddate, |
|
21 |
missionstatementurl, |
|
22 |
databaseaccesstype, |
|
23 |
datauploadtype, |
|
24 |
databaseaccessrestriction, |
|
25 |
datauploadrestriction, |
|
26 |
citationguidelineurl, |
|
27 |
certificates, |
|
28 |
aggregator, |
|
29 |
issn, |
|
30 |
eissn, |
|
31 |
lissn, |
|
32 |
registeredby, |
|
33 |
subjects,--array |
|
34 |
managed, |
|
35 |
eosc_datasource_type, |
|
36 |
eosc_type |
|
37 |
) VALUES ( |
|
38 |
:id, |
|
39 |
:officialname, |
|
40 |
:englishname, |
|
41 |
:websiteurl, |
|
42 |
:logourl, |
|
43 |
:contactemail, |
|
44 |
:latitude, |
|
45 |
:longitude, |
|
46 |
:timezone, |
|
47 |
:namespaceprefix, |
|
48 |
:languages,--array |
|
49 |
:collectedfrom, |
|
50 |
:dateofvalidation, |
|
51 |
:provenanceaction, |
|
52 |
:platform, |
|
53 |
:activationid, |
|
54 |
:description, |
|
55 |
:releasestartdate, |
|
56 |
:releaseenddate, |
|
57 |
:missionstatementurl, |
|
58 |
:databaseaccesstype, |
|
59 |
:datauploadtype, |
|
60 |
:databaseaccessrestriction, |
|
61 |
:datauploadrestriction, |
|
62 |
:citationguidelineurl, |
|
63 |
:certificates, |
|
64 |
:aggregator, |
|
65 |
:issn, |
|
66 |
:eissn, |
|
67 |
:lissn, |
|
68 |
:registeredby, |
|
69 |
:subjects,--array |
|
70 |
:managed, |
|
71 |
:eoscdatasourcetype, |
|
72 |
:eosctype |
|
73 |
) |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/addOrganization.sql | ||
---|---|---|
1 |
BEGIN; |
|
2 |
|
|
3 |
INSERT INTO dsm_organizations( |
|
4 |
id, |
|
5 |
legalshortname, |
|
6 |
legalname, |
|
7 |
websiteurl, |
|
8 |
logourl, |
|
9 |
country, |
|
10 |
collectedfrom |
|
11 |
) VALUES ( |
|
12 |
:orgId, |
|
13 |
:legalshortname, |
|
14 |
:legalname, |
|
15 |
:websiteurl, |
|
16 |
:logourl, |
|
17 |
:country, |
|
18 |
:collectedfrom |
|
19 |
); |
|
20 |
|
|
21 |
INSERT INTO dsm_service_organization( |
|
22 |
service, |
|
23 |
organization |
|
24 |
) VALUES ( |
|
25 |
:dsId, |
|
26 |
:orgId |
|
27 |
); |
|
28 |
|
|
29 |
COMMIT; |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/deleteDatasource.sql | ||
---|---|---|
1 |
BEGIN; |
|
2 |
DELETE FROM dsm_apiparams USING dsm_api WHERE api = dsm_api.id AND api.service = :dsId; |
|
3 |
DELETE FROM api WHERE service = :dsId; |
|
4 |
DELETE FROM dsm_service_organization WHERE service = :dsId; |
|
5 |
DELETE FROM dsm_servicepids WHERE service = :dsId; |
|
6 |
DELETE FROM dsm_services WHERE id = :dsId; |
|
7 |
COMMIT; |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/dsIdentitiesQuery.sql | ||
---|---|---|
1 |
SELECT |
|
2 |
id.pid, |
|
3 |
id.issuertype |
|
4 |
FROM |
|
5 |
dsm_identities id |
|
6 |
LEFT OUTER JOIN dsm_servicepids dp ON (id.pid = dp.pid) |
|
7 |
WHERE |
|
8 |
dp.service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/getDatasource.sql | ||
---|---|---|
1 |
SELECT |
|
2 |
ds.id AS "id", |
|
3 |
ds.officialname AS "officialname", |
|
4 |
ds.englishname AS "englishname", |
|
5 |
ds.websiteurl AS "websiteurl", |
|
6 |
ds.logourl AS "logourl", |
|
7 |
ds.contactemail AS "contactemail", |
|
8 |
ds.latitude AS "latitude", |
|
9 |
ds.longitude AS "longitude", |
|
10 |
ds.timezone AS "timezone", |
|
11 |
ds.namespaceprefix AS "namespaceprefix", |
|
12 |
ds.languages AS "languages", |
|
13 |
ds.collectedfrom AS "collectedfrom", |
|
14 |
ds.dateofvalidation AS "dateofvalidation", |
|
15 |
ds.provenanceaction AS "provenanceaction", |
|
16 |
ds.dateofcollection AS "dateofcollection", |
|
17 |
ds.platform AS "platform", |
|
18 |
ds.activationid AS "activationId", |
|
19 |
ds.description AS "description", |
|
20 |
ds.releasestartdate AS "releasestartdate", |
|
21 |
ds.releaseenddate AS "releaseenddate", |
|
22 |
ds.missionstatementurl AS "missionstatementurl", |
|
23 |
ds.databaseaccesstype AS "databaseaccesstype", |
|
24 |
ds.datauploadtype AS "datauploadtype", |
|
25 |
ds.databaseaccessrestriction AS "databaseaccessrestriction", |
|
26 |
ds.datauploadrestriction AS "datauploadrestriction", |
|
27 |
ds.citationguidelineurl AS "citationguidelineurl", |
|
28 |
ds.certificates AS "certificates", |
|
29 |
ds.aggregator AS "aggregator", |
|
30 |
ds.issn AS "issn", |
|
31 |
ds.eissn AS "eissn", |
|
32 |
ds.lissn AS "lissn", |
|
33 |
ds.registeredby AS "registeredby", |
|
34 |
ds.subjects AS "subjects", |
|
35 |
ds.managed AS "managed", |
|
36 |
ds.consenttermsofuse AS "consenttermsofuse", |
|
37 |
ds.consenttermsofusedate AS "consenttermsofusedate", |
|
38 |
ds.fulltextdownload AS "fulltextdownload", |
|
39 |
ds.eosc_datasource_type AS "eosc_datasource_type", |
|
40 |
ds.status AS "status" |
|
41 |
FROM |
|
42 |
dsm_services ds |
|
43 |
WHERE |
|
44 |
ds.id = :dsId |
|
45 |
AND eosc_datasource_type IS NOT NULL |
|
46 |
AND dedup_main_service = true |
|
47 |
|
|
48 |
|
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/getDatasourceByPrefix.sql | ||
---|---|---|
1 |
SELECT |
|
2 |
ds.id AS "id", |
|
3 |
ds.officialname AS "officialname", |
|
4 |
ds.englishname AS "englishname", |
|
5 |
ds.websiteurl AS "websiteurl", |
|
6 |
ds.logourl AS "logourl", |
|
7 |
ds.contactemail AS "contactemail", |
|
8 |
ds.latitude AS "latitude", |
|
9 |
ds.longitude AS "longitude", |
|
10 |
ds.timezone AS "timezone", |
|
11 |
ds.namespaceprefix AS "namespaceprefix", |
|
12 |
ds.languages AS "languages", |
|
13 |
ds.collectedfrom AS "collectedfrom", |
|
14 |
ds.dateofvalidation AS "dateofvalidation", |
|
15 |
ds.provenanceaction AS "provenanceaction", |
|
16 |
ds.dateofcollection AS "dateofcollection", |
|
17 |
ds.platform AS "platform", |
|
18 |
ds.activationid AS "activationId", |
|
19 |
ds.description AS "description", |
|
20 |
ds.releasestartdate AS "releasestartdate", |
|
21 |
ds.releaseenddate AS "releaseenddate", |
|
22 |
ds.missionstatementurl AS "missionstatementurl", |
|
23 |
ds.databaseaccesstype AS "databaseaccesstype", |
|
24 |
ds.datauploadtype AS "datauploadtype", |
|
25 |
ds.databaseaccessrestriction AS "databaseaccessrestriction", |
|
26 |
ds.datauploadrestriction AS "datauploadrestriction", |
|
27 |
ds.citationguidelineurl AS "citationguidelineurl", |
|
28 |
ds.certificates AS "certificates", |
|
29 |
ds.aggregator AS "aggregator", |
|
30 |
ds.issn AS "issn", |
|
31 |
ds.eissn AS "eissn", |
|
32 |
ds.lissn AS "lissn", |
|
33 |
ds.registeredby AS "registeredby", |
|
34 |
ds.subjects AS "subjects", |
|
35 |
ds.managed AS "managed", |
|
36 |
ds.consenttermsofuse AS "consenttermsofuse", |
|
37 |
ds.consenttermsofusedate AS "consenttermsofusedate", |
|
38 |
ds.fulltextdownload AS "fulltextdownload", |
|
39 |
ds.eosc_datasource_type AS "eosc_datasource_type", |
|
40 |
ds.status AS "status" |
|
41 |
FROM |
|
42 |
dsm_services ds |
|
43 |
WHERE |
|
44 |
ds.namespaceprefix = :prefix |
|
45 |
AND eosc_datasource_type IS NOT NULL |
|
46 |
AND dedup_main_service = true |
|
47 |
|
|
48 |
|
|
49 |
|
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/insertApi.sql | ||
---|---|---|
1 |
INSERT INTO dsm_api( |
|
2 |
id, |
|
3 |
protocol, |
|
4 |
baseurl, |
|
5 |
service, |
|
6 |
contentdescription, |
|
7 |
compatibility, |
|
8 |
metadata_identifier_path, |
|
9 |
removable |
|
10 |
) VALUES ( |
|
11 |
:apiId, |
|
12 |
:protocol, |
|
13 |
:baseUrl, |
|
14 |
:dsId, |
|
15 |
:contentDescription, |
|
16 |
:compatibility, |
|
17 |
:metadataIdentifierPath, |
|
18 |
:removable |
|
19 |
) |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/listApisByDsId.sql | ||
---|---|---|
1 |
SELECT |
|
2 |
a.id AS "id", |
|
3 |
a.protocol AS "protocol", |
|
4 |
a.baseurl AS "baseUrl", |
|
5 |
a.service AS "datasource", |
|
6 |
a.contentdescription AS "contentdescription", |
|
7 |
a.active AS "active", |
|
8 |
a.removable AS "removable", |
|
9 |
coalesce(a.compatibility_override, a.compatibility) AS "compatibility", |
|
10 |
a.compatibility_override IS NOT null AS "isCompatibilityOverrided", |
|
11 |
a.metadata_identifier_path AS "metadataIdentifierPath", |
|
12 |
a.last_collection_total AS "lastCollectionTotal", |
|
13 |
a.last_collection_date AS "lastCollectionDate", |
|
14 |
a.last_collection_mdid AS "lastCollectionMdid", |
|
15 |
a.last_aggregation_total AS "lastAggregationTotal", |
|
16 |
a.last_aggregation_date AS "lastAggregationDate", |
|
17 |
a.last_aggregation_mdid AS "lastAggregationMdid", |
|
18 |
a.last_download_total AS "lastDownloadTotal", |
|
19 |
a.last_download_date AS "lastDownloadDate", |
|
20 |
a.last_download_objid AS "lastDownloadObjid", |
|
21 |
a.last_validation_job AS "lastValidationJob", |
|
22 |
array_agg(p.param || '=' || p.value) AS "params" |
|
23 |
FROM |
|
24 |
dsm_api a |
|
25 |
LEFT OUTER JOIN dsm_apiparams p on (a.id = p.api) |
|
26 |
WHERE |
|
27 |
a.service = :dsId |
|
28 |
GROUP BY |
|
29 |
a.id, |
|
30 |
a.protocol, |
|
31 |
a.baseurl, |
|
32 |
a.service, |
|
33 |
a.contentdescription, |
|
34 |
a.active, |
|
35 |
a.removable, |
|
36 |
a.compatibility_override, |
|
37 |
a.compatibility, |
|
38 |
a.metadata_identifier_path, |
|
39 |
a.last_collection_total, |
|
40 |
a.last_collection_date, |
|
41 |
a.last_collection_mdid, |
|
42 |
a.last_aggregation_total, |
|
43 |
a.last_aggregation_date, |
|
44 |
a.last_aggregation_mdid, |
|
45 |
a.last_download_total, |
|
46 |
a.last_download_date, |
|
47 |
a.last_download_objid, |
|
48 |
a.last_validation_job |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/db_fixes/script.sql | ||
---|---|---|
1 |
alter table dsm_api add column compatibility_override text default NULL; |
|
2 |
|
|
3 |
update dsm_api set removable = true where id in (select api.id from dsm_api api left join dsm_services d on d.id = api.service where d.managed = true and api.removable=false); |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/java/eu/dnetlib/enabling/datasources/LocalOpenaireDatasourceManagerImpl.java | ||
---|---|---|
1 |
package eu.dnetlib.enabling.datasources; |
|
2 |
|
|
3 |
import java.io.StringWriter; |
|
4 |
import java.util.ArrayList; |
|
5 |
import java.util.Date; |
|
6 |
import java.util.HashMap; |
|
7 |
import java.util.HashSet; |
|
8 |
import java.util.List; |
|
9 |
import java.util.Map; |
|
10 |
import java.util.Optional; |
|
11 |
import java.util.Set; |
|
12 |
import java.util.stream.Collectors; |
|
13 |
|
|
14 |
import org.apache.commons.io.IOUtils; |
|
15 |
import org.apache.commons.lang3.StringUtils; |
|
16 |
import org.apache.commons.lang3.math.NumberUtils; |
|
17 |
import org.apache.commons.logging.Log; |
|
18 |
import org.apache.commons.logging.LogFactory; |
|
19 |
import org.springframework.beans.factory.annotation.Required; |
|
20 |
import org.springframework.core.io.ClassPathResource; |
|
21 |
import org.springframework.core.io.Resource; |
|
22 |
import org.springframework.transaction.annotation.Transactional; |
|
23 |
|
|
24 |
import com.google.common.collect.ImmutableMap; |
|
25 |
|
|
26 |
import eu.dnetlib.enabling.datasources.common.Api; |
|
27 |
import eu.dnetlib.enabling.datasources.common.ApiParam; |
|
28 |
import eu.dnetlib.enabling.datasources.common.BrowsableField; |
|
29 |
import eu.dnetlib.enabling.datasources.common.BrowseTerm; |
|
30 |
import eu.dnetlib.enabling.datasources.common.BrowseTermImpl; |
|
31 |
import eu.dnetlib.enabling.datasources.common.Datasource; |
|
32 |
import eu.dnetlib.enabling.datasources.common.DsmException; |
|
33 |
import eu.dnetlib.enabling.datasources.common.DsmForbiddenException; |
|
34 |
import eu.dnetlib.enabling.datasources.common.DsmNotFoundException; |
|
35 |
import eu.dnetlib.enabling.datasources.common.DsmRuntimeException; |
|
36 |
import eu.dnetlib.enabling.datasources.common.Identity; |
|
37 |
import eu.dnetlib.enabling.datasources.common.Organization; |
|
38 |
import eu.dnetlib.enabling.datasources.common.PidSystem; |
|
39 |
import eu.dnetlib.enabling.datasources.common.SearchApisEntry; |
|
40 |
import eu.dnetlib.enabling.datasources.common.SimpleDatasource; |
|
41 |
|
|
42 |
public class LocalOpenaireDatasourceManagerImpl implements LocalOpenaireDatasourceManager { |
|
43 |
|
|
44 |
private DatasourceManagerClients datasourceManagerClients; |
|
45 |
|
|
46 |
private List<DbBrowsableField> browsableFields; |
|
47 |
|
|
48 |
public static final String QUERY_BASEDIR = "/eu/dnetlib/enabling/datasources/queries/"; |
|
49 |
|
|
50 |
private static final Resource searchDsByType = new ClassPathResource(QUERY_BASEDIR + "searchDsByType.sql"); |
|
51 |
private static final Resource searchApis = new ClassPathResource(QUERY_BASEDIR + "searchApisNormal.sql"); |
|
52 |
private static final Resource searchApisUsingField = new ClassPathResource(QUERY_BASEDIR + "searchApisUsingField.sql"); |
|
53 |
private static final Resource addDs = new ClassPathResource(QUERY_BASEDIR + "addDatasource.sql"); |
|
54 |
private static final Resource addOrg = new ClassPathResource(QUERY_BASEDIR + "addOrganization.sql"); |
|
55 |
private static final Resource deleteDs = new ClassPathResource(QUERY_BASEDIR + "deleteDatasource.sql"); |
|
56 |
private static final Resource setActive = new ClassPathResource(QUERY_BASEDIR + "setActive.sql"); |
|
57 |
private static final Resource setManaged = new ClassPathResource(QUERY_BASEDIR + "setManaged.sql"); |
|
58 |
private static final Resource setCompliance = new ClassPathResource(QUERY_BASEDIR + "setCompliance.sql"); |
|
59 |
private static final Resource overrideCompliance = new ClassPathResource(QUERY_BASEDIR + "overrideCompliance.sql"); |
|
60 |
private static final Resource resetCompliance = new ClassPathResource(QUERY_BASEDIR + "resetCompliance.sql"); |
|
61 |
private static final Resource setLastCollectionInfo = new ClassPathResource(QUERY_BASEDIR + "setLastCollectionInfo.sql"); |
|
62 |
private static final Resource setLastAggregationInfo = new ClassPathResource(QUERY_BASEDIR + "setLastAggregationInfo.sql"); |
|
63 |
private static final Resource setLastDownloadInfo = new ClassPathResource(QUERY_BASEDIR + "setLastDownloadInfo.sql"); |
|
64 |
private static final Resource setLastValidationJob = new ClassPathResource(QUERY_BASEDIR + "setLastValidationJob.sql"); |
|
65 |
private static final Resource resetLastOperationsInfo = new ClassPathResource(QUERY_BASEDIR + "resetLastOperationsInfo.sql"); |
|
66 |
private static final Resource insertApiParam = new ClassPathResource(QUERY_BASEDIR + "insertApiParam.sql"); |
|
67 |
private static final Resource insertApi = new ClassPathResource(QUERY_BASEDIR + "insertApi.sql"); |
|
68 |
private static final Resource setRemovable = new ClassPathResource(QUERY_BASEDIR + "setRemovable.sql"); |
|
69 |
|
|
70 |
private static final Log log = LogFactory.getLog(LocalOpenaireDatasourceManagerImpl.class); |
|
71 |
|
|
72 |
@Override |
|
73 |
@Transactional(readOnly = true) |
|
74 |
public Set<String> listManagedDatasourceIds() throws DsmRuntimeException { |
|
75 |
try { |
|
76 |
return datasourceManagerClients.searchSQL("SELECT id FROM dsm_services WHERE managed = true", new HashMap<>()) |
|
77 |
.stream() |
|
78 |
.map(m -> (String) m.get("id")) |
|
79 |
.collect(Collectors.toCollection(HashSet::new)); |
|
80 |
} catch (final DsmException e) { |
|
81 |
throw new DsmRuntimeException(e); |
|
82 |
} |
|
83 |
} |
|
84 |
|
|
85 |
@Override |
|
86 |
@Transactional(readOnly = true) |
|
87 |
public List<SimpleDatasource> searchDatasourcesByType(final String type) throws DsmException { |
|
88 |
|
|
89 |
return datasourceManagerClients.searchSQL(searchDsByType, ImmutableMap.of("type", type)) |
|
90 |
.stream() |
|
91 |
.map(DatasourceFunctions::mapToSimpleDs) |
|
92 |
.collect(Collectors.toList()); |
|
93 |
} |
|
94 |
|
|
95 |
@Override |
|
96 |
@Transactional(readOnly = true) |
|
97 |
public List<? extends SearchApisEntry> searchApis(final String field, final Object value) throws DsmException { |
|
98 |
try { |
|
99 |
final StringWriter sql = new StringWriter(); |
|
100 |
|
|
101 |
final Map<String, Object> params = new HashMap<>(); |
|
102 |
if (field != null && value != null) { |
|
103 |
if (field.equalsIgnoreCase("__search__")) { |
|
104 |
params.put("value", "%" + value + "%"); |
|
105 |
sql.append(IOUtils.toString(searchApis.getInputStream())); |
|
106 |
} else { |
|
107 |
sql.append(IOUtils.toString(searchApisUsingField.getInputStream())); |
|
108 |
|
|
109 |
if (field.equalsIgnoreCase("collbackend")) { |
|
110 |
sql.append("\"collMdId\" is not null and \"collMdId\" != '' and \"collMdId\" "); |
|
111 |
if (StringUtils.equalsIgnoreCase(value.toString(), MDStoreBackend.HDFS.toString())) { |
|
112 |
sql.append("like 'md-%' and length(\"collMdId\") <= 40"); |
|
113 |
} else { |
|
114 |
// MONGO |
|
115 |
sql.append("not like 'md-%' and length(\"collMdId\") > 40"); |
|
116 |
} |
|
117 |
} else { |
|
118 |
params.put("value", value); |
|
119 |
sql.append(field); |
|
120 |
sql.append("::text = "); |
|
121 |
sql.append(":value"); |
|
122 |
} |
|
123 |
} |
|
124 |
|
|
125 |
return datasourceManagerClients.searchSQL(sql.toString(), params) |
|
126 |
.stream() |
|
127 |
.map(DatasourceFunctions::mapToSearchApisEntry) |
|
128 |
.collect(Collectors.toList()); |
|
129 |
} |
|
130 |
} catch (final Exception e) { |
|
131 |
log.error("Error searching field " + field + " - value: " + value, e); |
|
132 |
} |
|
133 |
return new ArrayList<>(); |
|
134 |
} |
|
135 |
|
|
136 |
@Override |
|
137 |
@Transactional |
|
138 |
public void saveDs(final Datasource<Organization<?>, Identity, PidSystem> ds) throws DsmException { |
|
139 |
|
|
140 |
if (StringUtils.isBlank(ds.getAggregator())) { |
|
141 |
ds.setAggregator("OPENAIRE"); |
|
142 |
} |
|
143 |
|
|
144 |
ds.setManaged(true); |
|
145 |
|
|
146 |
datasourceManagerClients.updateSQL(ds.getId(), addDs, DatasourceFunctions.dsToMap(ds)); |
|
147 |
|
|
148 |
if (ds.getOrganizations() != null) { |
|
149 |
for (final Organization<?> org : ds.getOrganizations()) { |
|
150 |
final Map<String, Object> orgParams = DatasourceFunctions.orgToMap(ds.getId(), org); |
|
151 |
datasourceManagerClients.updateSQL(ds.getId(), addOrg, orgParams); |
|
152 |
} |
|
153 |
} |
|
154 |
final Map<String, Object> params = new HashMap<>(); |
|
155 |
params.put("removable", true); |
|
156 |
params.put("dsId", ds.getId()); |
|
157 |
datasourceManagerClients.updateSQL(ds.getId(), setRemovable, params); |
|
158 |
} |
|
159 |
|
|
160 |
@Override |
|
161 |
@Transactional |
|
162 |
public void deleteDs(final String dsId) throws DsmException { |
|
163 |
datasourceManagerClients.updateSQL(dsId, deleteDs, ImmutableMap.of("dsId", dsId)); |
|
164 |
} |
|
165 |
|
|
166 |
@Override |
|
167 |
public Datasource<Organization<?>, Identity, PidSystem> getDs(final String dsId) throws DsmException { |
|
168 |
return datasourceManagerClients.getDatasourceById(dsId); |
|
169 |
} |
|
170 |
|
|
171 |
@Override |
|
172 |
public Datasource<Organization<?>, Identity, PidSystem> getDsByNsPrefix(final String prefix) throws DsmException { |
|
173 |
return datasourceManagerClients.getDatasourceByPrefix(prefix); |
|
174 |
} |
|
175 |
|
|
176 |
@Override |
|
177 |
public List<Api<ApiParam>> getApis(final String dsId) throws DsmException { |
|
178 |
return datasourceManagerClients.getApis(dsId); |
|
179 |
} |
|
180 |
|
|
181 |
@Override |
|
182 |
public void setManaged(final String dsId, final boolean managed) throws DsmException { |
|
183 |
final String id = dsId; |
|
184 |
|
|
185 |
final Map<String, Object> params = new HashMap<>(); |
|
186 |
params.put("managed", managed); |
|
187 |
params.put("dsId", id); |
|
188 |
|
|
189 |
datasourceManagerClients.updateSQL(id, setManaged, params); |
|
190 |
|
|
191 |
params.clear(); |
|
192 |
params.put("removable", true); |
|
193 |
params.put("dsId", id); |
|
194 |
|
|
195 |
datasourceManagerClients.updateSQL(id, setRemovable, params); |
|
196 |
|
|
197 |
} |
|
198 |
|
|
199 |
@Override |
|
200 |
public boolean isManaged(final String dsId) throws DsmException { |
|
201 |
final String q = "SELECT id from dsm_services WHERE id = :dsId AND managed = true"; |
|
202 |
return !datasourceManagerClients.searchSQL(q, ImmutableMap.of("dsId", dsId)).isEmpty(); |
|
203 |
} |
|
204 |
|
|
205 |
@Override |
|
206 |
@Transactional |
|
207 |
public void setActive(final String dsId, final String apiId, final boolean active) throws DsmException { |
|
208 |
final String id = dsId; |
|
209 |
|
|
210 |
final Map<String, Object> params = new HashMap<>(); |
|
211 |
params.put("active", active); |
|
212 |
params.put("apiId", apiId); |
|
213 |
params.put("dsId", id); |
|
214 |
|
|
215 |
datasourceManagerClients.updateSQL(id, setActive, params); |
|
216 |
if (!active) { |
|
217 |
datasourceManagerClients.updateSQL(dsId, resetLastOperationsInfo, params); |
|
218 |
} |
|
219 |
|
|
220 |
setManaged(id, true); |
|
221 |
} |
|
222 |
|
|
223 |
@Override |
|
224 |
@Transactional(readOnly = true) |
|
225 |
public boolean isActive(final String dsId, final String apiId) throws DsmException { |
|
226 |
final String q = "SELECT * from dsm_api WHERE id = :apiId AND service = :dsId AND active = true"; |
|
227 |
return !datasourceManagerClients.searchSQL(q, ImmutableMap.of("dsId", dsId, "apiId", apiId)).isEmpty(); |
|
228 |
} |
|
229 |
|
|
230 |
@Override |
|
231 |
@Transactional(readOnly = true) |
|
232 |
public boolean isRemovable(final String dsId, final String apiId) throws DsmException { |
|
233 |
final String q = "SELECT * from dsm_api WHERE id = :apiId AND service = :dsId AND active != true AND removable = true"; |
|
234 |
return !datasourceManagerClients.searchSQL(q, ImmutableMap.of("dsId", dsId, "apiId", apiId)).isEmpty(); |
|
235 |
} |
|
236 |
|
|
237 |
@Override |
|
238 |
@Transactional |
|
239 |
public void updateCompliance(final String dsId, final String apiId, final String level, final boolean override) throws DsmException { |
|
240 |
final String id = dsId; |
|
241 |
|
|
242 |
if (!override) { |
|
243 |
datasourceManagerClients.updateSQL(id, setCompliance, ImmutableMap.of("level", level, "apiId", apiId, "dsId", id)); |
|
244 |
} else if (level != null) { |
|
245 |
datasourceManagerClients.updateSQL(id, overrideCompliance, ImmutableMap.of("level", level, "apiId", apiId, "dsId", id)); |
|
246 |
} else { |
|
247 |
datasourceManagerClients.updateSQL(id, resetCompliance, ImmutableMap.of("apiId", apiId, "dsId", id)); |
|
248 |
} |
|
249 |
|
|
250 |
setManaged(id, true); |
|
251 |
} |
|
252 |
|
|
253 |
@Override |
|
254 |
public void setLastCollectionInfo(final String dsId, final String apiId, final String mdId, final Integer size, final Date date) |
|
255 |
throws DsmException { |
|
256 |
setLastOperationInfo(setLastCollectionInfo, dsId, apiId, mdId, size, date); |
|
257 |
} |
|
258 |
|
|
259 |
@Override |
|
260 |
public void setLastAggregationInfo(final String dsId, final String apiId, final String mdId, final Integer size, final Date date) |
|
261 |
throws DsmException { |
|
262 |
setLastOperationInfo(setLastAggregationInfo, dsId, apiId, mdId, size, date); |
|
263 |
} |
|
264 |
|
|
265 |
@Override |
|
266 |
public void setLastDownloadInfo(final String dsId, final String apiId, final String objId, final Integer size, final Date date) |
|
267 |
throws DsmException { |
|
268 |
setLastOperationInfo(setLastDownloadInfo, dsId, apiId, objId, size, date); |
|
269 |
} |
|
270 |
|
|
271 |
@Override |
|
272 |
public void setLastValidationJob(final String dsId, final String apiId, final String jobId) throws DsmException { |
|
273 |
final Map<String, Object> params = new HashMap<>(); |
|
274 |
params.put("dsId", dsId); |
|
275 |
params.put("apiId", apiId); |
|
276 |
params.put("jobId", jobId); |
|
277 |
|
|
278 |
datasourceManagerClients.updateSQL(dsId, setLastValidationJob, params); |
|
279 |
setManaged(dsId, true); |
|
280 |
} |
|
281 |
|
|
282 |
@Transactional |
|
283 |
protected void setLastOperationInfo(final Resource sqlResource, |
|
284 |
final String dsId, |
|
285 |
final String apiId, |
|
286 |
final String mdId, |
|
287 |
final Integer size, |
|
288 |
final Date date) |
|
289 |
throws DsmException { |
|
290 |
final Map<String, Object> params = new HashMap<>(); |
|
291 |
params.put("dsId", dsId); |
|
292 |
params.put("apiId", apiId); |
|
293 |
params.put("mdId", mdId); |
|
294 |
params.put("total", size); |
|
295 |
if (date != null) { |
|
296 |
params.put("date", new java.sql.Timestamp(date.getTime())); |
|
297 |
} |
|
298 |
|
|
299 |
datasourceManagerClients.updateSQL(dsId, sqlResource, params); |
|
300 |
|
|
301 |
setManaged(dsId, true); |
|
302 |
} |
|
303 |
|
|
304 |
@Override |
|
305 |
@Transactional |
|
306 |
public void updateApiDetails(final String dsId, |
|
307 |
final String apiId, |
|
308 |
final String metadataIdentifierPath, |
|
309 |
final String baseUrl, |
|
310 |
final Map<String, String> params) |
|
311 |
throws DsmException { |
|
312 |
|
|
313 |
final String id = dsId; |
|
314 |
|
|
315 |
// Delete old params |
|
316 |
datasourceManagerClients.updateSQL(id, "DELETE FROM dsm_apiparams WHERE api = :api", ImmutableMap.of("api", apiId)); |
|
317 |
|
|
318 |
// Insert new params |
|
319 |
for (final Map.Entry<String, String> e : params.entrySet()) { |
|
320 |
final Map<String, Object> sqlParams = ImmutableMap.of("param", e.getKey(), "value", e.getValue(), "api", apiId); |
|
321 |
datasourceManagerClients.updateSQL(id, insertApiParam, sqlParams); |
|
322 |
} |
|
323 |
|
|
324 |
// Update the BaseURL |
|
325 |
datasourceManagerClients |
|
326 |
.updateSQL(id, "UPDATE dsm_api SET baseurl = :baseurl WHERE id = :api", ImmutableMap.of("baseurl", baseUrl, "api", apiId)); |
|
327 |
|
|
328 |
// Update the metadata_identifier_path |
|
329 |
datasourceManagerClients.updateSQL(id, "UPDATE dsm_api SET metadata_identifier_path = :path WHERE id = :api", ImmutableMap |
|
330 |
.of("path", metadataIdentifierPath, "api", apiId)); |
|
331 |
|
|
332 |
setManaged(id, true); |
|
333 |
} |
|
334 |
|
|
335 |
@Override |
|
336 |
public List<? extends BrowsableField> listBrowsableFields() throws DsmException { |
|
337 |
return getBrowsableFields(); |
|
338 |
} |
|
339 |
|
|
340 |
@Override |
|
341 |
public List<BrowseTerm> browseField(final String field) throws DsmException { |
|
342 |
final Optional<DbBrowsableField> bf = getBrowsableFields() |
|
343 |
.stream() |
|
344 |
.filter(f -> f.getId().equals(field)) |
|
345 |
.findFirst(); |
|
346 |
|
|
347 |
if (bf.isPresent()) { |
|
348 |
return datasourceManagerClients.searchSQL(bf.get().getSql(), new HashMap<>()) |
|
349 |
.stream() |
|
350 |
.filter(m -> m.get("term") != null) |
|
351 |
.filter(m -> m.get("count") != null) |
|
352 |
.filter(m -> StringUtils.isNotBlank(m.get("term").toString())) |
|
353 |
.map(m -> new BrowseTermImpl(m.get("term").toString(), NumberUtils.toInt(m.get("count").toString(), 0))) |
|
354 |
.collect(Collectors.toList()); |
|
355 |
} else { |
|
356 |
log.error("Not browsable field:" + field); |
|
357 |
throw new DsmException("Not browsable field:" + field); |
|
358 |
} |
|
359 |
} |
|
360 |
|
|
361 |
@Override |
|
362 |
@Transactional |
|
363 |
public void addApi(final Api<ApiParam> api) throws DsmException { |
|
364 |
|
|
365 |
datasourceManagerClients.updateSQL(api.getDatasource(), insertApi, DatasourceFunctions.apiToMap(api)); |
|
366 |
|
|
367 |
if (api.getApiParams() != null) { |
|
368 |
api.getApiParams().forEach(p -> { |
|
369 |
final ImmutableMap<String, Object> sqlParams = ImmutableMap.of("param", p.getParam(), "value", p.getValue(), "api", api.getId()); |
|
370 |
try { |
|
371 |
datasourceManagerClients.updateSQL(api.getDatasource(), insertApiParam, sqlParams); |
|
372 |
} catch (final DsmException e) { |
|
373 |
throw new RuntimeException(e); |
|
374 |
} |
|
375 |
}); |
|
376 |
} |
|
377 |
|
|
378 |
setManaged(api.getDatasource(), true); |
|
379 |
} |
|
380 |
|
|
381 |
@Override |
|
382 |
@Transactional |
|
383 |
public void deleteApi(final String dsId, final String apiId) throws DsmForbiddenException, DsmNotFoundException { |
|
384 |
try { |
|
385 |
if (!isRemovable(dsId, apiId)) { throw new DsmForbiddenException("The api " + apiId + " can't be deleted"); } |
|
386 |
|
|
387 |
datasourceManagerClients.updateSQL(dsId, "DELETE FROM dsm_apiparams WHERE api = :api", ImmutableMap.of("api", apiId)); |
|
388 |
datasourceManagerClients.updateSQL(dsId, "DELETE FROM dsm_api WHERE id = :api", ImmutableMap.of("api", apiId)); |
|
389 |
|
|
390 |
setManaged(dsId, true); |
|
391 |
} catch (final Exception e) { |
|
392 |
throw new DsmForbiddenException("The api " + apiId + " can't be deleted"); |
|
393 |
} |
|
394 |
} |
|
395 |
|
|
396 |
public DatasourceManagerClients getDatasourceManagerClients() { |
|
397 |
return datasourceManagerClients; |
|
398 |
} |
|
399 |
|
|
400 |
@Required |
|
401 |
public void setDatasourceManagerClients(final DatasourceManagerClients datasourceManagerClients) { |
|
402 |
this.datasourceManagerClients = datasourceManagerClients; |
|
403 |
} |
|
404 |
|
|
405 |
public List<DbBrowsableField> getBrowsableFields() { |
|
406 |
return browsableFields; |
|
407 |
} |
|
408 |
|
|
409 |
@Required |
|
410 |
public void setBrowsableFields(final List<DbBrowsableField> browsableFields) { |
|
411 |
this.browsableFields = browsableFields; |
|
412 |
} |
|
413 |
|
|
414 |
@Override |
|
415 |
@Deprecated |
|
416 |
public void regenerateProfiles() throws DsmException {} |
|
417 |
|
|
418 |
@Override |
|
419 |
public void updateTickets(final String dsId, final Set<Integer> tickets) throws DsmException { |
|
420 |
datasourceManagerClients.updateSQL(dsId, "DELETE FROM dsm_tickets WHERE service = :service", ImmutableMap.of("service", dsId)); |
|
421 |
|
|
422 |
for (final Integer t : tickets) { |
|
423 |
datasourceManagerClients |
|
424 |
.updateSQL(dsId, "INSERT INTO dsm_tickets (service, ticket) VALUES (:service, :ticket)", ImmutableMap.of("service", dsId, "ticket", t)); |
|
425 |
} |
|
426 |
} |
|
427 |
|
|
428 |
@Override |
|
429 |
public Set<Integer> listTickets(final String dsId) throws DsmException { |
|
430 |
return datasourceManagerClients.searchSQL("select ticket from dsm_tickets where service = :service", ImmutableMap.of("service", dsId)) |
|
431 |
.stream() |
|
432 |
.map(r -> r.get("ticket")) |
|
433 |
.filter(n -> n instanceof Integer) |
|
434 |
.map(n -> (Integer) n) |
|
435 |
.collect(Collectors.toSet()); |
|
436 |
} |
|
437 |
|
|
438 |
} |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/java/eu/dnetlib/enabling/datasources/MDStoreBackend.java | ||
---|---|---|
1 |
package eu.dnetlib.enabling.datasources; |
|
2 |
|
|
3 |
public enum MDStoreBackend { |
|
4 |
MONGO, |
|
5 |
HDFS |
|
6 |
} |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/deploy.info | ||
---|---|---|
1 |
{"type_source": "SVN", "goal": "package -U -T 4C source:jar", "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-openaire-datasource-manager/trunk/", "deploy_repository": "dnet45-snapshots", "version": "4", "mail": "sandro.labruzzo@isti.cnr.it,michele.artini@isti.cnr.it, claudio.atzori@isti.cnr.it, alessia.bardi@isti.cnr.it", "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet45-snapshots", "name": "dnet-openaire-datasource-manager"} |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/overrideCompliance.sql | ||
---|---|---|
1 |
UPDATE dsm_api SET compatibility_override = :level WHERE id = :apiId AND service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/resetCompliance.sql | ||
---|---|---|
1 |
UPDATE dsm_api SET compatibility_override = NULL WHERE id = :apiId AND service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/resetLastOperationsInfo.sql | ||
---|---|---|
1 |
UPDATE dsm_api |
|
2 |
SET (last_aggregation_mdid, last_aggregation_total, last_aggregation_date, last_collection_mdid, last_collection_total, last_collection_date, last_download_objid, last_download_total, last_download_date) = (null, null, null, null, null, null, null, null, null) |
|
3 |
WHERE id = :apiId AND service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/searchDsByType.sql | ||
---|---|---|
1 |
SELECT |
|
2 |
ds.id AS id, |
|
3 |
ds.officialname AS name, |
|
4 |
ds.eosc_datasource_type AS eosc_datasource_type, |
|
5 |
array_agg(a.id) AS apis |
|
6 |
FROM |
|
7 |
dsm_services ds |
|
8 |
LEFT OUTER JOIN dsm_api a ON (ds.id = a.service) |
|
9 |
WHERE |
|
10 |
ds.eosc_datasource_type = :type AND ds.dedup_main_service = true |
|
11 |
GROUP BY |
|
12 |
ds.id, ds.officialname, ds.eosc_datasource_type |
|
13 |
ORDER BY |
|
14 |
ds.officialname |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/setActive.sql | ||
---|---|---|
1 |
UPDATE dsm_api SET active = :active WHERE id = :apiId AND service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/setCompliance.sql | ||
---|---|---|
1 |
UPDATE dsm_api SET compatibility = :level WHERE id = :apiId AND service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/setLastAggregationInfo.sql | ||
---|---|---|
1 |
UPDATE dsm_api |
|
2 |
SET (last_aggregation_mdid, last_aggregation_total, last_aggregation_date) = (:mdId, :total, :date) |
|
3 |
WHERE id = :apiId AND service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/setLastDownloadInfo.sql | ||
---|---|---|
1 |
UPDATE dsm_api |
|
2 |
SET (last_download_objid, last_download_total, last_download_date) = (:mdId, :total, :date) |
|
3 |
WHERE id = :apiId AND service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/setLastValidationJob.sql | ||
---|---|---|
1 |
UPDATE dsm_api |
|
2 |
SET (last_validation_job) = (:jobId) |
|
3 |
WHERE id = :apiId AND service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/setManaged.sql | ||
---|---|---|
1 |
UPDATE dsm_services SET managed = :managed WHERE id = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/setRemovable.sql | ||
---|---|---|
1 |
UPDATE dsm_api SET removable = :removable WHERE service = :dsId |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/queries/insertApiParam.sql | ||
---|---|---|
1 |
INSERT INTO dsm_apiparams(param, value, api) VALUES (:param, :value, :api) |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/eu/dnetlib/enabling/datasources/applicationContext-dnet-openaire-datasource-manager.xml | ||
---|---|---|
1 |
<?xml version="1.0" encoding="UTF-8"?> |
|
2 |
<beans xmlns="http://www.springframework.org/schema/beans" |
|
3 |
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" |
|
4 |
xmlns:sec="http://cxf.apache.org/configuration/security" xmlns:wsa="http://cxf.apache.org/ws/addressing" |
|
5 |
xmlns:p="http://www.springframework.org/schema/p" xmlns:http="http://cxf.apache.org/transports/http/configuration" |
|
6 |
xmlns:t="http://dnetlib.eu/springbeans/t" xmlns:template="http://dnetlib.eu/springbeans/template" |
|
7 |
xmlns:util="http://www.springframework.org/schema/util" |
|
8 |
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd |
|
9 |
http://cxf.apache.org/ws/addressing http://cxf.apache.org/schemas/ws-addr-conf.xsd |
|
10 |
http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd |
|
11 |
http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd |
|
12 |
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd |
|
13 |
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd |
|
14 |
http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"> |
|
15 |
|
|
16 |
<bean id="localOpenaireDatasourceManager" |
|
17 |
class="eu.dnetlib.enabling.datasources.LocalOpenaireDatasourceManagerImpl" |
|
18 |
p:datasourceManagerClients-ref="datasourceManagerClients"> |
|
19 |
<property name="browsableFields"> |
|
20 |
<list> |
|
21 |
<bean class="eu.dnetlib.enabling.datasources.DbBrowsableField" |
|
22 |
p:id="country" p:label="Datasource countries" |
|
23 |
p:sql="select o.country as term, count(*) as count from dsm_api a left outer join dsm_services d on (a.service = d.id) left outer join dsm_service_organization dao on (d.id = dao.service) left outer join dsm_organizations o on (dao.organization = o.id) group by o.country order by count desc" /> |
|
24 |
<bean class="eu.dnetlib.enabling.datasources.DbBrowsableField" |
|
25 |
p:id="type" p:label="API typologies" |
|
26 |
p:sql="select d.eosc_datasource_type as term, count(*) as count from dsm_api a left outer join dsm_services d on (a.service = d.id) group by d.eosc_datasource_type order by count desc" /> |
|
27 |
<bean class="eu.dnetlib.enabling.datasources.DbBrowsableField" |
|
28 |
p:id="protocol" p:label="API protocols" |
|
29 |
p:sql="select a.protocol as term, count(*) as count from dsm_api a group by a.protocol order by count desc" /> |
|
30 |
<bean class="eu.dnetlib.enabling.datasources.DbBrowsableField" |
|
31 |
p:id="compliance" p:label="API compatibility levels" |
|
32 |
p:sql="select coalesce(a.compatibility_override, a.compatibility) as term, count(*) as count from dsm_api a group by coalesce(a.compatibility_override, a.compatibility) order by count desc" /> |
|
33 |
<bean class="eu.dnetlib.enabling.datasources.DbBrowsableField" |
|
34 |
p:id="active" p:label="API activation" |
|
35 |
p:sql="select a.active as term, count(*) as count from dsm_api a group by a.active order by count desc" /> |
|
36 |
<bean class="eu.dnetlib.enabling.datasources.DbBrowsableField" |
|
37 |
p:id="consenttermsofuse" p:label="Consent terms of use" |
|
38 |
p:sql="select d.consenttermsofuse as term, count(*) as count from dsm_api a left outer join dsm_services d on (a.service = d.id) group by d.consenttermsofuse order by count desc" /> |
|
39 |
<bean class="eu.dnetlib.enabling.datasources.DbBrowsableField" |
|
40 |
p:id="fulltextdownload" p:label="Fulltext download" |
|
41 |
p:sql="select d.fulltextdownload as term, count(*) as count from dsm_api a left outer join dsm_services d on (a.service = d.id) group by d.fulltextdownload order by count desc" /> |
|
42 |
<bean class="eu.dnetlib.enabling.datasources.DbBrowsableField" |
|
43 |
p:id="collbackend" p:label="Last Collection Backend" |
|
44 |
p:sql="select t.term, count(*) from (select CASE WHEN last_collection_mdid LIKE 'md-%' and length(last_collection_mdid) <= 40 THEN 'HDFS' ELSE 'MONGO' END as term from dsm_api where last_collection_mdid is not null) as t group by t.term order by count desc" /> |
|
45 |
</list> |
|
46 |
</property> |
|
47 |
</bean> |
|
48 |
|
|
49 |
<bean id="datasourceManagerClients" |
|
50 |
class="eu.dnetlib.enabling.datasources.DatasourceManagerClients"> |
|
51 |
<property name="jdbcTemplate"> |
|
52 |
<bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> |
|
53 |
<constructor-arg> |
|
54 |
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" |
|
55 |
p:driverClassName="org.postgresql.Driver" p:url="${dnet.openaire.db.url}" |
|
56 |
p:username="${dnet.openaire.db.username}" p:password="${dnet.openaire.db.password}" /> |
|
57 |
</constructor-arg> |
|
58 |
</bean> |
|
59 |
</property> |
|
60 |
</bean> |
|
61 |
|
|
62 |
</beans> |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/resources/db_fixes/tickets.sql | ||
---|---|---|
1 |
CREATE TABLE dsm_tickets( |
|
2 |
service text REFERENCES dsm_services(id) ON DELETE CASCADE, |
|
3 |
ticket integer, |
|
4 |
PRIMARY KEY (service, ticket) |
|
5 |
); |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/java/eu/dnetlib/enabling/datasources/LocalOpenaireDatasourceManager.java | ||
---|---|---|
1 |
package eu.dnetlib.enabling.datasources; |
|
2 |
|
|
3 |
import java.util.Set; |
|
4 |
|
|
5 |
import eu.dnetlib.enabling.datasources.common.Api; |
|
6 |
import eu.dnetlib.enabling.datasources.common.ApiParam; |
|
7 |
import eu.dnetlib.enabling.datasources.common.Datasource; |
|
8 |
import eu.dnetlib.enabling.datasources.common.DsmException; |
|
9 |
import eu.dnetlib.enabling.datasources.common.Identity; |
|
10 |
import eu.dnetlib.enabling.datasources.common.LocalDatasourceManager; |
|
11 |
import eu.dnetlib.enabling.datasources.common.Organization; |
|
12 |
import eu.dnetlib.enabling.datasources.common.PidSystem; |
|
13 |
|
|
14 |
public interface LocalOpenaireDatasourceManager extends LocalDatasourceManager<Datasource<Organization<?>, Identity, PidSystem>, Api<ApiParam>> { |
|
15 |
|
|
16 |
void updateTickets(String dsId, Set<Integer> tickets) throws DsmException; |
|
17 |
|
|
18 |
Set<Integer> listTickets(String dsId) throws DsmException; |
|
19 |
|
|
20 |
} |
modules/dnet-openaire-datasource-manager/tags/dnet-openaire-datasource-manager-2.1.0/src/main/java/eu/dnetlib/enabling/datasources/DatasourceFunctions.java | ||
---|---|---|
1 |
package eu.dnetlib.enabling.datasources; |
|
2 |
|
|
3 |
import java.sql.Array; |
|
4 |
import java.sql.Date; |
|
5 |
import java.sql.SQLException; |
|
6 |
import java.sql.Timestamp; |
|
7 |
import java.util.Arrays; |
|
8 |
import java.util.HashMap; |
|
9 |
import java.util.Map; |
|
10 |
import java.util.Objects; |
|
11 |
import java.util.stream.Collectors; |
|
12 |
|
|
13 |
import org.apache.commons.lang3.StringUtils; |
|
14 |
import org.apache.commons.logging.Log; |
|
15 |
import org.apache.commons.logging.LogFactory; |
|
16 |
|
|
17 |
import eu.dnetlib.enabling.datasources.common.Api; |
|
18 |
import eu.dnetlib.enabling.datasources.common.ApiParam; |
|
19 |
import eu.dnetlib.enabling.datasources.common.ApiParamImpl; |
|
20 |
import eu.dnetlib.enabling.datasources.common.Datasource; |
|
21 |
import eu.dnetlib.enabling.datasources.common.Identity; |
|
22 |
import eu.dnetlib.enabling.datasources.common.Organization; |
|
23 |
import eu.dnetlib.enabling.datasources.common.PidSystem; |
|
24 |
import eu.dnetlib.enabling.datasources.common.SearchApisEntry; |
|
25 |
import eu.dnetlib.enabling.datasources.common.SimpleDatasource; |
|
26 |
|
|
27 |
public class DatasourceFunctions { |
|
28 |
|
|
29 |
private static final String EOSC_DATA_SOURCE = "Data Source"; |
|
30 |
|
|
31 |
private static final Log log = LogFactory.getLog(DatasourceFunctions.class); |
|
32 |
|
|
33 |
public static SimpleDatasource mapToSimpleDs(final Map<String, Object> map) { |
|
34 |
final SimpleDatasource ds = new SimpleDatasource(); |
|
35 |
ds.setId(castObject(map.get("id"), String.class)); |
|
36 |
ds.setName(castObject(map.get("name"), String.class)); |
|
37 |
ds.setOrigId(castObject(map.get("id"), String.class)); |
|
38 |
ds.setEoscDatasourceType(castObject(map.get("eosc_datasource_type"), String.class)); |
|
39 |
ds.setValid(true); |
|
40 |
try { |
|
41 |
final Array arr = castObject(map.get("apis"), Array.class); |
|
42 |
|
|
43 |
if (arr != null && ((Object[]) arr.getArray()).length > 0) { |
|
44 |
ds.setApis(Arrays.stream((Object[]) arr.getArray()) |
|
45 |
.filter(Objects::nonNull) |
|
46 |
.map(Object::toString) |
|
47 |
.collect(Collectors.toSet())); |
|
48 |
} |
|
49 |
} catch (final SQLException e) { |
|
50 |
log.error("Error parsing array (apis)", e); |
|
51 |
throw new RuntimeException("Error parsing array (apis)", e); |
|
52 |
} |
|
53 |
|
|
54 |
return ds; |
|
55 |
} |
|
56 |
|
|
57 |
public static Datasource<Organization<?>, Identity, PidSystem> mapToDatasource(final Map<String, Object> map) { |
|
58 |
final Datasource<Organization<?>, Identity, PidSystem> ds = new Datasource<>(); |
|
59 |
ds.setId(castObject(map.get("id"), String.class)); |
|
60 |
ds.setOfficialname(castObject(map.get("officialname"), String.class)); |
|
61 |
ds.setEnglishname(castObject(map.get("englishname"), String.class)); |
|
62 |
ds.setWebsiteurl(castObject(map.get("websiteurl"), String.class)); |
|
63 |
ds.setLogourl(castObject(map.get("logourl"), String.class)); |
|
64 |
ds.setContactemail(castObject(map.get("contactemail"), String.class)); |
|
65 |
ds.setLatitude(castObject(map.get("latitude"), Double.class)); |
|
66 |
ds.setLongitude(castObject(map.get("longitude"), Double.class)); |
|
67 |
ds.setTimezone(castObject(map.get("timezone"), String.class)); |
|
68 |
ds.setNamespaceprefix(castObject(map.get("namespaceprefix"), String.class)); |
|
69 |
ds.setLanguages(castObject(map.get("languages"), String.class)); |
|
70 |
ds.setCollectedfrom(castObject(map.get("collectedfrom"), String.class)); |
|
71 |
ds.setDateofvalidation(castObject(map.get("dateofvalidation"), Date.class)); |
|
72 |
ds.setEoscDatasourceType(castObject(map.get("eosc_datasource_type"), String.class)); |
|
73 |
ds.setProvenanceaction(castObject(map.get("provenanceaction"), String.class)); |
|
74 |
ds.setDateofcollection(castObject(map.get("dateofcollection"), Date.class)); |
|
75 |
ds.setPlatform(castObject(map.get("platform"), String.class)); |
|
76 |
ds.setActivationId(castObject(map.get("activationId"), String.class)); |
|
77 |
ds.setDescription(castObject(map.get("description"), String.class)); |
|
78 |
ds.setReleasestartdate(castObject(map.get("releasestartdate"), Date.class)); |
|
79 |
ds.setReleaseenddate(castObject(map.get("releaseenddate"), Date.class)); |
|
80 |
ds.setMissionstatementurl(castObject(map.get("missionstatementurl"), String.class)); |
|
81 |
ds.setDatabaseaccesstype(castObject(map.get("databaseaccesstype"), String.class)); |
|
82 |
ds.setDatauploadtype(castObject(map.get("datauploadtype"), String.class)); |
|
83 |
ds.setDatabaseaccessrestriction(castObject(map.get("databaseaccessrestriction"), String.class)); |
|
84 |
ds.setDatauploadrestriction(castObject(map.get("datauploadrestriction"), String.class)); |
|
85 |
ds.setCitationguidelineurl(castObject(map.get("citationguidelineurl"), String.class)); |
|
86 |
ds.setCertificates(castObject(map.get("certificates"), String.class)); |
|
87 |
ds.setAggregator(castObject(map.get("aggregator"), String.class)); |
|
88 |
ds.setIssn(castObject(map.get("issn"), String.class)); |
|
89 |
ds.setEissn(castObject(map.get("eissn"), String.class)); |
|
90 |
ds.setLissn(castObject(map.get("lissn"), String.class)); |
|
91 |
ds.setRegisteredby(castObject(map.get("registeredby"), String.class)); |
|
92 |
ds.setSubjects(castObject(map.get("subjects"), String.class)); |
|
93 |
ds.setManaged(castObject(map.get("managed"), Boolean.class)); |
|
94 |
ds.setConsentTermsOfUse(castObject(map.get("consenttermsofuse"), Boolean.class)); |
|
95 |
ds.setConsentTermsOfUseDate(castObject(map.get("consenttermsofusedate"), Date.class)); |
|
96 |
ds.setFullTextDownload(castObject(map.get("fulltextdownload"), Boolean.class)); |
|
97 |
ds.setStatus(castObject(map.get("status"), String.class)); |
|
98 |
|
|
99 |
return ds; |
|
100 |
} |
|
101 |
|
|
102 |
public static Identity mapToDsIdentity(final Map<String, Object> map) { |
|
103 |
final Identity id = new Identity(); |
|
104 |
id.setPid(castObject(map.get("pid"), String.class)); |
Also available in: Unified diff
[maven-release-plugin] copy for tag dnet-openaire-datasource-manager-2.1.0