DateTimeComparator.java 5.1 KB
package org.joda.time;

import java.io.Serializable;
import java.util.Comparator;
import org.joda.time.convert.ConverterManager;
import org.joda.time.convert.InstantConverter;

public class DateTimeComparator
  implements Serializable, Comparator<Object>
{
  private static final DateTimeComparator a = new DateTimeComparator(null, null);
  private static final DateTimeComparator b = new DateTimeComparator(DateTimeFieldType.dayOfYear(), null);
  private static final DateTimeComparator c = new DateTimeComparator(null, DateTimeFieldType.dayOfYear());
  private static final long serialVersionUID = -6097339773320178364L;
  private final DateTimeFieldType d;
  private final DateTimeFieldType e;
  
  protected DateTimeComparator(DateTimeFieldType paramDateTimeFieldType1, DateTimeFieldType paramDateTimeFieldType2)
  {
    this.d = paramDateTimeFieldType1;
    this.e = paramDateTimeFieldType2;
  }
  
  public static DateTimeComparator getDateOnlyInstance()
  {
    return b;
  }
  
  public static DateTimeComparator getInstance()
  {
    return a;
  }
  
  public static DateTimeComparator getInstance(DateTimeFieldType paramDateTimeFieldType)
  {
    return getInstance(paramDateTimeFieldType, null);
  }
  
  public static DateTimeComparator getInstance(DateTimeFieldType paramDateTimeFieldType1, DateTimeFieldType paramDateTimeFieldType2)
  {
    if ((paramDateTimeFieldType1 == null) && (paramDateTimeFieldType2 == null)) {
      return a;
    }
    if ((paramDateTimeFieldType1 == DateTimeFieldType.dayOfYear()) && (paramDateTimeFieldType2 == null)) {
      return b;
    }
    if ((paramDateTimeFieldType1 == null) && (paramDateTimeFieldType2 == DateTimeFieldType.dayOfYear())) {
      return c;
    }
    return new DateTimeComparator(paramDateTimeFieldType1, paramDateTimeFieldType2);
  }
  
  public static DateTimeComparator getTimeOnlyInstance()
  {
    return c;
  }
  
  private Object readResolve()
  {
    return getInstance(this.d, this.e);
  }
  
  public int compare(Object paramObject1, Object paramObject2)
  {
    Object localObject = ConverterManager.getInstance().getInstantConverter(paramObject1);
    Chronology localChronology = ((InstantConverter)localObject).getChronology(paramObject1, null);
    long l4 = ((InstantConverter)localObject).getInstantMillis(paramObject1, localChronology);
    paramObject1 = ConverterManager.getInstance().getInstantConverter(paramObject2);
    localObject = ((InstantConverter)paramObject1).getChronology(paramObject2, null);
    long l3 = ((InstantConverter)paramObject1).getInstantMillis(paramObject2, (Chronology)localObject);
    long l1 = l3;
    long l2 = l4;
    if (this.d != null)
    {
      l2 = this.d.getField(localChronology).roundFloor(l4);
      l1 = this.d.getField((Chronology)localObject).roundFloor(l3);
    }
    l4 = l1;
    l3 = l2;
    if (this.e != null)
    {
      l3 = this.e.getField(localChronology).remainder(l2);
      l4 = this.e.getField((Chronology)localObject).remainder(l1);
    }
    if (l3 < l4) {
      return -1;
    }
    if (l3 > l4) {
      return 1;
    }
    return 0;
  }
  
  public boolean equals(Object paramObject)
  {
    boolean bool2 = false;
    boolean bool1 = bool2;
    if ((paramObject instanceof DateTimeComparator))
    {
      paramObject = (DateTimeComparator)paramObject;
      if (this.d != ((DateTimeComparator)paramObject).getLowerLimit())
      {
        bool1 = bool2;
        if (this.d != null)
        {
          bool1 = bool2;
          if (!this.d.equals(((DateTimeComparator)paramObject).getLowerLimit())) {}
        }
      }
      else if (this.e != ((DateTimeComparator)paramObject).getUpperLimit())
      {
        bool1 = bool2;
        if (this.e != null)
        {
          bool1 = bool2;
          if (!this.e.equals(((DateTimeComparator)paramObject).getUpperLimit())) {}
        }
      }
      else
      {
        bool1 = true;
      }
    }
    return bool1;
  }
  
  public DateTimeFieldType getLowerLimit()
  {
    return this.d;
  }
  
  public DateTimeFieldType getUpperLimit()
  {
    return this.e;
  }
  
  public int hashCode()
  {
    int j = 0;
    int i;
    if (this.d == null)
    {
      i = 0;
      if (this.e != null) {
        break label36;
      }
    }
    for (;;)
    {
      return i + j * 123;
      i = this.d.hashCode();
      break;
      label36:
      j = this.e.hashCode();
    }
  }
  
  public String toString()
  {
    if (this.d == this.e)
    {
      localStringBuilder = new StringBuilder("DateTimeComparator[");
      if (this.d == null) {}
      for (str = "";; str = this.d.getName()) {
        return str + "]";
      }
    }
    StringBuilder localStringBuilder = new StringBuilder("DateTimeComparator[");
    if (this.d == null)
    {
      str = "";
      localStringBuilder = localStringBuilder.append(str).append("-");
      if (this.e != null) {
        break label122;
      }
    }
    label122:
    for (String str = "";; str = this.e.getName())
    {
      return str + "]";
      str = this.d.getName();
      break;
    }
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/org/joda/time/DateTimeComparator.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */