11package it .cnr .irea .ediT .service ;
22
3- import java .io .UnsupportedEncodingException ;
4- import java .util .Date ;
5-
63import it .cnr .irea .ediT .MetadataTemplateDocument ;
74import it .cnr .irea .ediT .model .Metadata ;
5+ import it .cnr .irea .ediT .model .MetadataListDTO ;
6+ import it .cnr .irea .ediT .model .ServiceResponse ;
87import it .cnr .irea .ediT .model .Setting ;
98import it .cnr .irea .ediT .model .TemplateElementList ;
109
10+ import java .io .UnsupportedEncodingException ;
11+ import java .util .Date ;
12+
1113import javax .persistence .EntityManager ;
1214
15+ import org .apache .log4j .Logger ;
1316import 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 ;
1422import org .springframework .stereotype .Service ;
1523import org .springframework .transaction .annotation .Transactional ;
24+ import org .springframework .web .client .RestTemplate ;
1625import org .w3c .dom .Document ;
1726
1827@ Transactional
1928@ Service
2029public 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