diff --git a/commons/src/main/java/lcsb/mapviewer/common/Comparator.java b/commons/src/main/java/lcsb/mapviewer/common/Comparator.java index ed0446f4017c16bc13baf7f35c0efb21acbc4aaf..474bf8ce7ff720e5d8cd69b11c82d9da62f96e95 100644 --- a/commons/src/main/java/lcsb/mapviewer/common/Comparator.java +++ b/commons/src/main/java/lcsb/mapviewer/common/Comparator.java @@ -8,7 +8,10 @@ import org.apache.log4j.Logger; import lcsb.mapviewer.common.exception.NotImplementedException; public abstract class Comparator<T extends Object> implements java.util.Comparator<T> { - Logger logger = Logger.getLogger(Comparator.class); + /** + * Default class logger. + */ + private static Logger logger = Logger.getLogger(Comparator.class); private Class<T> comparatorClazz; private boolean exactClassMatch; private List<Comparator<? extends T>> subClassComparatorList = new ArrayList<>(); diff --git a/commons/src/main/java/lcsb/mapviewer/common/comparator/IntegerComparator.java b/commons/src/main/java/lcsb/mapviewer/common/comparator/IntegerComparator.java index 5ae981421a0b2475796e037b261d2bf0f5858da3..793a591aa4dbd60979578b98ffcaa352e9ec1b3a 100644 --- a/commons/src/main/java/lcsb/mapviewer/common/comparator/IntegerComparator.java +++ b/commons/src/main/java/lcsb/mapviewer/common/comparator/IntegerComparator.java @@ -10,18 +10,18 @@ import java.util.Comparator; */ public class IntegerComparator implements Comparator<Integer> { - @Override - public int compare(Integer arg0, Integer arg1) { - if (arg0 == null) { - if (arg1 == null) { - return 0; - } else { - return 1; - } - } else if (arg1 == null) { - return -1; - } - return arg0.compareTo(arg1); - } + @Override + public int compare(Integer arg0, Integer arg1) { + if (arg0 == null) { + if (arg1 == null) { + return 0; + } else { + return 1; + } + } else if (arg1 == null) { + return -1; + } + return arg0.compareTo(arg1); + } } diff --git a/model/src/main/java/lcsb/mapviewer/model/map/species/ElementComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/species/ElementComparator.java index e02724a703244c00854c404a6fbb2b296c7f49ce..bed6b9ef4f8997dbd948ad30f6110dade4d233ed 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/species/ElementComparator.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/species/ElementComparator.java @@ -6,6 +6,7 @@ import lcsb.mapviewer.common.Comparator; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.comparator.ColorComparator; import lcsb.mapviewer.common.comparator.DoubleComparator; +import lcsb.mapviewer.common.comparator.IntegerComparator; import lcsb.mapviewer.common.comparator.SetComparator; import lcsb.mapviewer.common.comparator.StringComparator; import lcsb.mapviewer.common.comparator.StringListComparator; @@ -83,6 +84,13 @@ public class ElementComparator extends Comparator<Element> { return doubleComparator.compare(arg0.getY(), arg1.getY()); } + IntegerComparator integerComparator = new IntegerComparator(); + if (integerComparator.compare(arg0.getZ(), arg1.getZ()) != 0) { + logger.debug("Z-index different: " + arg0.getZ() + ", " + arg1.getZ()); + return integerComparator.compare(arg0.getZ(), arg1.getZ()); + } + + if (doubleComparator.compare(arg0.getWidth(), arg1.getWidth()) != 0) { logger.debug("Width different: " + arg0.getWidth() + ", " + arg1.getWidth()); return doubleComparator.compare(arg0.getWidth(), arg1.getWidth()); diff --git a/model/src/test/java/lcsb/mapviewer/model/map/species/ElementComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/species/ElementComparatorTest.java index b4bc5fde0310f146aeb6400521a3f5deed49a10b..43c37006a98b7f1c320e39edacbb545af60b8c61 100644 --- a/model/src/test/java/lcsb/mapviewer/model/map/species/ElementComparatorTest.java +++ b/model/src/test/java/lcsb/mapviewer/model/map/species/ElementComparatorTest.java @@ -318,4 +318,38 @@ public class ElementComparatorTest { } } + @Test + public void testCompareZIndex() throws Exception { + try { + SimpleMolecule species1 = createSimpleMolecule(); + SimpleMolecule species2 = createSimpleMolecule(); + + species1.setZ(12); + assertTrue(comparator.compare(species1, species2) != 0); + assertTrue(comparator.compare(species2, species1) != 0); + + species1 = createSimpleMolecule(); + species2 = createSimpleMolecule(); + + species1.setZ(12); + species2.setZ(13); + + assertTrue(comparator.compare(species1, species2) != 0); + assertTrue(comparator.compare(species2, species1) != 0); + + species1 = createSimpleMolecule(); + species2 = createSimpleMolecule(); + + species1.setZ(12); + species2.setZ(12); + + assertEquals(0, comparator.compare(species1, species2)); + assertEquals(0, comparator.compare(species2, species1)); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + }