Project

General

Profile

« Previous | Next » 

Revision 50698

beta

View differences:

modules/dnet-openaire-exporter/branches/beta/dnet-openaire-exporter.iml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
3
  <component name="FacetManager">
4
    <facet type="Spring" name="Spring">
5
      <configuration />
6
    </facet>
7
  </component>
8
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
9
    <output url="file://$MODULE_DIR$/target/classes" />
10
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
11
    <content url="file://$MODULE_DIR$">
12
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
13
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
14
      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
15
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
16
      <excludeFolder url="file://$MODULE_DIR$/target" />
17
    </content>
18
    <orderEntry type="inheritedJdk" />
19
    <orderEntry type="sourceFolder" forTests="false" />
20
    <orderEntry type="library" name="Maven: eu.dnetlib:dnet-pace-core:2.5.1" level="project" />
21
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-rmi-api:2.6.2-SNAPSHOT" level="project" />
22
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-core:3.1.5" level="project" />
23
    <orderEntry type="library" name="Maven: org.apache.ws.xmlschema:xmlschema-core:2.2.1" level="project" />
24
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-frontend-jaxws:3.1.5" level="project" />
25
    <orderEntry type="library" name="Maven: xml-resolver:xml-resolver:1.2" level="project" />
26
    <orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
27
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-bindings-soap:3.1.5" level="project" />
28
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-wsdl:3.1.5" level="project" />
29
    <orderEntry type="library" name="Maven: wsdl4j:wsdl4j:1.6.3" level="project" />
30
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-databinding-jaxb:3.1.5" level="project" />
31
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.11" level="project" />
32
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.11" level="project" />
33
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-bindings-xml:3.1.5" level="project" />
34
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-frontend-simple:3.1.5" level="project" />
35
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-ws-addr:3.1.5" level="project" />
36
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-ws-policy:3.1.5" level="project" />
37
    <orderEntry type="library" name="Maven: org.apache.neethi:neethi:3.0.3" level="project" />
38
    <orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
39
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-transports-http:3.1.5" level="project" />
40
    <orderEntry type="module" module-name="cnr-service-common (1)" />
41
    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.2.2" level="project" />
42
    <orderEntry type="library" name="Maven: c3p0:c3p0:0.9.1.1" level="project" />
43
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.7.RELEASE" level="project" />
44
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.7.RELEASE" level="project" />
45
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-misc-utils:1.0.5-SNAPSHOT" level="project" />
46
    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
47
    <orderEntry type="library" name="Maven: jaxen:jaxen:1.1.6" level="project" />
48
    <orderEntry type="library" name="Maven: saxonica:saxon:9.1.0.8" level="project" />
49
    <orderEntry type="library" name="Maven: saxonica:saxon-dom:9.1.0.8" level="project" />
50
    <orderEntry type="library" name="Maven: jgrapht:jgrapht:0.7.2" level="project" />
51
    <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache:2.10.3" level="project" />
52
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-service-utils:1.0.3-SNAPSHOT" level="project" />
53
    <orderEntry type="library" name="Maven: apache:oro:2.0.8" level="project" />
54
    <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.7.RELEASE" level="project" />
55
    <orderEntry type="library" name="Maven: eu.dnetlib:cnr-spring-utils:1.0.2-SNAPSHOT" level="project" />
56
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.7.RELEASE" level="project" />
57
    <orderEntry type="library" name="Maven: jparsec:jparsec:2.0" level="project" />
58
    <orderEntry type="library" name="Maven: runcc:runcc:0.7" level="project" />
59
    <orderEntry type="module" module-name="dnet-openaireplus-mapping-utils" />
60
    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
61
    <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
62
    <orderEntry type="library" name="Maven: eu.dnetlib:dnet-openaire-data-protos:3.8.10" level="project" />
63
    <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:2.4.1" level="project" />
64
    <orderEntry type="module" module-name="dnet-pace-core" />
65
    <orderEntry type="library" name="Maven: edu.cmu:secondstring:1.0.0" level="project" />
66
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
67
    <orderEntry type="library" name="Maven: com.googlecode.protobuf-java-format:protobuf-java-format:1.2" level="project" />
68
    <orderEntry type="module" module-name="dnet-objectstore-rmi" />
69
    <orderEntry type="library" name="Maven: org.apache.solr:solr-solrj:7.1.0" level="project" />
70
    <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
71
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.3" level="project" />
72
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.6" level="project" />
73
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.3" level="project" />
74
    <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.4.10" level="project" />
75
    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.4" level="project" />
76
    <orderEntry type="library" name="Maven: org.codehaus.woodstox:woodstox-core-asl:4.4.1" level="project" />
77
    <orderEntry type="library" name="Maven: org.noggit:noggit:0.8" level="project" />
78
    <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.24" level="project" />
79
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.24" level="project" />
80
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:1.5.2.RELEASE" level="project" />
81
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.5.2.RELEASE" level="project" />
82
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.5.2.RELEASE" level="project" />
83
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:1.5.2.RELEASE" level="project" />
84
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.5.2.RELEASE" level="project" />
85
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.11" level="project" />
86
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.11" level="project" />
87
    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.24" level="project" />
88
    <orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.24" level="project" />
89
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.17" level="project" />
90
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:1.5.2.RELEASE" level="project" />
91
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.11" level="project" />
92
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.11" level="project" />
93
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.11" level="project" />
94
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.3.4.Final" level="project" />
95
    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
96
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.0.Final" level="project" />
97
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.8.7" level="project" />
98
    <orderEntry type="library" name="Maven: org.springframework:spring-web:4.3.7.RELEASE" level="project" />
99
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.7.RELEASE" level="project" />
100
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.7.RELEASE" level="project" />
101
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:1.5.2.RELEASE" level="project" />
102
    <orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-jdbc:8.5.11" level="project" />
103
    <orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-juli:8.5.11" level="project" />
104
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.7.RELEASE" level="project" />
105
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-jpa:1.5.2.RELEASE" level="project" />
106
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:1.5.2.RELEASE" level="project" />
107
    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.9" level="project" />
108
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.0.12.Final" level="project" />
109
    <orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final" level="project" />
110
    <orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
111
    <orderEntry type="library" name="Maven: org.jboss:jandex:2.0.0.Final" level="project" />
112
    <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:5.0.1.Final" level="project" />
113
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-entitymanager:5.0.12.Final" level="project" />
114
    <orderEntry type="library" name="Maven: javax.transaction:javax.transaction-api:1.2" level="project" />
115
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:1.11.1.RELEASE" level="project" />
116
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.13.1.RELEASE" level="project" />
117
    <orderEntry type="library" name="Maven: org.springframework:spring-orm:4.3.7.RELEASE" level="project" />
