public OJElement getCopy(){ OJWorkspace result = new OJWorkspace(); this.copyInfoInto(result); return result; } public void copyInfoInto(OJWorkspace copy){
public void copyInfoInto(OJWorkspace copy){ super.copyInfoInto(copy); Iterator<OJPackage> rootPackagesIt = new ArrayList<OJPackage>(getRootPackages()).iterator(); while(rootPackagesIt.hasNext()){ OJPackage elem = (OJPackage) rootPackagesIt.next(); copy.addToRootPackages(elem); } } @Override
protected OJPackage findLocalPackage(String name){ return any2(name); } public void setRootPackages(Set<OJPackage> elements){
public void removeAllFromRootPackages(){ Iterator it = new HashSet<OJPackage>(getRootPackages()).iterator(); while((it.hasNext())){ Object item = it.next(); if(item instanceof OJPackage){ this.removeFromRootPackages((OJPackage) item); } } } private OJPackage any2(String name){
public OJPackage findOrCreatePackage(OJPathName packageName){ OJPackage parent = findLocalPackage(packageName.getFirst()); if(parent == null){ parent = new OJPackage(packageName.getFirst()); addToRootPackages(parent); } OJPackage child = parent; Iterator<String> iter = packageName.getNames().subList(1, packageName.getNames().size()).iterator(); while(iter.hasNext()){ String name = iter.next(); child = (OJPackage) parent.findPackage(new OJPathName(name)); if(child == null){ child = new OJPackage(name); parent.addToSubpackages(child); } parent = child; } return child; } }
@Override public void renameAll(Set<OJPathName> match,String suffix){ Set<OJPackage> rootpackages = getRootPackages(); for(OJPackage p:rootpackages){ p.renameAll(match, suffix); } } public OJPackage findOrCreatePackage(OJPathName packageName){
public OJPackage findPackage(OJPathName path){ if(path.isSingleName()){ return this.findLocalPackage(path.getLast()); }else{ OJPackage lp = this.findLocalPackage(path.getFirst()); if(lp != null){ return lp.findPackage(path.getTail()); }else{ return null; } } } protected OJPackage findLocalPackage(String name){
public void addToRootPackages(Collection<OJPackage> newElems){ Iterator it = newElems.iterator(); while((it.hasNext())){ Object item = it.next(); if(item instanceof OJPackage){ this.addToRootPackages((OJPackage) item); } } } public void removeFromRootPackages(Collection<OJPackage> oldElems){
public void removeFromRootPackages(Collection<OJPackage> oldElems){ Iterator it = oldElems.iterator(); while((it.hasNext())){ Object item = it.next(); if(item instanceof OJPackage){ this.removeFromRootPackages((OJPackage) item); } } } public void removeAllFromRootPackages(){
public void release(){ for(OJPackage p:this.getRootPackages()){ p.release(); } } public OJClass findClass(OJPathName path){
public OJClass findClass(OJPathName path){ OJPackage pkg = this.findLocalPackage(path.getFirst()); if(pkg == null){ return null; }else{ return pkg.findClass(path.getTail()); } } public OJPackage findPackage(OJPathName path){
private OJPackage any2(String name){ OJPackage result = null; Iterator it = this.getRootPackages().iterator(); while(it.hasNext()){ OJPackage c = (OJPackage) it.next(); if(c.getName().equals(name)){ return c; } } return result; } public List<InvariantError> checkAllInvariants(){