/** * @see com.ibm.etools.archive.ArchiveTypeDiscriminator */ public Archive openArchive(Archive anArchive) throws OpenFailureException { if (!canImport(anArchive)) { return null; } Archive convertedArchive = convert(anArchive); Archive childConvertedArchive = getImportableArchiveFromChild(convertedArchive); if (childConvertedArchive != null) return childConvertedArchive; return convertedArchive; }
/** * @see com.ibm.etools.archive.ArchiveTypeDiscriminator */ public void addChild(ArchiveTypeDiscriminator child) { if (hasChild(child)) return; getChildren().add(child); }
public boolean hasChild(ArchiveTypeDiscriminator disc) { return hasChildren() && getChildren().contains(disc); }
/** * @see com.ibm.etools.archive.ArchiveTypeDiscriminator */ public Archive convert(Archive anArchive) throws OpenFailureException { Archive destination = createConvertedArchive(); //turn of notifications destination.eSetDeliver(false); destination.eSetDeliver(false); //Copy the relevant attributes destination.setURI(anArchive.getURI()); destination.setOriginalURI(anArchive.getURI()); destination.setSize(anArchive.getSize()); destination.setLastModified(anArchive.getLastModified()); destination.setLoadStrategy(anArchive.getLoadStrategy()); destination.setOptions(anArchive.getOptions()); destination.setExtraClasspath(anArchive.getExtraClasspath()); if (destination.isModuleFile()) { ImportStrategy importStrategy = createImportStrategy(anArchive, destination); ((ModuleFile) destination).setImportStrategy(importStrategy); } //turn notifications back on destination.eSetDeliver(true); destination.eSetDeliver(true); return destination; }
/** * @see ArchiveTypeDiscriminator#openArchive(Archive) */ public Archive openArchive(Archive anArchive) throws OpenFailureException { Archive result = super.openArchive(anArchive); if (result == anArchive) //Couldn't convert return null; return result; }
/** * @see com.ibm.etools.archive.ArchiveTypeDiscriminator */ public void removeChild(org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveTypeDiscriminator child) { getChildren().remove(child); }
/** * @see com.ibm.etools.archive.ArchiveTypeDiscriminator */ public void addChildBefore(ArchiveTypeDiscriminator child, ArchiveTypeDiscriminator successor) throws java.util.NoSuchElementException { if (hasChild(child)) return; int index = getChildren().indexOf(successor); if (index >= 0) { getChildren().add(index, child); } else { throw new java.util.NoSuchElementException(successor.toString()); } }
/** * Iterate through each child and attempt to convert the archive to the child's type; return the * converted archive from the first child that succeeds, or null if no child succeeds or no * child exists */ protected Archive getImportableArchiveFromChild(Archive anArchive) throws OpenFailureException { if (!hasChildren()) { return null; } List theChildren = getChildren(); Archive childConvertedArchive = null; for (int i = 0; i < theChildren.size(); i++) { ArchiveTypeDiscriminator child = (ArchiveTypeDiscriminator) theChildren.get(i); childConvertedArchive = child.openArchive(anArchive); if (childConvertedArchive != null) { return childConvertedArchive; } } return null; }
/** * @see com.ibm.etools.archive.ArchiveTypeDiscriminator */ public void addChildAfter(org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveTypeDiscriminator child, org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveTypeDiscriminator predecessor) throws java.util.NoSuchElementException { if (hasChild(child)) return; int index = getChildren().indexOf(predecessor); if (index >= 0) { index++; getChildren().add(index, child); } else { throw new java.util.NoSuchElementException(predecessor.toString()); } }