From deebe01d80f1ffeabc641eaf7302b2103150fecf Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 17 Oct 2019 13:29:47 +0200
Subject: [PATCH] comparison of objects is more verbose

---
 .../common/comparator/AbstractComparator.java | 18 +++++++
 .../common/comparator/ColorComparator.java    |  5 +-
 .../common/comparator/DoubleComparator.java   |  4 +-
 .../common/comparator/IntegerComparator.java  |  4 +-
 .../common/comparator/StringComparator.java   |  4 +-
 .../map/layout/graphics/LayerComparator.java  | 49 ++++++++-----------
 .../layout/graphics/LayerTextComparator.java  | 21 +++++---
 7 files changed, 57 insertions(+), 48 deletions(-)
 create mode 100644 commons/src/main/java/lcsb/mapviewer/common/comparator/AbstractComparator.java

diff --git a/commons/src/main/java/lcsb/mapviewer/common/comparator/AbstractComparator.java b/commons/src/main/java/lcsb/mapviewer/common/comparator/AbstractComparator.java
new file mode 100644
index 0000000000..f3215e5a92
--- /dev/null
+++ b/commons/src/main/java/lcsb/mapviewer/common/comparator/AbstractComparator.java
@@ -0,0 +1,18 @@
+package lcsb.mapviewer.common.comparator;
+
+import java.util.Comparator;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public abstract class AbstractComparator<T> implements Comparator<T> {
+  private Logger logger = LogManager.getLogger();
+
+  public int compare(T o1, T o2, String objectName) {
+    int result = compare(o1, o2);
+    if (result != 0) {
+      logger.debug(objectName + " different: " + o1 + "\t" + o2);
+    }
+    return result;
+  }
+}
diff --git a/commons/src/main/java/lcsb/mapviewer/common/comparator/ColorComparator.java b/commons/src/main/java/lcsb/mapviewer/common/comparator/ColorComparator.java
index a788fe958a..a077704aa2 100644
--- a/commons/src/main/java/lcsb/mapviewer/common/comparator/ColorComparator.java
+++ b/commons/src/main/java/lcsb/mapviewer/common/comparator/ColorComparator.java
@@ -1,7 +1,6 @@
 package lcsb.mapviewer.common.comparator;
 
-import java.awt.*;
-import java.util.Comparator;
+import java.awt.Color;
 
 /**
  * Comparator implementation for {@link Color} class.
@@ -9,7 +8,7 @@ import java.util.Comparator;
  * @author Piotr Gawron
  * 
  */
