Add data persistence
[ccsdk/sli/core.git] / sliapi / springboot / src / main / java / org / onap / ccsdk / sli / core / sliapi / springboot / controllers / swagger / RestconfApiController.java
index 2972cd7..aa9a9d7 100644 (file)
 
 package org.onap.ccsdk.sli.core.sliapi.springboot.controllers.swagger;
 
-import java.util.Map;
-import java.util.Optional;
-import java.util.Properties;
-import javax.servlet.http.HttpServletRequest;
-import javax.validation.Valid;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicServiceBase;
 import org.onap.ccsdk.sli.core.sliapi.model.ExecuteGraphInput;
 import org.onap.ccsdk.sli.core.sliapi.model.ResponseFields;
-import org.onap.ccsdk.sli.core.sliapi.springboot.controllers.swagger.RestconfApi;
+import org.onap.ccsdk.sli.core.sliapi.model.TestResult;
+import org.onap.ccsdk.sli.core.sliapi.model.TestResults;
+import org.onap.ccsdk.sli.core.sliapi.springboot.controllers.data.TestResultConfig;
+import org.onap.ccsdk.sli.core.sliapi.springboot.controllers.data.TestResultsConfigRepository;
+import org.onap.ccsdk.sli.core.sliapi.springboot.controllers.data.TestResultsOperationalRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.annotation.ComponentScan;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.util.*;
 
 @javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2020-02-20T12:50:11.207-05:00")
 
 @Controller
+@ComponentScan(basePackages = {"org.onap.ccsdk.sli.core.sliapi.springboot.*"})
+@EntityScan("org.onap.ccsdk.sli.core.sliapi.springboot.*")
 public class RestconfApiController implements RestconfApi {
 
        private final ObjectMapper objectMapper;
        private final HttpServletRequest request;
 
-  @Autowired
-  protected SvcLogicServiceBase svc;
+    @Autowired
+    protected SvcLogicServiceBase svc;
+
+    @Autowired
+       private TestResultsConfigRepository testResultsConfigRepository;
+
+    @Autowired
+       private TestResultsOperationalRepository testResultsOperationalRepository;
+
        private static final Logger log = LoggerFactory.getLogger(RestconfApiController.class);
 
        @org.springframework.beans.factory.annotation.Autowired
@@ -175,6 +190,158 @@ public class RestconfApiController implements RestconfApi {
                }
        }
 
+       @Override
+       public ResponseEntity<Void> deleteTestResult(String testIdentifier) {
+
+               List<TestResultConfig> testResultConfigs = testResultsConfigRepository.findByTestIdentifier(testIdentifier);
+
+               if (testResultConfigs != null) {
+                       Iterator<TestResultConfig> testResultConfigIterator = testResultConfigs.iterator();
+                       while (testResultConfigIterator.hasNext()) {
+                               testResultsConfigRepository.delete(testResultConfigIterator.next());
+                       }
+               }
+
+               return (new ResponseEntity<>(HttpStatus.OK));
+       }
+
+       @Override
+       public ResponseEntity<Void> deleteTestResults() {
+
+               testResultsConfigRepository.deleteAll();
+
+               return (new ResponseEntity<>(HttpStatus.OK));
+       }
+
+       @Override
+       public ResponseEntity<TestResults> gETTestResults() {
+
+               TestResults results = new TestResults();
+
+               testResultsOperationalRepository.findAll().forEach(testResult -> {
+                       TestResult item = null;
+                       try {
+                               item = objectMapper.readValue(testResult.getResults(), TestResult.class);
+                               results.addTestResultsItem(item);
+                       } catch (JsonProcessingException e) {
+                               log.error("Could not convert testResult", e);
+                       }
+               });
+
+
+               return new ResponseEntity<>(results, HttpStatus.OK);
+       }
+
+       @Override
+       public ResponseEntity<TestResult> getTestResult(String testIdentifier) {
+               List<TestResultConfig> testResultConfigs = testResultsConfigRepository.findByTestIdentifier(testIdentifier);
+
+               if ((testResultConfigs == null) || (testResultConfigs.size() == 0)) {
+                       return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+               } else {
+                       TestResultConfig testResultConfig = testResultConfigs.get(0);
+                       TestResult testResult = null;
+                       try {
+                               testResult = objectMapper.readValue(testResultConfig.getResults(), TestResult.class);
+                       } catch (JsonProcessingException e) {
+                               log.error("Cannot convert test result", e);
+                               return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+                       }
+
+
+                       return new ResponseEntity<>(testResult, HttpStatus.OK);
+               }
+       }
+
+       @Override
+       public ResponseEntity<TestResults> getTestResults() {
+               if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
+               } else {
+                       log.warn("ObjectMapper or HttpServletRequest not configured in default RestconfApi interface so no example is generated");
+               }
+
+               TestResults results = new TestResults();
+
+               testResultsConfigRepository.findAll().forEach(testResult -> {
+                       TestResult item = null;
+                       try {
+                               item = objectMapper.readValue(testResult.getResults(), TestResult.class);
+                               results.addTestResultsItem(item);
+                       } catch (JsonProcessingException e) {
+                               log.error("Could not convert testResult", e);
+                       }
+               });
+
+
+               return new ResponseEntity<>(results, HttpStatus.OK);
+       }
+
+       @Override
+       public ResponseEntity<TestResult> pUTTestResult(String testIdentifier, @Valid TestResult testResult) {
+               if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
+               } else {
+                       log.warn("ObjectMapper or HttpServletRequest not configured in default RestconfApi interface so no example is generated");
+               }
+
+               List<TestResultConfig> testResultConfigs = testResultsConfigRepository.findByTestIdentifier(testIdentifier);
+               Iterator<TestResultConfig> testResultIter = testResultConfigs.iterator();
+               while (testResultIter.hasNext()) {
+                       testResultsConfigRepository.delete(testResultIter.next());
+               }
+
+               TestResultConfig testResultConfig = null;
+               try {
+                       testResultConfig = new TestResultConfig(testResult.getTestIdentifier(), objectMapper.writeValueAsString(testResult));
+                       testResultsConfigRepository.save(testResultConfig);
+               } catch (JsonProcessingException e) {
+                       log.error("Could not save test result", e);
+                       return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+               }
+
+               return new ResponseEntity<>(testResult, HttpStatus.OK);
+       }
+
+       @Override
+       public ResponseEntity<TestResults> postTestResults(@Valid TestResults testResults) {
+               List<TestResult> resultList = testResults.getTestResults();
+
+               Iterator<TestResult> resultIterator = resultList.iterator();
+
+               while (resultIterator.hasNext()) {
+                       TestResult curResult = resultIterator.next();
+                       try {
+                               testResultsConfigRepository.save(new TestResultConfig(curResult.getTestIdentifier(), objectMapper.writeValueAsString(curResult)));
+                       } catch (JsonProcessingException e) {
+                               log.error("Could not save test result", e);
+                               return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+                       }
+               }
+
+               return new ResponseEntity<>(testResults, HttpStatus.OK);
+       }
+
+       @Override
+       public ResponseEntity<TestResults> putTestResults(@Valid TestResults testResults) {
+               testResultsConfigRepository.deleteAll();
+
+               List<TestResult> resultList = testResults.getTestResults();
+
+               Iterator<TestResult> resultIterator = resultList.iterator();
+
+
+               while (resultIterator.hasNext()) {
+                       TestResult curResult = resultIterator.next();
+                       try {
+                               testResultsConfigRepository.save(new TestResultConfig(curResult.getTestIdentifier(), objectMapper.writeValueAsString(curResult)));
+                       } catch (JsonProcessingException e) {
+                               log.error("Could not save test result", e);
+                               return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
+                       }
+               }
+
+               return new ResponseEntity<>(testResults, HttpStatus.OK);
+       }
+
        public static String propsToJson(Properties props, String root)
        {
                StringBuffer sbuff = new StringBuffer();