Controller Blueprints Microservice

Add Resource Dictionary reactive repository service for dictionary validation and automap functions.

Change-Id: I7cc6d7d976cfe9370f9a74cd8f2e4256de8e8995
Issue-ID: CCSDK-484
Signed-off-by: Brinda Santh <brindasanth@in.ibm.com>
diff --git a/ms/controllerblueprints/modules/service/load/resource_dictionary/db-source.json b/ms/controllerblueprints/modules/service/load/resource_dictionary/db-source.json
index c53a6dd..ba86b3c 100644
--- a/ms/controllerblueprints/modules/service/load/resource_dictionary/db-source.json
+++ b/ms/controllerblueprints/modules/service/load/resource_dictionary/db-source.json
@@ -1,5 +1,5 @@
 {

-  "name": "bundle-id",

+  "name": "db-source",

   "property" :{

     "description": "name of the ",

     "type": "string"

@@ -7,7 +7,7 @@
   "resource-type": "ONAP",

   "resource-path": "vnf/bundle-id",

   "updated-by": "brindasanth@onap.com",

-  "tags": "bundle-id, brindasanth@onap.com",

+  "tags": "db-source, brindasanth@onap.com",

   "sources": {

     "db": {

       "type": "source-db",

diff --git a/ms/controllerblueprints/modules/service/load/resource_dictionary/input-source.json b/ms/controllerblueprints/modules/service/load/resource_dictionary/input-source.json
index 610e8fc..7cd58d6 100644
--- a/ms/controllerblueprints/modules/service/load/resource_dictionary/input-source.json
+++ b/ms/controllerblueprints/modules/service/load/resource_dictionary/input-source.json
@@ -1,5 +1,5 @@
 {

-	"name": "action-name",

+	"name": "input-source",

 	"property" :{

 		"description": "name of the ",

 		"type": "string"

diff --git a/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/repository/ResourceDictionaryRepository.java b/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/repository/ResourceDictionaryRepository.java
index 279dcd1..16031b6 100644
--- a/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/repository/ResourceDictionaryRepository.java
+++ b/ms/controllerblueprints/modules/service/src/main/java/org/onap/ccsdk/apps/controllerblueprints/service/repository/ResourceDictionaryRepository.java
@@ -1,5 +1,6 @@
 /*

  * Copyright © 2017-2018 AT&T Intellectual Property.

+ * Modifications Copyright © 2018 IBM.

  *

  * Licensed under the Apache License, Version 2.0 (the "License");

  * you may not use this file except in compliance with the License.

@@ -62,7 +63,7 @@
      * 

      * @param name

      */

-    void deleteByName(String name);

+    ResourceDictionary deleteByName(String name);

 

 

 }

diff --git a/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/repository/ResourceDictionaryReactRepository.kt b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/repository/ResourceDictionaryReactRepository.kt
new file mode 100644
index 0000000..92172a2
--- /dev/null
+++ b/ms/controllerblueprints/modules/service/src/main/kotlin/org/onap/ccsdk/apps/controllerblueprints/service/repository/ResourceDictionaryReactRepository.kt
@@ -0,0 +1,53 @@
+/*
+ *  Copyright © 2018 IBM.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.onap.ccsdk.apps.controllerblueprints.service.repository
+
+import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException
+import org.onap.ccsdk.apps.controllerblueprints.service.domain.ResourceDictionary
+import org.springframework.stereotype.Service
+import reactor.core.publisher.Flux
+import reactor.core.publisher.Mono
+import reactor.core.scheduler.Schedulers
+/**
+ * ResourceDictionaryReactRepository.
+ *
+ * @author Brinda Santh
+ */
+@Service
+open class ResourceDictionaryReactRepository(private val resourceDictionaryRepository: ResourceDictionaryRepository) {
+
+    fun findByName(name: String): Mono<ResourceDictionary> {
+        return Mono.justOrEmpty(resourceDictionaryRepository.findByName(name))
+    }
+
+    fun findByNameIn(names: List<String>): Flux<ResourceDictionary> {
+        return Flux.fromIterable(resourceDictionaryRepository.findByNameIn(names))
+                .subscribeOn(Schedulers.elastic())
+    }
+
+    fun findByTagsContainingIgnoreCase(tags: String): Flux<ResourceDictionary> {
+        return Flux.fromIterable(resourceDictionaryRepository.findByTagsContainingIgnoreCase(tags))
+                .subscribeOn(Schedulers.elastic())
+    }
+
+    fun deleteByName(name: String): Mono<ResourceDictionary> {
+        return Mono.fromCallable {
+            resourceDictionaryRepository.deleteByName(name)
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/repository/ResourceDictionaryReactRepositoryTest.java b/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/repository/ResourceDictionaryReactRepositoryTest.java
new file mode 100644
index 0000000..db11188
--- /dev/null
+++ b/ms/controllerblueprints/modules/service/src/test/java/org/onap/ccsdk/apps/controllerblueprints/service/repository/ResourceDictionaryReactRepositoryTest.java
@@ -0,0 +1,67 @@
+/*
+ *  Copyright © 2018 IBM.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.onap.ccsdk.apps.controllerblueprints.service.repository;
+
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.onap.ccsdk.apps.controllerblueprints.TestApplication;
+import org.onap.ccsdk.apps.controllerblueprints.service.domain.ResourceDictionary;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Arrays;
+import java.util.List;
+/**
+ * ResourceDictionaryReactRepositoryTest.
+ *
+ * @author Brinda Santh
+ */
+
+@RunWith(SpringRunner.class)
+@DataJpaTest
+@ContextConfiguration(classes = {TestApplication.class})
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class ResourceDictionaryReactRepositoryTest {
+
+    @Autowired
+    protected ResourceDictionaryReactRepository resourceDictionaryReactRepository;
+
+    @Test
+    public void test01FindByNameReact() throws Exception {
+        ResourceDictionary dbResourceDictionary = resourceDictionaryReactRepository.findByName("db-source").block();
+        Assert.assertNotNull("Failed to query React Resource Dictionary by Name", dbResourceDictionary);
+    }
+
+    @Test
+    public void test02FindByNameInReact() throws Exception {
+        List<ResourceDictionary> dbResourceDictionaries =
+                resourceDictionaryReactRepository.findByNameIn(Arrays.asList("db-source")).collectList().block();
+        Assert.assertNotNull("Failed to query React Resource Dictionary by Names", dbResourceDictionaries);
+    }
+
+    @Test
+    public void test03FindByTagsContainingIgnoreCaseReact() throws Exception {
+        List<ResourceDictionary> dbTagsResourceDictionaries =
+                resourceDictionaryReactRepository.findByTagsContainingIgnoreCase("db-source").collectList().block();
+        Assert.assertNotNull("Failed to query React Resource Dictionary by Tags", dbTagsResourceDictionaries);
+    }
+}
diff --git a/ms/controllerblueprints/modules/service/src/test/resources/logback.xml b/ms/controllerblueprints/modules/service/src/test/resources/logback.xml
new file mode 100644
index 0000000..4a04cfd
--- /dev/null
+++ b/ms/controllerblueprints/modules/service/src/test/resources/logback.xml
@@ -0,0 +1,39 @@
+<!--
+  ~  Copyright © 2018 IBM.
+  ~
+  ~  Licensed under the Apache License, Version 2.0 (the "License");
+  ~  you may not use this file except in compliance with the License.
+  ~  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~  Unless required by applicable law or agreed to in writing, software
+  ~  distributed under the License is distributed on an "AS IS" BASIS,
+  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~  See the License for the specific language governing permissions and
+  ~  limitations under the License.
+  -->
+
+<configuration>
+
+    <property name="localPattern" value="%d{HH:mm:ss.SSS} %-5level %logger{100} - %msg%n" />
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <!-- encoders are assigned the type
+             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+        <encoder>
+            <pattern>${localPattern}</pattern>
+        </encoder>
+    </appender>
+
+
+    <logger name="org.springframework" level="info"/>
+    <logger name="org.springframework.web" level="info"/>
+    <logger name="org.hibernate" level="error"/>
+    <logger name="org.onap.ccsdk.apps" level="info"/>
+
+    <root level="warn">
+        <appender-ref ref="STDOUT"/>
+    </root>
+
+</configuration>
diff --git a/ms/controllerblueprints/modules/service/src/test/resources/resourcedictionary/automap.json b/ms/controllerblueprints/modules/service/src/test/resources/resourcedictionary/automap.json
index a85e715..5a2a4ec 100644
--- a/ms/controllerblueprints/modules/service/src/test/resources/resourcedictionary/automap.json
+++ b/ms/controllerblueprints/modules/service/src/test/resources/resourcedictionary/automap.json
@@ -1,11 +1,11 @@
 [

 	{

-		"name": "action-name"

+		"name": "input-source"

 	},

 	{

 		"name": "v4-ip-type"

 	},

 	{

-		"name": "bundle-id"

+		"name": "db-source"

 	}

 ]
\ No newline at end of file