118
    <orderEntry type="library" name="Maven: org.springframework:spring-aspects:4.3.7.RELEASE" level="project" />
119
    <orderEntry type="library" name="Maven: org.postgresql:postgresql:42.0.0" level="project" />
120
    <orderEntry type="library" name="Maven: org.apache.commons:commons-dbcp2:2.1" level="project" />
121
    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
122
    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
123
    <orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
124
    <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
125
    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.5" level="project" />
126
    <orderEntry type="library" name="Maven: commons-io:commons-io:2.5" level="project" />
127
    <orderEntry type="library" name="Maven: com.google.guava:guava:23.3-jre" level="project" />
128
    <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" />
129
    <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.0.18" level="project" />
130
    <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.1" level="project" />
131
    <orderEntry type="library" name="Maven: org.codehaus.mojo:animal-sniffer-annotations:1.14" level="project" />
132
    <orderEntry type="library" name="Maven: net.sf.supercsv:super-csv:2.4.0" level="project" />
133
    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
134
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-joda:2.6.6" level="project" />
135
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.8.0" level="project" />
136
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.7" level="project" />
137
    <orderEntry type="library" name="Maven: joda-time:joda-time:2.8.2" level="project" />
138
    <orderEntry type="library" name="Maven: org.mongodb:mongo-java-driver:3.4.2" level="project" />
139
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.7.0" level="project" />
140
    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.13" level="project" />
141
    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.13" level="project" />
142
    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.7.0" level="project" />
143
    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.7.0" level="project" />
144
    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.6.14" level="project" />
145
    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.7.0" level="project" />
146
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.7.0" level="project" />
147
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.7.0" level="project" />
148
    <orderEntry type="library" name="Maven: org.reflections:reflections:0.9.11" level="project" />
149
    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.3" level="project" />
150
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
151
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
152
    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.1.0.Final" level="project" />
153
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.7.0" level="project" />
154
    <orderEntry type="library" name="Maven: io.prometheus:simpleclient_spring_boot:0.0.25" level="project" />
155
    <orderEntry type="library" name="Maven: io.prometheus:simpleclient:0.0.25" level="project" />
156
    <orderEntry type="library" name="Maven: io.prometheus:simpleclient_common:0.0.25" level="project" />
157
    <orderEntry type="library" name="Maven: io.prometheus:simpleclient_spring_web:0.0.25" level="project" />
158
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator:1.5.2.RELEASE" level="project" />
159
    <orderEntry type="library" name="Maven: io.prometheus:simpleclient_hotspot:0.0.25" level="project" />
160
    <orderEntry type="library" name="Maven: io.prometheus:simpleclient_servlet:0.0.25" level="project" />
161
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.2.RELEASE" level="project" />
162
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.5.2.RELEASE" level="project" />
163
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.2.RELEASE" level="project" />
164
    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
165
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
166
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
167
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
168
    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
169
    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
170
    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
171
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
172
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
173
    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
174
    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
175
    <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.7.RELEASE" level="project" />
176
    <orderEntry type="library" name="Maven: org.springframework:spring-test:4.3.7.RELEASE" level="project" />
177
  </component>
178
</module>
modules/dnet-openaire-exporter/branches/beta/deploy.info
1
{"type_source": "SVN", "goal": "package -U source:jar", 
2
"url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-openaire-exporter/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",
3
"deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet45-snapshots", "name": "dnet-openaire-exporter"}
modules/dnet-openaire-exporter/branches/beta/src/test/java/eu/dnetlib/openaire/exporter/model/project/ProjectDetailsTest.java
1
package eu.dnetlib.openaire.exporter.model.project;
2

  
3
import java.io.IOException;
4

  
5
import org.junit.Test;
6

  
7
/**
8
 * Created by claudio on 05/07/2017.
9
 */
10
public class ProjectDetailsTest {
11

  
12
	@Test
13
	public void testCSV() throws IOException {
14

  
15
		final ProjectDetails p = ProjectDetails.fromCSV(
16
				"arc_________::ANZCCART,,ANZCCART,{},\"[\"\"\\u003cfundingtree\\u003e\\n      \\u003cfunder\\u003e\\n         \\u003cid\\u003earc_________::ARC\\u003c/id\\u003e\\n         \\u003cshortname\\u003eARC\\u003c/shortname\\u003e\\n         \\u003cname\\u003eAustralian Research Council (ARC)\\u003c/name\\u003e\\n         \\u003cjurisdiction\\u003eAU\\u003c/jurisdiction\\u003e\\n      \\u003c/funder\\u003e\\n      \\u003cfunding_level_0\\u003e\\n         \\u003cid\\u003earc_________::ARC::Special Research initiative (Australian and New Zealand Council for the Care of Animals in Research and Teaching)\\u003c/id\\u003e\\n         \\u003cname\\u003eSpecial Research initiative (Australian and New Zealand Council for the Care of Animals in Research and Teaching)\\u003c/name\\u003e\\n         \\u003cdescription\\u003eSpecial Research initiative (Australian and New Zealand Council for the Care of Animals in Research and Teaching)\\u003c/description\\u003e\\n         \\u003cparent/\\u003e\\n         \\u003cclass\\u003earc:fundingStream\\u003c/class\\u003e\\n      \\u003c/funding_level_0\\u003e\\n   \\u003c/fundingtree\\u003e\"\"]\"");
17

  
18
		System.out.println(p.asJson());
19

  
20
		System.out.println(p.asCSV());
21

  
22

  
23
	}
24

  
25
}
modules/dnet-openaire-exporter/branches/beta/src/test/java/eu/dnetlib/openaire/exporter/project/ProjectQueryParamsTest.java
1
package eu.dnetlib.openaire.exporter.project;
2

  
3
import eu.dnetlib.openaire.exporter.project.ProjectQueryParams;
4
import org.junit.Before;
5
import org.junit.Test;
6

  
7
import static org.junit.Assert.assertEquals;
8

  
9
public class ProjectQueryParamsTest {
10

  
11
	private ProjectQueryParams queryParams;
12

  
13
	@Before
14
	public void setUp() throws Exception {
15
		queryParams = new ProjectQueryParams();
16

  
17
	}
18

  
19
	@Test
20
	public void testVerifyParamWhiteSpace() {
21
		queryParams.verifyParam("Discovery Projects");
22
	}
23

  
24
	@Test
25
	public void testVerifyParamPercentage() {
26
		queryParams.verifyParam("Discovery%20Projects");
27
	}
28

  
29
	@Test
30
	public void testVerifyDateParam(){
31
		String correctDate = "2012-03-04";
32
		assertEquals(correctDate, queryParams.verifyDateParam(correctDate));
33

  
34
	}
35

  
36
	@Test(expected=IllegalArgumentException.class)
37
	public void testVerifyDateParamException(){
38
		String wrongDate = "12-12-12";
39
		queryParams.verifyDateParam(wrongDate);
40

  
41
	}
42
}
modules/dnet-openaire-exporter/branches/beta/src/test/java/eu/dnetlib/openaire/exporter/project/ProjectsControllerTest.java
1
package eu.dnetlib.openaire.exporter.project;
2

  
3
import java.io.IOException;
4

  
5
import org.antlr.stringtemplate.StringTemplate;
6
import org.apache.commons.io.IOUtils;
7
import org.apache.commons.logging.Log;
8
import org.apache.commons.logging.LogFactory;
9
import org.junit.Before;
10
import org.junit.Ignore;
11
import org.junit.Test;
12
import org.junit.runner.RunWith;
13
import org.springframework.boot.test.context.SpringBootTest;
14
import org.springframework.core.io.ClassPathResource;
15
import org.springframework.core.io.Resource;
16
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
17

  
18
import static org.junit.Assert.assertEquals;
19

  
20
@Ignore
21
@SpringBootTest
22
@RunWith(SpringJUnit4ClassRunner.class)
23
public class ProjectsControllerTest {
24

  
25
	private static final Log log = LogFactory.getLog(ProjectsControllerTest.class);
26
	private String queryTemplate = "/eu/dnetlib/openaire/exporter/sql/projects_fundings.sql.st";
27

  
28
	private Resource expectedQueryTemplate = new ClassPathResource("/eu/dnetlib/openaire/exporter/sql/expected_projects_fundings.sql.st");
29

  
30
	private ProjectsController controller;
31
	private ProjectQueryParams params;
32

  
33
	@Before
34
	public void setup() {
35
		controller = new ProjectsController();
36
		Resource template = new ClassPathResource(queryTemplate);
37

  
38
		//TODO reimplement bean injection for testing
39
		//controller.setProjectsFundingQueryTemplate(template);
40
		params = new ProjectQueryParams();
41
	}
42

  
43
	@Test
44
	public void testObtainFP7Query() throws IllegalArgumentException, IOException {
45
		params.setFundingProgramme("FP7");
46
		params.setFundingPath(null);
47
		String res = controller.obtainQuery(params);
48
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream(),  ProjectsController.UTF8));
49
		st.setAttribute("fundingprefix", "ec__________::EC::FP7");
50
		log.debug(res);
51
		log.debug(st);
52
		assertEquals(st.toString(), res);
53
	}
54

  
55
	@Test
56
	public void testObtainFP7QuerySP1() throws IllegalArgumentException, IOException {
57
		params.setFundingProgramme("FP7");
58
		params.setFundingPath("SP1");
59
		String res = controller.obtainQuery(params);
60
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream(),  ProjectsController.UTF8));
61
		st.setAttribute("fundingprefix", "ec__________::EC::FP7::SP1");
62
		log.debug(res);
63
		assertEquals(st.toString(), res);
64
	}
65

  
66
	@Test
67
	public void testObtainFP7QueryHealth() throws IllegalArgumentException, IOException {
68
		params.setFundingProgramme("FP7");
69
		params.setFundingPath("SP1::HEALTH");
70
		String res = controller.obtainQuery(params);
71
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream(),  ProjectsController.UTF8));
72
		st.setAttribute("fundingprefix", "ec__________::EC::FP7::SP1::HEALTH");
73
		log.debug(res);
74
		assertEquals(st.toString(), res);
75
	}
76

  
77
	@Test
78
	public void testObtainFP7QueryHealth2() throws IllegalArgumentException, IOException {
79
		params.setFundingProgramme("FP7");
80
		params.setFundingPath("%::HEALTH");
81
		String res = controller.obtainQuery(params);
82
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream(),  ProjectsController.UTF8));
83
		st.setAttribute("fundingprefix", "ec__________::EC::FP7::%::HEALTH");
84
		log.debug(res);
85
		assertEquals(st.toString(), res);
86
	}
87

  
88
	@Test
89
	public void testObtainWellcomeTrustQuery() throws IllegalArgumentException, IOException {
90
		params.setFundingProgramme("WT");
91
		params.setFundingPath(null);
92
		String res = controller.obtainQuery(params);
93
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream(),  ProjectsController.UTF8));
94
		st.setAttribute("fundingprefix", "wt__________::WT");
95
		log.debug(res);
96
		assertEquals(st.toString(), res);
97
	}
98

  
99
	@Test
100
	public void testObtainFCTQuery() throws IllegalArgumentException, IOException {
101
		params.setFundingProgramme("FCT");
102
		params.setFundingPath(null);
103
		String res = controller.obtainQuery(params);
104
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream(),  ProjectsController.UTF8));
105
		st.setAttribute("fundingprefix", "fct_________::FCT");
106
		log.debug(res);
107
		assertEquals(st.toString(), res);
108
	}
109

  
110
	@Test
111
	public void testQueryWithDateParams() throws IllegalArgumentException, IOException {
112
		params.setFundingProgramme("WT");
113
		params.setFundingPath(null);
114
		params.setStartFrom("2015-05-04");
115
		String res = controller.obtainQuery(params);
116
		log.debug(res);
117
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream(),  ProjectsController.UTF8));
118
		st.setAttribute("fundingprefix", "wt__________::WT");
119
		String q = st.toString() + " AND startdate >= '2015-05-04'";
120
		assertEquals(q, res);
121
	}
122

  
123
	@Test
124
	public void testObtainSNSFQuery() throws IllegalArgumentException, IOException {
125
		params.setFundingProgramme("SNSF");
126
		params.setFundingPath(null);
127
		String res = controller.obtainQuery(params);
128
		final StringTemplate st = new StringTemplate(IOUtils.toString(expectedQueryTemplate.getInputStream(),  ProjectsController.UTF8));
129
		st.setAttribute("fundingprefix", "snsf________::SNSF");
130
		log.debug(res);
131
		assertEquals(st.toString(), res);
132
	}
133

  
134
}
modules/dnet-openaire-exporter/branches/beta/src/test/resources/eu/dnetlib/openaire/exporter/FCT-project.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<ROW>
3
	<FIELD name="funder">FCT</FIELD>
4
	<FIELD name="jurisdiction">PT</FIELD>
5
	<FIELD name="end_date">2003-10-31</FIELD>
6
	<FIELD name="grant_agreement_number">32639</FIELD>
7
	<FIELD name="title">Social Classes and «lifestyles» in the city of Oporto</FIELD>
8
	<FIELD name="fundingpathid">fct_________::FCT::Orçamento de Funcionamento/POSC</FIELD>
