package org.wildfly.swarm.bootstrap.env;
import java.util.Comparator;
/**
* Comparator to sort Manifests based on dependency tree, complexity, and alphabetically.
*
* @author Bob McWhirter
*/
public class ManifestComparator implements Comparator<FractionManifest> {
@Override
public int compare(FractionManifest left, FractionManifest right) {
// dependents sort to the right
if (left.getDependencies().contains(gav(right))) {
return 1;
}
if (right.getDependencies().contains(gav(left))) {
return -1;
}
// simpler sort to the left
if (left.getDependencies().size() < right.getDependencies().size()) {
return -1;
}
if (right.getDependencies().size() > left.getDependencies().size()) {
return 1;
}
// alphabetically
return left.getArtifactId().compareTo(right.getArtifactId());
}
protected String gav(FractionManifest manifest) {
return manifest.getGroupId() + ":" + manifest.getArtifactId() + ":jar:" + manifest.getVersion();
}
}