27
27
28
28
import javax .annotation .PostConstruct ;
29
29
30
+ import org .springframework .http .HttpEntity ;
31
+ import org .springframework .http .HttpMethod ;
32
+ import org .springframework .http .ResponseEntity ;
30
33
import org .springframework .stereotype .Component ;
31
34
import org .springframework .web .client .RestTemplate ;
32
35
33
36
import it .bz .idm .bdp .DataPusher ;
34
37
import it .bz .idm .bdp .dto .DataMapDto ;
35
38
import it .bz .idm .bdp .dto .DataTypeDto ;
39
+ import it .bz .idm .bdp .dto .ProvenanceDto ;
36
40
import it .bz .idm .bdp .dto .RecordDtoImpl ;
37
41
import it .bz .idm .bdp .dto .StationDto ;
38
42
import it .bz .idm .bdp .dto .StationList ;
@@ -68,25 +72,36 @@ public void init() {
68
72
public Object pushData (String datasourceName , DataMapDto <? extends RecordDtoImpl > dto ) {
69
73
this .pushProvenance ();
70
74
dto .setProvenance (this .provenance .getUuid ());
71
- return restTemplate .postForObject (
72
- url + PUSH_RECORDS + "{datasourceName}?prn={}&prv={}" ,
73
- dto ,
74
- Object .class ,
75
- datasourceName ,
76
- provenance .getDataCollector (),
77
- provenance .getDataCollectorVersion ()
78
- );
75
+ return restTemplate
76
+ .exchange (
77
+ url + PUSH_RECORDS + "{datasourceName}?prn={}&prv={}" ,
78
+ HttpMethod .POST ,
79
+ new HttpEntity <DataMapDto <? extends RecordDtoImpl >>(dto ),
80
+ Object .class ,
81
+ datasourceName ,
82
+ provenance .getDataCollector (),
83
+ provenance .getDataCollectorVersion ()
84
+ )
85
+ .getBody ();
79
86
}
80
87
81
88
private void pushProvenance () {
82
- String provenanceUuid = restTemplate .postForObject (
89
+ // We know that the provenance exist, and which UUID it has.
90
+ // So we do not need to get that information again from the DB
91
+ // This approach assumes, that the DB will not change from any
92
+ // other caller.
93
+ if (this .provenance .getUuid () != null ) {
94
+ return ;
95
+ }
96
+ ResponseEntity <String > provenanceUuid = restTemplate .exchange (
83
97
url + PROVENANCE + "?prn={}&prv={}" ,
84
- this .provenance ,
98
+ HttpMethod .POST ,
99
+ new HttpEntity <ProvenanceDto >(this .provenance ),
85
100
String .class ,
86
101
provenance .getDataCollector (),
87
102
provenance .getDataCollectorVersion ()
88
103
);
89
- this .provenance .setUuid (provenanceUuid );
104
+ this .provenance .setUuid (provenanceUuid . getBody () );
90
105
}
91
106
92
107
public Object pushData (DataMapDto <? extends RecordDtoImpl > dto ) {
@@ -102,27 +117,33 @@ public Object syncStations(StationList data) {
102
117
public Object syncStations (String datasourceName , StationList data ) {
103
118
if (data == null )
104
119
return null ;
105
- return restTemplate .postForObject (
106
- url + SYNC_STATIONS + "{datasourceName}?prn={}&prv={}" ,
107
- data ,
108
- Object .class ,
109
- datasourceName ,
110
- provenance .getDataCollector (),
111
- provenance .getDataCollectorVersion ()
112
- );
120
+ return restTemplate
121
+ .exchange (
122
+ url + SYNC_STATIONS + "{datasourceName}?prn={}&prv={}" ,
123
+ HttpMethod .POST ,
124
+ new HttpEntity <StationList >(data ),
125
+ Object .class ,
126
+ datasourceName ,
127
+ provenance .getDataCollector (),
128
+ provenance .getDataCollectorVersion ()
129
+ )
130
+ .getBody ();
113
131
}
114
132
115
133
@ Override
116
134
public Object syncDataTypes (String datasourceName , List <DataTypeDto > data ) {
117
135
if (data == null )
118
136
return null ;
119
- return restTemplate .postForObject (
120
- url + SYNC_DATA_TYPES + "?prn={}&prv={}" ,
121
- data ,
122
- Object .class ,
123
- provenance .getDataCollector (),
124
- provenance .getDataCollectorVersion ()
125
- );
137
+ return restTemplate
138
+ .exchange (
139
+ url + SYNC_DATA_TYPES + "?prn={}&prv={}" ,
140
+ HttpMethod .POST ,
141
+ new HttpEntity <List <DataTypeDto >>(data ),
142
+ Object .class ,
143
+ provenance .getDataCollector (),
144
+ provenance .getDataCollectorVersion ()
145
+ )
146
+ .getBody ();
126
147
}
127
148
128
149
public Object syncDataTypes (List <DataTypeDto > data ) {
@@ -131,16 +152,17 @@ public Object syncDataTypes(List<DataTypeDto> data) {
131
152
132
153
@ Override
133
154
public Object getDateOfLastRecord (String stationCode , String dataType , Integer period ) {
134
- return restTemplate .getForObject (
135
- url + GET_DATE_OF_LAST_RECORD + "{datasourceName}/?stationId={stationId}&typeId={dataType}&period={period}&prn={}&prv={}" ,
136
- Date .class ,
137
- this .integreenTypology ,
138
- stationCode ,
139
- dataType ,
140
- period ,
141
- provenance .getDataCollector (),
142
- provenance .getDataCollectorVersion ()
143
- );
155
+ return restTemplate
156
+ .getForObject (
157
+ url + GET_DATE_OF_LAST_RECORD + "{datasourceName}/?stationId={stationId}&typeId={dataType}&period={period}&prn={}&prv={}" ,
158
+ Date .class ,
159
+ this .integreenTypology ,
160
+ stationCode ,
161
+ dataType ,
162
+ period ,
163
+ provenance .getDataCollector (),
164
+ provenance .getDataCollectorVersion ()
165
+ );
144
166
}
145
167
146
168
@ Override
@@ -150,16 +172,15 @@ public void connectToDataCenterCollector() {
150
172
151
173
@ Override
152
174
public List <StationDto > fetchStations (String datasourceName , String origin ) {
153
- if (datasourceName == null )
154
- datasourceName = this .integreenTypology ;
155
- StationDto [] object = restTemplate .getForObject (
156
- url + STATIONS +"{datasourceName}/?origin={origin}&prn={}&prv={}" ,
157
- StationDto [].class ,
158
- datasourceName ,
159
- origin ,
160
- provenance .getDataCollector (),
161
- provenance .getDataCollectorVersion ()
162
- );
175
+ StationDto [] object = restTemplate
176
+ .getForObject (
177
+ url + STATIONS +"{datasourceName}/?origin={origin}&prn={}&prv={}" ,
178
+ StationDto [].class ,
179
+ datasourceName == null ? this .integreenTypology : datasourceName ,
180
+ origin ,
181
+ provenance .getDataCollector (),
182
+ provenance .getDataCollectorVersion ()
183
+ );
163
184
return Arrays .asList (object );
164
185
}
165
186
0 commit comments