Example usage for org.eclipse.jdt.core IJavaElement COMPILATION_UNIT

List of usage examples for org.eclipse.jdt.core IJavaElement COMPILATION_UNIT

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaElement COMPILATION_UNIT.

Prototype

int COMPILATION_UNIT

To view the source code for org.eclipse.jdt.core IJavaElement COMPILATION_UNIT.

Click Source Link

Document

Constant representing a Java compilation unit.

Usage

From source file:edu.washington.cs.cupid.jdt.compiler.CompilationUnit.java

License:Open Source License

@Override
public LinearJob<IJavaElement, ICompilationUnit> getJob(final IJavaElement input) {
    return new LinearJob<IJavaElement, ICompilationUnit>(this, input) {

        @Override/*from  w  w w.  ja v  a 2  s.c o  m*/
        protected LinearStatus<ICompilationUnit> run(final IProgressMonitor monitor) {
            try {
                monitor.beginTask(getName(), 1);
                IJavaElement cu = input.getAncestor(IJavaElement.COMPILATION_UNIT);

                if (cu != null) {
                    return LinearStatus.<ICompilationUnit>makeError(
                            new RuntimeException("No associated compilation unit"));
                } else {
                    return LinearStatus.makeOk(getCapability(), (ICompilationUnit) cu);
                }
            } catch (Exception ex) {
                return LinearStatus.<ICompilationUnit>makeError(ex);
            } finally {
                monitor.done();
            }
        }
    };
}

From source file:edu.wpi.cs.jburge.SEURAT.actions.AssociateArtifactAction.java

License:Open Source License

/** Executes the association. We get our selected rationale item and 
 * associated it with the java element selected.
 * /*  www.  j  ava  2s . com*/
 */
public void run() {
    //Get our selected items. Send a message to the user to confirm that
    //this is the correct association.
    if (navigatorSelection != null) {
        ISelection selection = viewer.getSelection();
        obj = ((IStructuredSelection) selection).getFirstElement();
        if (obj instanceof TreeParent) {
            String assQ = "Associate '" + ((TreeParent) obj).getName() + "' with "
                    + navigatorSelection.getElementName() + "?";

            boolean selOk = showQuestion(assQ);
            //            showMessage(navigatorSelection.getHandleIdentifier());
            //            System.out.println(navigatorSelection.getHandleIdentifier());
            if (selOk) {
                cstart = 0;

                ourRes = null;
                try {

                    if (navigatorSelection.getElementType() == IJavaElement.COMPILATION_UNIT) {
                        ourRes = navigatorSelection.getCorrespondingResource();
                    } else {
                        ourRes = navigatorSelection.getUnderlyingResource();
                        if (ourRes != null) {
                            //                        ***                        System.out.println("this one wasn't null?");
                        }
                        //find the enclosing class file
                        IJavaElement nextE = navigatorSelection.getParent();
                        while ((nextE != null) && (nextE.getElementType() != IJavaElement.COMPILATION_UNIT)) {
                            //                        ***                        System.out.println("Name = " + nextE.getElementName());
                            //                        ***                     System.out.println("Type = " + nextE.getElementType());
                            nextE = nextE.getParent();
                        }
                        try {
                            //                        ***                     System.out.println("getting our resource");
                            //                  ourRes = nextE.getUnderlyingResource();
                            ourRes = nextE.getCorrespondingResource();
                            ourRes = nextE.getResource();
                        } catch (JavaModelException ex) {
                            System.out.println("exception getting resource?");
                        }
                        //                     ***                     System.out.println("Final name = " + nextE.getElementName());
                        //                     ***                     System.out.println("Final type = " + nextE.getElementType());
                        if (ourRes == null) {
                            //see if we can get the element from the working copy
                            IJavaElement original = nextE.getPrimaryElement();
                            //                        Get working copy has been deprecated
                            //                        IJavaElement original = ((ICompilationUnit) ((ICompilationUnit) nextE).getWorkingCopy()).getOriginalElement();
                            ourRes = original.getCorrespondingResource();

                        }
                    }
                    //                  ourRes = navigatorSelection.getUnderlyingResource();
                    if (ourRes == null) {
                        //                     ***                     System.out.println("why would our resource be null?");
                    }
                    //                  ***                  System.out.println("FullPath = " + ourRes.getFullPath().toString());
                    //                  ***                  System.out.println("now checking file extension?");
                    if (ourRes.getFullPath().getFileExtension().compareTo("java") == 0) {
                        //                     ***                     System.out.println("creating our file?");
                        IJavaElement myJavaElement = JavaCore.create((IFile) ourRes);
                        //                     ***                  System.out.println("created an element?");
                        if (myJavaElement.getElementType() == IJavaElement.COMPILATION_UNIT) {
                            //                        ***                     System.out.println("Compilation Unit");
                            ICompilationUnit myCompilationUnit = (ICompilationUnit) myJavaElement;

                            IType[] myTypes = myCompilationUnit.getTypes();
                            boolean found = false;
                            int i = 0;
                            while ((!found) && i < myTypes.length) {
                                //selected item was the class itself
                                if (navigatorSelection.getElementType() == IJavaElement.COMPILATION_UNIT) {
                                    //                              ***                            System.out.println("found the class");
                                    if (myTypes[i].isClass()) {
                                        found = true;
                                        cstart = myTypes[i].getNameRange().getOffset();
                                    }
                                } else if (navigatorSelection.getElementType() == IJavaElement.FIELD) {
                                    //                              ***                            System.out.println("looking for types");
                                    IField[] myFields = myTypes[i].getFields();
                                    for (int j = 0; j < myFields.length; j++) {
                                        if (myFields[j].getElementName()
                                                .compareTo(navigatorSelection.getElementName()) == 0) {
                                            //                                    ***                               System.out.println("found a type");
                                            found = true;
                                            cstart = myFields[j].getNameRange().getOffset();
                                        }
                                    }

                                } else if (navigatorSelection.getElementType() == IJavaElement.METHOD) {
                                    //                              ***                            System.out.println("looking for a method");
                                    IMethod[] myMethods = myTypes[i].getMethods();
                                    for (int j = 0; j < myMethods.length; j++) {
                                        if (myMethods[j].getElementName()
                                                .compareTo(navigatorSelection.getElementName()) == 0) {
                                            //                                    ***                               System.out.println("found a method");
                                            found = true;
                                            cstart = myMethods[j].getNameRange().getOffset();
                                        }
                                    }
                                }
                                //don't forget to increment!
                                i++;
                            } //end while
                        } else {
                            //                        ***                      System.out.println("not a compilation unit?");
                            System.out.println(myJavaElement.getElementType());
                        }
                        //ok... now what type is our selected item? 
                        System.out.println("got the resource?");
                        if (ourRes == null) {
                            System.out.println("null resource???");
                        }
                    } else {
                        System.out.println("not a java file?");
                    }
                    //                  from the newsgroup - in a runnable?                  
                    ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
                        public void run(IProgressMonitor monitor) {
                            try {
                                //                           ***                  System.out.println("line number = " + new Integer(lineNumber).toString());
                                IMarker ratM = ourRes.createMarker("SEURAT.ratmarker");
                                String dbname = RationaleDB.getDbName();
                                String markD = "Alt: '" + ((TreeParent) obj).getName() + "'   Rationale DB: '"
                                        + dbname + "'";
                                ratM.setAttribute(IMarker.MESSAGE, markD);
                                ratM.setAttribute(IMarker.CHAR_START, cstart);
                                ratM.setAttribute(IMarker.CHAR_END, cstart + 1);
                                ratM.setAttribute(IMarker.SEVERITY, 0);
                                String artName = navigatorSelection.getElementName();
                                ratM.setAttribute("alternative", ((TreeParent) obj).getName());
                                SEURATResourcePropertiesManager.addPersistentProperty(ourRes, "Rat", "true");
                                RationaleDB d = RationaleDB.getHandle();
                                d.associateAlternative(((TreeParent) obj).getName(),
                                        navigatorSelection.getHandleIdentifier(), ourRes.getName(), artName,
                                        markD);

                            } catch (CoreException e) {
                                e.printStackTrace();
                            }
                        }
                    }, null);
                    //                  ***                  System.out.println("adding persistent property");

                    SEURATDecoratorManager.addSuccessResources(ourRes);
                    //                  ***                  System.out.println("added our property");  
                    // Refresh the label decorations... Change it to DemoDecoratorWithImageCaching if image caching should be used
                    //                  ((TreeParent) obj).setStatus(RationaleErrorLevel.ERROR);
                    viewer.update((TreeParent) obj, null);
                    SEURATLightWeightDecorator.getRatDecorator().refresh();
                    //                  ***                  System.out.println("refresh");

                } catch (Exception ex) {
                    ex.printStackTrace();
                    System.out.println("an exception occured in AssociateArtifactAction");
                }

            } else
                System.out.println("selection rejected");
        }
    } else {
        System.out.println("No java element selected...");
    }
}

