use of com.cubrid.common.core.task.ITask in project cubrid-manager by CUBRID.
the class ReplServerDialog method execute.
/**
* excute the task.
*
* @param buttonId int
*/
private void execute(final int buttonId) {
final String ip = ipText.getText();
final String port = portText.getText();
final String userName = userNameText.getText();
final String password = passwordText.getText();
final String mdbName = mdbNameText.getText();
final String replServerPort = replServerPortText.getText();
TaskExecutor taskExcutor = new TaskExecutor() {
public void disConnect() {
ServerManager.getInstance().setConnected(ip, Integer.parseInt(port), userName, false);
}
public boolean exec(final IProgressMonitor monitor) {
Display display = Display.getDefault();
if (monitor.isCanceled()) {
return false;
}
boolean isConnected = false;
MonitorDashboardPreference monPref = new MonitorDashboardPreference();
for (ITask task : taskList) {
if (task instanceof MonitoringTask) {
MonitoringTask monitoringTask = (MonitoringTask) task;
monitoringTask.connectServer(Version.releaseVersion, monPref.getHAHeartBeatTimeout());
isConnected = true;
} else if (task instanceof GetReplServerStatusTask) {
GetReplServerStatusTask getReplServerStatusTask = (GetReplServerStatusTask) task;
getReplServerStatusTask.execute();
isActive = getReplServerStatusTask.isActive();
} else if (task instanceof StartReplServerTask) {
if (isActive) {
openErrorBox(getShell(), Messages.msgReplServerStarted, monitor);
} else {
StartReplServerTask startReplServerTask = (StartReplServerTask) task;
startReplServerTask.execute();
if (task.isSuccess()) {
openInformationgBox(getShell(), com.cubrid.cubridmanager.ui.common.Messages.titleSuccess, Messages.msgReplServerStartedSuccess, monitor);
}
}
} else if (task instanceof StopReplServerTask) {
if (isActive) {
StopReplServerTask stopReplServerTask = (StopReplServerTask) task;
stopReplServerTask.execute();
if (task.isSuccess()) {
openInformationgBox(getShell(), com.cubrid.cubridmanager.ui.common.Messages.titleSuccess, Messages.msgReplServerStopedSuccess, monitor);
}
} else {
openErrorBox(getShell(), Messages.msgReplServerStoped, monitor);
}
}
if (monitor.isCanceled()) {
if (isConnected) {
disConnect();
}
return false;
}
final String msg = task.getErrorMsg();
if (openErrorBox(getShell(), msg, monitor)) {
if (isConnected) {
ServerManager.getInstance().setConnected(ip, Integer.parseInt(port), userName, false);
}
return false;
}
}
if (isConnected) {
disConnect();
}
if (!monitor.isCanceled()) {
display.syncExec(new Runnable() {
public void run() {
setReturnCode(buttonId);
close();
}
});
}
return true;
}
};
boolean isConnected = ServerManager.getInstance().isConnected(ip, Integer.parseInt(port), userName);
ServerInfo serverInfo = new ServerInfo();
if (isConnected) {
serverInfo = CMHostNodePersistManager.getInstance().getServerInfo(ip, Integer.parseInt(port), userName);
} else {
serverInfo.setHostAddress(ip);
serverInfo.setHostMonPort(Integer.parseInt(port));
serverInfo.setHostJSPort(Integer.parseInt(port) + 1);
serverInfo.setUserName(userName);
serverInfo.setUserPassword(password);
CMHostNodePersistManager.getInstance().addServer(ip, Integer.parseInt(port), userName, serverInfo);
MonitoringTask monitoringTask = new MonitoringTask(serverInfo);
taskExcutor.addTask(monitoringTask);
}
GetReplServerStatusTask getReplServerStatusTask = new GetReplServerStatusTask(serverInfo);
getReplServerStatusTask.setDbName(mdbName);
taskExcutor.addTask(getReplServerStatusTask);
if (isStartReplServer) {
StartReplServerTask task = new StartReplServerTask(serverInfo);
task.setDbName(mdbName);
task.setServerPort(replServerPort);
taskExcutor.addTask(task);
} else {
StopReplServerTask task = new StopReplServerTask(serverInfo);
task.setDbName(mdbName);
taskExcutor.addTask(task);
}
new ExecTaskWithProgress(taskExcutor).exec();
}
use of com.cubrid.common.core.task.ITask in project cubrid-manager by CUBRID.
the class CreateReplicationJobExecutor method startAgent.
/**
* start agent service
*
* @param agentName String
* @param monitor IProgressMonitor
* @param taskList List<ITask>
* @return status
*/
private IStatus startAgent(String agentName, final IProgressMonitor monitor, List<ITask> taskList) {
monitor.subTask(Messages.bind(Messages.startAgentJobName, agentName));
MonitoringTask monitoringTask = null;
boolean isExecuteStopAgentTask = true;
MonitorDashboardPreference monPref = new MonitorDashboardPreference();
for (ITask task : taskList) {
if (task instanceof MonitoringTask) {
monitoringTask = (MonitoringTask) task;
ServerInfo serverInfo = monitoringTask.getServerInfo();
CMHostNodePersistManager.getInstance().addServer(serverInfo.getHostAddress(), serverInfo.getHostMonPort(), serverInfo.getUserName(), serverInfo);
monitoringTask.connectServer(Version.releaseVersion, monPref.getHAHeartBeatTimeout());
} else if (task instanceof StopReplicationAgentTask) {
if (isExecuteStopAgentTask) {
task.execute();
} else {
continue;
}
} else {
task.execute();
}
if (monitor.isCanceled()) {
disConnect(monitoringTask);
return Status.CANCEL_STATUS;
}
final String msg = task.getErrorMsg();
if (msg != null && msg.length() > 0 && !monitor.isCanceled()) {
disConnect(monitoringTask);
return new Status(IStatus.ERROR, CubridManagerUIPlugin.PLUGIN_ID, msg);
}
if (task instanceof GetReplAgentStatusTask) {
GetReplAgentStatusTask getReplAgentStatusTask = (GetReplAgentStatusTask) task;
isExecuteStopAgentTask = getReplAgentStatusTask.isActive();
}
}
disConnect(monitoringTask);
return Status.OK_STATUS;
}
use of com.cubrid.common.core.task.ITask in project cubrid-manager by CUBRID.
the class CreateReplicationJobExecutor method createMaster.
/**
* create master database
*
* @param dbName String
* @param monitor IProgressMonitor
* @param taskList List<ITask>
* @return status
*/
private IStatus createMaster(final String dbName, final IProgressMonitor monitor, List<ITask> taskList) {
monitor.subTask(Messages.bind(Messages.createMasterJobName, dbName));
Display display = Display.getDefault();
MonitoringTask monitoringTask = null;
boolean isExecuteSetParaTask = true;
boolean isExecuteStopDbTask = true;
boolean isExecuteStartDbTask = false;
Map<String, Map<String, String>> confParaMaps = null;
MonitorDashboardPreference monPref = new MonitorDashboardPreference();
for (ITask task : taskList) {
if (task instanceof MonitoringTask) {
monitoringTask = (MonitoringTask) task;
ServerInfo serverInfo = monitoringTask.getServerInfo();
CMHostNodePersistManager.getInstance().addServer(serverInfo.getHostAddress(), serverInfo.getHostMonPort(), serverInfo.getUserName(), serverInfo);
monitoringTask.connectServer(Version.releaseVersion, monPref.getHAHeartBeatTimeout());
} else if (task instanceof StopReplServerTask) {
if (isExecuteStopReplServerTask) {
task.execute();
} else {
continue;
}
} else if (task instanceof SetCubridConfParameterTask) {
if (isExecuteSetParaTask) {
SetCubridConfParameterTask setCubridConfParameterTask = (SetCubridConfParameterTask) task;
setCubridConfParameterTask.setConfParameters(confParaMaps);
task.execute();
} else {
continue;
}
} else if (task instanceof CommonUpdateTask && task.getTaskname().equals(CommonTaskName.STOP_DB_TASK_NAME)) {
if (isExecuteStopDbTask) {
task.execute();
} else {
continue;
}
} else if (task instanceof CommonUpdateTask && task.getTaskname().equals(CommonTaskName.START_DB_TASK_NAME)) {
if (isExecuteStartDbTask) {
task.execute();
} else {
continue;
}
} else if (task instanceof GetTransferProgressTask) {
GetTransferProgressTask getTransferProgressTask = (GetTransferProgressTask) task;
monitor.subTask(Messages.transFileJobName);
if (pid != null) {
while (!isCanceled()) {
getTransferProgressTask.setPid(pid);
getTransferProgressTask.execute();
TransFileProgressInfo progressInfo = getTransferProgressTask.getProgressInfo();
if (getTransferProgressTask.isSuccess() && progressInfo != null) {
String transferStatus = progressInfo.getTransferStatus();
String transferNote = progressInfo.getTransferNote();
if (transferStatus != null && transferStatus.equals("success")) {
pid = null;
cancelTransFileTask = null;
break;
} else if (transferStatus != null && transferStatus.equals("failure")) {
pid = null;
cancelTransFileTask = null;
getTransferProgressTask.setErrorMsg(transferNote);
break;
} else {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} else {
break;
}
}
}
} else if (task instanceof CancelTransFileTask) {
cancelTransFileTask = (CancelTransFileTask) task;
} else {
task.execute();
}
if (monitor.isCanceled()) {
disConnect(monitoringTask);
return Status.CANCEL_STATUS;
}
final String msg = task.getErrorMsg();
if (msg != null && msg.length() > 0 && !monitor.isCanceled()) {
disConnect(monitoringTask);
return new Status(IStatus.ERROR, CubridManagerUIPlugin.PLUGIN_ID, msg);
}
if (task instanceof GetReplServerStatusTask) {
GetReplServerStatusTask getReplServerStatusTask = (GetReplServerStatusTask) task;
boolean isActive = getReplServerStatusTask.isActive();
if (isActive) {
display.syncExec(new Runnable() {
public void run() {
isExecuteStopReplServerTask = CommonUITool.openConfirmBox(Messages.bind(Messages.msgConfirmStopReplServer, dbName));
}
});
if (!isExecuteStopReplServerTask) {
disConnect(monitoringTask);
return Status.CANCEL_STATUS;
}
}
} else if (task instanceof GetCubridConfParameterTask) {
GetCubridConfParameterTask getCubridConfParameterTask = (GetCubridConfParameterTask) task;
confParaMaps = getCubridConfParameterTask.getConfParameters();
String mdbName = (String) getCubridConfParameterTask.getData("dbName");
Map<String, String> dbMap = confParaMaps.get("[@" + mdbName + "]");
if (dbMap == null) {
Map<String, String> commonMap = confParaMaps.get(ConfConstants.COMMON_SECTION_NAME);
if (commonMap != null && commonMap.get(ConfConstants.REPLICATION) != null && commonMap.get(ConfConstants.REPLICATION).equalsIgnoreCase("yes")) {
isExecuteSetParaTask = false;
} else if (commonMap != null) {
isExecuteSetParaTask = true;
commonMap.put(ConfConstants.REPLICATION, "yes");
}
} else {
String replStr = dbMap.get(ConfConstants.REPLICATION);
if (replStr == null || replStr.equalsIgnoreCase("no")) {
isExecuteSetParaTask = true;
dbMap.put(ConfConstants.REPLICATION, "yes");
} else {
isExecuteSetParaTask = false;
}
}
} else if (task instanceof GetDatabaseListTask) {
GetDatabaseListTask getDatabaseListTask = (GetDatabaseListTask) task;
String mdbName = (String) getDatabaseListTask.getData("dbName");
List<DatabaseInfo> dbInfoList = getDatabaseListTask.loadDatabaseInfo();
for (int i = 0; i < dbInfoList.size(); i++) {
DatabaseInfo dbInfo = dbInfoList.get(i);
if (mdbName.equalsIgnoreCase(dbInfo.getDbName())) {
if (dbInfo.getRunningType() == DbRunningType.CS) {
isExecuteStopDbTask = isExecuteSetParaTask;
}
isExecuteStartDbTask = dbInfo.getRunningType() == DbRunningType.STANDALONE || isExecuteStopDbTask;
break;
}
}
} else if (task instanceof TransFileTask) {
TransFileTask transFileTask = (TransFileTask) task;
pid = transFileTask.getTransFilePid();
}
}
disConnect(monitoringTask);
return Status.OK_STATUS;
}
use of com.cubrid.common.core.task.ITask in project cubrid-manager by CUBRID.
the class CreateReplicationJobExecutor method exec.
/**
* @see com.cubrid.common.ui.spi.progress.TaskJobExecutor#exec(org.eclipse.core.runtime.IProgressMonitor)
* @param monitor the monitor object
* @return the status
*/
public IStatus exec(final IProgressMonitor monitor) {
List<TaskGroup> startReplSvrTaskGrpList = new ArrayList<TaskGroup>();
List<TaskGroup> startAgentTaskGrpList = new ArrayList<TaskGroup>();
for (int i = 0; i < groupTaskList.size(); i++) {
TaskGroup taskGroup = groupTaskList.get(i);
String groupName = taskGroup.getGroupName();
String target = (String) taskGroup.getTarget();
List<ITask> taskList = taskGroup.getTaskList();
IStatus status = Status.OK_STATUS;
if (IConstants.REPL_GROUP_NAME_CREATE_MASTER.equals(groupName)) {
status = createMaster(target, monitor, taskList);
} else if (IConstants.REPL_GROUP_NAME_CREATE_DIST.equals(groupName)) {
status = createDistributor(target, monitor, taskList);
} else if (IConstants.REPL_GROUP_NAME_CREATE_SLAVE.equals(groupName)) {
status = createSlave(target, monitor, taskList);
} else if (IConstants.REPL_GROUP_NAME_START_REPL_SERVER.equals(groupName)) {
startReplSvrTaskGrpList.add(taskGroup);
} else if (IConstants.REPL_GROUP_NAME_START_AGENT.equals(groupName)) {
startAgentTaskGrpList.add(taskGroup);
}
if (monitor.isCanceled()) {
setEditorDirty();
return Status.CANCEL_STATUS;
}
if (status != Status.OK_STATUS) {
setEditorDirty();
return status;
}
}
Display display = Display.getDefault();
if (!startReplSvrTaskGrpList.isEmpty()) {
for (TaskGroup startReplServerTaskGrp : startReplSvrTaskGrpList) {
final String target = (String) startReplServerTaskGrp.getTarget();
display.syncExec(new Runnable() {
public void run() {
isStartReplServer = CommonUITool.openConfirmBox(shell, Messages.bind(Messages.msgConfirmStartReplServer, target));
}
});
if (!isStartReplServer) {
continue;
}
List<ITask> taskList = startReplServerTaskGrp.getTaskList();
IStatus status = startReplServer(target, monitor, taskList);
if (monitor.isCanceled()) {
setEditorDirty();
return Status.CANCEL_STATUS;
}
if (status != Status.OK_STATUS) {
setEditorDirty();
return status;
}
}
}
if (!startAgentTaskGrpList.isEmpty()) {
for (TaskGroup startAgentTaskGrp : startAgentTaskGrpList) {
final String target = (String) startAgentTaskGrp.getTarget();
display.syncExec(new Runnable() {
public void run() {
isStartAgent = CommonUITool.openConfirmBox(shell, Messages.bind(Messages.msgConfirmStartAgent, target));
}
});
if (!isStartAgent) {
continue;
}
List<ITask> taskList = startAgentTaskGrp.getTaskList();
IStatus status = startAgent(target, monitor, taskList);
if (monitor.isCanceled()) {
setEditorDirty();
return Status.CANCEL_STATUS;
}
if (status != Status.OK_STATUS) {
setEditorDirty();
return status;
}
}
}
return Status.OK_STATUS;
}
use of com.cubrid.common.core.task.ITask in project cubrid-manager by CUBRID.
the class CreateReplicationJobExecutor method createSlave.
/**
* create slave database
*
* @param dbName String
* @param monitor IProgressMonitor
* @param taskList List<ITask>
* @return status
*/
private IStatus createSlave(String dbName, final IProgressMonitor monitor, List<ITask> taskList) {
monitor.subTask(Messages.bind(Messages.createSlaveJobName, dbName));
Display display = Display.getDefault();
MonitoringTask monitoringTask = null;
boolean isExecuteStopDbTask = true;
MonitorDashboardPreference monPref = new MonitorDashboardPreference();
for (ITask task : taskList) {
if (task instanceof MonitoringTask) {
monitoringTask = (MonitoringTask) task;
ServerInfo serverInfo = monitoringTask.getServerInfo();
CMHostNodePersistManager.getInstance().addServer(serverInfo.getHostAddress(), serverInfo.getHostMonPort(), serverInfo.getUserName(), serverInfo);
monitoringTask.connectServer(Version.releaseVersion, monPref.getHAHeartBeatTimeout());
} else if (task instanceof CommonUpdateTask && task.getTaskname().equals(CommonTaskName.STOP_DB_TASK_NAME)) {
if (isDeleteDb && isExecuteStopDbTask) {
task.execute();
} else {
continue;
}
} else if (task instanceof CommonUpdateTask && task.getTaskname().equals(CommonTaskName.DELETE_DATABASE_TASK_NAME)) {
if (isDeleteDb) {
task.execute();
} else {
continue;
}
} else {
task.execute();
}
if (monitor.isCanceled()) {
disConnect(monitoringTask);
return Status.CANCEL_STATUS;
}
final String msg = task.getErrorMsg();
if (msg != null && msg.length() > 0 && !monitor.isCanceled()) {
disConnect(monitoringTask);
return new Status(IStatus.ERROR, CubridManagerUIPlugin.PLUGIN_ID, msg);
}
if (task instanceof GetDatabaseListTask) {
GetDatabaseListTask getDatabaseListTask = (GetDatabaseListTask) task;
final String sdbName = (String) getDatabaseListTask.getData("dbName");
List<DatabaseInfo> dbInfoList = getDatabaseListTask.loadDatabaseInfo();
boolean isDbExist = false;
for (int i = 0; i < dbInfoList.size(); i++) {
DatabaseInfo dbInfo = dbInfoList.get(i);
if (dbName.equalsIgnoreCase(dbInfo.getDbName())) {
isDbExist = true;
display.syncExec(new Runnable() {
public void run() {
isDeleteDb = CommonUITool.openConfirmBox(Messages.bind(Messages.msgConfirmDeleteDb, sdbName));
}
});
if (dbInfo.getRunningType() == DbRunningType.CS) {
isExecuteStopDbTask = true;
}
break;
}
}
if (isDbExist && !isDeleteDb) {
disConnect(monitoringTask);
return Status.CANCEL_STATUS;
}
}
}
disConnect(monitoringTask);
isDeleteDb = false;
return Status.OK_STATUS;
}
Aggregations