9
	<FIELD name="acronym">PTDC/FIL-FIL/109889/2009</FIELD>
10
	<FIELD name="start_date">2000-11-01</FIELD>
11
	<FIELD name="description">description of the funding path</FIELD>
12
</ROW> 
modules/dnet-openaire-exporter/branches/beta/src/test/resources/eu/dnetlib/openaire/exporter/FP7-project.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<ROW>
3
	<FIELD name="funder">EC</FIELD>
4
	<FIELD name="jurisdiction">EU</FIELD>
5
	<FIELD name="end_date">2012-07-31</FIELD>
6
	<FIELD name="grant_agreement_number">255646</FIELD>
7
	<FIELD name="title">Semiconductor lasers for generation of non-diffracting (Bessel) beams.</FIELD>
8
	<FIELD name="fundingpathid">ec__________::EC::FP7::SP3::PEOPLE</FIELD>
9
	<FIELD name="acronym">SENDBEAMS</FIELD>
10
	<FIELD name="start_date">2010-08-01</FIELD>
11
	<FIELD name="description">description of the funding path</FIELD>
12
</ROW> 
13

  
14
	
modules/dnet-openaire-exporter/branches/beta/src/test/resources/eu/dnetlib/openaire/exporter/sql/expected_projects_fundings.sql.st
1
SELECT
2
	funder,
3
	jurisdiction,
4
	fundingpathid,
5
	acronym,
6
	title,
7
	code,
8
	startdate,
9
	enddate
10
FROM projects_api
11
WHERE fundingpathid like '$fundingprefix$%'
modules/dnet-openaire-exporter/branches/beta/src/test/resources/eu/dnetlib/openaire/exporter/SFI-project.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<ROW>
3
	<FIELD name="funder">SFI</FIELD>
4
	<FIELD name="end_date">2016-08-31</FIELD>
5
	<FIELD name="grant_agreement_number">14/ADV/RC3022</FIELD>
6
	<FIELD name="title">Dr. Vesna Jaksic</FIELD>
7
	<FIELD name="acronym" isNull="true"/>
8
	<FIELD name="fundingpathid">sfi_________::SFI::Advance Award Programme</FIELD>
9
	<FIELD name="jurisdiction" isNull="true"/>
10
	<FIELD name="start_date">2014-09-01</FIELD>
11
</ROW>
modules/dnet-openaire-exporter/branches/beta/src/test/resources/eu/dnetlib/openaire/exporter/MSES-project.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<ROW>
3
	<FIELD name="funder">MSES</FIELD>
4
	<FIELD name="end_date">2009-12-31</FIELD>
5
	<FIELD name="grant_agreement_number">001-0000000-3177</FIELD>
6
	<FIELD name="title">Residence time of bacteria Escherichia coli in seawater and marine organisms</FIELD>
7
	<FIELD name="acronym" isNull="true"/>
8
	<FIELD name="fundingpathid">irb_hr______::MSES::fundingStream</FIELD>
9
	<FIELD name="jurisdiction">HR</FIELD>
10
	<FIELD name="start_date">2007-01-01</FIELD>
11
</ROW>
modules/dnet-openaire-exporter/branches/beta/src/test/resources/eu/dnetlib/openaire/exporter/WT-project.xml
1
<ROW>
2
	<FIELD name="funder">WT</FIELD>
3
	<FIELD name="end_date">2013-07-29</FIELD>
4
	<FIELD name="grant_agreement_number">098241</FIELD>
5
	<FIELD name="title">EYEDIO DIGI - DEVELOPMENT OF AN INNOVATIVE, AFFORDABLE, EASY TO USE, HANDHELD RETINAL IMAGING PRODUCT FOR THE DIAGNOSIS OF DIABETIC RETINOPATHY.</FIELD>
6
	<FIELD name="acronym"></FIELD>
7
	<FIELD name="fundingpathid">wt__________::WT::Immunology and Infectious Disease</FIELD>
8
	<FIELD name="start_date">2012-01-30</FIELD>
9
	<FIELD name="jurisdiction"/>
10
	<FIELD name="description">description of the funding path</FIELD>
11
</ROW> 
modules/dnet-openaire-exporter/branches/beta/src/test/resources/logback-test.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<configuration>
3
	<include resource="org/springframework/boot/logging/logback/base.xml"/>
4
	<logger name="org.springframework" level="OFF">
5
		<appender-ref ref="CONSOLE" />
6
	</logger>
7
	<logger name="root" level="OFF">
8
		<appender-ref ref="CONSOLE" />
9
	</logger>
10
	<logger name="eu.dnetlib" level="INFO">
11
		<appender-ref ref="CONSOLE" />
12
	</logger>
13
	<logger name="eu.dnetlib.openaire.exporter" level="INFO">
14
		<appender-ref ref="CONSOLE" />
15
	</logger>
16
</configuration>
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/swagger/configuration/SwaggerDocumentationConfig.java
1
package eu.dnetlib.swagger.configuration;
2

  
3
import eu.dnetlib.OpenaireExporterConfig;
4
import eu.dnetlib.OpenaireExporterConfig.Swagger;
5
import eu.dnetlib.common.rmi.DNetRestDocumentation;
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.context.annotation.Bean;
8
import org.springframework.context.annotation.Configuration;
9
import springfox.documentation.builders.ApiInfoBuilder;
10
import springfox.documentation.builders.RequestHandlerSelectors;
11
import springfox.documentation.service.ApiInfo;
12
import springfox.documentation.service.Contact;
13
import springfox.documentation.spi.DocumentationType;
14
import springfox.documentation.spring.web.plugins.Docket;
15
import springfox.documentation.swagger2.annotations.EnableSwagger2;
16

  
17
@Configuration
18
@EnableSwagger2
19
public class SwaggerDocumentationConfig {
20

  
21
	@Autowired
22
	private OpenaireExporterConfig config;
23

  
24
    @Bean
25
    public Docket customImplementation() {
26
        return new Docket(DocumentationType.SWAGGER_2)
27
                .select()
28
		            .apis(RequestHandlerSelectors.withClassAnnotation(DNetRestDocumentation.class))
29
                    .build()
30
                .directModelSubstitute(org.joda.time.LocalDate.class, java.sql.Date.class)
31
                .directModelSubstitute(org.joda.time.DateTime.class, java.util.Date.class)
32
                .apiInfo(apiInfo());
33
    }
34

  
35
	private ApiInfo apiInfo() {
36
		final Swagger swag = config.getSwagger();
37
		return new ApiInfoBuilder()
38
				.title(swag.getApiTitle())
39
				.description(swag.getApiDescription())
40
				.license(swag.getApiLicense())
41
				.licenseUrl(swag.getApiLicenseUrl())
42
				.termsOfServiceUrl("")
43
				.version("1.0.0")
44
				.contact(new Contact(
45
						swag.getApiContactName(),
46
						swag.getApiContactUrl(),
47
						swag.getApiContactEmail()))
48
				.build();
49
	}
50

  
51
}
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/swagger/configuration/RFC3339DateFormat.java
1
package eu.dnetlib.swagger.configuration;
2

  
3
import java.text.FieldPosition;
4
import java.util.Date;
5

  
6
import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
7
import com.fasterxml.jackson.databind.util.ISO8601Utils;
8

  
9
public class RFC3339DateFormat extends ISO8601DateFormat {
10

  
11
  // Same as ISO8601DateFormat but serializing milliseconds.
12
  @Override
13
  public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
14
    String value = ISO8601Utils.format(date, true);
15
    toAppendTo.append(value);
16
    return toAppendTo;
17
  }
