use of org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute in project tdi-studio-se by Talend.
the class MoveUpTreeNodeButton method updateStatus.
/*
* (non-Javadoc)
*
* @see org.talend.designer.fileoutputxml.ui.footer.AbstractTreeNodeButton#updateButtonStatus()
*/
@Override
protected void updateStatus(TreeSelection selection) {
if (selection.isEmpty()) {
getButton().setEnabled(false);
return;
}
final TreePath[] paths = selection.getPaths();
boolean sameSegment = true;
for (int i = 0; i < paths.length - 1; i++) {
if (paths[i].getSegmentCount() != paths[i + 1].getSegmentCount()) {
sameSegment = false;
}
}
if (sameSegment) {
getButton().setEnabled(true);
} else {
getButton().setEnabled(false);
return;
}
// if same segment ,they have the same parent and parent must be an element
final Element parent = (Element) ((FOXTreeNode) selection.getFirstElement()).getParent();
if (parent == null) {
getButton().setEnabled(false);
return;
}
final List<? extends FOXTreeNode> attrChildren = parent.getAttributeChildren();
final List<? extends FOXTreeNode> nameSpaceChildren = parent.getNameSpaceChildren();
final List<FOXTreeNode> elementChildren = parent.getElementChildren();
final Iterator iterator = selection.iterator();
while (iterator.hasNext()) {
final Object next = iterator.next();
if (next instanceof Attribute) {
if (attrChildren.contains(next) && attrChildren.indexOf(next) == 0) {
getButton().setEnabled(false);
return;
}
} else if (next instanceof NameSpaceNode) {
if (nameSpaceChildren.contains(next) && nameSpaceChildren.indexOf(next) == 0) {
getButton().setEnabled(false);
return;
}
} else if (next instanceof Element) {
if (elementChildren.contains(next) && elementChildren.indexOf(next) == 0) {
getButton().setEnabled(false);
return;
}
}
}
}
use of org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute in project tdi-studio-se by Talend.
the class ImportTreeFromRepository method isMappedChoiceSubs.
private boolean isMappedChoiceSubs(FOXTreeNode choiceSubs, String parentXpath) {
// if any child of the choice or subs is mapped to target schema , it should be created in xmlmap
for (FOXTreeNode child : choiceSubs.getChildren()) {
NodeType nodeType = null;
if (child instanceof Element) {
nodeType = NodeType.ELEMENT;
} else if (child instanceof Attribute) {
nodeType = NodeType.ATTRIBUT;
} else if (child instanceof NameSpaceNode) {
nodeType = NodeType.NAME_SPACE;
}
String tempPath = XmlMapUtil.getXPath(parentXpath, child.getLabel(), nodeType);
tempPath = tempPath.substring(schemaNode.getXpath().length() + 1);
if (isMappedChild(tempPath)) {
return true;
}
}
return false;
}
use of org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute in project tdi-studio-se by Talend.
the class ImportTreeFromRepository method prepareModelFromOutput.
private void prepareModelFromOutput(List<FOXTreeNode> foxTreeNodes, TreeNode parent) {
TreeNode realParent = XmlMapUtil.getRealParentNode(parent);
for (FOXTreeNode foxNode : foxTreeNodes) {
TreeNode createTreeNode = createModel();
createTreeNode.setOptional(foxNode.isOptional());
String label = foxNode.getLabel();
createTreeNode.setName(label);
if (foxNode instanceof Element) {
createTreeNode.setNodeType(NodeType.ELEMENT);
if (foxNode.isChoice()) {
createTreeNode.setChoice(foxNode.isChoice());
} else if (foxNode.isSubstitution()) {
createTreeNode.setSubstitution(foxNode.isSubstitution());
}
} else if (foxNode instanceof Attribute) {
createTreeNode.setNodeType(NodeType.ATTRIBUT);
} else if (foxNode instanceof NameSpaceNode) {
createTreeNode.setNodeType(NodeType.NAME_SPACE);
createTreeNode.setDefaultValue(foxNode.getDefaultValue());
if (createTreeNode.getName() == null || createTreeNode.getName().equals("")) {
createTreeNode.setName(XmlMapUtil.DEFAULT_NAME_SPACE_PREFIX);
}
}
String xPath = XmlMapUtil.getXPath(realParent.getXpath(), label, createTreeNode.getNodeType());
createTreeNode.setXpath(xPath);
if (createTreeNode.isSubstitution() || createTreeNode.isChoice()) {
if (isMappedChoiceSubsOutput(foxNode, realParent.getXpath())) {
parent.getChildren().add(createTreeNode);
}
} else {
String subXpath = xPath.substring(schemaNode.getXpath().length() + 1, xPath.length());
XMLFileNode found = findXmlFileNode(subXpath, root);
if (found == null) {
found = findXmlFileNode(subXpath, group);
if (found != null) {
groupElements.add(createTreeNode);
}
}
if (found == null) {
found = findXmlFileNode(subXpath, loop);
if (found != null) {
if (loopNode == null) {
loopNode = createTreeNode;
loopNode.setLoop(true);
loopNode.setOptional(foxNode.isOptional());
}
}
}
if (found == null) {
continue;
} else {
String dataType = found.getType();
if (dataType == null || dataType.equals("")) {
dataType = foxNode.getDataType();
}
if (dataType != null && !"".equals(dataType)) {
if (dataType.equals("id_Date")) {
//$NON-NLS-1$
createTreeNode.setPattern("\"dd-MM-yyyy\"");
}
createTreeNode.setType(dataType);
} else {
createTreeNode.setType(XmlMapUtil.DEFAULT_DATA_TYPE);
}
addChildInOrder(parent, createTreeNode, found.getOrder());
}
}
prepareModelFromOutput(foxNode.getChildren(), createTreeNode);
}
}
use of org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute in project tdi-studio-se by Talend.
the class ImportTreeFromRepository method prepareEmfTree.
private void prepareEmfTree(List<FOXTreeNode> list, TreeNode parent, boolean ignoreMapped) {
if (list == null || list.isEmpty()) {
return;
}
String xPath = parent.getXpath();
TreeNode realParentNode = parent;
if (parent.isSubstitution() || parent.isChoice()) {
realParentNode = XmlMapUtil.getRealParentNode(parent);
if (realParentNode != null) {
xPath = realParentNode.getXpath();
}
}
for (FOXTreeNode foxNode : list) {
TreeNode createTreeNode = createModel();
createTreeNode.setOptional(foxNode.isOptional());
String label = foxNode.getLabel();
createTreeNode.setName(label);
if (foxNode instanceof Element) {
createTreeNode.setNodeType(NodeType.ELEMENT);
if (foxNode.isChoice()) {
createTreeNode.setChoice(foxNode.isChoice());
} else if (foxNode.isSubstitution()) {
createTreeNode.setSubstitution(foxNode.isSubstitution());
}
} else if (foxNode instanceof Attribute) {
createTreeNode.setNodeType(NodeType.ATTRIBUT);
} else if (foxNode instanceof NameSpaceNode) {
createTreeNode.setNodeType(NodeType.NAME_SPACE);
createTreeNode.setDefaultValue(foxNode.getDefaultValue());
if (createTreeNode.getName() == null || createTreeNode.getName().equals("")) {
createTreeNode.setName(XmlMapUtil.DEFAULT_NAME_SPACE_PREFIX);
}
}
createTreeNode.setXpath(XmlMapUtil.getXPath(xPath, label, createTreeNode.getNodeType()));
// tempXpath is current xpath remove schema node xpath like: row1:newColumn1
String tempXpath = createTreeNode.getXpath().substring(schemaNode.getXpath().length() + 1);
if (createTreeNode.isChoice() || createTreeNode.isSubstitution()) {
if (!isMappedChoiceSubs(foxNode, xPath)) {
continue;
}
} else if (!ignoreMapped && !isMappedChild(tempXpath)) {
continue;
}
// get talend type from metadata table
String dataType = null;
if (targetAbsolutePath != null) {
dataType = targetAbsolutePath.get(tempXpath);
}
if (dataType == null) {
dataType = foxNode.getDataType();
}
if (dataType != null && !"".equals(dataType)) {
if (dataType.equals("id_Date")) {
String datePattern = targetDatePattern.get(tempXpath);
if (datePattern == null || "".equals(datePattern)) {
//$NON-NLS-1$
//$NON-NLS-1$
datePattern = "\"dd-MM-yyyy\"";
}
createTreeNode.setPattern(datePattern);
}
createTreeNode.setType(dataType);
} else {
createTreeNode.setType(XmlMapUtil.DEFAULT_DATA_TYPE);
}
if (tempXpath.equals(absoluteXPathQuery)) {
createTreeNode.setLoop(true);
createTreeNode.setOptional(foxNode.isOptional());
loopNode = createTreeNode;
}
parent.getChildren().add(createTreeNode);
if (createTreeNode.isLoop()) {
XmlMapUtil.upsetMainNode(createTreeNode);
}
if (foxNode.getChildren() != null && !foxNode.getChildren().isEmpty()) {
prepareEmfTree(foxNode.getChildren(), createTreeNode, ignoreMapped);
}
}
}
use of org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute in project tdi-studio-se by Talend.
the class MoveDownTreeNodeButton method updateStatus.
/*
* (non-Javadoc)
*
* @see org.talend.designer.fileoutputJSON.ui.footer.AbstractTreeNodeButton#updateButtonStatus()
*/
@Override
protected void updateStatus(TreeSelection selection) {
if (selection.isEmpty()) {
getButton().setEnabled(false);
return;
}
final TreePath[] paths = selection.getPaths();
boolean sameSegment = true;
for (int i = 0; i < paths.length - 1; i++) {
if (paths[i].getSegmentCount() != paths[i + 1].getSegmentCount()) {
sameSegment = false;
}
}
if (sameSegment) {
getButton().setEnabled(true);
} else {
getButton().setEnabled(false);
return;
}
// if same segment ,they have the same parent and parent must be an element
FOXTreeNode foxNode = (FOXTreeNode) selection.getFirstElement();
if (foxNode.getParent() instanceof Element) {
final Element parent = (Element) foxNode.getParent();
final List<? extends FOXTreeNode> attrChildren = parent.getAttributeChildren();
final List<? extends FOXTreeNode> nameSpaceChildren = parent.getNameSpaceChildren();
final List<FOXTreeNode> elementChildren = parent.getElementChildren();
final Iterator iterator = selection.iterator();
while (iterator.hasNext()) {
final Object next = iterator.next();
if (next instanceof Attribute) {
if (attrChildren.contains(next) && attrChildren.indexOf(next) == attrChildren.size() - 1) {
getButton().setEnabled(false);
return;
}
} else if (next instanceof NameSpaceNode) {
if (nameSpaceChildren.contains(next) && nameSpaceChildren.indexOf(next) == nameSpaceChildren.size() - 1) {
getButton().setEnabled(false);
return;
}
} else if (next instanceof Element) {
if (elementChildren.contains(next) && elementChildren.indexOf(next) == elementChildren.size() - 1) {
getButton().setEnabled(false);
return;
}
}
}
}
if (parent == null) {
getButton().setEnabled(false);
return;
}
}
Aggregations