List of usage examples for org.eclipse.jdt.core IJavaElement getElementName
String getElementName();
From source file:edu.pdx.cs.multiview.test.JavaTestProject.java
License:Open Source License
public IType getType(String desiredType, String pkg) throws CoreException, JavaModelException { IPackageFragment frag = getSourceFolder().getPackageFragment(pkg); IType writer = null;/* w w w . ja va 2 s .com*/ for (IJavaElement child : frag.getChildren()) { if (child.getElementName().equals(desiredType + ".java")) writer = ((ICompilationUnit) child).findPrimaryType(); } return writer; }
From source file:edu.uci.ics.sourcerer.extractor.ast.ClassFileExtractor.java
License:Open Source License
public void extractClassFile(IClassFile classFile) { // Verify that it's a top-level type, or a subtype of a top-level type // try {// ww w . j a va 2 s .c o m // IType declaring = classFile.getType(); // while (declaring != null) { // if (declaring.isLocal() || declaring.isAnonymous()) { // return; // } // declaring = declaring.getDeclaringType(); // } // } catch (JavaModelException e) { // logger.log(Level.SEVERE, "Error in extracting class file", e); // return; // } IJavaElement parent = classFile.getParent(); while (true) { if (parent == null) { logger.log(Level.SEVERE, "Unable to find package for: " + classFile.getElementName()); break; } else if (parent.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { // Write the class file name = classFile.getElementName(); path = parent.getElementName() + "." + name; fileWriter.writeClassFile(name, path); try { if (classFile.getType().isAnonymous()) { String fqn = classFile.getType().getFullyQualifiedName(); String containingFqn = fqn.substring(0, fqn.lastIndexOf('$')); relationWriter.writeInside(classFile.getType().getFullyQualifiedName(), containingFqn, path); } else { relationWriter.writeInside(classFile.getType().getFullyQualifiedName(), parent.getElementName(), path); entityWriter.writePackage(parent.getElementName()); } } catch (JavaModelException e) { logger.log(Level.SEVERE, "Error in extracting class file", e); } break; } else { logger.log(Level.SEVERE, classFile.getType().getFullyQualifiedName() + " should be top-level!"); parent = parent.getParent(); } } extractIType(classFile.getType()); name = null; path = null; }
From source file:edu.uci.ics.sourcerer.tools.java.extractor.eclipse.ClassFileExtractor.java
License:Open Source License
public void extractClassFile(IClassFile classFile) { // Verify that it's a top-level type, or a subtype of a top-level type // try {//from www . j a va 2 s.com // IType declaring = classFile.getType(); // while (declaring != null) { // if (declaring.isLocal() || declaring.isAnonymous()) { // return; // } // declaring = declaring.getDeclaringType(); // } // } catch (JavaModelException e) { // logger.log(Level.SEVERE, "Error in extracting class file", e); // return; // } IJavaElement parent = classFile.getParent(); while (true) { if (parent == null) { logger.log(Level.SEVERE, "Unable to find package for: " + classFile.getElementName()); break; } else if (parent.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { // Write the class file name = classFile.getElementName(); path = parent.getElementName() + "." + name; fileWriter.writeFile(File.CLASS, name, null, path); try { if (classFile.getType().isAnonymous()) { String fqn = classFile.getType().getFullyQualifiedName(); String containingFqn = fqn.substring(0, fqn.lastIndexOf('$')); relationWriter.writeRelation(Relation.CONTAINS, containingFqn, classFile.getType().getFullyQualifiedName(), new Location(classFile.getType().getFullyQualifiedName(), path, null, null)); } else { relationWriter.writeRelation(Relation.CONTAINS, parent.getElementName(), classFile.getType().getFullyQualifiedName(), new Location(classFile.getType().getFullyQualifiedName(), path, null, null)); entityWriter.writeEntity(Entity.PACKAGE, parent.getElementName(), 0, null, null); } } catch (JavaModelException e) { logger.log(Level.SEVERE, "Error in extracting class file", e); } break; } else { logger.log(Level.SEVERE, classFile.getType().getFullyQualifiedName() + " should be top-level!"); parent = parent.getParent(); } } extractIType(classFile.getType()); name = null; }
From source file:edu.uci.lighthouse.ui.views.actions.OpenInEditorAction.java
License:Open Source License
private void showInEditor(LighthouseEntity e) { LighthouseModelManager manager = new LighthouseModelManager(LighthouseModel.getInstance()); LighthouseEntity c = manager.getMyClass(e); if (c != null) { try {/*w ww .j av a 2 s. co m*/ IWorkspace workspace = ResourcesPlugin.getWorkspace(); IProject project = workspace.getRoot().getProject(c.getProjectName()); IJavaProject javaProject = JavaCore.create(project); String classFqn = c.getFullyQualifiedName().replace(c.getProjectName() + ".", ""); classFqn = classFqn.replaceAll("\\$.*", ""); IType type = javaProject.findType(classFqn); if (type != null) { IJavaElement target = (IJavaElement) type; IJavaElement[] elements = new IJavaElement[0]; if (e instanceof LighthouseMethod) { elements = type.getMethods(); } else if (e instanceof LighthouseField) { elements = type.getFields(); } String shortName = e.getShortName(); if (shortName.contains("<init>")) { shortName = shortName.replace("<init>", c.getShortName()); } shortName = shortName.replaceAll("[\\<\\(].*", ""); for (IJavaElement element : elements) { logger.debug("shortname:" + shortName + " java:" + element.getElementName()); if (element.getElementName().equals(shortName)) { target = element; break; } } IEditorPart javaEditor = JavaUI.openInEditor(target); } } catch (Exception ex) { logger.error(ex, ex); } } }
From source file:edu.washington.cs.cupid.scripting.internal.CompilationUnitLocator.java
License:Open Source License
@Override public boolean visit(final IResource resource) throws CoreException { IJavaElement element = JavaCore.create(resource); if (element instanceof ICompilationUnit) { ICompilationUnit cu = (ICompilationUnit) element; // exclude inner and hidden classes if (!element.getElementName().contains("$") && !cu.getResource().isHidden()) { classes.add(cu);/*from w ww . java 2 s.c o m*/ return false; } } return true; }
From source file:edu.washington.cs.cupid.scripting.java.CupidScriptingPlugin.java
License:Open Source License
private String simpleName(final IJavaElement clazz) { return clazz.getElementName().substring(0, clazz.getElementName().lastIndexOf('.')); }
From source file:edu.wpi.cs.jburge.SEURAT.actions.RemoveRationaleAssociation.java
License:Open Source License
/** * This is when the action really runs/*w ww . j a va2 s.c o 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. */// w w w.j ava2 s . 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
/** * 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. * /*ww w. ja v a 2s . c o m*/ * @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.SEURATElementChangedManager.java
License:Open Source License
/** * Checks whether an association is in the DB. If it is, updates the association. * Used for compilation unit children./*from ww w.j a v a 2 s.co m*/ * * @param elt - the element that needs to be checked/updated * @param newRes - the new resource * @param oldName - the old name of the element, if it differed from the new name (this only happens * for constructors when the class name is changed), and null if not */ private void checkAssocAndUpdate(IJavaElement elt, String newRes, String oldName) { Association asc = new Association(); if (oldName != null) { // if old name differed from new name, get it from DB using old name asc.fromDatabase(oldName); } else { asc.fromDatabase(elt.getElementName()); } if (asc.getAlt() != -1) { // Field was in DB, set variables IJavaElement subNewElt = elt; String subNewArtName = subNewElt.getElementName(); String subNewArt = subNewElt.getHandleIdentifier(); // Update them asc.setArtifact(subNewArt); asc.setResource(newRes); asc.setArtName(subNewArtName); System.out.println(" (child of comp unit) became " + subNewArt); // Send the update to the DB asc.toDatabase(subNewArtName); // name should be unchanged } }