18

  
19
}
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/Utils.java
1
package eu.dnetlib;
2

  
3
import java.util.Iterator;
4
import java.util.Spliterator;
5
import java.util.Spliterators;
6
import java.util.stream.Stream;
7
import java.util.stream.StreamSupport;
8

  
9
/**
10
 * Created by claudio on 13/04/2017.
11
 */
12
public class Utils {
13

  
14
	public static <T> Stream<T> stream(Iterator<T> iterator) {
15
		return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED), false);
16
	}
17

  
18
}
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/OpenaireExporterConfig.java
1
package eu.dnetlib;
2

  
3
import org.springframework.beans.factory.annotation.Value;
4
import org.springframework.boot.context.properties.ConfigurationProperties;
5
import org.springframework.core.io.ClassPathResource;
6
import org.springframework.core.io.Resource;
7
import org.springframework.stereotype.Component;
8

  
9
/**
10
 * Created by Alessia Bardi on 31/03/17.
11
 *
12
 * @author Alessia Bardi, Claudio Atzori
13
 */
14
@Component
15
@ConfigurationProperties(prefix = "openaire.exporter")
16
public class OpenaireExporterConfig {
17

  
18
	// ISLOOKUP
19
	private ClassPathResource findSolrIndexUrl;
20
	private ClassPathResource findIndexDsInfo;
21
	private ClassPathResource findObjectStore;
22

  
23
	private String isLookupUrl;
24
	private String objectStoreServiceUrl;
25

  
26
	private int requestWorkers = 100;
27
	private int requestTimeout = 10;
28

  
29
	private Datasource datasource;
30
	private Project project;
31
	private Jdbc jdbc;
32
	private Swagger swagger;
33
	private Vocabularies vocabularies;
34

  
35
	public static class Datasource {
36
		// MONGODB
37
		private String mongoHost;
38
		private int mongoPort;
39
		private String mongoCollectionName;
40
		private String mongoDbName;
41
		private int mongoConnectionsPerHost;
42
		private int mongoQueryLimit;
43

  
44
		public String getMongoHost() {
45
			return mongoHost;
46
		}
47

  
48
		public void setMongoHost(final String mongoHost) {
49
			this.mongoHost = mongoHost;
50
		}
51

  
52
		public int getMongoPort() {
53
			return mongoPort;
54
		}
55

  
56
		public void setMongoPort(final int mongoPort) {
57
			this.mongoPort = mongoPort;
58
		}
59

  
60
		public String getMongoCollectionName() {
61
			return mongoCollectionName;
62
		}
63

  
64
		public void setMongoCollectionName(final String mongoCollectionName) {
65
			this.mongoCollectionName = mongoCollectionName;
66
		}
67

  
68
		public String getMongoDbName() {
69
			return mongoDbName;
70
		}
71

  
72
		public void setMongoDbName(final String mongoDbName) {
73
			this.mongoDbName = mongoDbName;
74
		}
75

  
76
		public int getMongoConnectionsPerHost() {
77
			return mongoConnectionsPerHost;
78
		}
79

  
80
		public void setMongoConnectionsPerHost(final int mongoConnectionsPerHost) {
81
			this.mongoConnectionsPerHost = mongoConnectionsPerHost;
82
		}
83

  
84
		public int getMongoQueryLimit() {
85
			return mongoQueryLimit;
86
		}
87

  
88
		public void setMongoQueryLimit(final int mongoQueryLimit) {
89
			this.mongoQueryLimit = mongoQueryLimit;
90
		}
91
	}
92

  
93
	public static class Project {
94

  
95
		private int flushSize;
96
		private String tsvFields;
97
		private Resource projectsFundingQueryTemplate;
98
		private Resource dspaceTemplate;
99
		private Resource dspaceHeadTemplate;
100
		private Resource dspaceTailTemplate;
101
		private Resource eprintsTemplate;
102

  
103
		public int getFlushSize() {
104
			return flushSize;
105
		}
106

  
107
		public void setFlushSize(final int flushSize) {
108
			this.flushSize = flushSize;
109
		}
110

  
111
		public String getTsvFields() {
112
			return tsvFields;
113
		}
114

  
115
		public void setTsvFields(final String tsvFields) {
116
			this.tsvFields = tsvFields;
117
		}
118

  
119
		public Resource getProjectsFundingQueryTemplate() {
120
			return projectsFundingQueryTemplate;
121
		}
122

  
123
		public void setProjectsFundingQueryTemplate(final Resource projectsFundingQueryTemplate) {
124
			this.projectsFundingQueryTemplate = projectsFundingQueryTemplate;
125
		}
126

  
127
		public Resource getDspaceTemplate() {
128
			return dspaceTemplate;
129
		}
130

  
131
		public void setDspaceTemplate(final Resource dspaceTemplate) {
132
			this.dspaceTemplate = dspaceTemplate;
133
		}
134

  
135
		public Resource getDspaceHeadTemplate() {
136
			return dspaceHeadTemplate;
137
		}
138

  
139
		public void setDspaceHeadTemplate(final Resource dspaceHeadTemplate) {
140
			this.dspaceHeadTemplate = dspaceHeadTemplate;
141
		}
142

  
143
		public Resource getDspaceTailTemplate() {
144
			return dspaceTailTemplate;
145
		}
146

  
147
		public void setDspaceTailTemplate(final Resource dspaceTailTemplate) {
148
			this.dspaceTailTemplate = dspaceTailTemplate;
149
		}
150

  
151
		public Resource getEprintsTemplate() {
152
			return eprintsTemplate;
153
		}
154

  
155
		public void setEprintsTemplate(final Resource eprintsTemplate) {
156
			this.eprintsTemplate = eprintsTemplate;
157
		}
158
	}
159

  
160
	public static class Jdbc {
161

  
162
		// JDBC
163
		@Value("${spring.datasource.driverClassName}")
164
		private String driverClassName;
165

  
166
		private String url;
167
		private String user;
168
		private String pwd;
169
		private int minIdle;
170
		private int maxidle;
171
		private int maxRows;
172

  
173
		public String getDriverClassName() {
174
			return driverClassName;
175
		}
176

  
177
		public String getUrl() {
178
			return url;
179
		}
180

  
181
		public void setUrl(final String url) {
182
			this.url = url;
183
		}
184

  
185
		public String getUser() {
186
			return user;
187
		}
188

  
189
		public void setUser(final String user) {
190
			this.user = user;
191
		}
192

  
193
		public String getPwd() {
194
			return pwd;
195
		}
196

  
197
		public void setPwd(final String pwd) {
198
			this.pwd = pwd;
199
		}
200

  
201
		public int getMinIdle() {
202
			return minIdle;
203
		}
204

  
205
		public void setMinIdle(final int minIdle) {
206
			this.minIdle = minIdle;
207
		}
208

  
209
		public int getMaxidle() {
210
			return maxidle;
211
		}
212

  
213
		public void setMaxidle(final int maxidle) {
214
			this.maxidle = maxidle;
215
		}
216

  
217
		public int getMaxRows() {
218
			return maxRows;
219
		}
220

  
221
		public void setMaxRows(final int maxRows) {
222
			this.maxRows = maxRows;
223
		}
224
	}
225

  
226
	public static class Swagger {
227
		private String apiTitle;
228
		private String apiDescription;
229
		private String apiLicense;
230
		private String apiLicenseUrl;
231
		private String apiContactName;
232
		private String apiContactUrl;
233
		private String apiContactEmail;
234

  
235
		public String getApiTitle() {
236
			return apiTitle;
237
		}
238

  
239
		public void setApiTitle(final String apiTitle) {
240
			this.apiTitle = apiTitle;
241
		}
242

  
243
		public String getApiDescription() {
244
			return apiDescription;
245
		}
246

  
247
		public void setApiDescription(final String apiDescription) {
248
			this.apiDescription = apiDescription;
249
		}
250

  
251
		public String getApiLicense() {
252
			return apiLicense;
253
		}
254

  
255
		public void setApiLicense(final String apiLicense) {
256
			this.apiLicense = apiLicense;
257
		}
258

  
259
		public String getApiLicenseUrl() {
260
			return apiLicenseUrl;
261
		}
262

  
263
		public void setApiLicenseUrl(final String apiLicenseUrl) {
264
			this.apiLicenseUrl = apiLicenseUrl;
265
		}
266

  
267
		public String getApiContactName() {
268
			return apiContactName;
269
		}
270

  
271
		public void setApiContactName(final String apiContactName) {
272
			this.apiContactName = apiContactName;
273
		}
274

  
275
		public String getApiContactUrl() {
276
			return apiContactUrl;
277
		}
278

  
279
		public void setApiContactUrl(final String apiContactUrl) {
280
			this.apiContactUrl = apiContactUrl;
281
		}
282

  
283
		public String getApiContactEmail() {
284
			return apiContactEmail;
285
		}
286

  
287
		public void setApiContactEmail(final String apiContactEmail) {
288
			this.apiContactEmail = apiContactEmail;
289
		}
290
	}
291

  
292
	public static class Vocabularies {
293

  
294
		private String baseUrl;
295

  
296
		private String countriesEndpoint;
297

  
298
		private String datasourceTypologiesEndpoint;
299

  
300
		public String getCountriesEndpoint() {
301
			return countriesEndpoint;
302
		}
303

  
304
		public void setCountriesEndpoint(final String countriesEndpoint) {
305
			this.countriesEndpoint = countriesEndpoint;
306
		}
307

  
308
		public String getBaseUrl() {
309
			return baseUrl;
310
		}
311

  
312
		public void setBaseUrl(final String baseUrl) {
313
			this.baseUrl = baseUrl;
314
		}
315

  
316
		public String getDatasourceTypologiesEndpoint() {
317
			return datasourceTypologiesEndpoint;
318
		}
319

  
320
		public void setDatasourceTypologiesEndpoint(final String datasourceTypologiesEndpoint) {
321
			this.datasourceTypologiesEndpoint = datasourceTypologiesEndpoint;
322
		}
323
	}
324

  
325
	public ClassPathResource getFindSolrIndexUrl() {
326
		return findSolrIndexUrl;
327
	}
328

  
329
	public void setFindSolrIndexUrl(final ClassPathResource findSolrIndexUrl) {
330
		this.findSolrIndexUrl = findSolrIndexUrl;
331
	}
332

  
333
	public ClassPathResource getFindIndexDsInfo() {
334
		return findIndexDsInfo;
335
	}
336

  
337
	public ClassPathResource getFindObjectStore() {
338
		return findObjectStore;
339
	}
340

  
341
	public void setFindObjectStore(final ClassPathResource findObjectStore) {
342
		this.findObjectStore = findObjectStore;
343
	}
344

  
345
	public void setFindIndexDsInfo(final ClassPathResource findIndexDsInfo) {
346
		this.findIndexDsInfo = findIndexDsInfo;
347
	}
348

  
349
	public String getIsLookupUrl() {
350
		return isLookupUrl;
351
	}
352

  
353
	public void setIsLookupUrl(final String isLookupUrl) {
354
		this.isLookupUrl = isLookupUrl;
355
	}
356

  
357
	public String getObjectStoreServiceUrl() {
358
		return objectStoreServiceUrl;
359
	}
360

  
361
	public void setObjectStoreServiceUrl(final String objectStoreServiceUrl) {
362
		this.objectStoreServiceUrl = objectStoreServiceUrl;
363
	}
364

  
365
	public int getRequestWorkers() {
366
		return requestWorkers;
367
	}
368

  
369
	public void setRequestWorkers(final int requestWorkers) {
370
		this.requestWorkers = requestWorkers;
371
	}
372

  
373
	public int getRequestTimeout() {
374
		return requestTimeout;
375
	}
376

  
377
	public void setRequestTimeout(final int requestTimeout) {
378
		this.requestTimeout = requestTimeout;
379
	}
380

  
381
	public Datasource getDatasource() {
382
		return datasource;
383
	}
384

  
385
	public void setDatasource(final Datasource datasource) {
386
		this.datasource = datasource;
387
	}
388

  
389
	public Project getProject() {
390
		return project;
391
	}
392

  
393
	public void setProject(final Project project) {
394
		this.project = project;
395
	}
396

  
397
	public Jdbc getJdbc() {
398
		return jdbc;
399
	}
400

  
401
	public void setJdbc(final Jdbc jdbc) {
402
		this.jdbc = jdbc;
403
	}
404

  
405
	public Swagger getSwagger() {
406
		return swagger;
407
	}
408

  
409
	public void setSwagger(final Swagger swagger) {
410
		this.swagger = swagger;
411
	}
412

  
413
	public Vocabularies getVocabularies() {
414
		return vocabularies;
415
	}
416

  
417
	public void setVocabularies(final Vocabularies vocabularies) {
418
		this.vocabularies = vocabularies;
419
	}
420

  
421
}
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/openaire/exporter/aop/DatasourceApiProfiler.java
1
package eu.dnetlib.openaire.exporter.aop;
2

  
3
import io.prometheus.client.Gauge;
4
import org.aspectj.lang.ProceedingJoinPoint;
5
import org.aspectj.lang.annotation.Around;
6
import org.aspectj.lang.annotation.Aspect;
7
import org.springframework.stereotype.Component;
8

  
9
/**
10
 * Created by claudio on 25/07/2017.
11
 */
