Remove unused method
[portal/nonrtric-controlpanel.git] / webapp-backend / src / main / java / org / oransc / portal / nonrtric / controlpanel / controller / EnrichmentController.java
index 558923f..297f5bc 100644 (file)
  */
 package org.oransc.portal.nonrtric.controlpanel.controller;
 
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+
+import io.swagger.annotations.ApiOperation;
+
 import java.lang.invoke.MethodHandles;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.oransc.portal.nonrtric.controlpanel.ControlPanelConstants;
 import org.oransc.portal.nonrtric.controlpanel.eiproducerapi.EiProducerApi;
+import org.oransc.portal.nonrtric.controlpanel.model.JobInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo.ProducerEiTypeRegistrationInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
-import org.springframework.security.access.annotation.Secured;
 import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import io.swagger.annotations.ApiOperation;
 
 /**
  * Proxies calls from the front end to the EI Producer API.
@@ -52,7 +65,6 @@ public class EnrichmentController {
     // Publish paths in constants so tests are easy to write
     public static final String CONTROLLER_PATH = ControlPanelConstants.ENDPOINT_PREFIX + "/enrichment";
     // Endpoints
-    public static final String VERSION_METHOD = ControlPanelConstants.VERSION_METHOD;
     public static final String EI_TYPES = "eitypes";
     public static final String EI_PRODUCERS = "eiproducers";
     public static final String EI_JOBS = "eijobs";
@@ -62,6 +74,7 @@ public class EnrichmentController {
 
     // Populated by the autowired constructor
     private final EiProducerApi eiProducerApi;
+    public static com.google.gson.Gson gson = new GsonBuilder().create();
 
     @Autowired
     public EnrichmentController(final EiProducerApi eiProducerApi) {
@@ -70,54 +83,57 @@ public class EnrichmentController {
         logger.debug("enrichment: configured with client type {}", eiProducerApi.getClass().getName());
     }
 
-    /*
-     * The fields are defined in the Enrichment Control Typescript interface.
-     */
-    @ApiOperation(value = "Get the EI type identifiers")
-    @GetMapping(EI_TYPES)
-    @Secured({ControlPanelConstants.ROLE_ADMIN, ControlPanelConstants.ROLE_STANDARD})
-    public ResponseEntity<String> getAllEiTypeIds() {
-        logger.debug("getAllEiTypeIds");
-        return this.eiProducerApi.getAllEiTypeIds();
+    @ApiOperation(value = "Get the EI job definitions for one EI producer")
+    @GetMapping(EI_JOBS)
+    public ResponseEntity<String> 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<>(gson.toJson(allJobs), HttpStatus.OK);
     }
 
-    @ApiOperation(value = "Get an individual EI type")
-    @GetMapping(EI_TYPES + "/{" + EI_TYPE_ID + "}")
-    @Secured({ControlPanelConstants.ROLE_ADMIN, ControlPanelConstants.ROLE_STANDARD})
-    public ResponseEntity<String> getEiType(@PathVariable(EI_TYPE_ID) String eiTypeId) {
-        logger.debug("getEiType {}", eiTypeId);
-        return this.eiProducerApi.getEiType(eiTypeId);
+    private List<JobInfo> getJobs(JsonElement producerId) {
+        ResponseEntity<List<JobInfo>> jobsResponse =
+            this.eiProducerApi.getEiJobsForOneEiProducer(producerId.getAsString());
+        return jobsResponse.getBody();
     }
 
-    @ApiOperation(value = "Get the EI producer identifiers")
+    @ApiOperation(value = "Get EI producers")
     @GetMapping(EI_PRODUCERS)
-    @Secured({ControlPanelConstants.ROLE_ADMIN, ControlPanelConstants.ROLE_STANDARD})
-    public ResponseEntity<String> getAllEiProducerIds() {
-        logger.debug("getAllEiProducerIds");
-        return this.eiProducerApi.getAllEiProducerIds();
-    }
+    public ResponseEntity<String> 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);
+        }
 
-    @ApiOperation(value = "Get an individual EI producer")
-    @GetMapping(EI_PRODUCERS + "/{" + EI_PRODUCER_ID + "}")
-    @Secured({ControlPanelConstants.ROLE_ADMIN, ControlPanelConstants.ROLE_STANDARD})
-    public ResponseEntity<String> getEiProducer(@PathVariable(EI_PRODUCER_ID) String eiProducerId) {
-        logger.debug("getEiProducer {}", eiProducerId);
-        return this.eiProducerApi.getEiProducer(eiProducerId);
+        return new ResponseEntity<>(gson.toJson(producers), HttpStatus.OK);
     }
 
-    @ApiOperation(value = "Get the EI job definitions for one EI producer")
-    @GetMapping(EI_PRODUCERS + "/{" + EI_PRODUCER_ID + "}/" + EI_JOBS)
-    @Secured({ControlPanelConstants.ROLE_ADMIN, ControlPanelConstants.ROLE_STANDARD})
-    public ResponseEntity<String> getEiJobsForOneEiProducer(@PathVariable(EI_PRODUCER_ID) String eiProducerId) {
-        logger.debug("getEiJobsForOneEiProducer {}", eiProducerId);
-        return this.eiProducerApi.getEiJobsForOneEiProducer(eiProducerId);
+    private String[] getSupportedTypes(JsonElement producerId) {
+        ResponseEntity<ProducerRegistrationInfo> producerResponse =
+            this.eiProducerApi.getEiProducer(producerId.getAsString());
+        List<String> supportedTypes = new ArrayList<>();
+        for (ProducerEiTypeRegistrationInfo type : producerResponse.getBody().types) {
+            supportedTypes.add(type.eiTypeId);
+        }
+        return supportedTypes.toArray(new String[0]);
     }
 
-    @ApiOperation(value = "Get the status of an EI producer")
-    @GetMapping(EI_PRODUCERS + "/{" + EI_PRODUCER_ID + "}/" + STATUS)
-    @Secured({ControlPanelConstants.ROLE_ADMIN, ControlPanelConstants.ROLE_STANDARD})
-    public ResponseEntity<String> getEiProducerStatus(@PathVariable(EI_PRODUCER_ID) String eiProducerId) {
-        logger.debug("getEiProducerStatus {}", eiProducerId);
-        return this.eiProducerApi.getEiProducerStatus(eiProducerId);
+    private String getProducerStatus(JsonElement producerId) {
+        ResponseEntity<ProducerStatusInfo> statusResponse =
+            this.eiProducerApi.getEiProducerStatus(producerId.getAsString());
+        return statusResponse.getBody().opState.toString();
     }
-}
\ No newline at end of file
+}