From source file:edu.wpi.cs.jburge.SEURAT.actions.RemoveRationaleAssociation.java

License:Open Source License

/**
 * This is when the action really runs/*from w w  w. j a  va  2s .  co m*/
 * @param action - not used
 */
public void run(IAction action) {
    IJavaElement navigatorSelection;
    //      ***      System.out.println("removing association");
    if (selection.getFirstElement() instanceof IJavaElement) {
        //         ***         System.out.println("we are a java element");
        navigatorSelection = (IJavaElement) selection.getFirstElement();
        ourRes = null;

        boolean proceed = showQuestion("Do you want to delete all associations to this file?");
        if (!proceed) {
            return;
        }

        //find the associated resource that goes with the element
        try {
            if (navigatorSelection.getElementType() == IJavaElement.COMPILATION_UNIT) {
                ourRes = navigatorSelection.getCorrespondingResource();

            } else {
                ourRes = navigatorSelection.getUnderlyingResource();
                if (ourRes != null) {
                    //                  ***                  System.out.println("this one wasn't null?");
                }
                //find the enclosing class file
                IJavaElement nextE = navigatorSelection.getParent();
                while ((nextE != null) && (nextE.getElementType() != IJavaElement.COMPILATION_UNIT)) {
                    //                  ***                  System.out.println("Name = " + nextE.getElementName());
                    //                  ***                  System.out.println("Type = " + nextE.getElementType());
                    nextE = nextE.getParent();
                }
                try {
                    //                  ***                  System.out.println("getting our resource");
                    //                  ourRes = nextE.getUnderlyingResource();
                    ourRes = nextE.getCorrespondingResource();
                    ourRes = nextE.getResource();
                } catch (JavaModelException ex) {
                    //                  ***                  System.out.println("exception getting resource?");
                }
                System.out.println("Final name = " + nextE.getElementName());
                System.out.println("Final type = " + nextE.getElementType());
                if (ourRes == null) {
                    //                  ***                  System.out.println("see if there's a working copy");
                    IJavaElement original = nextE.getPrimaryElement();
                    //see if we can get the element from the working copy
                    //                  IJavaElement original = ((IWorkingCopy) ((ICompilationUnit) nextE).getWorkingCopy()).getOriginalElement();
                    ourRes = original.getCorrespondingResource();
                }
            }
            //                  ourRes = navigatorSelection.getUnderlyingResource();
            if (ourRes == null) {
                //               ***               System.out.println("why would our resource be null?");
            }
            //            ***            System.out.println("FullPath = " + ourRes.getFullPath().toString());
            //            ***            System.out.println("now checking file extension?");
            if (ourRes.getFullPath().getFileExtension().compareTo("java") == 0) {
                //               ***               System.out.println("creating our file?");
                IJavaElement myJavaElement = JavaCore.create((IFile) ourRes);
                //               ***                  System.out.println("created an element?");
                if (myJavaElement.getElementType() == IJavaElement.COMPILATION_UNIT) {
                    //                  ***                  System.out.println("Compilation Unit");
                    ICompilationUnit myCompilationUnit = (ICompilationUnit) myJavaElement;

                    IType[] myTypes = myCompilationUnit.getTypes();
                    boolean found = false;
                    int i = 0;
                    while ((!found) && i < myTypes.length) {
                        //selected item was the class itself
                        if (navigatorSelection.getElementType() == IJavaElement.COMPILATION_UNIT) {
                            //                        ***                     System.out.println("found the class");
                            if (myTypes[i].isClass()) {
                                found = true;
                            }
                        } else if (navigatorSelection.getElementType() == IJavaElement.FIELD) {
                            //                        ***                     System.out.println("looking for types");
                            IField[] myFields = myTypes[i].getFields();
                            for (int j = 0; j < myFields.length; j++) {
                                if (myFields[j].getElementName()
                                        .compareTo(navigatorSelection.getElementName()) == 0) {
                                    //                              ***                           System.out.println("found a type");
                                    found = true;
                                }
                            }

                        } else if (navigatorSelection.getElementType() == IJavaElement.METHOD) {
                            //                        ***                     System.out.println("looking for a method");
                            IMethod[] myMethods = myTypes[i].getMethods();
                            for (int j = 0; j < myMethods.length; j++) {
                                if (myMethods[j].getElementName()
                                        .compareTo(navigatorSelection.getElementName()) == 0) {
                                    //                              ***                           System.out.println("found a method");
                                    found = true;
                                }
                            }
                        }
                        //don't forget to increment!
                        i++;
                    } //end while

                } else {
                    //                  ***                  System.out.println("not a compilation unit?");
                    //                  ***                  System.out.println(myJavaElement.getElementType());
                }
                //ok... now what type is our selected item? 
                //               ***               System.out.println("got the resource?");
                if (ourRes == null) {
                    //                  ***                  System.out.println("null resource???");
                }
            } else {
                //               ***                  System.out.println("not a java file?");
            }
            //            from the newsgroup - in a runnable?                  
            ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
                public void run(IProgressMonitor monitor) {
                    try {
                        //                     ***                           System.out.println("removing our markers, etc.");
                        //                     ourResource.setPersistentProperty()
                        SEURATResourcePropertiesManager.addPersistentProperty(ourRes, "Rat", "false");
                        SEURATDecoratorManager.addSuccessResources(ourRes);
                        ourRes.deleteMarkers("SEURAT.ratmarker", true, IResource.DEPTH_INFINITE);
                        RationaleDB d = RationaleDB.getHandle();
                        d.removeAssociation(ourRes.getName());
                    } catch (CoreException e) {
                        e.printStackTrace();
                    }
                }
            }, null);

        } catch (Exception ex) {
            ex.printStackTrace();
            System.out.println("an exception occured in AssociateArtifactAction");
        }
    }

}

From source file:edu.wpi.cs.jburge.SEURAT.actions.RestoreAssociations.java

License:Open Source License

/**
 * This is where the action takes place when the restore is invoked from the SEURAT pull-down menu.
 *///www .  j ava 2s .  c  o m
public void run() {
    //find all our resources
    RationaleDB d = RationaleDB.getHandle();
    Vector<Association> ourResources = d.getAssociations();
    Iterator<Association> resI = ourResources.iterator();
    try {

        while (resI.hasNext()) {
            cstart = 0;
            ourAssoc = (Association) resI.next();
            String ourArtifact = ourAssoc.getArtifact();

            //System.out.println(ourArtifact);
            //System.out.println(ourAssoc.getResource());
            try {
                // We create the java element from its artifact that is stored in the DB
                // and then search through the resource to find out where the marker needs to be placed.
                IJavaElement ourEle = JavaCore.create(ourArtifact);
                //System.out.println(ourEle.getElementName() + " " + ourEle.getElementType());

                if (ourEle.getElementType() == IJavaElement.COMPILATION_UNIT) {
                    ourRes = ourEle.getCorrespondingResource();
                } else {
                    ourRes = ourEle.getUnderlyingResource();
                    if (ourRes != null) {
                        //                     ***                        System.out.println("this one wasn't null?");
                    }
                    //find the enclosing class file
                    IJavaElement nextE = ourEle.getParent();
                    while ((nextE != null) && (nextE.getElementType() != IJavaElement.COMPILATION_UNIT)) {
                        //                     ***                        System.out.println("Name = " + nextE.getElementName());
                        //                     ***                     System.out.println("Type = " + nextE.getElementType());
                        nextE = nextE.getParent();
                    }
                    try {
                        //                     ***                     System.out.println("getting our resource");
                        //                  ourRes = nextE.getUnderlyingResource();
                        ourRes = nextE.getCorrespondingResource();
                        ourRes = nextE.getResource();
                    } catch (JavaModelException ex) {
                        System.out.println("exception getting resource?");
                    }
                    //                  ***                     System.out.println("Final name = " + nextE.getElementName());
                    //                  ***                     System.out.println("Final type = " + nextE.getElementType());
                    if (ourRes == null) {
                        //                     ***                        System.out.println("see if there's a working copy");
                        IJavaElement original = nextE.getPrimaryElement();
                        //see if we can get the element from the working copy
                        //                     IJavaElement original = ((IWorkingCopy) ((ICompilationUnit) nextE).getWorkingCopy()).getOriginalElement();
                        ourRes = original.getCorrespondingResource();
                    }
                }
                //                  ourRes = navigatorSelection.getUnderlyingResource();
                if (ourRes == null) {
                    //                  ***                     System.out.println("why would our resource be null?");
                }
                //               ***                  System.out.println("FullPath = " + ourRes.getFullPath().toString());
                //               ***                  System.out.println("now checking file extension?");
                if (ourRes.getFullPath().getFileExtension().compareTo("java") == 0) {
                    //                  ***                     System.out.println("creating our file?");
                    IJavaElement myJavaElement = JavaCore.create((IFile) ourRes);
                    //                  ***                  System.out.println("created an element?");
                    if (myJavaElement.getElementType() == IJavaElement.COMPILATION_UNIT) {
                        //                     ***                     System.out.println("Compilation Unit");
                        ICompilationUnit myCompilationUnit = (ICompilationUnit) myJavaElement;

                        IType[] myTypes = myCompilationUnit.getTypes();
                        boolean found = false;
                        int i = 0;
                        while ((!found) && i < myTypes.length) {
                            //selected item was the class itself
                            if (ourEle.getElementType() == IJavaElement.COMPILATION_UNIT) {
                                //                           ***                            System.out.println("found the class");
                                if (myTypes[i].isClass()) {
                                    found = true;
                                    cstart = myTypes[i].getNameRange().getOffset();
                                }
                            } else if (ourEle.getElementType() == IJavaElement.FIELD) {
                                //                           ***                            System.out.println("looking for types");
                                IField[] myFields = myTypes[i].getFields();
                                for (int j = 0; j < myFields.length; j++) {
                                    if (myFields[j].getElementName().compareTo(ourEle.getElementName()) == 0) {
                                        //                                 ***                               System.out.println("found a type");
                                        found = true;
                                        cstart = myFields[j].getNameRange().getOffset();
                                    }
                                }

                            } else if (ourEle.getElementType() == IJavaElement.METHOD) {
                                //                           ***                            System.out.println("looking for a method");
                                IMethod[] myMethods = myTypes[i].getMethods();
                                for (int j = 0; j < myMethods.length; j++) {
                                    if (myMethods[j].getElementName().compareTo(ourEle.getElementName()) == 0) {
                                        //                                 ***                         System.out.println("found a method");
                                        found = true;
                                        cstart = myMethods[j].getNameRange().getOffset();
                                    }
                                }
                            }
                            //don't forget to increment!
                            i++;
                        } //end while

                    } else {
                        //                     ***                      System.out.println("not a compilation unit?");
                        System.out.println(myJavaElement.getElementType());
                    }
                    //ok... now what type is our selected item? 
                    System.out.println("got the resource?");
                    if (ourRes == null) {
                        //                     ***                     System.out.println("null resource???");
                    }
                } else {
                    //                  ***                     System.out.println("not a java file?");
                }
                //               from the newsgroup - in a runnable?                  
                ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
                    public void run(IProgressMonitor monitor) {
                        try {
                            //                        ***                  System.out.println("line number = " + new Integer(lineNumber).toString());
                            IMarker ratM = ourRes.createMarker("SEURAT.ratmarker");
                            String markD = ourAssoc.getMsg();
                            ratM.setAttribute(IMarker.MESSAGE, markD);
                            ratM.setAttribute(IMarker.CHAR_START, cstart);
                            ratM.setAttribute(IMarker.CHAR_END, cstart + 1);
                            ratM.setAttribute(IMarker.SEVERITY, 0);
                            System.out.println(cstart);
                            Alternative ourAlt = (Alternative) RationaleDB
                                    .getRationaleElement(ourAssoc.getAlt(), RationaleElementType.ALTERNATIVE);
                            ratM.setAttribute("alternative", ourAlt.getName());
                            SEURATResourcePropertiesManager.addPersistentProperty(ourRes, "Rat", "true");

                        } catch (CoreException e) {
                            e.printStackTrace();
                        }
                    }
                }, null);
                //               ***                  System.out.println("adding persistent property");

                SEURATDecoratorManager.addSuccessResources(ourRes);
                //               ***                  System.out.println("added our property");  
                // Refresh the label decorations... Change it to DemoDecoratorWithImageCaching if image caching should be used
                //               ((TreeParent) obj).setStatus(RationaleErrorLevel.ERROR);
                //              viewer.update((TreeParent) obj, null);
                //for some reason the next line is giving us an exception - ???
                //it doesn't seem to be needed - the decorator appears.
                //         SEURATLightWeightDecorator.getRatDecorator().refresh();
                //               ***                  System.out.println("refresh");

            } catch (Exception e) {
                System.out.println("couldn't create our element " + ourArtifact);
            }

        }
    } catch (Exception ex) {
        System.out.println("exception while trying to add associations");
    }

}