12
@Aspect
13
@Component
14
public class DatasourceApiProfiler {
15

  
16
	private static final Gauge datasourceByIdGauge = Gauge.build()
17
			.name("DSM_getDsById_requests_latency_seconds")
18
			.help("Request latency in seconds for invocations of the method eu.dnetlib.openaire.exporter.datasource.DatasourcesApiController.getDs()")
19
			.register();
20

  
21
	@Around("execution(* eu.dnetlib.openaire.exporter.datasource.DatasourcesApiController.getDs(..))")
22
	public Object logTimeGetDsById(final ProceedingJoinPoint joinPoint) throws Throwable {
23
		final Gauge.Timer requestTimer = datasourceByIdGauge.startTimer();
24
		try {
25
			return joinPoint.proceed();
26
		} finally {
27
			requestTimer.setDuration();
28
		}
29
	}
30

  
31
	private static final Gauge datasourceByName = Gauge.build()
32
			.name("DSM_searchDsByName_requests_latency_seconds")
33
			.help("Request latency in seconds for invocations of the method eu.dnetlib.openaire.exporter.datasource.DatasourcesApiController.searchByName()")
34
			.register();
35

  
36
	@Around("execution(* eu.dnetlib.openaire.exporter.datasource.DatasourcesApiController.searchByName(..))")
37
	public Object logTimeSearchDsByName(final ProceedingJoinPoint joinPoint) throws Throwable {
38
		final Gauge.Timer requestTimer = datasourceByName.startTimer();
39
		try {
40
			return joinPoint.proceed();
41
		} finally {
42
			requestTimer.setDuration();
43
		}
44
	}
45

  
46

  
47
}
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/openaire/exporter/vocabularies/Country.java
1
package eu.dnetlib.openaire.exporter.vocabularies;
2

  
3
/**
4
 * Created by claudio on 15/09/2017.
5
 */
