use of org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode in project tdi-studio-se by Talend.
the class SetLoopOptional method calculateEnabled.
@Override
protected boolean calculateEnabled() {
if (getSelectedObjects().isEmpty()) {
return false;
}
Object s = getSelectedObjects().get(0);
if (s instanceof List && !((List) s).isEmpty()) {
List selectedarts = (List) s;
Object obj = selectedarts.get(selectedarts.size() - 1);
if (obj instanceof TreeNodeEditPart) {
nodePart = (TreeNodeEditPart) obj;
TreeNode model = (TreeNode) nodePart.getModel();
if (model.isLoop()) {
if (model.isOptional()) {
setText("Remove loop optional");
} else {
setText("As optional loop");
}
return true;
}
} else {
return false;
}
}
return false;
}
use of org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode in project tdi-studio-se by Talend.
the class SetLoopOptional method run.
@Override
public void run() {
TreeNode model = (TreeNode) nodePart.getModel();
model.setOptional(!model.isOptional());
}
use of org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode in project tdi-studio-se by Talend.
the class SetGroupAction method run.
@Override
public void run() {
OutputTreeNode model = (OutputTreeNode) nodePart.getModel();
OutputTreeNode outputDocumentRoot = (OutputTreeNode) XmlMapUtil.getTreeNodeRoot(model);
if (outputDocumentRoot != null) {
XmlMapUtil.cleanSubGroup(outputDocumentRoot);
}
if (!isRemove) {
model.setGroup(true);
if (!subGroupTraceNames.isEmpty()) {
for (TreeNode groupNode : subGroupTraceNames) {
if (groupNode.isChoice() || groupNode.isSubstitution()) {
groupNode.setGroup(false);
} else {
groupNode.setGroup(true);
}
}
}
} else {
model.setGroup(false);
if (!subGroupTraceNames.isEmpty()) {
for (TreeNode groupNode : subGroupTraceNames) {
groupNode.setGroup(false);
}
}
}
}
use of org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode in project tdi-studio-se by Talend.
the class SetGroupAction method calculateEnabled.
@Override
protected boolean calculateEnabled() {
subGroupTraceNames.clear();
if (getSelectedObjects().isEmpty()) {
return false;
}
Object s = getSelectedObjects().get(0);
if (s instanceof List && !((List) s).isEmpty()) {
List selectedarts = (List) s;
Object obj = selectedarts.get(selectedarts.size() - 1);
if (obj instanceof OutputTreeNodeEditPart) {
nodePart = (OutputTreeNodeEditPart) obj;
OutputTreeNode model = (OutputTreeNode) nodePart.getModel();
if (model.eContainer() instanceof TreeNode && XmlMapUtil.DOCUMENT.equals(((TreeNode) model.eContainer()).getType())) {
return false;
}
if (NodeType.ATTRIBUT.equals(model.getNodeType()) || NodeType.NAME_SPACE.equals(model.getNodeType()) || !(model.eContainer() instanceof TreeNode) || model.isChoice() || model.isSubstitution()) {
//$NON-NLS-N$
return false;
}
// fixed for TDI-20808 ,disable group and aggregate for 501
AbstractInOutTree abstractTree = XmlMapUtil.getAbstractInOutTree(model);
if (abstractTree instanceof OutputXmlTree) {
OutputXmlTree outputTree = ((OutputXmlTree) abstractTree);
if (outputTree.isMultiLoops()) {
return false;
}
}
OutputTreeNode findDownLoopNode = findDownLoopNode(model);
if (findDownLoopNode == null) {
return false;
}
if (!model.isGroup()) {
setText("As group element");
isRemove = false;
} else {
setText("Remove group element");
isRemove = true;
}
if (isRemove) {
if (model.isGroup()) {
return true;
} else {
return false;
}
}
} else {
return false;
}
}
return true;
}
use of org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode in project tdi-studio-se by Talend.
the class DirectEditCommand method execute.
@Override
public void execute() {
try {
if (model != null) {
if (DirectEditType.EXPRESSION.equals(type)) {
List<TableEntryLocation> matchedLocations = expressionManager.parseTableEntryLocation((String) newValue);
EList<? extends INodeConnection> connections = null;
if (model instanceof OutputTreeNode || model instanceof VarNode) {
connections = model.getIncomingConnections();
} else if (model instanceof TreeNode) {
connections = ((TreeNode) model).getLookupIncomingConnections();
}
List usefullConnections = new ArrayList();
mapperData = XmlMapUtil.getXmlMapData(model);
if (!matchedLocations.isEmpty()) {
for (int i = 0; i < matchedLocations.size(); i++) {
TableEntryLocation currentLocation = matchedLocations.get(i);
boolean found = false;
for (INodeConnection conn : connections) {
TableEntryLocation sourceLocation = null;
if (conn.getSource() instanceof TreeNode) {
sourceLocation = expressionManager.parseTableEntryLocation(XmlMapUtil.convertToExpression(((TreeNode) conn.getSource()).getXpath())).get(0);
} else if (conn.getSource() instanceof VarNode) {
VarNode varNode = (VarNode) conn.getSource();
sourceLocation = new TableEntryLocation(((VarTable) varNode.eContainer()).getName(), varNode.getName());
}
if (currentLocation.equals(sourceLocation)) {
found = true;
usefullConnections.add(conn);
break;
}
}
if (!found) {
if (mapperData != null) {
String convertToXpath = XmlMapUtil.convertToXpath(currentLocation.toString());
boolean findFromVar = false;
if (model instanceof OutputTreeNode) {
findFromVar = true;
}
AbstractNode sourceNode = findConnectionSource(mapperData, currentLocation, XmlMapUtil.getXPathLength(convertToXpath), findFromVar);
if (sourceNode != null) {
INodeConnection connection = null;
if (model instanceof OutputTreeNode || model instanceof VarNode) {
connection = XmlmapFactory.eINSTANCE.createConnection();
sourceNode.getOutgoingConnections().add((Connection) connection);
model.getIncomingConnections().add((Connection) connection);
} else if (model instanceof TreeNode && sourceNode instanceof TreeNode) {
TreeNode source = (TreeNode) sourceNode;
connection = XmlmapFactory.eINSTANCE.createLookupConnection();
source.getLookupOutgoingConnections().add((LookupConnection) connection);
((TreeNode) model).getLookupIncomingConnections().add((LookupConnection) connection);
}
//
// if (model instanceof OutputTreeNode && sourceNode instanceof TreeNode) {
// createInputLoopTable((TreeNode) sourceNode, (OutputTreeNode) model);
// }
connection.setSource(sourceNode);
connection.setTarget(model);
mapperData.getConnections().add(connection);
usefullConnections.add(connection);
}
}
}
}
} else {
if (!connections.isEmpty()) {
if (model instanceof OutputTreeNode || model instanceof VarNode) {
XmlMapUtil.detachConnectionsSouce(model, mapperData, false);
model.getIncomingConnections().clear();
} else if (model instanceof TreeNode) {
XmlMapUtil.detachLookupSource((TreeNode) model, mapperData);
((TreeNode) model).getLookupIncomingConnections().clear();
}
}
}
List<INodeConnection> copyOfConnections = new ArrayList<INodeConnection>(connections);
copyOfConnections.removeAll(usefullConnections);
if (model instanceof OutputTreeNode || model instanceof VarNode) {
for (INodeConnection connection : copyOfConnections) {
if (connection.getSource() != null) {
if (connection.getSource().getOutgoingConnections().contains(connection)) {
connection.getSource().getOutgoingConnections().remove(connection);
mapperData.getConnections().remove(connection);
}
}
}
model.getIncomingConnections().removeAll(copyOfConnections);
} else if (model instanceof TreeNode) {
for (INodeConnection connection : copyOfConnections) {
if (connection.getSource() != null) {
if (((TreeNode) connection.getSource()).getLookupOutgoingConnections().contains(connection)) {
((TreeNode) connection.getSource()).getLookupOutgoingConnections().remove(connection);
mapperData.getConnections().remove(connection);
}
}
}
((TreeNode) model).getLookupIncomingConnections().removeAll(copyOfConnections);
}
if (model instanceof OutputTreeNode) {
OutputTreeNode outModel = (OutputTreeNode) model;
if (NodeType.NAME_SPACE.equals(outModel.getNodeType()) && outModel.getExpression() != null && !"".equals(model.getExpression())) {
outModel.setDefaultValue("");
}
}
model.setExpression((String) newValue);
} else if (DirectEditType.VAR_NODE_TYPE.equals(type)) {
VarNode varModel = (VarNode) model;
JavaType javaTypeFromLabel = JavaTypesManager.getJavaTypeFromLabel((String) newValue);
if (javaTypeFromLabel == null) {
javaTypeFromLabel = JavaTypesManager.getDefaultJavaType();
}
varModel.setType(javaTypeFromLabel.getId());
} else if (DirectEditType.NODE_NAME.equals(type)) {
if (model instanceof VarNode) {
List<VarNode> children = new ArrayList<VarNode>();
children.addAll(((VarTable) model.eContainer()).getNodes());
children.remove(model);
String message = XmlMapUtil.isValidColumnName(children, (String) newValue);
if (message != null) {
MessageDialog.openError(null, "Error", message);
return;
}
String oldName = model.getName();
String oldExpression = XmlMapUtil.VAR_TABLE_NAME + XmlMapUtil.EXPRESSION_SEPARATOR + oldName;
model.setName((String) newValue);
String newExpression = XmlMapUtil.VAR_TABLE_NAME + XmlMapUtil.EXPRESSION_SEPARATOR + model.getName();
XmlMapUtil.updateTargetExpression(model, oldExpression, newExpression, expressionManager);
} else if (model instanceof GlobalMapNode) {
model.setName((String) newValue);
}
}
}
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}
}
Aggregations