From source file:edu.wpi.cs.jburge.SEURAT.SEURATElementChangedManager.java

License:Open Source License

/**
 * Recursive method that navigates the Java model and adds all of the
 * changes that occurred to possible associated artifacts.  We won't
 * know whether they are actually associated until we check the database
 * in the handleChange method./* w  ww.j a v  a  2  s.  c  o  m*/
 * 
 * Note: There are four types of changes we're interested in.
 * Change to method inside class- fine grained removed and added method
 * Moved method- fine grained removed and added method
 * Change to class- non-fine grained removed and added compilation unit with moved from/to attributes set
 * Change to class with a method inside- same as above, we take care of it in handleChange
 * 
 * @param delta - the current IJavaElementDelta
 */
private void navigateModel(IJavaElementDelta delta) {
    IJavaElementDelta[] deltas = delta.getAffectedChildren();
    for (int i = 0; i < deltas.length; i++) {
        int type = deltas[i].getElement().getElementType();
        int flags = deltas[i].getFlags();
        if (type == IJavaElement.COMPILATION_UNIT && (flags & flagChecks) != 0) {
            System.out.println("NavigateModel: " + deltas[i].getElement() + " " + deltas[i].toString() + " "
                    + deltas[i].getKind());
            if ((flags & IJavaElementDelta.F_FINE_GRAINED) == 0
                    && (deltas[i].getKind() == IJavaElementDelta.CHANGED
                            || deltas[i].getKind() == IJavaElementDelta.ADDED)) {
                // change was to a compilation unit and there were no finer grained changes
                //relevantChanges.add(deltas[i]);
            } else if (deltas[i].getKind() != IJavaElementDelta.CHANGED
                    && deltas[i].getMovedToElement() != null) {
                relevantChanges.add(deltas[i]);
            }
        } else if (type > IJavaElement.COMPILATION_UNIT) {
            System.out.println("NavigateModel: " + deltas[i].getElement() + " " + deltas[i].toString() + " "
                    + deltas[i].getKind());
            // change was to an element of a compilation unit, such as a method
            relevantChanges.add(deltas[i]);
        }
        navigateModel(deltas[i]);
    }
}

