diff --git a/commons/src/main/java/lcsb/mapviewer/common/comparator/CalendarComparator.java b/commons/src/main/java/lcsb/mapviewer/common/comparator/CalendarComparator.java new file mode 100644 index 0000000000000000000000000000000000000000..24b139532069eeaef6e66bebddafb252c122445c --- /dev/null +++ b/commons/src/main/java/lcsb/mapviewer/common/comparator/CalendarComparator.java @@ -0,0 +1,29 @@ +package lcsb.mapviewer.common.comparator; + +import java.util.Calendar; +import java.util.Comparator; + +/** + * Comparator implementation for {@link Calendar} class. + * + * @author Piotr Gawron + * + */ +public class CalendarComparator implements Comparator<Calendar> { + + @Override + public int compare(Calendar arg0, Calendar arg1) { + if (arg0 == null) { + if (arg1 == null) { + return 0; + } else { + return 1; + } + + } else if (arg1 == null) { + return -1; + } + return ((Long) arg0.getTimeInMillis()).compareTo(arg1.getTimeInMillis()); + } + +} diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java index fbc6f7c991900d1f49715f5fdba01ed2a0a01e32..1aebcdde3f22688d6e95322f307da95bbdcea3cd 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelComparator.java @@ -1,5 +1,6 @@ package lcsb.mapviewer.model.map.model; +import java.util.Calendar; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -9,6 +10,7 @@ import org.apache.log4j.Logger; import lcsb.mapviewer.common.Comparator; import lcsb.mapviewer.common.Configuration; +import lcsb.mapviewer.common.comparator.CalendarComparator; import lcsb.mapviewer.common.comparator.DoubleComparator; import lcsb.mapviewer.common.comparator.IntegerComparator; import lcsb.mapviewer.common.comparator.ListComparator; @@ -170,6 +172,22 @@ public class ModelComparator extends Comparator<Model> { return status; } + CalendarComparator calendarComparator = new CalendarComparator(); + + status = calendarComparator.compare(arg0.getCreationDate(), arg1.getCreationDate()); + if (status != 0) { + logger.debug("creation date different"); + return status; + } + + ListComparator<Calendar> calendarListComparator = new ListComparator<>(calendarComparator); + + status = calendarListComparator.compare(arg0.getModificationDates(), arg1.getModificationDates()); + if (status != 0) { + logger.debug("modification dates different"); + return status; + } + return 0; } diff --git a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java index 7513748badb39df467eaa32a72455ec047d3a822..e931941514fdc3a04730c6943f4aea7262173588 100644 --- a/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java +++ b/model/src/test/java/lcsb/mapviewer/model/map/model/ModelComparatorTest.java @@ -5,6 +5,8 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.Mockito.when; +import java.util.Calendar; + import org.apache.log4j.Logger; import org.junit.After; import org.junit.Before; @@ -449,4 +451,38 @@ public class ModelComparatorTest { } } + @Test + public void testCompareCreationDate() throws Exception { + try { + Model model1 = getModel(); + Model model2 = getModel(); + model1.setCreationDate(Calendar.getInstance()); + assertTrue("Models have different creation dates", comparator.compare(model1, model2) != 0); + assertTrue(comparator.compare(model2, model1) != 0); + model2.setCreationDate(model1.getCreationDate()); + assertEquals(0, comparator.compare(model1, model2)); + assertEquals(0, comparator.compare(model2, model1)); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + @Test + public void testCompareModificationDate() throws Exception { + try { + Model model1 = getModel(); + Model model2 = getModel(); + model1.addModificationDate(Calendar.getInstance()); + assertTrue("Models have different modification dates", comparator.compare(model1, model2) != 0); + assertTrue(comparator.compare(model2, model1) != 0); + model2.addModificationDate(model1.getModificationDates().get(0)); + assertEquals(0, comparator.compare(model1, model2)); + assertEquals(0, comparator.compare(model2, model1)); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + }