Skip to content

Commit 5a1d767

Browse files
committed
All features implemented
1 parent 8285906 commit 5a1d767

9 files changed

Lines changed: 170 additions & 26 deletions

File tree

EDI-T/.classpath

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,8 @@
1212
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
1313
</attributes>
1414
</classpathentry>
15-
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
16-
<attributes>
17-
<attribute name="maven.pomderived" value="true"/>
18-
</attributes>
19-
</classpathentry>
2015
<classpathentry kind="lib" path="postgresql-9.4-1201.jdbc4.jar"/>
2116
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/saxon9he.jar"/>
17+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
2218
<classpathentry kind="output" path="target/classes"/>
2319
</classpath>
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
eclipse.preferences.version=1
22
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3-
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
3+
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
4+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
45
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5-
org.eclipse.jdt.core.compiler.compliance=1.6
6+
org.eclipse.jdt.core.compiler.compliance=1.7
67
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
78
org.eclipse.jdt.core.compiler.debug.localVariable=generate
89
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
910
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
1011
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
1112
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
12-
org.eclipse.jdt.core.compiler.source=1.6
13+
org.eclipse.jdt.core.compiler.source=1.7

EDI-T/pom.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,21 @@
6464
<groupId>org.springframework.boot</groupId>
6565
<artifactId>spring-boot-starter-data-solr</artifactId>
6666
</dependency>
67+
<dependency>
68+
<groupId>org.codehaus.jackson</groupId>
69+
<artifactId>jackson-jaxrs</artifactId>
70+
<version>1.9.13</version>
71+
</dependency>
72+
<dependency>
73+
<groupId>org.codehaus.jackson</groupId>
74+
<artifactId>jackson-mapper-asl</artifactId>
75+
<version>1.9.13</version>
76+
</dependency>
77+
<dependency>
78+
<groupId>org.codehaus.jackson</groupId>
79+
<artifactId>jackson-core-asl</artifactId>
80+
<version>1.9.13</version>
81+
</dependency>
6782
</dependencies>
6883
<build>
6984
<sourceDirectory>src</sourceDirectory>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package it.cnr.irea.ediT;
2+
3+
import org.springframework.context.annotation.Configuration;
4+
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
5+
6+
@Configuration
7+
@EnableWebMvc
8+
public class WebConfig {
9+
10+
}

EDI-T/src/it/cnr/irea/ediT/model/Metadata.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import javax.persistence.Id;
1515
import javax.persistence.Lob;
1616
import javax.persistence.ManyToOne;
17+
import javax.persistence.NamedQueries;
18+
import javax.persistence.NamedQuery;
1719
import javax.persistence.Transient;
1820
import javax.xml.bind.annotation.XmlElement;
1921
import javax.xml.bind.annotation.XmlRootElement;
@@ -22,14 +24,18 @@
2224

2325
import com.fasterxml.jackson.annotation.JsonProperty;
2426

25-
@Entity
26-
@XmlRootElement
2727
/*
2828
*
2929
* @author: Fabio Pavesi
3030
* @version: 1.0
3131
*
3232
*/
33+
@NamedQueries(value={
34+
@NamedQuery(name="mdToSync", query="SELECT m FROM Metadata m WHERE m.synchronised = FALSE")
35+
})
36+
37+
@Entity
38+
@XmlRootElement
3339
public class Metadata {
3440
@Transient
3541
@Autowired
@@ -40,6 +46,7 @@ public class Metadata {
4046
@Id @GeneratedValue(strategy = GenerationType.AUTO)
4147
private int id;
4248

49+
4350
private URI uri;
4451

4552
@Lob @Basic(fetch=FetchType.LAZY)
@@ -52,8 +59,7 @@ public class Metadata {
5259
private Date metadataCreated;
5360
private Date processStarted;
5461
private Date processEnded;
55-
@ManyToOne
56-
private StarterKit starterKit;
62+
private boolean synchronised = false;
5763

5864
public Metadata() {
5965
metadataCreated = new Date();
@@ -132,16 +138,14 @@ public void setTemplate(String template) {
132138
this.template = template;
133139
}
134140

135-
@XmlElement(name="starter-kit")
136-
@JsonProperty("starter-kit")
137-
public StarterKit getStarterKit() {
138-
return starterKit;
141+
public boolean isSynchronised() {
142+
return synchronised;
139143
}
140144

141-
public void setStarterKit(StarterKit starterKit) {
142-
this.starterKit = starterKit;
145+
public void setSynchronised(boolean synchronised) {
146+
this.synchronised = synchronised;
143147
}
144-
148+
145149
private String getBaseURL() {
146150
if ( service != null ) {
147151
return service.getSetting("base_url", "https://sp7.irea.cnr.it/jboss/MDService/") + "rest/ediml/";
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package it.cnr.irea.ediT.model;
2+
3+
import java.util.List;
4+
5+
import javax.xml.bind.annotation.XmlRootElement;
6+
7+
@XmlRootElement
8+
public class MetadataListDTO {
9+
private String getItURI;
10+
private List<Metadata> metadata;
11+
12+
public String getGetItURI() {
13+
return getItURI;
14+
}
15+
public void setGetItURI(String getItURI) {
16+
this.getItURI = getItURI;
17+
}
18+
public List<Metadata> getMetadata() {
19+
return metadata;
20+
}
21+
public void setMetadata(List<Metadata> metadata) {
22+
this.metadata = metadata;
23+
}
24+
25+
26+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package it.cnr.irea.ediT.model;
2+
3+
import javax.xml.bind.annotation.XmlRootElement;
4+
5+
@XmlRootElement
6+
public class ServiceResponse {
7+
private int code;
8+
private String message;
9+
10+
public int getCode() {
11+
return code;
12+
}
13+
public void setCode(int code) {
14+
this.code = code;
15+
}
16+
public String getMessage() {
17+
return message;
18+
}
19+
public void setMessage(String message) {
20+
this.message = message;
21+
}
22+
}

EDI-T/src/it/cnr/irea/ediT/rest/RestBase.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import it.cnr.irea.ediT.exception.Settings;
88
import it.cnr.irea.ediT.model.ErrorResponse;
99
import it.cnr.irea.ediT.model.Metadata;
10+
import it.cnr.irea.ediT.model.MetadataListDTO;
1011
import it.cnr.irea.ediT.model.PostMetadataResponse;
12+
import it.cnr.irea.ediT.model.ServiceResponse;
1113
import it.cnr.irea.ediT.model.TemplateElement;
1214
import it.cnr.irea.ediT.model.TemplateElementList;
1315
import it.cnr.irea.ediT.model.TemplateItem;
@@ -150,11 +152,18 @@ public ResponseEntity<PostMetadataResponse> postMetadataNG(HttpServletRequest re
150152
// return Response.ok(xml).build();
151153
Document xmlDoc = document.getOutput();
152154

153-
154155
service.saveMetadata(document, xml, elementList);
155156

156157
document.saveTo("/tmp/last_md.xml");
157-
158+
159+
try {
160+
service.syncMetadata();
161+
log.info("sync done");
162+
} catch(Exception e) {
163+
// do nothing
164+
log.severe(e.getMessage());
165+
}
166+
158167
response.setEdimlId(Integer.parseInt(elementList.getFileId()));
159168
response.setResponseCode(200);
160169
response.setMessages(document.getMessages());
@@ -237,7 +246,7 @@ public TemplateElementList getEDIML(@PathVariable int id) {
237246
if ( elementList != null && (elementList.getFileId() == null || elementList.getFileId().trim().equalsIgnoreCase("")) ) {
238247
elementList.setFileId("" + md.getId());
239248
elementList.setFileUri(md.getUri());
240-
elementList.setStarterKitUri(md.getStarterKit().getUri());
249+
elementList.setStarterKitUri(service.getHostName());
241250
}
242251
} catch (ParserConfigurationException e) {
243252
// TODO Auto-generated catch block
@@ -257,4 +266,10 @@ public TemplateElementList getEDIML(@PathVariable int id) {
257266
}
258267
return elementList;
259268
}
269+
270+
@RequestMapping(method = RequestMethod.GET, value = "rest/metadata/sync", produces = MediaType.APPLICATION_JSON_VALUE)
271+
public ServiceResponse syncMetadata() {
272+
return service.syncMetadata();
273+
}
274+
260275
}

EDI-T/src/it/cnr/irea/ediT/service/BaseService.java

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,46 @@
11
package it.cnr.irea.ediT.service;
22

3-
import java.io.UnsupportedEncodingException;
4-
import java.util.Date;
5-
63
import it.cnr.irea.ediT.MetadataTemplateDocument;
74
import it.cnr.irea.ediT.model.Metadata;
5+
import it.cnr.irea.ediT.model.MetadataListDTO;
6+
import it.cnr.irea.ediT.model.ServiceResponse;
87
import it.cnr.irea.ediT.model.Setting;
98
import it.cnr.irea.ediT.model.TemplateElementList;
109

10+
import java.io.UnsupportedEncodingException;
11+
import java.util.Date;
12+
1113
import javax.persistence.EntityManager;
1214

15+
import org.apache.log4j.Logger;
1316
import org.springframework.beans.factory.annotation.Autowired;
17+
import org.springframework.http.HttpEntity;
18+
import org.springframework.http.HttpHeaders;
19+
import org.springframework.http.MediaType;
20+
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
21+
import org.springframework.scheduling.annotation.Scheduled;
1422
import org.springframework.stereotype.Service;
1523
import org.springframework.transaction.annotation.Transactional;
24+
import org.springframework.web.client.RestTemplate;
1625
import org.w3c.dom.Document;
1726

1827
@Transactional
1928
@Service
2029
public class BaseService {
2130
@Autowired
2231
EntityManager em;
32+
33+
Logger log = Logger.getRootLogger();
34+
35+
@Scheduled(fixedDelay = 1000 * 60 * 5)
36+
public void doSync() {
37+
log.info("syncing metadata");
38+
syncMetadata();
39+
}
40+
2341

2442
public String getHostName() {
25-
return getSetting("base_url", null);
43+
return getSetting("starterKitURI", null);
2644
}
2745

2846
@Transactional(readOnly = true)
@@ -53,6 +71,7 @@ public void saveMetadata(MetadataTemplateDocument document, String xml, Template
5371

5472
metadata.setOutput(new String(document.xmlUTF8String(xmlDoc), "utf-8"));
5573
metadata.setProcessEnded(new Date());
74+
metadata.setSynchronised(false);
5675
metadata = em.merge(metadata);
5776
metadata.getId();
5877
em.persist(metadata);
@@ -63,4 +82,40 @@ public Metadata getMetadata(int id) {
6382
Metadata md = em.find(Metadata.class, id);
6483
return md;
6584
}
85+
86+
@Transactional
87+
public ServiceResponse syncMetadata() {
88+
final String uri = "http://localhost:8080/springrestexample/employees.xml";
89+
MetadataListDTO dto = new MetadataListDTO();
90+
dto.setGetItURI(getHostName());
91+
dto.setMetadata(em.createNamedQuery("mdToSync").getResultList());
92+
93+
if ( dto.getMetadata().size() > 0 ) {
94+
RestTemplate restTemplate = new RestTemplate();
95+
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
96+
HttpHeaders headers = new HttpHeaders();
97+
headers.setContentType(MediaType.APPLICATION_JSON);
98+
99+
HttpEntity<MetadataListDTO> entity = new HttpEntity<MetadataListDTO>(dto, headers);
100+
101+
// restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
102+
103+
// MetadataListDTO result = restTemplate.postForObject(getSetting("md_principal", "http://localhost:8081/registry/metadata"), dto, MetadataListDTO.class);
104+
ServiceResponse result = restTemplate.postForObject(getSetting("md_principal", "http://localhost:8081/registry/metadata"), entity, ServiceResponse.class);
105+
106+
if ( result.getCode() == 200 ) {
107+
for ( Metadata m : dto.getMetadata() ) {
108+
m.setSynchronised(true);
109+
em.merge(m);
110+
}
111+
}
112+
113+
return result;
114+
} else {
115+
ServiceResponse result = new ServiceResponse();
116+
result.setCode(100);
117+
result.setMessage("Nothing to do");
118+
return result;
119+
}
120+
}
66121
}

0 commit comments

Comments
 (0)