diff options
Diffstat (limited to 'plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/ClassPathSelection.java')
-rw-r--r-- | plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/ClassPathSelection.java | 906 |
1 files changed, 0 insertions, 906 deletions
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/ClassPathSelection.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/ClassPathSelection.java deleted file mode 100644 index fff2f2d84..000000000 --- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/ClassPathSelection.java +++ /dev/null @@ -1,906 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.j2ee.application.internal.operations; - - - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.emf.common.util.URI; -import org.eclipse.jdt.core.IClasspathEntry; -import org.eclipse.jem.util.emf.workbench.ProjectUtilities; -import org.eclipse.jem.util.logger.proxy.Logger; -import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive; -import org.eclipse.jst.j2ee.commonarchivecore.internal.CommonArchiveResourceHandler; -import org.eclipse.jst.j2ee.commonarchivecore.internal.Container; -import org.eclipse.jst.j2ee.commonarchivecore.internal.EARFile; -import org.eclipse.jst.j2ee.commonarchivecore.internal.exception.ManifestException; -import org.eclipse.jst.j2ee.commonarchivecore.internal.exception.OpenFailureException; -import org.eclipse.jst.j2ee.commonarchivecore.internal.impl.CommonarchiveFactoryImpl; -import org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.LoadStrategy; -import org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.NestedArchiveLoadStrategyImpl; -import org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.ZipFileLoadStrategyImpl; -import org.eclipse.jst.j2ee.commonarchivecore.internal.util.ArchiveUtil; -import org.eclipse.jst.j2ee.componentcore.util.EARArtifactEdit; -import org.eclipse.jst.j2ee.internal.archive.operations.ComponentLoadStrategyImpl; -import org.eclipse.jst.j2ee.internal.archive.operations.EARComponentLoadStrategyImpl; -import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities; -import org.eclipse.wst.common.componentcore.UnresolveableURIException; -import org.eclipse.wst.common.componentcore.internal.impl.ModuleURIUtil; -import org.eclipse.wst.common.componentcore.internal.util.ComponentUtilities; -import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; -import org.eclipse.wst.common.componentcore.resources.IVirtualReference; - - - -public class ClassPathSelection { - protected Archive archive; - protected IProject earProject; - protected IVirtualComponent earComponent; - protected List classpathElements; - protected Map urisToElements; - protected boolean modified; - private String targetProjectName; - protected Map ejbToClientJARs = null; - protected Map clientToEJBJARs = null; - public static final int FILTER_EJB_SERVER_JARS = 0; - public static final int FILTER_EJB_CLIENT_JARS = 1; - public static final int FILTER_NONE = 2; - - protected int filterLevel = 2; - - protected static Comparator comparator = new Comparator() { - /** - * @see Comparator#compare(Object, Object) - */ - public int compare(Object o1, Object o2) { - Archive a1 = (Archive) o1; - Archive a2 = (Archive) o2; - return a1.getURI().compareTo(a2.getURI()); - } - }; - - public ClassPathSelection(Archive anArchive, String targetProjectName, EARFile earFile) { - super(); - archive = anArchive; - this.targetProjectName = targetProjectName; - initializeEARProject(earFile); - initializeElements(); - } - - /** - * ClassPathSelection constructor comment. - */ - public ClassPathSelection(Archive anArchive, EARFile earFile) { - super(); - archive = anArchive; - initializeEARProject(earFile); - initializeElements(); - } - - /** - * ClassPathSelection constructor comment. - */ - public ClassPathSelection() { - super(); - } - - protected ClasspathElement createElement(Archive referencingArchive, Archive referencedArchive, String cpEntry) { - ClasspathElement element = new ClasspathElement(referencingArchive); - element.setValid(true); - - String uriString = referencedArchive.getURI(); - URI uri = URI.createURI(uriString); - - boolean hasAbsolutePath = uri.hasAbsolutePath(); - if( hasAbsolutePath ){ - uriString = uri.lastSegment(); - } - - //element.setText(referencedArchive.getURI()); - element.setText(uriString); - element.setTargetArchive(referencedArchive); - element.setEarProject(earProject); - if( earComponent != null ){ - IContainer earConentFolder = earComponent.getRootFolder().getUnderlyingFolder(); - if( earConentFolder.getType() == IResource.FOLDER ){ - element.setEarContentFolder( earConentFolder.getName()); - }else { - element.setEarContentFolder( "" ); - } - } - - setProjectValues(element, referencedArchive); - if (cpEntry != null) - element.setValuesSelected(cpEntry); - setType(element, referencedArchive); - return element; - } - - protected ClasspathElement createInvalidElement(String cpEntry) { - ClasspathElement element = new ClasspathElement(archive); - element.setValid(false); - element.setSelected(true); - element.setRelativeText(cpEntry); - element.setText(cpEntry); - element.setEarProject(earProject); - setInvalidProject(element); - return element; - } - - public ClasspathElement createProjectElement(IProject project) { - ClasspathElement element = new ClasspathElement(project); - element.setValid(true); - element.setSelected(true); - element.setText(project.getName()); - element.setProject(project); - addClasspathElement(element,element.getProjectName()); - return element; - } - - public ClasspathElement createProjectElement(IProject project, boolean existingEntry ) { - ClasspathElement element = new ClasspathElement(project); - element.setValid(true); - element.setSelected(existingEntry); - element.setText(project.getName()); - element.setProject(project); - addClasspathElement(element,element.getProjectName()); - return element; - } - - - public ClasspathElement createArchiveElement(URI uri, String name, String cpEntry) { - ClasspathElement element = new ClasspathElement(uri); - element.setValid(false); - element.setRelativeText(name); - if (cpEntry != null) - element.setValuesSelected(cpEntry); - element.setText(name); - element.setEarProject(earProject); - return element; - } - - /** - * @param element - */ - private void setInvalidProject(ClasspathElement element) { - IProject earProj = element.getEarProject(); - //IVirtualComponent[] component = ComponentUtilities.getComponent(earProj.getName()); - IVirtualComponent component = ComponentUtilities.getComponent(earProj.getName()); - EARArtifactEdit edit = null; - try { - edit = EARArtifactEdit.getEARArtifactEditForRead(component); - if (edit != null) { - String moduleName = element.getRelativeText(); - if(moduleName != null) { - IVirtualComponent modComponent = edit.getModule(moduleName); - if(modComponent != null) { - IProject mappedProject = modComponent.getProject(); - element.setProject(mappedProject); - } - } - } - } finally { - if(edit != null) { - edit.dispose(); - edit = null; - } - } - } - - /** - * Insert the method's description here. Creation date: (8/22/2001 1:17:21 PM) - * - * @return java.util.List - */ - public java.util.List getClasspathElements() { - if(classpathElements == null) - classpathElements = new ArrayList(); - return classpathElements; - } - - public java.util.List getSelectedClasspathElements() { - ArrayList list = new ArrayList(); - Iterator it = getClasspathElements().iterator(); - while(it.hasNext()) { - ClasspathElement element = (ClasspathElement)it.next(); - if( element.isSelected() ){ - list.add(element); - } - } - return list; - } - - /** - * Adapter method to convert the manifest class path entries which map to a project to a list of - * classpath entries for a java build path - */ - protected IClasspathEntry[] getClasspathEntries(boolean filterSelected) { - List result = new ArrayList(); - IClasspathEntry[] array = null; - ClasspathElement element = null; - if(classpathElements != null) { - for (int i = 0; i < classpathElements.size(); i++) { - element = (ClasspathElement) classpathElements.get(i); - if (filterSelected && !element.isSelected()) - continue; - array = ((ClasspathElement) classpathElements.get(i)).newClasspathEntries(); - if (array == null) - continue; - for (int j = 0; j < array.length; j++) { - if (!result.contains(array[j])) - result.add(array[j]); - } - } - return (IClasspathEntry[]) result.toArray(new IClasspathEntry[result.size()]); - } - return null; - } - - /** - * Adapter method to convert the manifest class path entries which map to a project to a list of - * classpath entries for a java build path - */ - public IClasspathEntry[] getClasspathEntriesForAll() { - return getClasspathEntries(false); - } - - /** - * Adapter method to convert the manifest class path entries which map to a project to a list of - * classpath entries for a java build path - */ - public IClasspathEntry[] getClasspathEntriesForSelected() { - return getClasspathEntries(true); - } - - protected EARFile getEARFile() { - if (archive == null) - return null; - - Container parent = archive.getContainer(); - if (parent != null && parent.isEARFile()) - return (EARFile) parent; - return null; - } - - protected static IProject getEARProject(Archive anArchive) { - Container c = anArchive.getContainer(); - if (!c.isEARFile()) - return null; - EARFile ear = (EARFile) c; - LoadStrategy loader = ear.getLoadStrategy(); - if (!(loader instanceof EARComponentLoadStrategyImpl)) - return null; - - return ((EARComponentLoadStrategyImpl) loader).getComponent().getProject(); - } - - public Archive getArchive() { - return archive; - } - - protected IProject getProject(Archive anArchive) { - LoadStrategy loader = anArchive.getLoadStrategy(); - if (loader instanceof ComponentLoadStrategyImpl) - return ((ComponentLoadStrategyImpl) loader).getComponent().getProject(); - if(loader instanceof NestedArchiveLoadStrategyImpl) { - LoadStrategy parent = ((NestedArchiveLoadStrategyImpl)loader).getParent(); - if(parent != null && parent instanceof ComponentLoadStrategyImpl){ - return ((ComponentLoadStrategyImpl) parent).getComponent().getProject(); - } - } - return null; - } - - public String getText() { - return archive.getURI(); - } - - protected Archive getArchive(String uri, List archives) { - for (int i = 0; i < archives.size(); i++) { - Archive anArchive = (Archive) archives.get(i); - - String archiveURIString = anArchive.getURI(); - URI archiveURI = URI.createURI(archiveURIString); - boolean hasAbsolutePath = archiveURI.hasAbsolutePath(); - if( hasAbsolutePath ){ - archiveURIString = archiveURI.lastSegment(); - } - if (archiveURIString.equals(uri)) - return anArchive; - } - return null; - } - - protected void initializeElements() { - ejbToClientJARs = J2EEProjectUtilities.collectEJBClientJARs(getEARFile()); - clientToEJBJARs = reverse(ejbToClientJARs); - classpathElements = new ArrayList(); - urisToElements = new HashMap(); - String[] cp = new String[0]; - try { - cp = archive.getManifest().getClassPathTokenized(); - } catch (ManifestException ex) { - Logger.getLogger().logError(ex); - } - List archives = getEARFile().getArchiveFiles(); - Archive other = null; - ClasspathElement element = null; - for (int i = 0; i < cp.length; i++) { - String cpEntry = cp[i]; - String uri = ArchiveUtil.deriveEARRelativeURI(cpEntry, archive); - other = getArchive(uri, archives); - if (other != null && ArchiveUtil.isValidDependency(other, archive)) { - element = createElement(archive, other, cpEntry); - archives.remove(other); - } else { - element = createInvalidElement(cpEntry); - if (element.representsImportedJar()) { - element.setValid(true); - element.setProject(getProject(archive)); - } - if (other != null) - element.setProject(getProject(other)); - - if( other == null ){ - //making a best guess for the project name - if( element.getProject() == null ){ - int index = cpEntry.indexOf(".jar"); //$NON-NLS-1$ - // if jar is nested in a folder you must not look for - // project (segments in project name cause assertion - // error) - boolean isMultiSegment = cpEntry.indexOf(File.pathSeparator) == -1; - if (!isMultiSegment && index > 0) { - String projectName = cpEntry.substring(0, index); - IPath projectPath = new Path(projectName); - //if there are multiple segments and no reference archive is found - //then either this is pointing to a jar in the EAR that doesn't exist - //or the DependecyGraphManager is stale - if(projectPath.segmentCount() > 1){ - if(earComponent != null && earComponent.getProject() != null){ - element.setProject(earComponent.getProject()); - } - } else { - IProject project = ProjectUtilities.getProject( projectName ); - if( project != null && project.exists() ) - element.setProject( project ); - } - } - } - } - } - addClasspathElement(element, uri); - } - Collections.sort(archives, comparator); - //Anything that remains in the list of available archives that is valid should be - //available for selection - for (int i = 0; i < archives.size(); i++) { - other = (Archive) archives.get(i); - if (other != archive && ArchiveUtil.isValidDependency(other, archive)) { - IProject project = getProject(other); - if (null == targetProjectName || null == project || !project.getName().equals(targetProjectName)) { - element = createElement(archive, other, null); - element.setProject(getProject(other)); - addClasspathElement(element, other.getURI()); - } - } - } - - if( earComponent!= null){ - IVirtualReference[] newrefs = earComponent.getReferences(); - for( int i=0; i < newrefs.length; i++){ - IVirtualReference ref = newrefs[i]; - IVirtualComponent referencedComponent = ref.getReferencedComponent(); - boolean isBinary = referencedComponent.isBinary(); - if( isBinary ){ - - - /** - * Warning clean-up 12/05/2005 - */ - //String uri = J2EEProjectUtilities.getResolvedPathForArchiveComponent(referencedComponent.getName()).toString(); - String unresolvedURI = ref.getArchiveName(); - if(unresolvedURI == null){ - try { - unresolvedURI = ModuleURIUtil.getArchiveName(URI.createURI(ModuleURIUtil.getHandleString(referencedComponent))); - } catch (UnresolveableURIException e) { - e.printStackTrace(); - } - } - - if(unresolvedURI != null){ - URI archiveURI = URI.createURI(unresolvedURI); - - boolean alreadyInList = false; - Iterator iter = getClasspathElements().iterator(); - while(iter.hasNext()){ - ClasspathElement tmpelement = (ClasspathElement)iter.next(); - if(unresolvedURI.endsWith(tmpelement.getText())){ - alreadyInList = true; - break; - } - } - - if( !alreadyInList ){ - if( inManifest(cp, archiveURI.lastSegment())){ - element = createArchiveElement(URI.createURI(ModuleURIUtil.getHandleString(referencedComponent)), archiveURI.lastSegment(), archiveURI.lastSegment()); - addClasspathElement(element, unresolvedURI); - }else{ - element = createArchiveElement(URI.createURI(ModuleURIUtil.getHandleString(referencedComponent)), archiveURI.lastSegment(), null); - addClasspathElement(element, unresolvedURI); - } - } - } - } - } - } - } - - boolean inManifest(String[] cp, String archiveName ){ - boolean result = false; - String cpEntry = ""; - for (int i = 0; i < cp.length; i++) { - cpEntry = cp[i]; - if( archiveName.equals(cpEntry)){ - result = true; - } - } - return result; - } - - protected List loadClassPathArchives(){ - /** - * Warning clean-up 12/05/2005 - */ - //LoadStrategy loadStrat = archive.getLoadStrategy(); - - List archives = new ArrayList(); - - if( earComponent!= null){ - IVirtualReference[] newrefs = earComponent.getReferences(); - for( int i=0; i < newrefs.length; i++){ - IVirtualReference ref = newrefs[i]; - IVirtualComponent referencedComponent = ref.getReferencedComponent(); - boolean isBinary = referencedComponent.isBinary(); - - if( isBinary ){ - String uri = J2EEProjectUtilities.getResolvedPathForArchiveComponent(referencedComponent.getName()).toString(); - - try { - ZipFileLoadStrategyImpl strat = createLoadStrategy(uri); - Archive archive = null; - try { - archive = CommonarchiveFactoryImpl.getActiveFactory().primOpenArchive(strat, uri); - } catch (OpenFailureException e) { - // TODO Auto-generated catch block - Logger.getLogger().logError(e); - } - - archives.add(archive); - - } catch (FileNotFoundException e) { - Logger.getLogger().logError(e); - } catch (IOException e) { - Logger.getLogger().logError(e); - } - } - - } - } - return archives; - } - - Archive getClassPathArchive(String uri, List archives){ - for (int i = 0; i < archives.size(); i++) { - Archive anArchive = (Archive) archives.get(i); - - String archiveURIString = anArchive.getURI(); - URI archiveURI = URI.createURI(archiveURIString); - boolean hasAbsolutePath = archiveURI.hasAbsolutePath(); - if( hasAbsolutePath ){ - archiveURIString = archiveURI.lastSegment(); - } - if (archiveURIString.equals(uri)) - return anArchive; - } - return null; - } - - boolean isClassPathArchive(String uri, List archives){ - for (int i = 0; i < archives.size(); i++) { - Archive anArchive = (Archive) archives.get(i); - - String archiveURIString = anArchive.getURI(); - URI archiveURI = URI.createURI(archiveURIString); - /** - * Warning clean-up 12/05/2005 - */ - //boolean hasAbsolutePath = archiveURI.hasAbsolutePath(); - if( archiveURI.lastSegment().equals(uri) ){ - return true; - } - } - return false; - } - - public ZipFileLoadStrategyImpl createLoadStrategy(String uri) throws FileNotFoundException, IOException { - String filename = uri.replace('/', java.io.File.separatorChar); - java.io.File file = new java.io.File(filename); - if (!file.exists()) { - throw new FileNotFoundException(CommonArchiveResourceHandler.getString(CommonArchiveResourceHandler.file_not_found_EXC_, (new Object[]{uri, file.getAbsolutePath()}))); // = "URI Name: {0}; File name: {1}" - } - if (file.isDirectory()) { - throw new FileNotFoundException(CommonArchiveResourceHandler.getString(CommonArchiveResourceHandler.file_not_found_EXC_, (new Object[]{uri, file.getAbsolutePath()}))); // = "URI Name: {0}; File name: {1}" - } - return new org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.ZipFileLoadStrategyImpl(file); - } - - - private void initializeEARProject(EARFile earFile) { - LoadStrategy loadStrat = earFile.getLoadStrategy(); - if (loadStrat instanceof EARComponentLoadStrategyImpl){ - earComponent = ((EARComponentLoadStrategyImpl) loadStrat).getComponent(); - earProject = ((EARComponentLoadStrategyImpl) loadStrat).getComponent().getProject(); - } - } - - private void setType(ClasspathElement element, Archive other) { - if (other == null) - return; - else if (clientToEJBJARs.containsKey(other)) - element.setJarType(ClasspathElement.EJB_CLIENT_JAR); - else if (other.isEJBJarFile()) - element.setJarType(ClasspathElement.EJB_JAR); - } - - /** - * @param localejbToClientJARs - * @return - */ - private Map reverse(Map localejbToClientJARs) { - if (localejbToClientJARs == null || localejbToClientJARs.isEmpty()) - return Collections.EMPTY_MAP; - Map result = new HashMap(); - Iterator iter = localejbToClientJARs.entrySet().iterator(); - while (iter.hasNext()) { - Map.Entry entry = (Map.Entry) iter.next(); - result.put(entry.getValue(), entry.getKey()); - } - return result; - } - - public void addClasspathElement(ClasspathElement element, String uri) { - getClasspathElements().add(element); - getUrisToElements().put(uri, element); - element.setParentSelection(this); - } - - /** - * Insert the method's description here. Creation date: (8/22/2001 6:05:11 PM) - * - * @return boolean - */ - public boolean isModified() { - return modified; - } - - /** - * Insert the method's description here. Creation date: (8/22/2001 6:05:11 PM) - * - * @param newModified - * boolean - */ - public void setModified(boolean newModified) { - modified = newModified; - } - - protected void setProjectValues(ClasspathElement element, Archive referencedArchive) { - IProject p = getProject(referencedArchive); - if (p == null) - return; - - element.setProject(p); - //Handle the imported jars in the project - String[] cp = null; - try { - cp = referencedArchive.getManifest().getClassPathTokenized(); - } catch (ManifestException mfEx) { - Logger.getLogger().logError(mfEx); - cp = new String[]{}; - } - List paths = new ArrayList(cp.length); - for (int i = 0; i < cp.length; i++) { - - IFile file = null; - try { - file = p.getFile(cp[i]); - } catch (IllegalArgumentException invalidPath) { - continue; - } - if (file.exists()) - paths.add(file.getFullPath()); - } - if (!paths.isEmpty()) - element.setImportedJarPaths(paths); - } - - public String toString() { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < classpathElements.size(); i++) { - ClasspathElement element = (ClasspathElement) classpathElements.get(i); - if (element.isSelected()) { - sb.append(element.getRelativeText()); - sb.append(" "); //$NON-NLS-1$ - } - } - //Remove the trailing space - if (sb.length() > 0) - sb.deleteCharAt(sb.length() - 1); - return sb.toString(); - } - - public void setAllSelected(boolean selected) { - setAllSelected(classpathElements, selected); - } - - public void setAllSelected(List elements, boolean selected) { - for (int i = 0; i < elements.size(); i++) { - ClasspathElement elmt = (ClasspathElement) elements.get(i); - elmt.setSelected(selected); - } - } - - /* borrowed code from jdt */ - protected List moveUp(List elements, List move) { - int nElements = elements.size(); - List res = new ArrayList(nElements); - Object floating = null; - for (int i = 0; i < nElements; i++) { - Object curr = elements.get(i); - if (move.contains(curr)) { - res.add(curr); - } else { - if (floating != null) { - res.add(floating); - } - floating = curr; - } - } - if (floating != null) { - res.add(floating); - } - return res; - } - - /* borrowed code from jdt */ - public void moveUp(List toMoveUp) { - setModifiedIfAnySelected(toMoveUp); - if (toMoveUp.size() > 0) - classpathElements = moveUp(classpathElements, toMoveUp); - } - - /* borrowed code from jdt */ - public void moveDown(List toMoveDown) { - setModifiedIfAnySelected(toMoveDown); - if (toMoveDown.size() > 0) - classpathElements = reverse(moveUp(reverse(classpathElements), toMoveDown)); - - } - - /* borrowed code from jdt */ - protected List reverse(List p) { - List reverse = new ArrayList(p.size()); - for (int i = p.size() - 1; i >= 0; i--) { - reverse.add(p.get(i)); - } - return reverse; - } - - public ClasspathElement getClasspathElement(String uri) { - if (urisToElements == null) - return null; - return (ClasspathElement) urisToElements.get(uri); - } - - public ClasspathElement getClasspathElement(IProject archiveProject) { - if (archiveProject != null) { - for (int i = 0; i < classpathElements.size(); i++) { - ClasspathElement elmnt = (ClasspathElement) classpathElements.get(i); - if (archiveProject.equals(elmnt.getProject())) - return elmnt; - } - } - return null; - } - - public boolean hasDirectOrIndirectDependencyTo(IProject archiveProject) { - ClasspathElement element = getClasspathElement(archiveProject); - if (element == null) - return false; - Archive anArchive = null; - if (element.isValid()) { - try { - anArchive = (Archive) getEARFile().getFile(element.getText()); - } catch (FileNotFoundException e) { - } - } - return anArchive != null && archive.hasClasspathVisibilityTo(anArchive); - } - - public boolean hasDirectOrIndirectDependencyTo(String jarName) { - ClasspathElement element = getClasspathElement(jarName); - if (element == null) - return false; - Archive anArchive = null; - if (element.isValid()) { - try { - anArchive = (Archive) getEARFile().getFile(element.getText()); - } catch (FileNotFoundException e) { - } - } - return anArchive != null && archive.hasClasspathVisibilityTo(anArchive); - } - - - public boolean isAnyJarSelected(int type) { - if (classpathElements != null) { - for (int i = 0; i < classpathElements.size(); i++) { - ClasspathElement element = (ClasspathElement) classpathElements.get(i); - if (element.getJarType() == type && element.isSelected()) - return true; - } - } - return false; - } - - - public boolean isAnyEJBJarSelected() { - return isAnyJarSelected(ClasspathElement.EJB_JAR); - } - - - - public boolean isAnyEJBClientJARSelected() { - return isAnyJarSelected(ClasspathElement.EJB_CLIENT_JAR); - - } - - /** - * @return - */ - public int getFilterLevel() { - return filterLevel; - } - - /** - * @param i - */ - public void setFilterLevel(int i) { - filterLevel = i; - } - - /** - * This method selects or deselects indivual elements based on the filter level, and - * additionally sets the filter level. - * - * @param i - */ - public void selectFilterLevel(int level) { - setFilterLevel(level); - switch (level) { - case FILTER_EJB_CLIENT_JARS : - invertClientJARSelections(ClasspathElement.EJB_CLIENT_JAR); - break; - case FILTER_EJB_SERVER_JARS : - invertClientJARSelections(ClasspathElement.EJB_JAR); - break; - default : - break; - } - } - - public void invertClientJARSelection(IProject aProject, IProject opposite) { - ClasspathElement element = getClasspathElement(aProject); - ClasspathElement oppositeElement = (opposite == null ? null : getClasspathElement(opposite)); - if (element.isSelected()) - invertSelectionIfPossible(element, oppositeElement); - } - - private void invertClientJARSelections(int elementType) { - if (classpathElements == null) - return; - - for (int i = 0; i < classpathElements.size(); i++) { - ClasspathElement element = (ClasspathElement) classpathElements.get(i); - if (element.getJarType() == elementType && element.isSelected()) { - invertSelectionIfPossible(element, null); - } - } - } - - /** - * @param element - * @param elementType - */ - private void invertSelectionIfPossible(ClasspathElement element, ClasspathElement opposite) { - if (element == null) - return; - if (opposite == null) - opposite = getOppositeElement(element); - if (opposite != null) { - opposite.setSelected(true); - element.setSelected(false); - } - } - - /** - * If the element represents an EJB client JAR, returns the corresponding server JAR. If the - * element represents an EJB server JAR, returns the corresponding client JAR. - */ - public ClasspathElement getOppositeElement(ClasspathElement element) { - String uri = element.getText(); - Archive target = element.getTargetArchive(); - if (uri == null || target == null) - return null; - Archive oppositeJAR = null; - switch (element.getJarType()) { - case (ClasspathElement.EJB_CLIENT_JAR) : - oppositeJAR = (Archive) clientToEJBJARs.get(target); - break; - case (ClasspathElement.EJB_JAR) : - oppositeJAR = (Archive) ejbToClientJARs.get(target); - break; - default : - break; - } - if (oppositeJAR != null) - return getClasspathElement(oppositeJAR.getURI()); - - return null; - } - - private void setModifiedIfAnySelected(List elements) { - for (int i = 0; i < elements.size(); i++) { - ClasspathElement element = (ClasspathElement) elements.get(i); - if (element.isSelected()) - setModified(true); - } - } - - public boolean isMyClientJAR(ClasspathElement element) { - if (element == null || ejbToClientJARs == null) - return false; - Archive myClientJar = (Archive) ejbToClientJARs.get(archive); - return myClientJar != null && myClientJar == element.getTargetArchive(); - } - - public Map getUrisToElements() { - if(urisToElements == null) - urisToElements = new HashMap(); - return urisToElements; - } - -} |