6
6
import com .fasterxml .jackson .databind .node .ObjectNode ;
7
7
import java .io .InputStream ;
8
8
import java .io .OutputStream ;
9
+ import java .time .Instant ;
10
+ import java .util .concurrent .atomic .AtomicInteger ;
9
11
import javax .servlet .http .HttpSession ;
10
12
import lombok .extern .slf4j .Slf4j ;
11
13
import org .fao .geonet .common .search .domain .ReservedOperation ;
12
14
import org .fao .geonet .common .search .domain .UserInfo ;
13
15
import org .fao .geonet .index .JsonUtils ;
14
- import org .fao .geonet .index .converter .GeoJsonConverter ;
15
- import org .fao .geonet .index .model .geojson .Record ;
16
+ import org .fao .geonet .index .converter .IGeoJsonConverter ;
16
17
import org .fao .geonet .index .model .gn .IndexRecord ;
17
18
import org .fao .geonet .index .model .gn .IndexRecordFieldNames ;
18
19
import org .springframework .beans .factory .annotation .Autowired ;
@@ -25,7 +26,7 @@ public class GeoJsonResponseProcessorImpl
25
26
extends JsonUserAndSelectionAwareResponseProcessorImpl {
26
27
27
28
@ Autowired
28
- GeoJsonConverter geoJsonConverter ;
29
+ IGeoJsonConverter geoJsonConverter ;
29
30
30
31
@ Override
31
32
public void processResponse (HttpSession httpSession ,
@@ -37,13 +38,14 @@ public void processResponse(HttpSession httpSession,
37
38
JsonGenerator generator = ResponseParser .jsonFactory .createGenerator (streamToClient );
38
39
39
40
try {
40
- ResponseParser responseParser = new ResponseParser ();
41
+ ResponseParser elasticJsonResponseParser = new ResponseParser ();
41
42
generator .writeStartObject ();
42
43
43
44
generator .writeStringField ("type" , "FeatureCollection" );
44
45
generator .writeArrayFieldStart ("features" );
46
+ AtomicInteger numbFeatures = new AtomicInteger (0 );
45
47
{
46
- responseParser .matchHits (parser , generator , doc -> {
48
+ elasticJsonResponseParser .matchHits (parser , generator , doc -> {
47
49
48
50
// Remove fields with privileges info
49
51
if (doc .has (IndexRecordFieldNames .source )) {
@@ -57,8 +59,9 @@ public void processResponse(HttpSession httpSession,
57
59
doc .get (IndexRecordFieldNames .source ).toPrettyString (),
58
60
IndexRecord .class );
59
61
try {
60
- Record geojsonRecord = geoJsonConverter .convert (indexRecord );
62
+ Object geojsonRecord = geoJsonConverter .convert (indexRecord );
61
63
generator .writeRawValue (objectMapper .writeValueAsString (geojsonRecord ));
64
+ numbFeatures .incrementAndGet ();
62
65
} catch (Exception ex ) {
63
66
log .error (String .format (
64
67
"GeoJSON conversion returned null result for uuid %s. Check http://localhost:9901/collections/main/items/%s?f=geojson" ,
@@ -68,7 +71,15 @@ public void processResponse(HttpSession httpSession,
68
71
}, false );
69
72
}
70
73
generator .writeEndArray ();
71
- generator .writeNumberField ("size" , responseParser .total );
74
+ generator .writeNumberField ("numberMatched" , elasticJsonResponseParser .total );
75
+ generator .writeNumberField ("numberReturned" , numbFeatures .intValue ());
76
+
77
+ generator .writeStringField ("timeStamp" , Instant .now ().toString ());
78
+
79
+ generator .writeArrayFieldStart ("links" );
80
+ //TO DO ADD LINKS
81
+ generator .writeEndArray ();
82
+
72
83
generator .writeEndObject ();
73
84
generator .flush ();
74
85
} finally {
0 commit comments