Search in sources :

Example 11 with Element

use of org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element 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;
            }
        }
    }
}
Also used : FOXTreeNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.FOXTreeNode) TreePath(org.eclipse.jface.viewers.TreePath) NameSpaceNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.NameSpaceNode) Attribute(org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute) Element(org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element) Iterator(java.util.Iterator)

Example 12 with Element

use of org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element 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;
}
Also used : FOXTreeNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.FOXTreeNode) NameSpaceNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.NameSpaceNode) Attribute(org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute) NodeType(org.talend.designer.xmlmap.model.emf.xmlmap.NodeType) Element(org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element)

Example 13 with Element

use of org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element 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);
    }
}
Also used : FOXTreeNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.FOXTreeNode) XMLFileNode(org.talend.core.model.metadata.builder.connection.XMLFileNode) NameSpaceNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.NameSpaceNode) Attribute(org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute) FOXTreeNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.FOXTreeNode) TreeNode(org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode) Element(org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element)

Example 14 with Element

use of org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element 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);
        }
    }
}
Also used : FOXTreeNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.FOXTreeNode) NameSpaceNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.NameSpaceNode) Attribute(org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute) FOXTreeNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.FOXTreeNode) TreeNode(org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode) Element(org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element)

Example 15 with Element

use of org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element 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;
    }
}
Also used : FOXTreeNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.FOXTreeNode) TreePath(org.eclipse.jface.viewers.TreePath) NameSpaceNode(org.talend.metadata.managment.ui.wizard.metadata.xml.node.NameSpaceNode) Attribute(org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute) Element(org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element) Iterator(java.util.Iterator)

Aggregations

Element (org.talend.metadata.managment.ui.wizard.metadata.xml.node.Element)32 FOXTreeNode (org.talend.metadata.managment.ui.wizard.metadata.xml.node.FOXTreeNode)29 Attribute (org.talend.metadata.managment.ui.wizard.metadata.xml.node.Attribute)18 NameSpaceNode (org.talend.metadata.managment.ui.wizard.metadata.xml.node.NameSpaceNode)17 ArrayList (java.util.ArrayList)15 Iterator (java.util.Iterator)10 HashMap (java.util.HashMap)6 Map (java.util.Map)6 TreePath (org.eclipse.jface.viewers.TreePath)4 List (java.util.List)3 EList (org.eclipse.emf.common.util.EList)3 TreeNode (org.talend.designer.xmlmap.model.emf.xmlmap.TreeNode)3 InputDialog (org.eclipse.jface.dialogs.InputDialog)2 IMetadataTable (org.talend.core.model.metadata.IMetadataTable)2 XMLFileNode (org.talend.core.model.metadata.builder.connection.XMLFileNode)2 IConnection (org.talend.core.model.process.IConnection)2 ATreeNode (org.talend.datatools.xml.utils.ATreeNode)2 MetadataTable (org.talend.core.model.metadata.MetadataTable)1 MetadataColumn (org.talend.core.model.metadata.builder.connection.MetadataColumn)1 MetadataEmfTableEditor (org.talend.core.ui.metadata.editor.MetadataEmfTableEditor)1