+ @ApiOperation(value = "Get the EI job definitions for one EI producer")
+ @GetMapping(EI_JOBS)
+ public ResponseEntity<List<JobInfo>> getEiJobs() {
+ logger.debug("getEiJobs");
+ ResponseEntity<String> response = this.eiProducerApi.getAllEiProducerIds();
+ JsonArray bodyJson = JsonParser.parseString(response.getBody()).getAsJsonArray();
+ List<JobInfo> allJobs = new ArrayList<>();
+ for (JsonElement producerId : bodyJson) {
+ allJobs.addAll(getJobs(producerId));
+ }
+ return new ResponseEntity<>(allJobs, HttpStatus.OK);
+ }
+
+ private List<JobInfo> getJobs(JsonElement producerId) {
+ List<JobInfo> jobs = new ArrayList<>();
+ ResponseEntity<String> jobsResponse = this.eiProducerApi.getEiJobsForOneEiProducer(producerId.getAsString());
+ JsonArray jobsJson = JsonParser.parseString(jobsResponse.getBody()).getAsJsonArray();
+ for (JsonElement jobJson : jobsJson) {
+ JobInfo jobInfo = gson.fromJson(jobJson, JobInfo.class);
+ jobs.add(jobInfo);
+ }
+ return jobs;
+ }
+
+ @ApiOperation(value = "Get EI producers")
+ @GetMapping(EI_PRODUCERS)
+ public ResponseEntity<List<ProducerInfo>> getEiProducers() {
+ logger.debug("getEiProducers");
+ ResponseEntity<String> response = this.eiProducerApi.getAllEiProducerIds();
+ JsonArray bodyJson = JsonParser.parseString(response.getBody()).getAsJsonArray();
+ List<ProducerInfo> producers = new ArrayList<>();
+ for (JsonElement producerId : bodyJson) {
+ ProducerInfo producerInfo = ProducerInfo.builder() //
+ .id(producerId.getAsString()) //
+ .types(getSupportedTypes(producerId)) //
+ .status(getProducerStatus(producerId)) //
+ .build();
+ producers.add(producerInfo);
+ }
+
+ return new ResponseEntity<>(producers, HttpStatus.OK);
+ }
+
+ private String[] getSupportedTypes(JsonElement producerId) {
+ ResponseEntity<String> producerResponse = this.eiProducerApi.getEiProducer(producerId.getAsString());
+ JsonArray supportedTypesJson = JsonParser.parseString(producerResponse.getBody()).getAsJsonObject()
+ .get("supported_ei_types").getAsJsonArray();
+ List<String> supportedTypes = new ArrayList<>();
+ for (JsonElement typeJson : supportedTypesJson) {
+ supportedTypes.add(typeJson.getAsJsonObject().get("ei_type_identity").getAsString());
+ }
+ return supportedTypes.toArray(new String[0]);
+ }
+
+ private String getProducerStatus(JsonElement producerId) {
+ ResponseEntity<String> statusResponse = this.eiProducerApi.getEiProducerStatus(producerId.getAsString());
+ return JsonParser.parseString(statusResponse.getBody()).getAsJsonObject().get("operational_state")
+ .getAsString();
+ }
+