use of com.cubrid.cubridmanager.core.common.task.AddCMUserTask in project cubrid-manager by CUBRID.
the class UserManagementWizard method performFinish.
/**
* Called when user clicks Finish
*
* @return boolean
*/
public boolean performFinish() {
final String userId = generalInfoPage.getUserId();
final String password = generalInfoPage.getPassword();
final String dbCreationAuth = generalInfoPage.getDbCreationAuth();
final String brokerAuth = generalInfoPage.getBrokerAuth();
final String statusMonitorAuth = generalInfoPage.getStatusMonitorAuth();
final List<DatabaseInfo> authDatabaselist = new ArrayList<DatabaseInfo>();
final Shell shell = getShell();
final String taskName = Messages.bind(Messages.updateUserTaskName, userId);
TaskExecutor taskExcutor = new TaskExecutor() {
public boolean exec(final IProgressMonitor monitor) {
if (monitor.isCanceled()) {
return false;
}
monitor.beginTask(taskName, IProgressMonitor.UNKNOWN);
for (ITask task : taskList) {
task.execute();
final String msg = task.getErrorMsg();
if (openErrorBox(shell, msg, monitor)) {
return false;
}
if (monitor.isCanceled()) {
return false;
}
}
ServerUserInfo loginedUserInfo = server.getServerInfo().getLoginedUserInfo();
if (userInfo == null) {
userInfo = new ServerUserInfo(userId, password);
} else {
userInfo.setPassword(password);
}
if (userInfo.getUserName().equals(loginedUserInfo.getUserName())) {
loginedUserInfo.setPassword(password);
}
if (!userInfo.isAdmin()) {
if (dbCreationAuth.equals(DbCreateAuthType.AUTH_NONE.getText())) {
userInfo.setDbCreateAuthType(DbCreateAuthType.AUTH_NONE);
} else if (dbCreationAuth.equals(DbCreateAuthType.AUTH_ADMIN.getText())) {
userInfo.setDbCreateAuthType(DbCreateAuthType.AUTH_ADMIN);
}
if (brokerAuth.equals(CasAuthType.AUTH_NONE.getText())) {
userInfo.setCasAuth(CasAuthType.AUTH_NONE);
} else if (brokerAuth.equals(CasAuthType.AUTH_ADMIN.getText())) {
userInfo.setCasAuth(CasAuthType.AUTH_ADMIN);
} else if (brokerAuth.equals(CasAuthType.AUTH_MONITOR.getText())) {
userInfo.setCasAuth(CasAuthType.AUTH_MONITOR);
}
if (statusMonitorAuth.equals(StatusMonitorAuthType.AUTH_NONE.getText())) {
userInfo.setStatusMonitorAuth(StatusMonitorAuthType.AUTH_NONE);
} else if (statusMonitorAuth.equals(StatusMonitorAuthType.AUTH_ADMIN.getText())) {
userInfo.setStatusMonitorAuth(StatusMonitorAuthType.AUTH_ADMIN);
} else if (statusMonitorAuth.equals(StatusMonitorAuthType.AUTH_MONITOR.getText())) {
userInfo.setStatusMonitorAuth(StatusMonitorAuthType.AUTH_MONITOR);
}
userInfo.removeAllDatabaseInfo();
userInfo.setDatabaseInfoList(authDatabaselist);
}
return true;
}
};
if (userInfo != null && userInfo.isAdmin()) {
ChangeCMUserPasswordTask changeCMUserPasswordTask = new ChangeCMUserPasswordTask(server.getServerInfo());
changeCMUserPasswordTask.setUserName(userId);
changeCMUserPasswordTask.setPassword(password);
taskExcutor.addTask(changeCMUserPasswordTask);
} else if (userInfo != null && !userInfo.isAdmin()) {
DeleteCMUserTask deleteCMUserTask = new DeleteCMUserTask(server.getServerInfo());
deleteCMUserTask.setUserId(userId);
taskExcutor.addTask(deleteCMUserTask);
}
if (userInfo == null || !userInfo.isAdmin()) {
AddCMUserTask addCMUserTask = new AddCMUserTask(server.getServerInfo());
addCMUserTask.setUserId(userId);
addCMUserTask.setPassword(password);
addCMUserTask.setDbcreate(dbCreationAuth);
addCMUserTask.setCasAuth(brokerAuth);
addCMUserTask.setStautsMonitorAuth(statusMonitorAuth);
taskExcutor.addTask(addCMUserTask);
}
ServerType serverType = server.getServerInfo().getServerType();
if ((userInfo == null || !userInfo.isAdmin()) && (serverType == ServerType.BOTH || serverType == ServerType.DATABASE)) {
List<Map<String, Object>> dbAuthInfoList = authDbInfoPage.getDbAuthInfoList();
List<String> dbNameList = new ArrayList<String>();
List<String> dbUserList = new ArrayList<String>();
List<String> dbPasswordList = new ArrayList<String>();
List<String> dbBrokerPortList = new ArrayList<String>();
if (dbAuthInfoList != null && !dbAuthInfoList.isEmpty()) {
int size = dbAuthInfoList.size();
for (int i = 0; i < size; i++) {
Map<String, Object> map = dbAuthInfoList.get(i);
String allowConnectedStr = (String) map.get("1");
if ("Yes".equals(allowConnectedStr)) {
String dbName = (String) map.get("0");
dbNameList.add(dbName);
String dbUser = (String) map.get("2");
dbUserList.add(dbUser);
String brokerIP = (String) map.get("3");
String brokerPort = (String) map.get("4");
String port = "";
if (brokerPort.matches("^\\d+$")) {
port = brokerPort;
} else {
port = brokerPort.substring(brokerPort.indexOf("[") + 1, brokerPort.indexOf("/"));
}
dbBrokerPortList.add(brokerIP + "," + port);
dbPasswordList.add("");
DatabaseInfo databaseInfo = new DatabaseInfo(dbName, server.getServerInfo());
databaseInfo.setBrokerPort(brokerPort);
databaseInfo.setBrokerIP(brokerIP);
DbUserInfo dbUserInfo = new DbUserInfo();
dbUserInfo.setName(dbUser);
databaseInfo.setAuthLoginedDbUserInfo(dbUserInfo);
authDatabaselist.add(databaseInfo);
}
}
}
String[] dbNameArr = new String[dbNameList.size()];
String[] dbUserArr = new String[dbUserList.size()];
String[] dbPasswordArr = new String[dbPasswordList.size()];
String[] dbBrokerPortArr = new String[dbBrokerPortList.size()];
UpdateCMUserTask updateTask = new UpdateCMUserTask(server.getServerInfo());
updateTask.setCmUserName(userId);
updateTask.setDbAuth(dbNameList.toArray(dbNameArr), dbUserList.toArray(dbUserArr), dbPasswordList.toArray(dbPasswordArr), dbBrokerPortList.toArray(dbBrokerPortArr));
updateTask.setCasAuth(brokerAuth);
updateTask.setDbCreator(dbCreationAuth);
updateTask.setStatusMonitorAuth(statusMonitorAuth);
taskExcutor.addTask(updateTask);
}
new ExecTaskWithProgress(taskExcutor).exec(true, true);
return taskExcutor.isSuccess();
}
Aggregations