368 lines
16 KiB
Java
368 lines
16 KiB
Java
/*
|
|
* 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<Object> 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<Object>)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<Object>(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<Object> 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<Object>)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<Object>(CANDIDATE_KEY_COMPARATOR);
|
|
this.keyByNumCandidates.put(bInteger, treeSet);
|
|
}
|
|
treeSet.add(object);
|
|
}
|
|
|
|
public void set(Object object, BInstallable[] bInstallableArray) {
|
|
TreeSet<Object> treeSet;
|
|
BInteger bInteger;
|
|
Array array = (Array)this.candidatesByKey.get(object);
|
|
if (array != null) {
|
|
bInteger = BInteger.make((int)array.size());
|
|
treeSet = (TreeSet<Object>)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<Object>(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();
|
|
}
|
|
}
|
|
|