use of org.talend.designer.xmlmap.model.emf.xmlmap.VarTable in project tdi-studio-se by Talend.
the class XmlMapDataImplTest method createSparkData.
private XmlMapData createSparkData(String inputDiff, String outputDiff, String varDiff) {
XmlMapData data = XmlmapFactory.eINSTANCE.createXmlMapData();
//
InputXmlTree inputTree = XmlmapFactory.eINSTANCE.createInputXmlTree();
inputTree.setName("input_1");
inputTree.setLookup(true);
inputTree.setInnerJoin(false);
inputTree.setLookupMode("LOAD_ONCE");
inputTree.setMatchingMode("ALL_ROWS");
inputTree.setMinimized(false);
inputTree.setMultiLoops(false);
inputTree.setPersistent(false);
data.getInputTrees().add(inputTree);
TreeNode treeNode = XmlmapFactory.eINSTANCE.createTreeNode();
treeNode.setName("inputTreeNode");
treeNode.setXpath("row1/newColumn");
treeNode.setExpression(inputDiff);
treeNode.setType("id_String");
treeNode.setLoop(false);
treeNode.setPattern(inputDiff);
treeNode.setKey(false);
treeNode.setGroup(false);
treeNode.setMain(false);
treeNode.setDefaultValue("value");
treeNode.setNullable(false);
treeNode.setChoice(false);
treeNode.setSubstitution(false);
treeNode.setOptional(false);
treeNode.setNodeType(org.talend.designer.xmlmap.model.emf.xmlmap.NodeType.ATTRIBUT);
inputTree.getNodes().add(treeNode);
OutputXmlTree outputTree = XmlmapFactory.eINSTANCE.createOutputXmlTree();
outputTree.setName("output_1");
outputTree.setReject(false);
outputTree.setRejectInnerJoin(false);
outputTree.setErrorReject(false);
outputTree.setAllInOne(false);
outputTree.setEnableEmptyElement(false);
data.getOutputTrees().add(outputTree);
OutputTreeNode treeNode2 = XmlmapFactory.eINSTANCE.createOutputTreeNode();
treeNode2.setName("outputTreeNode");
treeNode2.setXpath("out/newColumn");
treeNode2.setType("id_String");
treeNode2.setAggregate(false);
treeNode2.setLoop(false);
treeNode2.setPattern(outputDiff);
treeNode2.setExpression(outputDiff);
treeNode2.setKey(false);
treeNode2.setGroup(false);
treeNode2.setMain(false);
treeNode2.setDefaultValue("value");
treeNode2.setNullable(false);
treeNode2.setChoice(false);
treeNode2.setSubstitution(false);
treeNode2.setOptional(false);
treeNode2.setNodeType(org.talend.designer.xmlmap.model.emf.xmlmap.NodeType.ATTRIBUT);
outputTree.getNodes().add(treeNode2);
VarTable vatTable = XmlmapFactory.eINSTANCE.createVarTable();
vatTable.setName("varTable");
vatTable.setMinimized(true);
VarNode varNode = XmlmapFactory.eINSTANCE.createVarNode();
varNode.setName("varNode");
varNode.setNullable(false);
varNode.setType("id_String");
varNode.setExpression(varDiff);
vatTable.getNodes().add(varNode);
data.getVarTables().add(vatTable);
Connection connection = XmlmapFactory.eINSTANCE.createConnection();
connection.setSource(treeNode);
connection.setTarget(treeNode2);
data.getConnections().add(connection);
treeNode.getOutgoingConnections().add(connection);
treeNode2.getIncomingConnections().add(connection);
FilterConnection fc = XmlmapFactory.eINSTANCE.createFilterConnection();
fc.setSource(treeNode);
fc.setTarget(outputTree);
data.getConnections().add(fc);
treeNode.getFilterOutGoingConnections().add(fc);
outputTree.getFilterIncomingConnections().add(fc);
return data;
}
use of org.talend.designer.xmlmap.model.emf.xmlmap.VarTable in project tdi-studio-se by Talend.
the class XmlMapDataImpl method equals.
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated not
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
XmlMapDataImpl dbObj = (XmlMapDataImpl) obj;
EList<InputXmlTree> inputs = dbObj.getInputTrees();
EList<OutputXmlTree> outputs = dbObj.getOutputTrees();
EList<VarTable> vars = dbObj.getVarTables();
EList<IConnection> conns = dbObj.getConnections();
if (inputs.size() != getInputTrees().size()) {
return false;
}
if (outputs.size() != getOutputTrees().size()) {
return false;
}
if (vars.size() != getVarTables().size()) {
return false;
}
if (getConnections().size() != conns.size()) {
return false;
}
for (InputXmlTree inputTable : inputTrees) {
boolean found = false;
for (InputXmlTree input : inputs) {
if (inputTable.getName().equals(input.getName())) {
found = true;
if (!inputTable.equals(input)) {
return false;
}
break;
}
}
if (found == false) {
return false;
}
}
for (OutputXmlTree outputTable : outputTrees) {
boolean found = false;
for (OutputXmlTree output : outputs) {
if (outputTable.getName().equals(output.getName())) {
found = true;
if (!outputTable.equals(output)) {
return false;
}
break;
}
}
if (found == false) {
return false;
}
}
for (VarTable varTable : varTables) {
boolean found = false;
for (VarTable var : vars) {
if (varTable.getName().equals(var.getName())) {
found = true;
if (!varTable.equals(var)) {
return false;
}
break;
}
}
if (found == false) {
return false;
}
}
return true;
}
use of org.talend.designer.xmlmap.model.emf.xmlmap.VarTable 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.model.emf.xmlmap.VarTable in project tdi-studio-se by Talend.
the class XmlMapService method checkXMLMapDifferents.
/*
* (non-Javadoc)
*
* @see org.talend.core.service.IXmlMapService#checkXMLMapDifferents(org.talend.core.model.process.INode,
* org.talend.core.model.process.INode)
*/
@Override
public boolean checkXMLMapDifferents(INode testNode, INode originalNode) {
AbstractExternalData oriExternalData = originalNode.getExternalNode().getExternalEmfData();
AbstractExternalData testExternalData = testNode.getExternalNode().getExternalEmfData();
if (oriExternalData == null && testExternalData == null) {
return false;
}
if (oriExternalData == null || testExternalData == null) {
return true;
}
if (!(oriExternalData instanceof XmlMapData) || !(testExternalData instanceof XmlMapData)) {
return false;
}
Map<String, String> inputConnNameMap = getInputConnectionNameMap(testNode);
XmlMapData oriXmlData = (XmlMapData) oriExternalData;
XmlMapData testXmlData = (XmlMapData) testExternalData;
EList<InputXmlTree> oriInputs = oriXmlData.getInputTrees();
EList<OutputXmlTree> oriOutputs = oriXmlData.getOutputTrees();
EList<VarTable> oriVars = oriXmlData.getVarTables();
EList<InputXmlTree> testInputs = testXmlData.getInputTrees();
EList<OutputXmlTree> testOutputs = testXmlData.getOutputTrees();
EList<VarTable> testVars = testXmlData.getVarTables();
if (oriInputs.size() != testInputs.size()) {
return true;
}
if (oriOutputs.size() != testOutputs.size()) {
return true;
}
if (oriVars.size() != testVars.size()) {
return true;
}
for (InputXmlTree oriInput : oriInputs) {
String oriName = oriInput.getName();
InputXmlTree testInput = null;
for (InputXmlTree input : testInputs) {
if (input.getName().equals(oriName)) {
testInput = input;
break;
}
}
if (testInput == null) {
testInput = getInputXmlTree(testNode, testInputs, oriName);
}
if (testInput == null) {
return true;
}
if (oriInput.isActivateExpressionFilter() != testInput.isActivateExpressionFilter()) {
return true;
}
if (oriInput.getExpressionFilter() != testInput.getExpressionFilter()) {
return true;
}
if (oriInput.isMinimized() != testInput.isMinimized()) {
return true;
}
if (oriInput.isActivateCondensedTool() != testInput.isActivateCondensedTool()) {
return true;
}
EList<TreeNode> oriEntrys = oriInput.getNodes();
EList<TreeNode> testEntrys = testInput.getNodes();
if (oriEntrys.size() != testEntrys.size()) {
return true;
}
for (TreeNode oriEntry : oriEntrys) {
String oriEntryName = oriEntry.getName();
boolean found = false;
for (TreeNode testEntry : testEntrys) {
if (oriEntryName.equals(testEntry.getName())) {
found = true;
if (checkExpression(oriEntry.getExpression(), testEntry.getExpression(), inputConnNameMap)) {
return true;
}
break;
}
}
if (!found) {
return true;
}
}
}
for (OutputXmlTree oriOutput : oriOutputs) {
String oriName = oriOutput.getName();
OutputXmlTree testOutput = null;
for (OutputXmlTree output : testOutputs) {
if (output.getName().equals(oriName)) {
testOutput = output;
break;
}
}
if (testOutput == null) {
testOutput = getOutputXmlTree(testNode, testOutputs, oriName);
}
if (testOutput == null) {
return true;
}
if (oriOutput.isActivateExpressionFilter() != testOutput.isActivateExpressionFilter()) {
return true;
}
if (oriOutput.getExpressionFilter() != testOutput.getExpressionFilter()) {
return true;
}
if (oriOutput.isMinimized() != testOutput.isMinimized()) {
return true;
}
if (oriOutput.isActivateCondensedTool() != testOutput.isActivateCondensedTool()) {
return true;
}
EList<OutputTreeNode> oriEntrys = oriOutput.getNodes();
EList<OutputTreeNode> testEntrys = testOutput.getNodes();
if (oriEntrys.size() != testEntrys.size()) {
return true;
}
for (OutputTreeNode oriEntry : oriEntrys) {
String oriEntryName = oriEntry.getName();
boolean found = false;
for (OutputTreeNode testEntry : testEntrys) {
if (oriEntryName.equals(testEntry.getName())) {
found = true;
if (found) {
if (checkChildOutputTreeNode(oriEntry, testEntry, inputConnNameMap)) {
return true;
}
}
break;
}
}
if (!found) {
return true;
}
}
}
for (VarTable oriVar : oriVars) {
String oriName = oriVar.getName();
VarTable testVar = null;
for (VarTable var : testVars) {
if (var.getName().equals(oriName)) {
testVar = var;
break;
}
}
if (testVar == null) {
return true;
}
if (oriVar.isMinimized() != testVar.isMinimized()) {
return true;
}
EList<VarNode> oriEntrys = oriVar.getNodes();
EList<VarNode> testEntrys = testVar.getNodes();
if (oriEntrys.size() != testEntrys.size()) {
return true;
}
for (VarNode oriEntry : oriEntrys) {
String oriEntryName = oriEntry.getName();
boolean found = false;
for (VarNode testEntry : testEntrys) {
if (oriEntryName.equals(testEntry.getName())) {
found = true;
if (checkExpression(oriEntry.getExpression(), testEntry.getExpression(), inputConnNameMap)) {
return true;
}
}
}
if (!found) {
return true;
}
}
}
return false;
}
use of org.talend.designer.xmlmap.model.emf.xmlmap.VarTable in project tdi-studio-se by Talend.
the class XmlMapService method externalEmfDataClone.
/*
* (non-Javadoc)
*
* @see
* org.talend.core.service.IXmlMapService#externalEmfDataClone(org.talend.designer.core.model.utils.emf.talendfile
* .AbstractExternalData)
*/
@Override
public AbstractExternalData externalEmfDataClone(AbstractExternalData externalEmfData) {
if (!(externalEmfData instanceof XmlMapData)) {
return externalEmfData;
}
Map<EObject, EObject> nodeMaps = new HashMap<EObject, EObject>();
XmlMapData newXmlMapData = XmlmapFactory.eINSTANCE.createXmlMapData();
XmlMapData xmlMapData = (XmlMapData) externalEmfData;
EList<InputXmlTree> oriInputs = xmlMapData.getInputTrees();
EList<OutputXmlTree> oriOutputs = xmlMapData.getOutputTrees();
EList<VarTable> oriVars = xmlMapData.getVarTables();
EList<IConnection> oriConns = xmlMapData.getConnections();
for (IConnection oriConn : oriConns) {
if (oriConn instanceof INodeConnection) {
AbstractNode sourceNode = ((INodeConnection) oriConn).getSource();
AbstractNode targetNode = ((INodeConnection) oriConn).getTarget();
EObject source = null;
if (nodeMaps.get(sourceNode) != null) {
source = nodeMaps.get(sourceNode);
} else {
source = cloneTreeNode(sourceNode);
nodeMaps.put(sourceNode, source);
}
EObject target = null;
if (nodeMaps.get(targetNode) != null) {
target = nodeMaps.get(targetNode);
} else {
target = cloneTreeNode(targetNode);
nodeMaps.put(targetNode, target);
}
if (oriConn instanceof Connection) {
new XmlMapConnectionBuilder().createConnection((AbstractNode) source, (AbstractNode) target, newXmlMapData);
} else if (oriConn instanceof LookupConnection) {
new XmlMapConnectionBuilder().createLookupConnection((TreeNode) source, (TreeNode) target, newXmlMapData);
}
} else if (oriConn instanceof FilterConnection) {
AbstractNode sourceNode = ((FilterConnection) oriConn).getSource();
AbstractInOutTree targetNode = ((FilterConnection) oriConn).getTarget();
EObject source = null;
if (nodeMaps.get(sourceNode) != null) {
source = nodeMaps.get(sourceNode);
} else {
source = cloneTreeNode(sourceNode);
nodeMaps.put(sourceNode, source);
}
EObject target = null;
if (nodeMaps.get(targetNode) != null) {
target = nodeMaps.get(targetNode);
} else {
target = cloneTreeNode(targetNode);
nodeMaps.put(targetNode, target);
}
new XmlMapConnectionBuilder().createFilterConnection((AbstractNode) source, (AbstractInOutTree) target, newXmlMapData);
}
}
for (InputXmlTree inputXml : oriInputs) {
InputXmlTree newInputXml = null;
if (nodeMaps.get(inputXml) == null) {
newInputXml = (InputXmlTree) cloneTreeNode(inputXml);
} else {
newInputXml = (InputXmlTree) nodeMaps.get(inputXml);
}
if (inputXml.getNodes() != null) {
for (TreeNode treeNode : inputXml.getNodes()) {
EObject obj = nodeMaps.get(treeNode);
if ((obj != null) && !newInputXml.getNodes().contains(obj)) {
newInputXml.getNodes().add((TreeNode) obj);
}
}
}
if (!newXmlMapData.getInputTrees().contains(newInputXml)) {
newXmlMapData.getInputTrees().add(newInputXml);
}
nodeMaps.put(inputXml, newInputXml);
}
for (OutputXmlTree outputXml : oriOutputs) {
OutputXmlTree newOutputXml = null;
if (nodeMaps.get(outputXml) == null) {
newOutputXml = (OutputXmlTree) cloneTreeNode(outputXml);
} else {
newOutputXml = (OutputXmlTree) nodeMaps.get(outputXml);
}
if (outputXml.getNodes() != null) {
for (OutputTreeNode treeNode : outputXml.getNodes()) {
EObject obj = nodeMaps.get(treeNode);
if ((obj != null) && !newOutputXml.getNodes().contains(obj)) {
newOutputXml.getNodes().add((OutputTreeNode) obj);
}
}
}
// }
if (!newXmlMapData.getOutputTrees().contains(newOutputXml)) {
newXmlMapData.getOutputTrees().add(newOutputXml);
}
nodeMaps.put(outputXml, newOutputXml);
}
for (VarTable varXml : oriVars) {
VarTable newVarXml = null;
if (nodeMaps.get(varXml) == null) {
newVarXml = XmlmapFactory.eINSTANCE.createVarTable();
newVarXml.setMinimized(varXml.isMinimized());
newVarXml.setName(varXml.getName());
if (varXml.getNodes() != null) {
for (VarNode treeNode : varXml.getNodes()) {
EObject obj = nodeMaps.get(treeNode);
if (obj != null) {
newVarXml.getNodes().add((VarNode) obj);
}
}
}
if (!newXmlMapData.getVarTables().contains(newVarXml)) {
newXmlMapData.getVarTables().add(newVarXml);
}
nodeMaps.put(varXml, newVarXml);
}
}
return newXmlMapData;
}
Aggregations