From source file:edu.wpi.cs.jburge.SEURAT.SEURATElementChangedManager.java

License:Open Source License

/**
 * Determines whether a change occurred to an associated artifact, and if it did,
 * handles the change.  It basically works by saving the first element it gets and
 * mapping it to a corresponding element later on (provided that the elements are actually
 * associated with some alternative).  Two exceptions come up: one, if it's a compilation unit,
 * we just use the getMovedToElement() method to take care of the mapping for us (we don't have
 * access to this for single methods due to the confusing/arcane way they decided to code
 * java element changes).  The other exception is also for compilation units- we have to manually check
 * the java elements attached to it such as methods and fields to see if any of those are associated
 * and handle the changes if they are, because we don't get deltas for them.
 * /*from w w w. j  a  v a2  s  .com*/
 * @param change - the possible change, an IJavaElementDelta
 */
private void handleChange(IJavaElementDelta change) {
    System.out
            .println("HandleChange: " + change.getElement() + " " + change.toString() + " " + change.getKind());
    //System.out.println("Saved Delta: " + savedDelta.getElement() + " " + savedDelta.toString() + " " + savedDelta.getKind());
    IJavaElement movedTo = change.getMovedToElement();
    if (change.getKind() == IJavaElementDelta.ADDED || change.getKind() == IJavaElementDelta.REMOVED) {
        if (change.getKind() == IJavaElementDelta.REMOVED && savedDelta == null && movedTo == null) {
            checkDeltaAndSave(change);
        } else if (change.getKind() == IJavaElementDelta.ADDED && savedDelta == null && movedTo == null) {
            // always save this kind of delta, can't check if in DB without reference to removed delta
            savedDelta = change;
            System.out.println("Saved a delta");
        } else {
            IJavaElement oldElt = null;
            IJavaElement newElt = null;
            if (change.getKind() == IJavaElementDelta.ADDED) {
                // get the saved added delta
                oldElt = savedDelta.getElement();
                newElt = change.getElement();
            } else { // change.getKind() == IJavaElementDelta.REMOVED
                if (movedTo != null) {
                    // process the move
                    checkDeltaAndSave(change); // in this case we're not really saving, just checking
                    newElt = movedTo;
                    oldElt = change.getElement();
                } else {
                    // check the removed delta, then get the saved added delta
                    checkDeltaAndSave(change);
                    if (savedDelta != null) { // sanity check
                        newElt = savedDelta.getElement();
                        oldElt = change.getElement();
                    }
                }
            }
            // Get the saved association and the old artName
            Association ourAssoc = savedAssoc;
            String oldArtName = oldElt.getElementName();
            // Reset the saved delta and association
            savedDelta = null;
            savedAssoc = null;

            // Make sure the association is in the database
            if (ourAssoc != null && ourAssoc.getAlt() != -1) {
                // Find the artifact itself
                IResource newResource = null;
                int cstart = 0;
                IField[] fields = null;
                IMethod[] methods = null;
                try {
                    ICompilationUnit compUnit = null;
                    if (newElt.getElementType() != IJavaElement.COMPILATION_UNIT) {
                        newResource = newElt.getUnderlyingResource();
                        compUnit = (ICompilationUnit) newElt.getAncestor(IJavaElement.COMPILATION_UNIT);
                    } else {
                        newResource = newElt.getCorrespondingResource();
                        compUnit = (ICompilationUnit) newElt;
                    }
                    IType[] myTypes = compUnit.getTypes();
                    boolean found = false;
                    int i = 0;
                    while ((!found) && i < myTypes.length) {
                        //selected item was the class itself
                        if (newElt.getElementType() == IJavaElement.COMPILATION_UNIT) {
                            if (myTypes[i].isClass()) {
                                found = true;
                                cstart = myTypes[i].getNameRange().getOffset();
                                fields = myTypes[i].getFields();
                                methods = myTypes[i].getMethods();
                            }
                        } else if (newElt.getElementType() == IJavaElement.FIELD) {
                            IField[] myFields = myTypes[i].getFields();
                            for (int j = 0; j < myFields.length; j++) {
                                if (myFields[j].getElementName().compareTo(newElt.getElementName()) == 0) {
                                    found = true;
                                    cstart = myFields[j].getNameRange().getOffset();
                                }
                            }
                        } else if (newElt.getElementType() == IJavaElement.METHOD) {
                            IMethod[] myMethods = myTypes[i].getMethods();
                            for (int j = 0; j < myMethods.length; j++) {
                                if (myMethods[j].getElementName().compareTo(newElt.getElementName()) == 0) {
                                    found = true;
                                    cstart = myMethods[j].getNameRange().getOffset();
                                }
                            }
                        }
                        i++;
                    } //end while
                } catch (JavaModelException jme) {
                    System.err.println(jme.toString());
                }
                System.out.println("DEBUG: newresource " + newResource.getName() + " cstart " + cstart);

                // Get new values for association data
                String newRes = newResource.getName();
                String newArtName = newElt.getElementName();
                String newArt = newElt.getHandleIdentifier();

                IResource oldResource = null;
                // Now, the time-consuming part.  If this is a compilation unit, we need to go through
                // all of its fields and methods and if they have associations, update them.
                if (newElt.getElementType() == IJavaElement.COMPILATION_UNIT) {
                    for (int i = 0; i < fields.length; i++) {
                        checkAssocAndUpdate(fields[i], newRes, null);
                    }
                    for (int i = 0; i < methods.length; i++) {
                        String oldSubArtName = methods[i].getElementName();
                        String oldSubArtNameJava = oldSubArtName + ".java";
                        if ((oldSubArtName == oldArtName || oldSubArtNameJava == oldArtName)
                                && oldArtName != newArtName) {
                            // Names of old comp unit and old method are same; this is a constructor, and its name has changed
                            checkAssocAndUpdate(methods[i], newRes, oldSubArtName);
                        } else {
                            checkAssocAndUpdate(methods[i], newRes, null);
                        }
                    }
                }
                // If we're not dealing with a compilation unit, a single method/field was renamed or moved.
                // If it was moved we need to know the old resource to change resource properties (it might not
                // have rationale anymore) so we save that now.
                else {
                    oldResource = oldElt.getResource();
                }

                // Update them
                ourAssoc.setArtifact(newArt);
                ourAssoc.setResource(newRes);
                ourAssoc.setArtName(newArtName);

                System.out.println("oldArt became " + newArt);
                System.out.println("oldRes became " + newRes);
                System.out.println(oldArtName + " became " + newArtName);

                // Send the update to the DB
                ourAssoc.toDatabase(oldArtName);

                // Update the marker- this will sometimes give us "resource tree locked" exceptions.
                // However, in the cases where it does, we're making changes to a compilation unit
                // and the markers will stay where they are.
                try {
                    IMarker ratM = newResource.createMarker("SEURAT.ratmarker");
                    String markD = ourAssoc.getMsg();
                    ratM.setAttribute(IMarker.MESSAGE, markD);
                    ratM.setAttribute(IMarker.CHAR_START, cstart);
                    ratM.setAttribute(IMarker.CHAR_END, cstart + 1);
                    ratM.setAttribute(IMarker.SEVERITY, 0);
                    System.out.println(cstart);
                    Alternative ourAlt = (Alternative) RationaleDB.getRationaleElement(ourAssoc.getAlt(),
                            RationaleElementType.ALTERNATIVE);
                    ratM.setAttribute("alternative", ourAlt.getName());
                } catch (CoreException e) {
                    System.err.println(e.toString());
                }

                // If the element was moved, remove the persistent property from the old resource.
                // This is a hack, because if there is associated rationale remaining in the old resource
                // it still removes the decorator, but the next time restoreAssociations is called it will
                // be back.  I couldn't see a better way to do it short of rewriting the decorator and/or resource properties manager.
                if (oldResource != null) { // it will be null for a compilation unit because we didn't set it
                    SEURATResourcePropertiesManager.addPersistentProperty(oldResource, "Rat", "false");
                    SEURATDecoratorManager.addSuccessResources(oldResource);
                }
                // add property for the new resource in all cases
                SEURATResourcePropertiesManager.addPersistentProperty(newResource, "Rat", "true");
                SEURATDecoratorManager.addSuccessResources(newResource);
            }
        }
    }
}

