+/*-
+ * ============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.junit.Test;
import org.onap.vid.aai.*;
import org.onap.vid.model.ModelConstants;
import org.onap.vid.model.Subscriber;
@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) {
- Log.error("There was an error in updating roles "+e.getMessage());
+ Log.error("There was an error in updating roles ", e);
}
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) {
- AaiResponse<Services> subscriberResponse = client.getSubscriberData(subscriber.globalCustomerId);
+ 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 + "'";
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)
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)
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");
}
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;
}
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;
}