package com.github.bassaer.chatmessageview.utils;

import com.github.bassaer.chatmessageview.models.Message;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.Date;
import java.util.Locale;

public class MessageDateComparator implements Comparator<Object> {
    @Override
    public int compare(Object a, Object b) {
        SimpleDateFormat f = new SimpleDateFormat("MMM. dd, yyyy", Locale.US);
        Date d1 = new Date();
        Date d2 = new Date();

        if (a instanceof String) {
            try {
                d1 = f.parse((String)a);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        } else {
            final Message m1 = (Message) a;
            d1 = m1.getCreatedAt().getTime();
        }

        if (b instanceof String) {
            try {
                d2 = f.parse((String)b);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        } else {
            final Message m2 = (Message) b;
            d2 = m2.getCreatedAt().getTime();
        }

        if (d1.equals(d2)) {
            if (a instanceof String) {
                return -1;
            }
            if (b instanceof String) {
                return 1;
            }
        } else {
            return d1.compareTo(d2);
        }
        return 0;
    }
}

@@ -360,17 +360,23 @@
 (Object 
-a
+object1
 , Object
@@ -376,17 +376,23 @@
  Object 
-b
+object2
 ) %7B%0A    
@@ -413,16 +413,21 @@
 Format f
+ormat
  = new S
@@ -470,10 +470,20 @@
 ale.
-US
+getDefault()
 );%0A 
@@ -495,16 +495,19 @@
   Date d
+ate
 1 = new 
@@ -528,16 +528,19 @@
   Date d
+ate
 2 = new 
@@ -552,33 +552,39 @@
 );%0A%0A        if (
-a
+object1
  instanceof Stri
@@ -628,13 +628,21 @@
    d
+ate
 1 = f
+ormat
 .par
@@ -652,17 +652,23 @@
 (String)
-a
+object1
 );%0A     
@@ -798,16 +798,22 @@
 essage m
+essage
 1 = (Mes
@@ -818,17 +818,23 @@
 essage) 
-a
+object1
 ;%0A      
@@ -844,13 +844,22 @@
    d
+ate
 1 = m
+essage
 1.ge
@@ -897,33 +897,39 @@
  %7D%0A%0A        if (
-b
+object2
  instanceof Stri
@@ -973,13 +973,21 @@
    d
+ate
 2 = f
+ormat
 .par
@@ -997,17 +997,23 @@
 (String)
-b
+object2
 );%0A     
@@ -1143,16 +1143,22 @@
 essage m
+essage
 2 = (Mes
@@ -1163,17 +1163,23 @@
 essage) 
-b
+object2
 ;%0A      
@@ -1189,13 +1189,22 @@
    d
+ate
 2 = m
+essage
 2.ge
@@ -1251,16 +1251,19 @@
    if (d
+ate
 1.equals
@@ -1264,16 +1264,19 @@
 equals(d
+ate
 2)) %7B%0A  
@@ -1289,17 +1289,23 @@
     if (
-a
+object1
  instanc
@@ -1375,17 +1375,23 @@
     if (
-b
+object2
  instanc
@@ -1481,16 +1481,19 @@
 return d
+ate
 1.compar
@@ -1497,16 +1497,19 @@
 pareTo(d
+ate
 2);%0A    

Fix #36