From source file:edu.wpi.cs.jburge.SEURAT.views.RationaleExplorer.java

License:Open Source License

/**
 * This method is used to associate the java file with alternative in the ratinale 
 * explore in the java direction//from w  w  w  .j a va  2  s.  c o m
 */
public void associateAlternative(RationaleUpdateEvent e)

{
    //get the Java element selected in the Package Explorer from the RationaleUpdateEvent
    navigatorSelection = e.getIJavaElement();

    if (navigatorSelection != null) {

        ISelection selection = viewer.getSelection();

        obj = ((IStructuredSelection) selection).getFirstElement();

        //whether an alternative is selected?
        if (obj != null && ((TreeParent) obj).getType() == RationaleElementType.ALTERNATIVE) {
            alternativeName = ((TreeParent) obj).getName();
        }
        //if there is no alternative selected, provide a select items of alternative
        else {
            SelectItem selectItem = new SelectItem(ourDisplay, RationaleElementType.fromString("Alternative"));
            //DEBUG: Is this where the infinite loop is? (YQ)
            if (selectItem == null) {
                System.out.println("NULL selectItem at line 2098");
            }
            if (selectItem.getNewItem() == null) {
                System.out.println("NULL Pointer at line 2099 in RationaleExplorer.java Expect Crashes");
            }
            alternativeName = selectItem.getNewItem().getName();
        }

        String assQ = "Associate '" + alternativeName + "' with " + navigatorSelection.getElementName() + "?";

        boolean selOk = showQuestion(assQ);
        if (selOk) {
            cstart = 0;

            ourRes = null;
            try {

                if (navigatorSelection.getElementType() == IJavaElement.COMPILATION_UNIT) {
                    ourRes = navigatorSelection.getCorrespondingResource();
                } else {
                    ourRes = navigatorSelection.getUnderlyingResource();
                    if (ourRes != null) {
                        //                     ***                        System.out.println("this one wasn't null?");
                    }
                    //find the enclosing class file
                    IJavaElement nextE = navigatorSelection.getParent();
                    while ((nextE != null) && (nextE.getElementType() != IJavaElement.COMPILATION_UNIT)) {
                        //                     ***                        System.out.println("Name = " + nextE.getElementName());
                        //                     ***                     System.out.println("Type = " + nextE.getElementType());
                        nextE = nextE.getParent();
                    }
                    try {
                        //                     ***                     System.out.println("getting our resource");
                        //                  ourRes = nextE.getUnderlyingResource();
                        ourRes = nextE.getCorrespondingResource();
                        ourRes = nextE.getResource();
                    } catch (JavaModelException ex) {
                        System.out.println("exception getting resource?");
                    }
                    //                  ***                     System.out.println("Final name = " + nextE.getElementName());
                    //                  ***                     System.out.println("Final type = " + nextE.getElementType());
                    if (ourRes == null) {
                        //see if we can get the element from the working copy
                        IJavaElement original = nextE.getPrimaryElement();
                        //                     Get working copy has been deprecated
                        //                     IJavaElement original = ((ICompilationUnit) ((ICompilationUnit) nextE).getWorkingCopy()).getOriginalElement();
                        ourRes = original.getCorrespondingResource();

                    }
                }
                //                  ourRes = navigatorSelection.getUnderlyingResource();
                if (ourRes == null) {
                    //                  ***                     System.out.println("why would our resource be null?");
                }
                //               ***                  System.out.println("FullPath = " + ourRes.getFullPath().toString());
                //               ***                  System.out.println("now checking file extension?");
                if (ourRes.getFullPath().getFileExtension().compareTo("java") == 0) {
                    //                  ***                     System.out.println("creating our file?");
                    IJavaElement myJavaElement = JavaCore.create((IFile) ourRes);
                    //                  ***                  System.out.println("created an element?");
                    if (myJavaElement.getElementType() == IJavaElement.COMPILATION_UNIT) {
                        //                     ***                     System.out.println("Compilation Unit");
                        ICompilationUnit myCompilationUnit = (ICompilationUnit) myJavaElement;

                        IType[] myTypes = myCompilationUnit.getTypes();
                        boolean found = false;
                        int i = 0;
                        while ((!found) && i < myTypes.length) {
                            //selected item was the class itself
                            if (navigatorSelection.getElementType() == IJavaElement.COMPILATION_UNIT) {
                                //                           ***                            System.out.println("found the class");
                                if (myTypes[i].isClass()) {
                                    found = true;
                                    cstart = myTypes[i].getNameRange().getOffset();
                                }
                            } else if (navigatorSelection.getElementType() == IJavaElement.FIELD) {
                                //                           ***                            System.out.println("looking for types");
                                IField[] myFields = myTypes[i].getFields();
                                for (int j = 0; j < myFields.length; j++) {
                                    if (myFields[j].getElementName()
                                            .compareTo(navigatorSelection.getElementName()) == 0) {
                                        //                                 ***                               System.out.println("found a type");
                                        found = true;
                                        cstart = myFields[j].getNameRange().getOffset();
                                    }
                                }

                            } else if (navigatorSelection.getElementType() == IJavaElement.METHOD) {
                                //                           ***                            System.out.println("looking for a method");
                                IMethod[] myMethods = myTypes[i].getMethods();
                                for (int j = 0; j < myMethods.length; j++) {
                                    if (myMethods[j].getElementName()
                                            .compareTo(navigatorSelection.getElementName()) == 0) {
                                        //                                 ***                               System.out.println("found a method");
                                        found = true;
                                        cstart = myMethods[j].getNameRange().getOffset();
                                    }
                                }
                            }
                            //don't forget to increment!
                            i++;
                        } //end while
                    } else {
                        //                     ***                      System.out.println("not a compilation unit?");
                        System.out.println(myJavaElement.getElementType());
                    }
                    //ok... now what type is our selected item? 
                    System.out.println("got the resource?");
                    if (ourRes == null) {
                        System.out.println("null resource???");
                    }
                } else {
                    System.out.println("not a java file?");
                }
                //               from the newsgroup - in a runnable?                  
                ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
                    public void run(IProgressMonitor monitor) {
                        try {
                            //                        ***                  System.out.println("line number = " + new Integer(lineNumber).toString());
                            IMarker ratM = ourRes.createMarker("SEURAT.ratmarker");
                            String dbname = RationaleDB.getDbName();
                            String markD = "Alt: '" + alternativeName + "'   Rationale DB: '" + dbname + "'";
                            ratM.setAttribute(IMarker.MESSAGE, markD);
                            ratM.setAttribute(IMarker.CHAR_START, cstart);
                            ratM.setAttribute(IMarker.CHAR_END, cstart + 1);
                            ratM.setAttribute(IMarker.SEVERITY, 0);
                            //                        ratM.setAttribute(IMarker.LINE_NUMBER, lineNumber);
                            String artName = navigatorSelection.getElementName();
                            ratM.setAttribute("alternative", alternativeName);
                            SEURATResourcePropertiesManager.addPersistentProperty(ourRes, "Rat", "true");
                            RationaleDB d = RationaleDB.getHandle();
                            d.associateAlternative(alternativeName, navigatorSelection.getHandleIdentifier(),
                                    ourRes.getName(), artName, markD);

                        } catch (CoreException e) {
                            e.printStackTrace();
                        }
                    }
                }, null);
                //               ***                  System.out.println("adding persistent property");

                SEURATDecoratorManager.addSuccessResources(ourRes);
                //               ***                  System.out.println("added our property");  
                // Refresh the label decorations... Change it to DemoDecoratorWithImageCaching if image caching should be used
                //               ((TreeParent) obj).setStatus(RationaleErrorLevel.ERROR);
                //Is this the inf loop? (YQ)
                if (obj == null) {
                    System.out.println("CRITICAL ERROR: Obj is null at RationaleExplorer.java, line 2280");
                }
                if (viewer == null) {
                    System.out.println("Viewer is null at RationaleExplorer.java line 2283");
                }
                viewer.update((TreeParent) obj, null);
                SEURATLightWeightDecorator.getRatDecorator().refresh();
                //               ***                  System.out.println("refresh");

            } catch (Exception ex) {
                ex.printStackTrace();
                System.out.println("an exception occured in AssociateArtifactAction");
            }

        } else {
            System.out.println("selection rejected");
        }
    }

    else {
        System.out.println("No java element selected...");
    }

}

