@Override public int compare(IRingSet a, IRingSet b) { // polycyclic better int cmp = Boolean.compare(a.getAtomContainerCount() == 1, b.getAtomContainerCount() == 1); if (cmp != 0) return cmp; // more hetero atoms better Integer numHeteroRingA = a.getProperty(NUM_HETERO_RINGS); Integer numHeteroRingB = b.getProperty(NUM_HETERO_RINGS); if (numHeteroRingA == null) numHeteroRingA = 0; if (numHeteroRingB == null) numHeteroRingB = 0; cmp = -Integer.compare(numHeteroRingA, numHeteroRingB); if (cmp != 0) return cmp; // more hetero rings better Integer numHeteroAtomA = a.getProperty(NUM_HETERO_ATOMS); Integer numHeteroAtomB = b.getProperty(NUM_HETERO_ATOMS); if (numHeteroAtomA == null) numHeteroAtomA = 0; if (numHeteroAtomB == null) numHeteroAtomB = 0; cmp = -Integer.compare(numHeteroAtomA, numHeteroAtomB); if (cmp != 0) return cmp; // more rings better return -Integer.compare(a.getAtomContainerCount(), b.getAtomContainerCount()); } };
@Override public int compare(IRingSet a, IRingSet b) { // polycyclic better int cmp = Boolean.compare(a.getAtomContainerCount() == 1, b.getAtomContainerCount() == 1); if (cmp != 0) return cmp; // more hetero atoms better Integer numHeteroRingA = a.getProperty(NUM_HETERO_RINGS); Integer numHeteroRingB = b.getProperty(NUM_HETERO_RINGS); if (numHeteroRingA == null) numHeteroRingA = 0; if (numHeteroRingB == null) numHeteroRingB = 0; cmp = -Integer.compare(numHeteroRingA, numHeteroRingB); if (cmp != 0) return cmp; // more hetero rings better Integer numHeteroAtomA = a.getProperty(NUM_HETERO_ATOMS); Integer numHeteroAtomB = b.getProperty(NUM_HETERO_ATOMS); if (numHeteroAtomA == null) numHeteroAtomA = 0; if (numHeteroAtomB == null) numHeteroAtomB = 0; cmp = -Integer.compare(numHeteroAtomA, numHeteroAtomB); if (cmp != 0) return cmp; // more rings better return -Integer.compare(a.getAtomContainerCount(), b.getAtomContainerCount()); } };