6
public class Country {
7

  
8
	private String code;
9

  
10
	private String name;
11

  
12
	public Country() {
13
	}
14

  
15
	public Country(final String code, final String name) {
16
		this.code = code;
17
		this.name = name;
18
	}
19

  
20
	public String getCode() {
21
		return code;
22
	}
23

  
24
	public void setCode(final String code) {
25
		this.code = code;
26
	}
27

  
28
	public String getName() {
29
		return name;
30
	}
31

  
32
	public void setName(final String name) {
33
		this.name = name;
34
	}
35
}
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/openaire/exporter/vocabularies/Term.java
1
package eu.dnetlib.openaire.exporter.vocabularies;
2

  
3
/**
4
 * Created by claudio on 15/09/2017.
5
 */
6
public class Term {
7
	private String englishName;
8
	private String code;
9

  
10
	public Term() {
11
	}
12

  
13
	public String getEnglishName() {
14
		return englishName;
15
	}
16

  
17
	public void setEnglishName(final String englishName) {
18
		this.englishName = englishName;
19
	}
20

  
21
	public String getCode() {
22
		return code;
23
	}
24

  
25
	public void setCode(final String code) {
26
		this.code = code;
27
	}
28

  
29
}
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/openaire/exporter/vocabularies/Vocabulary.java
1
package eu.dnetlib.openaire.exporter.vocabularies;
2

  
3
import java.util.List;
4
import java.util.Map;
5

  
6
import com.google.common.collect.Maps;
7
import org.apache.commons.logging.Log;
8
import org.apache.commons.logging.LogFactory;
9

  
10
/**
11
 * Created by claudio on 15/09/2017.
12
 */
13
public class Vocabulary {
14

  
15
	private static final Log log = LogFactory.getLog(Vocabulary.class);
16

  
17
	private List<Term> terms;
18

  
19
	public Vocabulary() {
20
	}
21

  
22
	private static Map<String, Term> byCode = Maps.newConcurrentMap();
23

  
24
	public String getEnglishName(final String code) {
25
		if (byCode.isEmpty()) {
26
			hashByCode();
27
		}
28
		final Term term = byCode.get(code);
29
		return term != null ? term.getEnglishName() : null;
30
	}
31

  
32
	public boolean hasCode(final String code) {
33
		return getEnglishName(code) != null;
34
	}
35

  
36
	private void hashByCode() {
37
		log.info("hashing vocabulary by code ...");
38
		getTerms().forEach(term -> byCode.put(term.getCode(), term));
39
		log.info("hashing vocabulary by code ... done!");
40
	}
41

  
42
	public List<Term> getTerms() {
43
		return terms;
44
	}
45

  
46
	public void setTerms(final List<Term> terms) {
47
		this.terms = terms;
48
	}
49
}
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/openaire/exporter/AbstractExporterController.java
1
package eu.dnetlib.openaire.exporter;
2

  
3
import org.apache.commons.lang3.StringUtils;
4
import org.apache.commons.lang3.exception.ExceptionUtils;
5
import org.apache.commons.logging.Log;
6
import org.apache.commons.logging.LogFactory;
7
import org.springframework.http.HttpStatus;
8
import org.springframework.web.bind.annotation.ExceptionHandler;
9
import org.springframework.web.bind.annotation.ResponseBody;
10
import org.springframework.web.bind.annotation.ResponseStatus;
11

  
12
/**
13
 * Created by claudio on 18/07/2017.
14
 */