From source file:iot.jcypher.eclipse.JCypherCompletionProposalComputer.java

License:Apache License

private List<ICompletionProposal> buildJCypherProposals(List<ICompletionProposal> proposals) {
    List<ICompletionProposal> ret = new ArrayList<>(proposals.size());
    List<String> classNames = new ArrayList<String>();
    List<String> classNames_ext = new ArrayList<String>();
    for (ICompletionProposal prop : proposals) {
        if (prop instanceof IJavaCompletionProposal) {
            if (prop instanceof JavaMethodCompletionProposal) {
                JavaMethodCompletionProposal jmcp = (JavaMethodCompletionProposal) prop;
                IJavaElement elem = jmcp.getJavaElement();
                IJavaElement classfile = elem.getParent().getParent();
                if (classfile.getElementType() == IJavaElement.CLASS_FILE
                        || classfile.getElementType() == IJavaElement.COMPILATION_UNIT) {
                    IJavaElement pkg = classfile.getParent();
                    if (JCypherPackages.addsToProposal(pkg.getElementName())) {
                        IJavaCompletionProposal delegate = (IJavaCompletionProposal) prop;
                        IJavaElement mthd = ((AbstractJavaCompletionProposal) delegate).getJavaElement();
                        IJavaElement clsfile = elem.getParent().getParent();
                        String className = clsfile.getElementName();
                        if (!classNames_ext.contains(className)) {
                            classNames_ext.add(className);
                            // trim className extension which can either be .class or .java
                            classNames.add(className.substring(0, className.indexOf('.')));
                        }//from   w ww  .jav  a  2 s .  c  om
                        // classNames always contains (class, superClass, superSuperClass, ..)
                        int relevance = ProposalOrderConfig.INSTANCE.getRelevance(classNames.get(0),
                                mthd.getElementName(), JCypherConstants.DEFAULT_RELEVANCE);
                        ret.add(new JCypherCompletionProposal((IJavaCompletionProposal) prop, relevance));
                    }
                }
            }
        }
    }
    if (ret.size() > 0) {
        ProposalOrderConfig.INSTANCE.addSeparators(classNames.get(0), ret, JCypherConstants.DEFAULT_RELEVANCE);
        ret.add(CompletionSeparator.INSTANCE);
    }
    return ret;
}

