/* * Decompiled with CFR 0.152. * * Could not load the following classes: * javax.baja.nre.util.Array * javax.baja.sys.BInteger */ package com.tridium.install; import com.tridium.install.BDependency; import com.tridium.install.InstallScenario; import com.tridium.install.InstallableFilter; import com.tridium.install.PartSpec; import com.tridium.install.UnmeetableDependency; import com.tridium.install.installable.BInstallable; import com.tridium.install.part.BModulePart; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; import java.util.TreeSet; import javax.baja.nre.util.Array; import javax.baja.sys.BInteger; /* * Illegal identifiers - consider using --renameillegalidents true */ public class InstallableCandidates { protected static final Comparator CANDIDATE_KEY_COMPARATOR = new Comparator(){ public final int compare(Object object, Object object2) { if (object instanceof BDependency) { if (object2 instanceof BDependency) { return BDependency.COMPARATOR.compare(object, object2); } return 1; } if (object2 instanceof BDependency) { return -1; } return object.toString().compareTo(object2.toString()); } }; private Map candidatesByKey; private Map keyByNumCandidates; private Map unmeetableDependencyByPartSpec; static /* synthetic */ Class class$com$tridium$install$BDependency; static /* synthetic */ Class class$com$tridium$install$installable$BInstallable; public void addAll(InstallableCandidates installableCandidates) { if (installableCandidates == null) { return; } Object[] objectArray = installableCandidates.getKeys(); int n = 0; while (n < objectArray.length) { TreeSet treeSet; BInteger bInteger; Object[] objectArray2 = installableCandidates.getCandidates(objectArray[n]); Array array = (Array)this.candidatesByKey.get(objectArray[n]); if (array == null) { array = new Array(objectArray2); this.candidatesByKey.put(objectArray[n], array); } else { bInteger = BInteger.make((int)array.size()); treeSet = (TreeSet)this.keyByNumCandidates.get(bInteger); treeSet.remove(objectArray[n]); if (treeSet.size() == 0) { this.keyByNumCandidates.remove(bInteger); } array.addAll(objectArray2); } bInteger = BInteger.make((int)array.size()); treeSet = (TreeSet)this.keyByNumCandidates.get(bInteger); if (treeSet == null) { treeSet = new TreeSet(CANDIDATE_KEY_COMPARATOR); this.keyByNumCandidates.put(bInteger, treeSet); } treeSet.add(objectArray[n]); ++n; } } public InstallableCandidates newCopy() { InstallableCandidates installableCandidates = new InstallableCandidates(); Iterator iterator = this.candidatesByKey.keySet().iterator(); while (iterator.hasNext()) { Object k = iterator.next(); Array array = (Array)this.candidatesByKey.get(k); installableCandidates.candidatesByKey.put(k, array.copy()); BInteger bInteger = BInteger.make((int)array.size()); TreeSet treeSet = (TreeSet)installableCandidates.keyByNumCandidates.get(bInteger); if (treeSet == null) { treeSet = new TreeSet(CANDIDATE_KEY_COMPARATOR); installableCandidates.keyByNumCandidates.put(bInteger, treeSet); } treeSet.add(k); } return installableCandidates; } public int size() { return this.candidatesByKey.size(); } public String toString() { return this.candidatesByKey.toString(); } public boolean isDependencyUnsolvable(BDependency bDependency, InstallScenario installScenario) { UnmeetableDependency unmeetableDependency = this.getUnmeetableDependency(bDependency.getPartSpec(), installScenario); boolean bl = false; if (unmeetableDependency != null) { bl = unmeetableDependency.isUnsolvable; } return bl; } public BDependency getFailedExclusion(BDependency bDependency, InstallScenario installScenario) { UnmeetableDependency unmeetableDependency = this.getUnmeetableDependency(bDependency.getPartSpec(), installScenario); return unmeetableDependency == null ? null : unmeetableDependency.failedExclusion; } public InstallableFilter getFailedFilter(BDependency bDependency, InstallScenario installScenario) { UnmeetableDependency unmeetableDependency = this.getUnmeetableDependency(bDependency.getPartSpec(), installScenario); return unmeetableDependency == null ? null : unmeetableDependency.failedFilter; } public boolean installableNotFound(BDependency bDependency, InstallScenario installScenario) { UnmeetableDependency unmeetableDependency = this.getUnmeetableDependency(bDependency.getPartSpec(), installScenario); boolean bl = true; if (unmeetableDependency != null) { bl = unmeetableDependency.isSoftwareNotFound; } return bl; } public UnmeetableDependency getUnmeetableDependency(PartSpec partSpec, InstallScenario installScenario) { this.getUnmeetableDependencies(installScenario); return (UnmeetableDependency)this.unmeetableDependencyByPartSpec.get(partSpec); } public UnmeetableDependency[] getUnmeetableDependencies(InstallScenario installScenario) { if (installScenario.isSolved()) { if (this.unmeetableDependencyByPartSpec == null) { this.unmeetableDependencyByPartSpec = new HashMap(); Iterator iterator = this.candidatesByKey.keySet().iterator(); while (iterator.hasNext()) { Object k = iterator.next(); if (!(k instanceof BDependency)) continue; BDependency bDependency = (BDependency)((Object)k); boolean bl = installScenario.getTargetPlatform().meets(bDependency); if (bl && bDependency.getPartType() == BModulePart.TYPE && installScenario.getNewModuleContent() != null && installScenario.getNewModuleContent().getOrdinal() > ((BModulePart)installScenario.getTargetPlatform().getPart(bDependency)).getArchiveContent().getOrdinal()) { bl = false; } if (bl) continue; if (bDependency.canSolveWith(installScenario.getSolutionParameters().solvers)) { Object object; try { Object object2; boolean bl2 = false; object = installScenario.getInstallableRegistry().getInstallables(bDependency, installScenario.getSolutionParameters().listener); Object object3 = null; while (object.next()) { object2 = (BInstallable)object.get(); BDependency bDependency2 = installScenario.getFailedExclusion((BInstallable)object2); if (bDependency2 == null) { InstallableFilter installableFilter = installScenario.getSolutionParameters().getFailedFilter((BInstallable)object2); if (installableFilter == null) { bl2 = true; break; } if (object3 != null) continue; object3 = installableFilter; continue; } if (object3 != null) continue; object3 = bDependency2; } try { object.close(); } catch (Exception exception) {} if (bl2) continue; object2 = (UnmeetableDependency)this.unmeetableDependencyByPartSpec.get(bDependency.getPartSpec()); if (object2 == null) { object2 = new UnmeetableDependency(bDependency); this.unmeetableDependencyByPartSpec.put(bDependency.getPartSpec(), object2); } if (object3 == null) { ((UnmeetableDependency)object2).isSoftwareNotFound = true; continue; } if (object3 instanceof BDependency) { ((UnmeetableDependency)object2).failedExclusion = object3; } else { ((UnmeetableDependency)object2).failedFilter = (InstallableFilter)object3; } this.unmeetableDependencyByPartSpec.put(bDependency.getPartSpec(), object2); } catch (Exception exception) { object = (UnmeetableDependency)this.unmeetableDependencyByPartSpec.get(bDependency.getPartSpec()); if (object == null) { object = new UnmeetableDependency(bDependency); this.unmeetableDependencyByPartSpec.put(bDependency.getPartSpec(), object); } ((UnmeetableDependency)object).isSoftwareNotFound = true; } continue; } UnmeetableDependency unmeetableDependency = (UnmeetableDependency)this.unmeetableDependencyByPartSpec.get(bDependency.getPartSpec()); if (unmeetableDependency == null) { unmeetableDependency = new UnmeetableDependency(bDependency); this.unmeetableDependencyByPartSpec.put(bDependency.getPartSpec(), unmeetableDependency); } unmeetableDependency.isUnsolvable = true; } } return this.unmeetableDependencyByPartSpec.values().toArray(new UnmeetableDependency[this.unmeetableDependencyByPartSpec.size()]); } throw new IllegalStateException("Cannot call getUnavailableDependencies() on a scenario that has not been solved"); } public BDependency[] getDependencies() { Class clazz = class$com$tridium$install$BDependency; if (clazz == null) { clazz = class$com$tridium$install$BDependency = InstallableCandidates.class("[Lcom.tridium.install.BDependency;", false); } Array array = new Array(clazz); Iterator iterator = this.candidatesByKey.keySet().iterator(); while (iterator.hasNext()) { Object k = iterator.next(); if (!(k instanceof BDependency)) continue; array.add(k); } return (BDependency[])array.trim(); } public Object[] getKeys() { return this.candidatesByKey.keySet().toArray(); } public boolean containsKey(Object object) { return this.candidatesByKey.containsKey(object); } public void addKey(Object object) { this.add(object, null); } public void add(Object object, BInstallable bInstallable) { TreeSet treeSet; BInteger bInteger; Array array = (Array)this.candidatesByKey.get(object); if (array == null) { if (bInstallable == null) { Class clazz = class$com$tridium$install$installable$BInstallable; if (clazz == null) { clazz = class$com$tridium$install$installable$BInstallable = InstallableCandidates.class("[Lcom.tridium.install.installable.BInstallable;", false); } array = new Array(clazz); } else { array = new Array((Object[])new BInstallable[]{bInstallable}); } this.candidatesByKey.put(object, array); } else { bInteger = BInteger.make((int)array.size()); treeSet = (TreeSet)this.keyByNumCandidates.get(bInteger); treeSet.remove(object); if (treeSet.size() == 0) { this.keyByNumCandidates.remove(bInteger); } if (bInstallable != null) { array.add((Object)bInstallable); } } bInteger = BInteger.make((int)array.size()); treeSet = (TreeSet)this.keyByNumCandidates.get(bInteger); if (treeSet == null) { treeSet = new TreeSet(CANDIDATE_KEY_COMPARATOR); this.keyByNumCandidates.put(bInteger, treeSet); } treeSet.add(object); } public void set(Object object, BInstallable[] bInstallableArray) { TreeSet treeSet; BInteger bInteger; Array array = (Array)this.candidatesByKey.get(object); if (array != null) { bInteger = BInteger.make((int)array.size()); treeSet = (TreeSet)this.keyByNumCandidates.get(bInteger); treeSet.remove(object); if (treeSet.size() == 0) { this.keyByNumCandidates.remove(bInteger); } } Array array2 = new Array((Object[])bInstallableArray); this.candidatesByKey.put(object, array2); bInteger = BInteger.make((int)array2.size()); treeSet = (TreeSet)this.keyByNumCandidates.get(bInteger); if (treeSet == null) { treeSet = new TreeSet(CANDIDATE_KEY_COMPARATOR); this.keyByNumCandidates.put(bInteger, treeSet); } treeSet.add(object); } public void removeKey(Object object) { Array array = (Array)this.candidatesByKey.get(object); if (array != null) { BInteger bInteger = BInteger.make((int)array.size()); TreeSet treeSet = (TreeSet)this.keyByNumCandidates.get(bInteger); if (treeSet != null) { treeSet.remove(object); if (treeSet.size() == 0) { this.keyByNumCandidates.remove(bInteger); } } this.candidatesByKey.remove(object); } } public Object getFirstKey() { Iterator iterator = this.keyByNumCandidates.values().iterator(); while (iterator.hasNext()) { TreeSet treeSet = (TreeSet)iterator.next(); Iterator iterator2 = treeSet.iterator(); if (!iterator2.hasNext()) continue; return iterator2.next(); } return null; } public BInstallable[] getCandidates(Object object) { Array array = (Array)this.candidatesByKey.get(object); if (array == null) { return new BInstallable[0]; } return (BInstallable[])array.trim(); } static /* synthetic */ Class class(String string, boolean bl) { try { Class clazz = Class.forName(string); if (!bl) { clazz = clazz.getComponentType(); } return clazz; } catch (ClassNotFoundException classNotFoundException) { throw new NoClassDefFoundError(classNotFoundException.getMessage()); } } private final /* synthetic */ void this() { this.unmeetableDependencyByPartSpec = null; } public InstallableCandidates() { this.this(); this.candidatesByKey = new TreeMap(CANDIDATE_KEY_COMPARATOR); this.keyByNumCandidates = new TreeMap(); } }