-public class ColorComparator implements Comparator<Color> {
+public class ColorComparator extends AbstractComparator<Color> {
 
   @Override
   public int compare(Color arg0, Color arg1) {
diff --git a/commons/src/main/java/lcsb/mapviewer/common/comparator/DoubleComparator.java b/commons/src/main/java/lcsb/mapviewer/common/comparator/DoubleComparator.java
index d5ee693a0f..434ca24d0b 100644
--- a/commons/src/main/java/lcsb/mapviewer/common/comparator/DoubleComparator.java
+++ b/commons/src/main/java/lcsb/mapviewer/common/comparator/DoubleComparator.java
@@ -1,7 +1,5 @@
 package lcsb.mapviewer.common.comparator;
 
-import java.util.Comparator;
-
 import lcsb.mapviewer.common.Configuration;
 
 /**
@@ -10,7 +8,7 @@ import lcsb.mapviewer.common.Configuration;
  * @author Piotr Gawron
  * 
  */
-public class DoubleComparator implements Comparator<Double> {
+public class DoubleComparator extends AbstractComparator<Double> {
 
   /**
    * Epsilon value used for comparison of doubles.
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 793a591aa4..5a7408b7a1 100644
--- a/commons/src/main/java/lcsb/mapviewer/common/comparator/IntegerComparator.java
+++ b/commons/src/main/java/lcsb/mapviewer/common/comparator/IntegerComparator.java
@@ -1,14 +1,12 @@
 package lcsb.mapviewer.common.comparator;
 
-import java.util.Comparator;
-
 /**
  * Comparator implemented for {@link Integer} class.
  * 
  * @author Piotr Gawron
  * 
  */
-public class IntegerComparator implements Comparator<Integer> {
+public class IntegerComparator extends AbstractComparator<Integer> {
 
   @Override
   public int compare(Integer arg0, Integer arg1) {
diff --git a/commons/src/main/java/lcsb/mapviewer/common/comparator/StringComparator.java b/commons/src/main/java/lcsb/mapviewer/common/comparator/StringComparator.java
index 737c4cde77..c2447f0d93 100644
--- a/commons/src/main/java/lcsb/mapviewer/common/comparator/StringComparator.java
+++ b/commons/src/main/java/lcsb/mapviewer/common/comparator/StringComparator.java
@@ -1,7 +1,5 @@
 package lcsb.mapviewer.common.comparator;
 
-import java.util.Comparator;
-
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -12,7 +10,7 @@ import org.apache.logging.log4j.Logger;
  * @author Piotr Gawron
  * 
  */
-public class StringComparator implements Comparator<String> {
+public class StringComparator extends AbstractComparator<String> {
   /**
    * Default class logger.
    */
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerComparator.java
index fd61a1c447..53ed7c7276 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerComparator.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerComparator.java
@@ -6,6 +6,7 @@ import org.apache.logging.log4j.Logger;
 import lcsb.mapviewer.common.Comparator;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.comparator.*;
+import lcsb.mapviewer.model.graphics.PolylineData;
 import lcsb.mapviewer.model.graphics.PolylineDataComparator;
 
 /**
@@ -88,40 +89,32 @@ public class LayerComparator extends Comparator<Layer> {
       return integerComparator.compare(arg0.getOvals().size(), arg1.getOvals().size());
     }
 
-    LayerTextComparator textComparator = new LayerTextComparator(epsilon);
-    for (int i = 0; i < arg0.getTexts().size(); i++) {
-      int status = textComparator.compare(arg0.getTexts().get(i), arg1.getTexts().get(i));
-      if (status != 0) {
-        logger.debug("layer texts different");
-        return status;
-      }
+    ListComparator<LayerText> textComparator = new ListComparator<>(new LayerTextComparator(epsilon));
+    int status = textComparator.compare(arg0.getTexts(), arg1.getTexts());
+    if (status != 0) {
+      logger.debug("layer texts different");
+      return status;
     }
 
-    LayerOvalComparator ovalComparator = new LayerOvalComparator(epsilon);
-    for (int i = 0; i < arg0.getOvals().size(); i++) {
-      int status = ovalComparator.compare(arg0.getOvals().get(i), arg1.getOvals().get(i));
-      if (status != 0) {
-        logger.debug("layer ovals different");
-        return status;
-      }
+    ListComparator<LayerOval> ovalComparator = new ListComparator<>(new LayerOvalComparator(epsilon));
+    status = ovalComparator.compare(arg0.getOvals(), arg1.getOvals());
+    if (status != 0) {
+      logger.debug("layer ovals different");
+      return status;
     }
 
-    LayerRectComparator rectComparator = new LayerRectComparator(epsilon);
-    for (int i = 0; i < arg0.getRectangles().size(); i++) {
-      int status = rectComparator.compare(arg0.getRectangles().get(i), arg1.getRectangles().get(i));
-      if (status != 0) {
-        logger.debug("layer rectangles different ");
-        return status;
-      }
+    ListComparator<LayerRect> rectComparator = new ListComparator<>(new LayerRectComparator(epsilon));
+    status = rectComparator.compare(arg0.getRectangles(), arg1.getRectangles());
+    if (status != 0) {
+      logger.debug("layer rectangles different ");
+      return status;
     }
 
-    PolylineDataComparator lineComparator = new PolylineDataComparator(epsilon);
-    for (int i = 0; i < arg0.getLines().size(); i++) {
-      int status = lineComparator.compare(arg0.getLines().get(i), arg1.getLines().get(i));
-      if (status != 0) {
-        logger.debug("layer lines different ");
-        return status;
-      }
+    ListComparator<PolylineData> lineComparator = new ListComparator<>(new PolylineDataComparator(epsilon));
+    status = lineComparator.compare(arg0.getLines(), arg1.getLines());
+    if (status != 0) {
+      logger.debug("layer lines different ");
+      return status;
     }
 
     return 0;
diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerTextComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerTextComparator.java
index e656f63c47..82ffeb69a3 100644
--- a/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerTextComparator.java
+++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerTextComparator.java
@@ -1,5 +1,8 @@
 package lcsb.mapviewer.model.map.layout.graphics;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 import lcsb.mapviewer.common.Comparator;
 import lcsb.mapviewer.common.Configuration;
 import lcsb.mapviewer.common.comparator.*;
@@ -13,6 +16,8 @@ import lcsb.mapviewer.common.comparator.*;
  */
 public class LayerTextComparator extends Comparator<LayerText> {
 
+  private Logger logger = LogManager.getLogger();
+
   /**
    * Epsilon value used for comparison of doubles.
    */
@@ -44,35 +49,35 @@ public class LayerTextComparator extends Comparator<LayerText> {
     IntegerComparator integerComparator = new IntegerComparator();
 
     if (doubleComparator.compare(arg0.getWidth(), arg1.getWidth()) != 0) {
-      return doubleComparator.compare(arg0.getWidth(), arg1.getWidth());
+      return doubleComparator.compare(arg0.getWidth(), arg1.getWidth(), "width");
     }
 
     if (doubleComparator.compare(arg0.getHeight(), arg1.getHeight()) != 0) {
-      return doubleComparator.compare(arg0.getHeight(), arg1.getHeight());
+      return doubleComparator.compare(arg0.getHeight(), arg1.getHeight(), "height");
     }
 
     if (doubleComparator.compare(arg0.getX(), arg1.getX()) != 0) {
-      return doubleComparator.compare(arg0.getX(), arg1.getX());
+      return doubleComparator.compare(arg0.getX(), arg1.getX(), "x");
     }
 
     if (doubleComparator.compare(arg0.getY(), arg1.getY()) != 0) {
-      return doubleComparator.compare(arg0.getY(), arg1.getY());
+      return doubleComparator.compare(arg0.getY(), arg1.getY(), "y");
     }
 
     if (colorComparator.compare(arg0.getColor(), arg1.getColor()) != 0) {
-      return colorComparator.compare(arg0.getColor(), arg1.getColor());
+      return colorComparator.compare(arg0.getColor(), arg1.getColor(), "color");
     }
 
     if (stringComparator.compare(arg0.getNotes(), arg1.getNotes()) != 0) {
-      return stringComparator.compare(arg0.getNotes(), arg1.getNotes());
+      return stringComparator.compare(arg0.getNotes(), arg1.getNotes(), "notes");
     }
 
     if (doubleComparator.compare(arg0.getFontSize(), arg1.getFontSize()) != 0) {
-      return doubleComparator.compare(arg0.getFontSize(), arg1.getFontSize());
+      return doubleComparator.compare(arg0.getFontSize(), arg1.getFontSize(), "fontSize");
     }
 
     if (integerComparator.compare(arg0.getZ(), arg1.getZ()) != 0) {
-      return integerComparator.compare(arg0.getZ(), arg1.getZ());
+      return integerComparator.compare(arg0.getZ(), arg1.getZ(), "z");
     }
 
     return 0;
-- 
GitLab