Merge "Add to SimpleDateFormat function locale us parameter"
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/open/RoleGeneratorController.java b/vid-app-common/src/main/java/org/onap/vid/controller/open/RoleGeneratorController.java
deleted file mode 100644
index 7b57df2..0000000
--- a/vid-app-common/src/main/java/org/onap/vid/controller/open/RoleGeneratorController.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * VID
- * ================================================================================
- * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright 2019 Nokia
- * ================================================================================
- * 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.controller.open;
-
-import static org.springframework.http.HttpStatus.OK;
-
-import org.onap.portalsdk.core.controller.UnRestrictedBaseController;
-import org.onap.vid.services.RoleGeneratorService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-public class RoleGeneratorController extends UnRestrictedBaseController {
-    public static final String GENERATE_ROLE_SCRIPT = "generateRoleScript";
-    private RoleGeneratorService roleGeneratorService;
-
-    @Autowired
-    public RoleGeneratorController(RoleGeneratorService roleGeneratorService) {
-        this.roleGeneratorService = roleGeneratorService;
-    }
-    @RequestMapping(value =  GENERATE_ROLE_SCRIPT +"/{firstRun}", method = RequestMethod.GET )
-    public ResponseEntity<String> generateRoleScript (@PathVariable("firstRun") boolean firstRun) {
-        return ResponseEntity.status(OK).body(roleGeneratorService.generateRoleScript(firstRun));
-    }
-}
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/RoleGenaratorServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/RoleGenaratorServiceImpl.java
deleted file mode 100644
index 815c85d..0000000
--- a/vid-app-common/src/main/java/org/onap/vid/services/RoleGenaratorServiceImpl.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * VID
- * ================================================================================
- * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2018 - 2019 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.onap.vid.aai.*;
-import org.onap.vid.model.ModelConstants;
-import org.onap.vid.model.Subscriber;
-import org.onap.vid.model.SubscriberList;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.HashMap;
-
-@Service
-public class RoleGenaratorServiceImpl implements RoleGeneratorService {
-
-    public static final String ROLE_ID_COLUMN = "ROLE_ID";
-
-    @Autowired
-    AaiClientInterface client;
-
-    @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 = "_";
-	public static final String CrLf = ";\r\n";
-
-    @Override
-    public String generateRoleScript(Boolean firstRun) {
-        String query =  "USE " + DB_NAME + CrLf +
-                "SET SQL_SAFE_UPDATES = 0;\r\n";
-        try {
-            HttpResponse<SubscriberList> allSubscribers = aaiOverTLSClient.getAllSubscribers();
-            if (firstRun) {
-                query += replaceRolesToTempDelimiter("subscriber",buildSubscribersValuesForMappingsTable(allSubscribers.getBody()));
-            }
-            query += addAvailableRolesCombination(firstRun, allSubscribers.getBody());
-
-        }
-        catch (Exception e) {
-            Log.error("There was an error in updating roles ", e);
-        }
-        return query;
-    }
-
-    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, true);
-            for(ServiceSubscription service: subscriberResponse.getT().serviceSubscriptions.serviceSubscription) {
-                servicesNames.put(service.serviceType,"");
-                String roleName = "'" + subscriber.subscriberName + ModelConstants.ROLE_DELIMITER + service.serviceType + "'";
-                availableRoles += "("+roleName+"),";
-
-
-            }
-        }
-        availableRoles = availableRoles.substring(0,availableRoles.length()-1);
-        query = createTemporaryTableAvailableRoles(availableRoles);
-        if (firstRun){
-            query += replaceRolesToTempDelimiter("service",buildServicesValuesForMappingsTable(servicesNames));
-            query += replaceToNewDelimiter();
-            query += deleteWrongRecords();
-
-        }
-        query += insertAvailableRolesToFnRole();
-        query += dropTemporaryTable("available_roles");
-        return query;
-    }
-
-    private String buildSubscribersValuesForMappingsTable(SubscriberList subscribers){
-        String query="";
-        for (Subscriber subscriber : subscribers.customer) {
-            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)
-            query = query.substring(0, query.length()-1) + CrLf;
-        return query;
-    }
-
-    private String buildServicesValuesForMappingsTable(HashMap<String,String> servicesNames){
-        final String[] query = {""};
-        servicesNames.forEach((k,v)->{
-            if (k.contains(OLD_DELIMITER)) {
-                query[0] += "('" + k + "' ,'" + k.replace(OLD_DELIMITER, TEMP_DELIMITER) +"'),";
-            }
-        });
-        if(query[0].length() > 0)
-            query[0] = query[0].substring(0, query[0].length()-1) + CrLf;
-        return query[0];
-    }
-
-    private String replaceRolesToTempDelimiter(String entityName, String valuesForMappingsTable ) {
-
-        AaiResponse<Services> services = client.getServices();
-        String query = "";
-        if (valuesForMappingsTable.length() > 0) {
-            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 " + 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");
-        }
-        return query;
-    }
-
-    private String replaceToNewDelimiter(){
-        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, '" + TEMP_DELIMITER + "', '" + OLD_DELIMITER + "');\r\n" ;
-        return query;
-    }
-
-    private String insertAvailableRolesToFnRole(){
-         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";
-    }
-
-
-
-    private String createTemporaryTableAvailableRoles(String availableRoles) {
-        String query = "CREATE TEMPORARY TABLE IF NOT EXISTS available_roles(rname VARCHAR(255));\r\n";
-        query += "INSERT INTO available_roles VALUES "+availableRoles+CrLf;
-                return query;
-    }
-
-    private String deleteWrongRecords(){
-        String query ="CREATE TEMPORARY TABLE IF NOT EXISTS wrong_roles(roleID INT);\r\n" +
-                "INSERT INTO wrong_roles (roleID)\r\n" +
-                "SELECT ROLE_ID FROM fn_role LEFT JOIN available_roles ON role_name LIKE concat(rname, '%')\r\n" +
-                "WHERE available_roles.rname IS NULL AND ROLE_ID NOT IN (1,16);\r\n";
-        query += deleteCascade();
-        query += dropTemporaryTable("wrong_roles");
-        return query;
-    }
-
-    private String deleteCascade() {
-        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_COLUMN)+ "\r\n";
-        query += deleteFromTableByRoles("fn_user_role", ROLE_ID_COLUMN)+ "\r\n";
-        query += deleteFromTableByRoles(TBL_NAME, ROLE_ID_COLUMN)+ "\r\n";
-        return query;
-    }
-
-    private String deleteFromTableByRoles(String table, String column) {
-        String query = "DELETE FROM " + table + "\r\n";
-        query += "using  " + table + " inner join wrong_roles\r\n" +
-                "where wrong_roles.ROLEID = " + table + "." + column + ";";
-        return query;
-    }
-
-    private String dropTemporaryTable(String table) {
-        return "DROP TEMPORARY TABLE IF EXISTS " + table + CrLf;
-    }
-}
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/RoleGeneratorService.java b/vid-app-common/src/main/java/org/onap/vid/services/RoleGeneratorService.java
deleted file mode 100644
index ef6fa3b..0000000
--- a/vid-app-common/src/main/java/org/onap/vid/services/RoleGeneratorService.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * VID
- * ================================================================================
- * Copyright (C) 2017 - 2019 AT&T Intellectual Property. 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;
-
-public interface RoleGeneratorService {
-    String generateRoleScript(Boolean firstRun);
-}
diff --git a/vid-app-common/src/main/resources/generateRoleScript.sh b/vid-app-common/src/main/resources/generateRoleScript.sh
deleted file mode 100644
index cf73b74..0000000
--- a/vid-app-common/src/main/resources/generateRoleScript.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-firstRun=${1-false}
-url=http://127.0.0.1:8080/vid/generateRoleScript/$firstRun
-wget -O roles.sql $url
\ No newline at end of file
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/open/RoleGeneratorControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/open/RoleGeneratorControllerTest.java
deleted file mode 100644
index c1509d9..0000000
--- a/vid-app-common/src/test/java/org/onap/vid/controller/open/RoleGeneratorControllerTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * VID
- * ================================================================================
- * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright 2019 Nokia
- * ================================================================================
- * 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.controller.open;
-
-import static org.mockito.BDDMockito.given;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-import org.apache.log4j.BasicConfigurator;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.onap.vid.controller.open.RoleGeneratorController;
-import org.onap.vid.services.RoleGeneratorService;
-import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-
-@RunWith(MockitoJUnitRunner.class)
-public class RoleGeneratorControllerTest {
-
-    private static final String PATH = "/generateRoleScript/{firstRun}";
-
-    private static final String FIRST_JSON = "{key1: val1}";
-    private static final String SECOND_JSON = "{key2: val2}";
-
-    private RoleGeneratorController roleGeneratorController;
-    private MockMvc mockMvc;
-
-    @Mock
-    private RoleGeneratorService service;
-
-    @Before
-    public void setUp() {
-        roleGeneratorController = new RoleGeneratorController(service);
-        BasicConfigurator.configure();
-        mockMvc = MockMvcBuilders.standaloneSetup(roleGeneratorController).build();
-
-        given(service.generateRoleScript(true)).willReturn(FIRST_JSON);
-        given(service.generateRoleScript(false)).willReturn(SECOND_JSON);
-    }
-
-    @Test
-    public void generateRoleScript_shouldReturnJson_whenFirstRun() throws Exception {
-        mockMvc.perform(get(PATH, "true")
-            .contentType(MediaType.APPLICATION_JSON))
-            .andExpect(status().isOk())
-            .andExpect(content().json(FIRST_JSON));
-    }
-
-    @Test
-    public void generateRoleScript_shouldReturnJson_whenNoFirstRun() throws Exception {
-        mockMvc.perform(get(PATH, "false")
-            .contentType(MediaType.APPLICATION_JSON))
-            .andExpect(status().isOk())
-            .andExpect(content().json(SECOND_JSON));
-    }
-}
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/RoleGenaratorServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/RoleGenaratorServiceImplTest.java
deleted file mode 100644
index 2bf73ee..0000000
--- a/vid-app-common/src/test/java/org/onap/vid/services/RoleGenaratorServiceImplTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * VID
- * ================================================================================
- * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2018 - 2019 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 static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.MockitoAnnotations.initMocks;
-
-import java.util.ArrayList;
-import org.apache.commons.lang.StringUtils;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.onap.vid.aai.AaiClientInterface;
-import org.onap.vid.aai.AaiResponse;
-import org.onap.vid.aai.ServiceSubscription;
-import org.onap.vid.aai.ServiceSubscriptions;
-import org.onap.vid.aai.Services;
-import org.onap.vid.model.Subscriber;
-import org.onap.vid.model.SubscriberList;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-public class RoleGenaratorServiceImplTest {
-
-    private static final String GLOBAL_CUSTOMER_ID = "997";
-    private static final String SUBSCRIBER_NAME = "name";
-    private static final String SUBSCRIBER_TYPE = "subscriber_type";
-    private static final String RESOURCE_VERSION = "1";
-    private static final String SERVICE_TYPE = "service_type";
-
-    @Mock
-    private AaiClientInterface aaiClientInterface;
-
-    @InjectMocks
-    private RoleGenaratorServiceImpl testSubject;
-
-    @BeforeClass
-    public void beforeClass() {
-        initMocks(this);
-    }
-
-    @BeforeMethod
-    public void resetMocks() {
-        Mockito.reset(aaiClientInterface);
-    }
-
-    @Test
-    public void tenerateRoleScript_firstRun() {
-        boolean firstRun = true;
-
-        Subscriber subscriber = createSubscriber();
-        AaiResponse<SubscriberList> subscribers = createSubscriberListAaiResponse(subscriber);
-        doReturn(subscribers).when(aaiClientInterface).getAllSubscribers();
-
-        ServiceSubscription serviceSubscription = createServiceSubscription();
-        AaiResponse<Services> subscriberResponse = createServicesAaiResponse(serviceSubscription);
-        doReturn(subscriberResponse).when(aaiClientInterface).getSubscriberData(subscriber.globalCustomerId,false);
-
-        String result = testSubject.generateRoleScript(firstRun);
-        Assert.assertTrue(StringUtils.isNotBlank(result));
-    }
-
-    @Test
-    public void tenerateRoleScript_notAFirstRun() {
-        boolean firstRun = false;
-
-        Subscriber subscriber = createSubscriber();
-        AaiResponse<SubscriberList> subscribers = createSubscriberListAaiResponse(subscriber);
-        doReturn(subscribers).when(aaiClientInterface).getAllSubscribers();
-
-        ServiceSubscription serviceSubscription = createServiceSubscription();
-        AaiResponse<Services> subscriberResponse = createServicesAaiResponse(serviceSubscription);
-        doReturn(subscriberResponse).when(aaiClientInterface).getSubscriberData(subscriber.globalCustomerId, false);
-
-        String result = testSubject.generateRoleScript(firstRun);
-        Assert.assertTrue(StringUtils.isNotBlank(result));
-    }
-
-    @Test(expectedExceptions = { Exception.class })
-    public void tenerateRoleScript_errorGettingDataFromAAIClient() {
-        boolean firstRun = false;
-
-        doThrow(new Exception("This is expected.")).when(aaiClientInterface).getAllSubscribers();
-
-        String result = testSubject.generateRoleScript(firstRun);
-        Assert.fail();
-    }
-
-    private ServiceSubscription createServiceSubscription() {
-        ServiceSubscription serviceSubscription = new ServiceSubscription();
-        serviceSubscription.serviceType = SERVICE_TYPE;
-        return serviceSubscription;
-    }
-
-    private AaiResponse<SubscriberList> createSubscriberListAaiResponse(Subscriber subscriber) {
-        AaiResponse<SubscriberList> subscribers = new AaiResponse<>(new SubscriberList(new ArrayList<>()), "", 200);
-        subscribers.getT().customer.add(subscriber);
-        return subscribers;
-    }
-
-    private AaiResponse<Services> createServicesAaiResponse(ServiceSubscription serviceSubscription) {
-        AaiResponse<Services> subscriberResponse = new AaiResponse<>(new Services(), "", 200);
-        subscriberResponse.getT().serviceSubscriptions = new ServiceSubscriptions();
-        subscriberResponse.getT().serviceSubscriptions.serviceSubscription = new ArrayList<>();
-        subscriberResponse.getT().serviceSubscriptions.serviceSubscription.add(serviceSubscription);
-        return subscriberResponse;
-    }
-
-    private Subscriber createSubscriber() {
-        Subscriber subscriber = new Subscriber();
-        subscriber.globalCustomerId = GLOBAL_CUSTOMER_ID;
-        subscriber.subscriberName = SUBSCRIBER_NAME;
-        subscriber.subscriberType = SUBSCRIBER_TYPE;
-        subscriber.resourceVersion = RESOURCE_VERSION;
-        return subscriber;
-    }
-
-
-}