use of com.cubrid.cubridmanager.ui.replication.editor.model.ArrowConnection in project cubrid-manager by CUBRID.
the class ReplicationEditor method createReplChain.
/**
* create the replication chain
*
* @param replicationList List<Node>
* @param conn ArrowConnection
*/
private void createReplChain(List<Node> replicationList, ArrowConnection conn) {
Node targetNode = conn.getTarget();
LOGGER.debug(targetNode.getName());
replicationList.add(targetNode);
List<ArrowConnection> connList = targetNode.getOutgoingConnections();
for (int i = 0; connList != null && i < connList.size(); i++) {
createReplChain(replicationList, connList.get(i));
}
}
use of com.cubrid.cubridmanager.ui.replication.editor.model.ArrowConnection in project cubrid-manager by CUBRID.
the class ReplicationEditor method initConnection.
/**
* initialize the connection
*
*/
private void initConnection() {
if (diagram != null) {
MasterNode master = null;
DistributorNode dist = null;
SlaveNode slave = null;
List<ContainerNode> containerNodeList = diagram.getChildNodeList();
for (int i = 0; containerNodeList != null && i < containerNodeList.size(); i++) {
ContainerNode containerNode = containerNodeList.get(i);
if (containerNode != null) {
List<LeafNode> leafNodeList = containerNode.getChildNodeList();
for (int j = 0; j < leafNodeList.size(); j++) {
LeafNode leafNode = leafNodeList.get(j);
if (leafNode instanceof MasterNode) {
master = (MasterNode) leafNode;
} else if (leafNode instanceof DistributorNode) {
dist = (DistributorNode) leafNode;
}
}
}
}
//connection from master to dist
if (master != null && dist != null) {
new ArrowConnection(master, dist);
}
for (int i = 0; containerNodeList != null && i < containerNodeList.size(); i++) {
ContainerNode containerNode = containerNodeList.get(i);
if (containerNode != null) {
List<LeafNode> leafNodeList = containerNode.getChildNodeList();
for (int j = 0; j < leafNodeList.size(); j++) {
LeafNode leafNode = leafNodeList.get(j);
if (leafNode instanceof SlaveNode) {
slave = (SlaveNode) leafNode;
//connection from dist to slave
if (dist != null && slave != null) {
new ArrowConnection(dist, slave);
}
}
}
}
}
}
}
use of com.cubrid.cubridmanager.ui.replication.editor.model.ArrowConnection in project cubrid-manager by CUBRID.
the class ConnectionEditPolicy method createDeleteCommand.
/**
* @see org.eclipse.gef.editpolicies.ComponentEditPolicy#createDeleteCommand(org.eclipse.gef.requests.GroupRequest)
* @param deleteRequest the DeleteRequest
* @return Command <code>null</code> or a contribution to the delete
*/
protected Command createDeleteCommand(GroupRequest deleteRequest) {
ArrowConnection conn = (ArrowConnection) getHost().getModel();
DeleteConnectionCommand cmd = new DeleteConnectionCommand();
cmd.setConnection(conn);
cmd.setSource(conn.getSource());
cmd.setTarget(conn.getTarget());
return cmd;
}
use of com.cubrid.cubridmanager.ui.replication.editor.model.ArrowConnection in project cubrid-manager by CUBRID.
the class ContainerNodePart method getModelSourceConnections.
/**
* @see com.cubrid.cubridmanager.ui.replication.editor.parts.NodePart#getModelSourceConnections()
* @return list
*/
protected List<ArrowConnection> getModelSourceConnections() {
List<ArrowConnection> list = new ArrayList<ArrowConnection>();
list.addAll(getContainerNode().getOutgoingConnections());
for (Iterator<LeafNode> iter = getContainerNode().getChildNodeList().iterator(); iter.hasNext(); ) {
LeafNode node = iter.next();
list.addAll(node.getOutgoingConnections());
}
return list;
}
use of com.cubrid.cubridmanager.ui.replication.editor.model.ArrowConnection in project cubrid-manager by CUBRID.
the class ReplicationEditor method doSave.
/**
* @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
* @param monitor IProgressMonitor
*/
public void doSave(IProgressMonitor monitor) {
List<ContainerNode> hostNodeList = diagram.getChildNodeList();
int hostSize = 0;
if (hostNodeList != null) {
hostSize = hostNodeList.size();
}
//check the host number,2 at less
if (hostSize <= 1) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.errInvalidReplDesign);
monitor.setCanceled(true);
return;
}
//check the host and replication component information integrity
for (int i = 0; i < hostSize; i++) {
HostNode host = (HostNode) hostNodeList.get(i);
if (!host.isValid()) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.bind(Messages.errInvalidHost, host.getName()));
monitor.setCanceled(true);
return;
}
List<LeafNode> leafNodeList = host.getChildNodeList();
for (int j = 0; j < leafNodeList.size(); j++) {
LeafNode node = leafNodeList.get(j);
if (!node.isValid()) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.bind(Messages.errInvalidReplComponent, node.getName()));
monitor.setCanceled(true);
return;
}
}
}
//check the replication component connection validity
List<List<Node>> replicationsList = new ArrayList<List<Node>>();
for (int i = 0; i < hostSize; i++) {
HostNode host = (HostNode) hostNodeList.get(i);
List<LeafNode> leafNodeList = host.getChildNodeList();
for (int j = 0; j < leafNodeList.size(); j++) {
LeafNode node = leafNodeList.get(j);
if (node instanceof MasterNode) {
List<ArrowConnection> connList = node.getOutgoingConnections();
if (connList == null || connList.isEmpty()) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.bind(Messages.errInvalidMasterConn1, node.getName()));
monitor.setCanceled(true);
return;
} else {
for (int k = 0; k < connList.size(); k++) {
LOGGER.debug("Replication chain" + k);
LOGGER.debug(node.getName());
List<Node> replicationList = new ArrayList<Node>();
replicationList.add(node);
HostNode masterHost = (HostNode) node.getParent();
ArrowConnection conn = connList.get(k);
HostNode distHost = (HostNode) conn.getTarget().getParent();
if (masterHost.getName().equals(distHost.getName())) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.bind(Messages.errInvalidMasterConn2, new String[] { node.getName(), conn.getTarget().getName() }));
monitor.setCanceled(true);
return;
}
createReplChain(replicationList, conn);
replicationsList.add(replicationList);
}
}
} else if (node instanceof DistributorNode) {
if (node.getIncomingConnections() == null || node.getIncomingConnections().size() == 0) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.bind(Messages.errInvalidDistConn1, node.getName()));
monitor.setCanceled(true);
return;
}
if (node.getOutgoingConnections() == null || node.getOutgoingConnections().size() == 0) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.bind(Messages.errInvalidDistConn2, node.getName()));
monitor.setCanceled(true);
return;
}
} else if (node instanceof SlaveNode && (node.getIncomingConnections() == null || node.getIncomingConnections().isEmpty())) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.bind(Messages.errInvalidSlaveConn, node.getName()));
monitor.setCanceled(true);
return;
}
}
}
int count = replicationsList.size();
if (count <= 0) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.errInvalidReplDesign);
monitor.setCanceled(true);
return;
}
for (int i = 0; i < count; i++) {
List<Node> replcationlist = replicationsList.get(i);
int size = replcationlist.size();
if (size < 3) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.errInvalidReplDesign);
monitor.setCanceled(true);
return;
}
if (!(replcationlist.get(size - 1) instanceof SlaveNode)) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.errInvalidReplDesign);
monitor.setCanceled(true);
return;
}
//check the connection validity,
for (int j = 1; j + 1 < size; j++) {
Node node1 = (Node) replcationlist.get(j).getParent();
Node node2 = (Node) replcationlist.get(j + 1).getParent();
//from the slave to the distributor can not in the same host
if (j % 2 == 0) {
if (node1.getName().equals(node2.getName())) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.bind(Messages.errInvalidConn1, new String[] { node1.getName(), node2.getName() }));
monitor.setCanceled(true);
return;
}
} else {
//from the distributor to the slave must be in the same host
if (!node1.getName().equals(node2.getName())) {
CommonUITool.openErrorBox(this.getSite().getShell(), Messages.bind(Messages.errInvalidConn2, new String[] { node1.getName(), node2.getName() }));
monitor.setCanceled(true);
return;
}
}
}
}
if (!CommonUITool.openConfirmBox(Messages.msgConfirmCreateRepl)) {
return;
}
isEditable = false;
getCommandStack().flush();
setDirty(false);
createReplication(replicationsList);
}
Aggregations