Create Common Model objects in SPI
[cps.git] / cps-rest / src / main / java / org / onap / cps / rest / controller / CpsRestController.java
old mode 100644 (file)
new mode 100755 (executable)
index f0c5fcb..0821dca
@@ -27,10 +27,14 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import javax.validation.Valid;
+import org.modelmapper.ModelMapper;
 import org.onap.cps.api.CpService;
+import org.onap.cps.api.CpsAdminService;
+import org.onap.cps.api.CpsModuleService;
 import org.onap.cps.exceptions.CpsException;
 import org.onap.cps.exceptions.CpsValidationException;
 import org.onap.cps.rest.api.CpsRestApi;
+import org.onap.cps.spi.model.Anchor;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -49,56 +53,77 @@ public class CpsRestController implements CpsRestApi {
     @Autowired
     private CpService cpService;
 
+    @Autowired
+    private CpsModuleService cpsModuleService;
+
+    @Autowired
+    private CpsAdminService cpsAdminService;
+
+    @Autowired
+    private ModelMapper modelMapper;
+
+    /**
+     * Create a new anchor.
+     *
+     * @param anchor        the anchor details object.
+     * @param dataspaceName the dataspace name.
+     * @return a ResponseEntity with the anchor name.
+     */
     @Override
-    public ResponseEntity<Object> createAnchor(@Valid MultipartFile multipartFile, String dataspaceName) {
-        return null;
+    public ResponseEntity<String> createAnchor(final org.onap.cps.rest.model.@Valid Anchor anchor,
+        final String dataspaceName) {
+        final Anchor anchorDetails = modelMapper.map(anchor, Anchor.class);
+        anchorDetails.setDataspaceName(dataspaceName);
+        final String anchorName = cpsAdminService.createAnchor(anchorDetails);
+        return new ResponseEntity<String>(anchorName, HttpStatus.CREATED);
     }
 
     @Override
-    public ResponseEntity<Object> createModules(@Valid MultipartFile multipartFile, String dataspaceName) {
+    public ResponseEntity<Object> createModules(@Valid final MultipartFile multipartFile, final String dataspaceName) {
         final File fileToParse = saveToFile(multipartFile);
-        final SchemaContext schemaContext = cpService.parseAndValidateModel(fileToParse);
-        cpService.storeSchemaContext(schemaContext, dataspaceName);
+        final SchemaContext schemaContext = cpsModuleService.parseAndValidateModel(fileToParse);
+        cpsModuleService.storeSchemaContext(schemaContext, dataspaceName);
         return new ResponseEntity<>("Resource successfully created", HttpStatus.CREATED);
     }
 
     @Override
-    public ResponseEntity<Object> createNode(@Valid MultipartFile multipartFile, String dataspaceName) {
+    public ResponseEntity<Object> createNode(@Valid final MultipartFile multipartFile, final String dataspaceName) {
         return null;
     }
 
     @Override
-    public ResponseEntity<Object> deleteAnchor(String dataspaceName, String anchorName) {
+    public ResponseEntity<Object> deleteAnchor(final String dataspaceName, final String anchorName) {
         return null;
     }
 
     @Override
-    public ResponseEntity<Object> deleteDataspace(String dataspaceName) {
+    public ResponseEntity<Object> deleteDataspace(final String dataspaceName) {
         return null;
     }
 
     @Override
-    public ResponseEntity<Object> getAnchor(String dataspaceName, String anchorName) {
+    public ResponseEntity<Object> getAnchor(final String dataspaceName, final String anchorName) {
         return null;
     }
 
     @Override
-    public ResponseEntity<Object> getAnchors(String dataspaceName) {
+    public ResponseEntity<Object> getAnchors(final String dataspaceName) {
         return null;
     }
 
     @Override
-    public ResponseEntity<Object> getModule(String dataspaceName, @Valid String namespaceName, @Valid String revision) {
+    public ResponseEntity<Object> getModule(final String dataspaceName, @Valid final String namespaceName,
+        @Valid final String revision) {
         return null;
     }
 
     @Override
-    public ResponseEntity<Object> getNode(String dataspaceName) {
+    public ResponseEntity<Object> getNode(final String dataspaceName) {
         return null;
     }
 
     @Override
-    public ResponseEntity<Object> getNodeByDataspaceAndAnchor(String dataspaceName, String anchorName) {
+    public ResponseEntity<Object> getNodeByDataspaceAndAnchor(final String dataspaceName, final String anchorName) {
         return null;
     }
 
@@ -113,13 +138,11 @@ public class CpsRestController implements CpsRestApi {
      * @return a ResponseEntity.
      */
     @PostMapping("/upload-yang-json-data-file")
-    public final ResponseEntity<String> uploadYangJsonDataFile(
-        @RequestParam("file") MultipartFile uploadedFile) {
+    public final ResponseEntity<String> uploadYangJsonDataFile(@RequestParam("file") final MultipartFile uploadedFile) {
         validateJsonStructure(uploadedFile);
         final int persistenceObjectId = cpService.storeJsonStructure(getJsonString(uploadedFile));
-        return new ResponseEntity<String>(
+        return new ResponseEntity<>(
             "Object stored in CPS with identity: " + persistenceObjectId, HttpStatus.OK);
-
     }
 
     /**
@@ -151,7 +174,7 @@ public class CpsRestController implements CpsRestApi {
         try {
             final Gson gson = new Gson();
             gson.fromJson(getJsonString(multipartFile), Object.class);
-        } catch (JsonSyntaxException e) {
+        } catch (final JsonSyntaxException e) {
             throw new CpsValidationException("Not a valid JSON file.", e);
         }
     }
@@ -160,13 +183,12 @@ public class CpsRestController implements CpsRestApi {
         try {
             final File file = File.createTempFile("tempFile", ".yang");
             file.deleteOnExit();
-
             try (OutputStream outputStream = new FileOutputStream(file)) {
                 outputStream.write(multipartFile.getBytes());
             }
             return file;
 
-        } catch (IOException e) {
+        } catch (final IOException e) {
             throw new CpsException(e);
         }
     }
@@ -174,7 +196,7 @@ public class CpsRestController implements CpsRestApi {
     private static String getJsonString(final MultipartFile multipartFile) {
         try {
             return new String(multipartFile.getBytes());
-        } catch (IOException e) {
+        } catch (final IOException e) {
             throw new CpsException(e);
         }
     }