From source file:jp.littleforest.pathtools.handlers.CopyQualifiedNameHandler.java

License:Open Source License

protected String getQualifiedName(IJavaElement e) {
    String qn = "";
    switch (e.getElementType()) {
    case IJavaElement.ANNOTATION:
        break;//from   w w w . j  a v  a2s  .  co  m
    case IJavaElement.CLASS_FILE:
        qn = getQualifiedClassName((IClassFile) e);
        break;
    case IJavaElement.COMPILATION_UNIT:
        qn = getQualifiedClassName((ICompilationUnit) e);
        break;
    case IJavaElement.FIELD:
        qn = getQualifiedFieldName((IField) e);
        break;
    case IJavaElement.IMPORT_CONTAINER:
        break;
    case IJavaElement.IMPORT_DECLARATION:
        break;
    case IJavaElement.INITIALIZER:
        break;
    case IJavaElement.JAVA_MODEL:
        break;
    case IJavaElement.JAVA_PROJECT:
        break;
    case IJavaElement.LOCAL_VARIABLE:
        break;
    case IJavaElement.METHOD:
        qn = getQualifiedMethodName((IMethod) e);
        break;
    case IJavaElement.PACKAGE_DECLARATION:
        break;
    case IJavaElement.PACKAGE_FRAGMENT:
        qn = getQualifiedPackageName(e);
        break;
    case IJavaElement.TYPE:
        qn = getQualifiedClassName((IType) e);
        break;
    case IJavaElement.TYPE_PARAMETER:
        break;
    default:
        break;
    }
    return qn;
}

From source file:jp.littleforest.pathtools.handlers.CopyQualifiedNameHandler.java

License:Open Source License

protected String getQualifiedClassName(IType type) {
    String fqcn = type.getElementName();
    IJavaElement parent = type.getParent();
    if (parent == null) {
        return fqcn;
    }/*from  www .j a  v  a  2s  . com*/
    int parentType = parent.getElementType();
    if (parentType == IJavaElement.TYPE) {
        // ??
        String enclosingQn = getQualifiedName(parent);
        fqcn = enclosingQn + "$" + fqcn;
    } else if (parentType == IJavaElement.COMPILATION_UNIT) {
        // ??
        fqcn = getQualifiedClassName((ICompilationUnit) parent);
    } else if (parentType == IJavaElement.CLASS_FILE) {
        // Jar???
        fqcn = getQualifiedClassName((IClassFile) parent);
    } else if (parentType == IJavaElement.PACKAGE_FRAGMENT) {
        fqcn = getQualifiedPackageName(parent) + "." + fqcn;
    }
    return fqcn;
}