use of org.talend.designer.xmlmap.parts.TreeNodeEditPart in project tdi-studio-se by Talend.
the class SetLoopAction method calculateEnabled.
@Override
protected boolean calculateEnabled() {
// nodesNeedToChangeMainStatus.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 TreeNodeEditPart) {
nodePart = (TreeNodeEditPart) obj;
TreeNode model = (TreeNode) nodePart.getModel();
if (NodeType.ATTRIBUT.equals(model.getNodeType()) || NodeType.NAME_SPACE.equals(model.getNodeType()) || !(model.eContainer() instanceof TreeNode)) {
return false;
}
if (model.isLoop()) {
return false;
}
} else {
return false;
}
}
return true;
}
use of org.talend.designer.xmlmap.parts.TreeNodeEditPart 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.parts.TreeNodeEditPart in project tdi-studio-se by Talend.
the class InsertNewColumnCommand method execute.
@Override
public void execute() {
if (rq == null || objects.getToTransfer() == null || targetEditPart == null || dropType == null) {
return;
}
Object targetModel = targetEditPart.getModel();
for (Object obj : objects.getToTransfer()) {
AbstractNode createdNode = rq.getNewObject();
// INPUT => OUTPUT INSERT
if (objects.getType() == TransferdType.INPUT) {
TreeNodeEditPart part = (TreeNodeEditPart) obj;
TreeNode sourceNode = (TreeNode) part.getModel();
String expression = XmlMapUtil.convertToExpression(sourceNode.getXpath());
switch(dropType) {
case DROP_INSERT_OUTPUT:
int index = -1;
OutputXmlTree outputTree = null;
if (targetModel instanceof OutputTreeNode) {
OutputTreeNode targetNode = (OutputTreeNode) targetModel;
if (targetNode.eContainer() instanceof OutputXmlTree) {
outputTree = (OutputXmlTree) targetNode.eContainer();
index = outputTree.getNodes().indexOf(targetNode);
}
} else if (targetModel instanceof OutputXmlTree) {
outputTree = (OutputXmlTree) targetModel;
}
if (outputTree != null) {
boolean fillNode = fillTreeNode(outputTree.getNodes(), sourceNode, outputTree.getName(), expression, (OutputTreeNode) createdNode);
if (!fillNode) {
return;
}
if (index != -1) {
outputTree.getNodes().add(index, (OutputTreeNode) createdNode);
} else {
outputTree.getNodes().add((OutputTreeNode) createdNode);
}
createConnection(sourceNode, createdNode);
AbstractInOutTree abstractTree = XmlMapUtil.getAbstractInOutTree(sourceNode);
createOutputMetadataColumn(abstractTree.getName(), outputTree.getName(), sourceNode, createdNode.getName(), index);
}
break;
case DROP_INSERT_VAR:
VarNode targetVar = (VarNode) targetModel;
VarNode varNode = (VarNode) createdNode;
if (targetVar.eContainer() instanceof VarTable) {
VarTable varTable = (VarTable) targetVar.eContainer();
String validSourceName = validSourceNodeName(varTable.getNodes(), sourceNode);
String name = getUniqueTableEntry(varTable.getNodes(), validSourceName);
varNode.setName(name);
varNode.setType(sourceNode.getType());
varNode.setExpression(expression);
varTable.getNodes().add(varTable.getNodes().indexOf(targetVar), varNode);
createConnection(sourceNode, createdNode);
}
break;
case DROP_INSERT_INPUT:
if (targetModel instanceof InputXmlTree) {
InputXmlTree inputTree = (InputXmlTree) targetModel;
boolean fillNode = fillTreeNode(inputTree.getNodes(), sourceNode, inputTree.getName(), expression, (TreeNode) createdNode);
if (!fillNode) {
return;
}
inputTree.getNodes().add((TreeNode) createdNode);
createLookupConnection(sourceNode, (TreeNode) createdNode);
AbstractInOutTree abstractTree = XmlMapUtil.getAbstractInOutTree(sourceNode);
createInputMetadataColumn(abstractTree.getName(), inputTree.getName(), sourceNode, createdNode.getName(), -1);
}
default:
break;
}
} else // VAR => OUTPUT INSERT
if (objects.getType() == TransferdType.VAR) {
VarNodeEditPart part = (VarNodeEditPart) obj;
VarNode sourceNode = (VarNode) part.getModel();
//$NON-NLS-1$
String tableName = "Var";
if (sourceNode.eContainer() instanceof VarTable) {
tableName = ((VarTable) sourceNode.eContainer()).getName();
}
//$NON-NLS-1$
String expression = tableName + "." + sourceNode.getName();
if (dropType == DropType.DROP_INSERT_OUTPUT) {
int index = -1;
OutputXmlTree outputTree = null;
if (targetModel instanceof OutputTreeNode) {
OutputTreeNode targetNode = (OutputTreeNode) targetModel;
if (targetNode.eContainer() instanceof OutputXmlTree) {
outputTree = (OutputXmlTree) targetNode.eContainer();
index = outputTree.getNodes().indexOf(targetNode);
}
} else if (targetModel instanceof OutputXmlTree) {
outputTree = (OutputXmlTree) targetModel;
}
if (outputTree != null) {
OutputTreeNode outputNode = (OutputTreeNode) createdNode;
String name = getUniqueTableEntry(outputTree.getNodes(), sourceNode.getName());
outputNode.setName(name);
outputNode.setType(sourceNode.getType());
outputNode.setExpression(expression);
outputNode.setXpath(XmlMapUtil.getXPath(outputTree.getName(), outputNode.getName(), outputNode.getNodeType()));
if (index != -1) {
outputTree.getNodes().add(index, (OutputTreeNode) createdNode);
} else {
outputTree.getNodes().add((OutputTreeNode) createdNode);
}
createConnection(sourceNode, createdNode);
createOutputMetadataColumn(null, outputTree.getName(), sourceNode, createdNode.getName(), index);
// List<IMetadataTable> metadataTargets = manager.getMapperComponent().getMetadataList();
// IMetadataTable metadataTarget = null;
// if (metadataTargets != null) {
// for (IMetadataTable target : metadataTargets) {
// if (target.getTableName().equals(outputTree.getName())) {
// metadataTarget = target;
// }
// }
// if (metadataTarget != null) {
// IMetadataColumn createNewColumn = new MetadataColumn();
// createNewColumn.setLabel(outputNode.getName());
// createNewColumn.setTalendType(outputNode.getType());
// createNewColumn.setNullable(true);
// metadataTarget.getListColumns().add(createNewColumn);
// }
// }
}
}
}
}
switch(dropType) {
case DROP_INSERT_OUTPUT:
manager.getMapperUI().getTabFolderEditors().getOutputMetaEditorView().getTableViewerCreator().refresh();
case DROP_INSERT_INPUT:
manager.getMapperUI().getTabFolderEditors().getOutputMetaEditorView().getTableViewerCreator().refresh();
}
}
use of org.talend.designer.xmlmap.parts.TreeNodeEditPart in project tdi-studio-se by Talend.
the class DeleteTreeNodeAction method calculateEnabled.
@Override
protected boolean calculateEnabled() {
// nodesNeedToChangeMainStatus.clear();
if (getSelectedObjects().isEmpty()) {
return false;
} else {
boolean enable = true;
Object s = getSelectedObjects().get(0);
if (s instanceof List && !((List) s).isEmpty()) {
List selectedarts = (List) s;
Object lastSelection = selectedarts.get(selectedarts.size() - 1);
if (!(lastSelection instanceof TreeNodeEditPart)) {
return false;
}
for (Object obj : selectedarts) {
if (obj instanceof TreeNodeEditPart) {
TreeNodeEditPart nodePart = (TreeNodeEditPart) obj;
TreeNode treeNode = (TreeNode) nodePart.getModel();
int xPathLength = XmlMapUtil.getXPathLength(treeNode.getXpath());
if (xPathLength <= 2) {
enable = false;
}
// can't delete root
if (treeNode.eContainer() instanceof TreeNode && XmlMapUtil.DOCUMENT.equals(((TreeNode) treeNode.eContainer()).getType())) {
enable = false;
}
}
if (!enable) {
return enable;
}
}
}
return enable;
}
}
use of org.talend.designer.xmlmap.parts.TreeNodeEditPart in project tdi-studio-se by Talend.
the class DropContextAnalyzer method checkDropInputValid.
private boolean checkDropInputValid(Object target) {
if (objects.getType() == TransferdType.INPUT) {
for (Object obj : objects.getToTransfer()) {
TreeNodeEditPart part = (TreeNodeEditPart) obj;
AbstractInOutTree srouceTree = XmlMapUtil.getAbstractInOutTree((TreeNode) part.getModel());
AbstractInOutTree targetTree = null;
if (target instanceof InputXmlTree) {
targetTree = (InputXmlTree) target;
} else {
targetTree = XmlMapUtil.getAbstractInOutTree((TreeNode) target);
}
if (srouceTree == targetTree) {
return false;
}
if (srouceTree.eContainer() instanceof XmlMapData) {
XmlMapData mapdata = ((XmlMapData) srouceTree.eContainer());
int indexSource = mapdata.getInputTrees().indexOf(srouceTree);
int indexTarget = mapdata.getInputTrees().indexOf(targetTree);
if (indexTarget < indexSource) {
return false;
}
}
}
}
return true;
}
Aggregations