15
public abstract class AbstractExporterController {
16

  
17
	private static final Log log = LogFactory.getLog(AbstractExporterController.class); // NOPMD by marko on 11/24/08 5:02 PM
18

  
19
	@ResponseBody
20
	@ExceptionHandler({Exception.class, Throwable.class})
21
	@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
22
	public ErrorMessage handleSqlException(final Exception e) {
23
		log.debug(e.getMessage(), e);
24
		if (StringUtils.containsIgnoreCase(ExceptionUtils.getRootCauseMessage(e), "Broken pipe")) {
25
			return null;        //socket is closed, cannot return any response
26
		} else {
27
			return new ErrorMessage(e);
28
		}
29
	}
30

  
31
	public class ErrorMessage {
32

  
33
		private final String message;
34
		private final String stacktrace;
35

  
36
		public ErrorMessage(final Exception e) {
37
			this(e.getMessage(), ExceptionUtils.getStackTrace(e));
38
		}
39

  
40
		public ErrorMessage(final String message, final String stacktrace) {
41
			this.message = message;
42
			this.stacktrace = stacktrace;
43
		}
44

  
45
		public String getMessage() {
46
			return this.message;
47
		}
48

  
49
		public String getStacktrace() {
50
			return this.stacktrace;
51
		}
52
	}
53

  
54
}
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/openaire/exporter/model/project/ProjectApi.java
1
package eu.dnetlib.openaire.exporter.model.project;
2

  
3
import java.sql.Date;
4
import java.util.ArrayList;
5
import javax.persistence.Entity;
6
import javax.persistence.Id;
7
import javax.persistence.Table;
8

  
9
import com.fasterxml.jackson.annotation.JsonIgnore;
10
import com.google.common.base.Splitter;
11
import com.google.common.collect.Lists;
12
import io.swagger.annotations.ApiModel;
13
import org.apache.commons.lang3.StringUtils;
14

  
15
/**
16
 * Created by claudio on 20/09/16.
17
 */
18
@Entity
19
@Table(name = "projects_api")
20
@ApiModel(value = "Project api model", description = "Project api model used by DSpace and Eprints exporter")
21
public class ProjectApi {
22

  
23
	public static final String INFO_EU_REPO_GRANT_AGREEMENT = "info:eu-repo/grantAgreement/";
24

  
25
	@Id
26
	@JsonIgnore
27
	private String id;
28

  
29
	private String code;
30
	private String acronym;
31
	private String title;
32
	private String funder;
33
	private String jurisdiction;
34
	private Date startdate;
35
	private Date enddate;
36
	private String fundingpathid;
37

  
38
	public ProjectApi() { }
39

  
40
	public String getIdnamespace() {
41
		String res = INFO_EU_REPO_GRANT_AGREEMENT + getFunder()+"/";
42
		final String fundingProgram = asFundingProgram(getFundingpathid());
43
		if (StringUtils.isNotBlank(fundingProgram)) {
44
			res += fundingProgram;
45
		}
46
		res += "/" + escapeCode(getCode());
47
		if (StringUtils.isNotBlank(getJurisdiction())) {
48
			res += "/" + getJurisdiction();
49
		}
50
		return res;
51
	}
52

  
53
	public String getListLabel() {
54
		return String.format("for:value:component:_%s_project_id", asFunder(getFunder()));
55
	}
56

  
57
	private String asFunder(final String legalshortname) {
58
		switch (legalshortname.toLowerCase()) {
59
		case "ec":
60
			return asFundingProgram(getFundingpathid()).toLowerCase();
61
		default:
62
			return legalshortname.toLowerCase();
63
		}
64
	}
65

  
66
	private String escapeCode(final String code) {
67
		return replaceSlash(code);
68
	}
69

  
70
	private String asFundingProgram(final String fundingpathid) {
71
		final ArrayList<String> strings = Lists.newArrayList(Splitter.on("::").split(fundingpathid));
72
		if(strings.size() <= 1) throw new IllegalStateException("Unexpected funding id: "+fundingpathid);
73
		if(strings.size() == 2) return "";
74
		else return replaceSlash(strings.get(2));
75
	}
76

  
77
	private String replaceSlash(final String s) {
78
		return s.replaceAll("/", "%2F");
79
	}
80

  
81
	public String getId() {
82
		return id;
83
	}
84

  
85
	public void setId(final String id) {
86
		this.id = id;
87
	}
88

  
89
	public String getCode() {
90
		return code;
91
	}
92

  
93
	public void setCode(final String code) {
94
		this.code = code;
95
	}
96

  
97
	public String getAcronym() {
98
		return acronym;
99
	}
100

  
101
	public void setAcronym(final String acronym) {
102
		this.acronym = acronym;
103
	}
104

  
105
	public String getTitle() {
106
		return title;
107
	}
108

  
109
	public void setTitle(final String title) {
110
		this.title = title;
111
	}
112

  
113
	public String getFunder() {
114
		return funder;
115
	}
116

  
117
	public void setFunder(final String funder) {
118
		this.funder = funder;
119
	}
120

  
121
	public String getJurisdiction() {
122
		return jurisdiction;
123
	}
124

  
125
	public void setJurisdiction(final String jurisdiction) {
126
		this.jurisdiction = jurisdiction;
127
	}
128

  
129
	public Date getStartdate() {
130
		return startdate;
131
	}
132

  
133
	public void setStartdate(final Date startdate) {
134
		this.startdate = startdate;
135
	}
136

  
137
	public Date getEnddate() {
138
		return enddate;
139
	}
140

  
141
	public void setEnddate(final Date enddate) {
142
		this.enddate = enddate;
143
	}
144

  
145
	public String getFundingpathid() {
146
		return fundingpathid;
147
	}
148

  
149
	public void setFundingpathid(final String fundingpathid) {
150
		this.fundingpathid = fundingpathid;
151
	}
152
}
modules/dnet-openaire-exporter/branches/beta/src/main/java/eu/dnetlib/openaire/exporter/model/project/ProjectTsv.java
1
package eu.dnetlib.openaire.exporter.model.project;
2

  
3
import java.sql.Date;
4
import java.util.List;
5
import javax.persistence.Column;
6
import javax.persistence.Entity;
7
import javax.persistence.Id;
8
import javax.persistence.Table;
9

  
10
import com.fasterxml.jackson.annotation.JsonIgnore;
11
import com.google.common.collect.Lists;
12
import io.swagger.annotations.ApiModel;
13
import org.apache.commons.lang3.StringUtils;
14

  
15
/**
16
 * Created by claudio on 05/07/2017.
17
 */
18
@Entity
19
@Table(name = "projects_tsv")
20
@ApiModel(value = "Project TSV model", description = "project TSV model description")
21
public class ProjectTsv {
22

  
23
	@Id
24
	@JsonIgnore
25
	private long rowid;
26
	private String code;
27
	private String acronym;
28
	private String title;
29
	@Column(name = "call_identifier")
30
	private String callIdentifier;
31
	private Date startdate;
32
	private Date enddate;
33
	@Column(name = "ec_sc39")
34
	private Boolean ecSc39;
35
	@Column(name = "oa_mandate_for_publications")
36
	private Boolean oaMandateForPublications;
37
	@Column(name = "oa_mandate_for_datasets")
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff