Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / java / org / onap / vid / services / RoleGenaratorServiceImpl.java
index ea2cea5..3ff8db0 100644 (file)
@@ -1,7 +1,28 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
 package org.onap.vid.services;
 
+import io.joshworks.restclient.http.HttpResponse;
 import jline.internal.Log;
-import org.junit.Test;
 import org.onap.vid.aai.*;
 import org.onap.vid.model.ModelConstants;
 import org.onap.vid.model.Subscriber;
@@ -14,24 +35,29 @@ import java.util.HashMap;
 @Service
 public class RoleGenaratorServiceImpl implements RoleGeneratorService {
 
+    public static final String ROLE_ID_COLUMN = "ROLE_ID";
+
     @Autowired
     AaiClientInterface client;
 
-    public static final String dbName =  "vid_portal";
-    public static final String  tblName = "fn_role";
-    public static final String tempDelimiter ="***";
-    public static final String oldDelimiter = "_";
+    @Autowired
+    AaiOverTLSClientInterface aaiOverTLSClient;
+
+    public static final String DB_NAME =  "vid_portal";
+    public static final String TBL_NAME = "fn_role";
+    public static final String TEMP_DELIMITER ="***";
+    public static final String OLD_DELIMITER = "_";
 
     @Override
     public String generateRoleScript(Boolean firstRun) {
-        String query =  "USE " + dbName + ";\r\n" +
+        String query =  "USE " + DB_NAME + ";\r\n" +
                 "SET SQL_SAFE_UPDATES = 0;\r\n";
         try {
-            AaiResponse<SubscriberList> subscribers = client.getAllSubscribers();
+            HttpResponse<SubscriberList> allSubscribers = aaiOverTLSClient.getAllSubscribers();
             if (firstRun) {
-                query += replaceRolesToTempDelimiter("subscriber",buildSubscribersValuesForMappingsTable(subscribers.getT()));
+                query += replaceRolesToTempDelimiter("subscriber",buildSubscribersValuesForMappingsTable(allSubscribers.getBody()));
             }
-            query += addAvailableRolesCombination(firstRun, subscribers);
+            query += addAvailableRolesCombination(firstRun, allSubscribers.getBody());
 
         }
         catch (Exception e) {
@@ -40,10 +66,11 @@ public class RoleGenaratorServiceImpl implements RoleGeneratorService {
         return query;
     }
 
-    private String addAvailableRolesCombination(Boolean firstRun, AaiResponse<SubscriberList> subscribers) {
-        String query, availableRoles="";
-        HashMap<String,String> servicesNames = new HashMap<String,String>();
-        for (Subscriber subscriber: subscribers.getT().customer) {
+    private String addAvailableRolesCombination(Boolean firstRun, SubscriberList subscribers) {
+        String query;
+        String availableRoles="";
+        HashMap<String,String> servicesNames = new HashMap<>();
+        for (Subscriber subscriber: subscribers.customer) {
             AaiResponse<Services> subscriberResponse = client.getSubscriberData(subscriber.globalCustomerId);
             for(ServiceSubscription service: subscriberResponse.getT().serviceSubscriptions.serviceSubscription) {
                 servicesNames.put(service.serviceType,"");
@@ -69,7 +96,7 @@ public class RoleGenaratorServiceImpl implements RoleGeneratorService {
     private String buildSubscribersValuesForMappingsTable(SubscriberList subscribers){
         String query="";
         for (Subscriber subscriber : subscribers.customer) {
-            String subscriberName = subscriber.subscriberName.contains(oldDelimiter) ? subscriber.subscriberName.replace(oldDelimiter, tempDelimiter) : subscriber.subscriberName;
+            String subscriberName = subscriber.subscriberName.contains(OLD_DELIMITER) ? subscriber.subscriberName.replace(OLD_DELIMITER, TEMP_DELIMITER) : subscriber.subscriberName;
             query = query + "('" + subscriber.globalCustomerId + "','" + subscriberName + "') ,";
         }
         if(query.length() > 0)
@@ -80,8 +107,8 @@ public class RoleGenaratorServiceImpl implements RoleGeneratorService {
     private String buildServicesValuesForMappingsTable(HashMap<String,String> servicesNames){
         final String[] query = {""};
         servicesNames.forEach((k,v)->{
-            if (k.contains(oldDelimiter)) {
-                query[0] += "('" + k + "' ,'" + k.replace(oldDelimiter, tempDelimiter) +"'),";
+            if (k.contains(OLD_DELIMITER)) {
+                query[0] += "('" + k + "' ,'" + k.replace(OLD_DELIMITER, TEMP_DELIMITER) +"'),";
             }
         });
         if(query[0].length() > 0)
@@ -97,7 +124,7 @@ public class RoleGenaratorServiceImpl implements RoleGeneratorService {
             query = "CREATE TEMPORARY TABLE IF NOT EXISTS " + entityName + "Mappings(mapKey VARCHAR(255),mapValue VARCHAR(255));\r\n" +
                     "INSERT INTO " + entityName + "Mappings VALUES ";
             query += valuesForMappingsTable;
-            query += "UPDATE " + tblName + "\r\n" +
+            query += "UPDATE " + TBL_NAME + "\r\n" +
                     "INNER JOIN " + entityName + "Mappings ON role_name LIKE concat('%',mapKey, '%')\r\n" +
                     "SET ROLE_NAME = REPLACE(ROLE_NAME, mapKey, mapValue) ;  \r\n" +
                     dropTemporaryTable(entityName + "Mappings");
@@ -106,21 +133,20 @@ public class RoleGenaratorServiceImpl implements RoleGeneratorService {
     }
 
     private String replaceToNewDelimiter(){
-        String query =  "UPDATE " + tblName + "\r\n" +
-                "SET ROLE_NAME = REPLACE(ROLE_NAME, '" + oldDelimiter + "', '" + ModelConstants.ROLE_DELIMITER + "');\r\n" ;
+        String query =  "UPDATE " + TBL_NAME + "\r\n" +
+                "SET ROLE_NAME = REPLACE(ROLE_NAME, '" + OLD_DELIMITER + "', '" + ModelConstants.ROLE_DELIMITER + "');\r\n" ;
         query += "UPDATE fn_role\r\n" +
-                "SET ROLE_NAME = REPLACE(ROLE_NAME, '" + tempDelimiter + "', '" + oldDelimiter + "');\r\n" ;
+                "SET ROLE_NAME = REPLACE(ROLE_NAME, '" + TEMP_DELIMITER + "', '" + OLD_DELIMITER + "');\r\n" ;
         return query;
     }
 
     private String insertAvailableRolesToFnRole(){
-        String query="INSERT INTO fn_role (ROLE_NAME, ACTIVE_YN, PRIORITY)\r\n" +
+         return "INSERT INTO fn_role (ROLE_NAME, ACTIVE_YN, PRIORITY)\r\n" +
                 "SELECT RNAME, 'Y', 5\r\n" +
                 "FROM available_roles\r\n" +
                 "WHERE NOT EXISTS (SELECT ROLE_NAME\r\n" +
                 "FROM fn_role \r\n" +
                 "where RNAME = ROLE_NAME);\r\n";
-        return query;
     }
 
 
@@ -145,9 +171,9 @@ public class RoleGenaratorServiceImpl implements RoleGeneratorService {
         String query = deleteFromTableByRoles("fn_role_composite", "PARENT_ROLE_ID");
         query = query.substring(0, query.length()-1);
         query += " OR wrong_roles.ROLEID = fn_role_composite.CHILD_ROLE_ID;\r\n";
-        query += deleteFromTableByRoles("fn_role_function", "ROLE_ID")+ "\r\n";
-        query += deleteFromTableByRoles("fn_user_role", "ROLE_ID")+ "\r\n";
-        query += deleteFromTableByRoles("fn_role", "ROLE_ID")+ "\r\n";
+        query += deleteFromTableByRoles("fn_role_function", ROLE_ID_COLUMN)+ "\r\n";
+        query += deleteFromTableByRoles("fn_user_role", ROLE_ID_COLUMN)+ "\r\n";
+        query += deleteFromTableByRoles(TBL_NAME, ROLE_ID_COLUMN)+ "\r\n";
         return query;
     }