Example usage for org.eclipse.jdt.core.jdom IDOMNode remove

List of usage examples for org.eclipse.jdt.core.jdom IDOMNode remove

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.jdom IDOMNode remove.

Prototype

public void remove();

Source Link

Document

Separates this node from its parent and siblings, maintaining any ties that this node has to the underlying document fragment.

Usage

From source file:ac.at.tuwien.dsg.uml2java.stereotype.export.ClassWithStereotypeExportRule.java

License:Open Source License

protected Object createTarget(ITransformContext context) {

    /**/*from w  w  w .j  av a 2s.c  o m*/
     * Retrieve the target DOM generated by the UML2Java standard transformation
     */
    DOMNode target = (DOMNode) context.getTarget();

    /**
     * Create a DOMFactory to be used in instantiating new DOM elements
     */
    DOMFactory domFactory = new DOMFactory();

    /**
     * Get the transformation UML Class
     */
    Class umlCls = (Class) context.getSource();

    /**
     * We want to add something as default imports. Mainly org.eclipse.uml2.uml.* but maybe something more in the future.
     * To do that, as in this rule the Class java file is already partially generated by super ClassRule, we get its parent (i.e., the CompilationUnit), 
     * remove all parent children (actually just one, the generated class), add all import statements we need, and add the removed children back.
     * 
     * Otherwise the imports are added after the end of the class, which triggers compilation errors.
     */

    List<IDOMNode> children = new ArrayList<>();
    IDOMNode parent = target.getParent();
    Enumeration enumeration = parent.getChildren();

    //remove all parent children
    while (enumeration.hasMoreElements()) {
        IDOMNode node = (IDOMNode) enumeration.nextElement();
        children.add(node);
        node.remove();
    }

    //add all import statements
    for (String importStatement : defaultImports) {
        IDOMImport importEclipseUML = domFactory.createImport();
        importEclipseUML.setName(importStatement);
        parent.addChild(importEclipseUML);
    }

    //add children back
    for (IDOMNode child : children) {
        parent.addChild(child);
    }

    /**
     * We go through all applied stereotypes and for each we go through each attribute, and create a class field.
     */

    for (Stereotype stereotype : umlCls.getAppliedStereotypes()) {

        //get all properties
        for (Property attribute : stereotype.getAllAttributes()) {

            String name = attribute.getName();
            Type type = attribute.getType();
            String typeName = type.getName();

            org.eclipse.uml2.uml.Package packageType = type.getPackage();
            /**
             * Create Java field/class variable for each attribute 
             */
            Namespace namespace = attribute.getNamespace();

            //create import statement for each added field 
            //            IDOMImport importStatement = domFactory.createImport();
            //            importStatement.setName(packageType+"."+typeName);
            //            
            //            target.addChild(importStatement);

            IDOMField field = domFactory.createField();
            field.setName(name);
            field.setFlags(Flags.AccPrivate);
            /**
             * In case the model is incomplete, we add the field with Object as type
             */
            if (typeName == null) {
                field.setType("Object");
                //add in the generated code a comment explaining why field type is Object
                field.setComment("/*Type for attribute \"" + name + "\" on stereotype \"" + stereotype
                        + "\" is null */");
                System.err.println(
                        "Type for attribute \"" + name + "\" on stereotype \"" + stereotype + "\" is null");
            } else {
                field.setType(typeName);
            }

            target.addChild(field);

            /**
             * Add setter/getter for the added field
             */
            IDOMMethod setter = domFactory.createMethod();
            /**
             * Capitalize the first letter of the variable name so we have nice camel-case 
             */
            setter.setName("set" + name.substring(0, 1).toUpperCase() + name.substring(1));
            setter.setFlags(Flags.AccPublic);
            setter.setReturnType("void");
            setter.addParameter(typeName, name);
            setter.setBody("{ \n this." + name + "=" + name + ";\n }");

            target.addChild(setter);

            IDOMMethod getter = domFactory.createMethod();
            getter.setName("get" + name.substring(0, 1).toUpperCase() + name.substring(1));
            getter.setFlags(Flags.AccPublic);
            getter.setReturnType(typeName);
            getter.setBody("{ \n return this." + name + ";\n }");

            target.addChild(getter);

        }

    }
    return target;
}

From source file:org.eclipse.emf.codegen.jmerge.JMerger.java

License:Open Source License

protected void applySweepRules(IDOMNode targetNode) {
    for (Iterator sweepRules = jControlModel.getSweepRules().iterator(); sweepRules.hasNext();) {
        JControlModel.SweepRule sweepRule = (JControlModel.SweepRule) sweepRules.next();
        if (sweepRule.getSelector() == IDOMImport.class && targetNode instanceof IDOMImport) {
            if (sweepRule.getMarkup().matcher(targetNode.getName()).find()) {
                targetNode.remove();
                break;
            }//  w  ww . ja va 2 s  . co m
        } else if (targetPatternDictionary.isMarkedUp(sweepRule.getMarkup(), targetNode)
                && sweepRule.getSelector().isInstance(targetNode)) {
            targetNode.remove();
            break;
        }
    }
}

From source file:org.eclipse.emf.codegen.jmerge.JMerger.java

License:Open Source License

protected void sortTargetCompilationUnit() {
    for (Iterator values = orderedSourceChildrenMap.values().iterator(); values.hasNext();) {
        List children = (List) values.next();
        if (children.size() > 2) {
            Iterator i = children.iterator();
            IDOMNode sourceNode = (IDOMNode) i.next();
            IDOMNode previousTargetNode = (IDOMNode) sourceToTargetMap.get(sourceNode);
            do {//from  www. j a v a 2s. c om
                sourceNode = (IDOMNode) i.next();
                IDOMNode nextTargetNode = (IDOMNode) sourceToTargetMap.get(sourceNode);

                boolean reorder = true;
                for (IDOMNode domNode = nextTargetNode.getPreviousNode(); domNode != null; domNode = domNode
                        .getPreviousNode()) {
                    if (domNode == previousTargetNode) {
                        reorder = false;
                        break;
                    }
                }

                if (reorder) {
                    nextTargetNode.remove();
                    if (previousTargetNode.getNextNode() == null) {
                        previousTargetNode.getParent().addChild(nextTargetNode);
                    } else {
                        previousTargetNode.getNextNode().insertSibling(nextTargetNode);
                    }
                }

                previousTargetNode = nextTargetNode;
            } while (i.hasNext());
        }
    }
}

From source file:org.eclipse.emf.codegen.merge.java.facade.jdom.JDOMFacadeHelper.java

License:Open Source License

@Override
public boolean remove(JNode node) {
    IDOMNode idomNode = getIDOMNode(node);
    IDOMNode parent = idomNode.getParent();
    if (parent != null) {
        idomNode.remove();
        return true;
    }//  ww  w.  j  av  a2s  .  c  o  m
    return false;
}