DateTimeParserBucket.java 9.1 KB
package org.joda.time.format;

import java.util.Arrays;
import java.util.Locale;
import org.joda.time.Chronology;
import org.joda.time.DateTimeField;
import org.joda.time.DateTimeFieldType;
import org.joda.time.DateTimeUtils;
import org.joda.time.DateTimeZone;
import org.joda.time.DurationField;
import org.joda.time.DurationFieldType;
import org.joda.time.IllegalFieldValueException;
import org.joda.time.IllegalInstantException;

public class DateTimeParserBucket
{
  private final Chronology a;
  private final long b;
  private DateTimeZone c;
  private Integer d;
  private Locale e;
  private Integer f;
  private int g;
  private a[] h = new a[8];
  private int i;
  private boolean j;
  private Object k;
  
  @Deprecated
  public DateTimeParserBucket(long paramLong, Chronology paramChronology, Locale paramLocale)
  {
    this(paramLong, paramChronology, paramLocale, null, 2000);
  }
  
  @Deprecated
  public DateTimeParserBucket(long paramLong, Chronology paramChronology, Locale paramLocale, Integer paramInteger)
  {
    this(paramLong, paramChronology, paramLocale, paramInteger, 2000);
  }
  
  public DateTimeParserBucket(long paramLong, Chronology paramChronology, Locale paramLocale, Integer paramInteger, int paramInt)
  {
    paramChronology = DateTimeUtils.getChronology(paramChronology);
    this.b = paramLong;
    this.c = paramChronology.getZone();
    this.a = paramChronology.withUTC();
    paramChronology = paramLocale;
    if (paramLocale == null) {
      paramChronology = Locale.getDefault();
    }
    this.e = paramChronology;
    this.f = paramInteger;
    this.g = paramInt;
  }
  
  static int a(DurationField paramDurationField1, DurationField paramDurationField2)
  {
    if ((paramDurationField1 == null) || (!paramDurationField1.isSupported()))
    {
      if ((paramDurationField2 == null) || (!paramDurationField2.isSupported())) {
        return 0;
      }
      return -1;
    }
    if ((paramDurationField2 == null) || (!paramDurationField2.isSupported())) {
      return 1;
    }
    return -paramDurationField1.compareTo(paramDurationField2);
  }
  
  private void a(a parama)
  {
    Object localObject = this.h;
    int n = this.i;
    int m;
    if ((n == localObject.length) || (this.j)) {
      if (n == localObject.length)
      {
        m = n * 2;
        a[] arrayOfa = new a[m];
        System.arraycopy(localObject, 0, arrayOfa, 0, n);
        this.h = arrayOfa;
        this.j = false;
        localObject = arrayOfa;
      }
    }
    for (;;)
    {
      this.k = null;
      localObject[n] = parama;
      this.i = (n + 1);
      return;
      m = localObject.length;
      break;
    }
  }
  
  public long computeMillis()
  {
    return computeMillis(false, null);
  }
  
  public long computeMillis(boolean paramBoolean)
  {
    return computeMillis(paramBoolean, null);
  }
  
  public long computeMillis(boolean paramBoolean, String paramString)
  {
    a[] arrayOfa = this.h;
    int i1 = this.i;
    if (this.j)
    {
      arrayOfa = (a[])this.h.clone();
      this.h = arrayOfa;
      this.j = false;
    }
    if (i1 > 10) {
      Arrays.sort(arrayOfa, 0, i1);
    }
    Object localObject3;
    while (i1 > 0)
    {
      localObject3 = DurationFieldType.months().getField(this.a);
      DurationField localDurationField1 = DurationFieldType.days().getField(this.a);
      DurationField localDurationField2 = arrayOfa[0].a.getDurationField();
      if ((a(localDurationField2, (DurationField)localObject3) < 0) || (a(localDurationField2, localDurationField1) > 0)) {
        break;
      }
      saveField(DateTimeFieldType.year(), this.g);
      l1 = computeMillis(paramBoolean, paramString);
      return l1;
      m = 0;
      while (m < i1)
      {
        int n = m;
        while ((n > 0) && (arrayOfa[(n - 1)].a(arrayOfa[n]) > 0))
        {
          localObject3 = arrayOfa[n];
          arrayOfa[n] = arrayOfa[(n - 1)];
          arrayOfa[(n - 1)] = localObject3;
          n -= 1;
        }
        m += 1;
      }
    }
    long l1 = this.b;
    int m = 0;
    if (m < i1) {}
    for (;;)
    {
      try
      {
        l1 = arrayOfa[m].a(l1, paramBoolean);
        m += 1;
      }
      catch (IllegalFieldValueException localIllegalFieldValueException)
      {
        if (paramString == null) {
          continue;
        }
        localIllegalFieldValueException.prependMessage("Cannot parse \"" + paramString + '"');
        throw localIllegalFieldValueException;
      }
      l1 = ((a)localObject3).a(l1, paramBoolean);
      m += 1;
      break label457;
      paramBoolean = false;
      continue;
      Object localObject2;
      label457:
      do
      {
        do
        {
          Object localObject1;
          if (this.d != null) {
            return localObject1 - this.d.intValue();
          }
          l1 = localObject1;
          if (this.c == null) {
            break;
          }
          m = this.c.getOffsetFromLocal(localObject1);
          localObject1 -= m;
          l1 = l2;
          if (m == this.c.getOffset(l2)) {
            break;
          }
          localObject3 = "Illegal instant due to time zone offset transition (" + this.c + ')';
          localObject2 = localObject3;
          if (paramString != null) {
            localObject2 = "Cannot parse \"" + paramString + "\": " + (String)localObject3;
          }
          throw new IllegalInstantException((String)localObject2);
          l2 = l1;
        } while (!paramBoolean);
        m = 0;
        long l2 = l1;
      } while (m >= i1);
      localObject3 = localObject2[m];
      if (m == i1 - 1) {
        paramBoolean = true;
      }
    }
  }
  
  public Chronology getChronology()
  {
    return this.a;
  }
  
  public Locale getLocale()
  {
    return this.e;
  }
  
  @Deprecated
  public int getOffset()
  {
    if (this.d != null) {
      return this.d.intValue();
    }
    return 0;
  }
  
  public Integer getOffsetInteger()
  {
    return this.d;
  }
  
  public Integer getPivotYear()
  {
    return this.f;
  }
  
  public DateTimeZone getZone()
  {
    return this.c;
  }
  
  public boolean restoreState(Object paramObject)
  {
    if ((paramObject instanceof b))
    {
      b localb = (b)paramObject;
      if (this != localb.e) {}
      for (int m = 0; m != 0; m = 1)
      {
        this.k = paramObject;
        return true;
        this.c = localb.a;
        this.d = localb.b;
        this.h = localb.c;
        if (localb.d < this.i) {
          this.j = true;
        }
        this.i = localb.d;
      }
    }
    return false;
  }
  
  public void saveField(DateTimeField paramDateTimeField, int paramInt)
  {
    a(new a(paramDateTimeField, paramInt));
  }
  
  public void saveField(DateTimeFieldType paramDateTimeFieldType, int paramInt)
  {
    a(new a(paramDateTimeFieldType.getField(this.a), paramInt));
  }
  
  public void saveField(DateTimeFieldType paramDateTimeFieldType, String paramString, Locale paramLocale)
  {
    a(new a(paramDateTimeFieldType.getField(this.a), paramString, paramLocale));
  }
  
  public Object saveState()
  {
    if (this.k == null) {
      this.k = new b();
    }
    return this.k;
  }
  
  @Deprecated
  public void setOffset(int paramInt)
  {
    this.k = null;
    this.d = Integer.valueOf(paramInt);
  }
  
  public void setOffset(Integer paramInteger)
  {
    this.k = null;
    this.d = paramInteger;
  }
  
  public void setPivotYear(Integer paramInteger)
  {
    this.f = paramInteger;
  }
  
  public void setZone(DateTimeZone paramDateTimeZone)
  {
    this.k = null;
    this.c = paramDateTimeZone;
  }
  
  static final class a
    implements Comparable<a>
  {
    final DateTimeField a;
    final int b;
    final String c;
    final Locale d;
    
    a(DateTimeField paramDateTimeField, int paramInt)
    {
      this.a = paramDateTimeField;
      this.b = paramInt;
      this.c = null;
      this.d = null;
    }
    
    a(DateTimeField paramDateTimeField, String paramString, Locale paramLocale)
    {
      this.a = paramDateTimeField;
      this.b = 0;
      this.c = paramString;
      this.d = paramLocale;
    }
    
    public final int a(a parama)
    {
      parama = parama.a;
      int i = DateTimeParserBucket.a(this.a.getRangeDurationField(), parama.getRangeDurationField());
      if (i != 0) {
        return i;
      }
      return DateTimeParserBucket.a(this.a.getDurationField(), parama.getDurationField());
    }
    
    final long a(long paramLong, boolean paramBoolean)
    {
      if (this.c == null) {}
      for (paramLong = this.a.set(paramLong, this.b);; paramLong = this.a.set(paramLong, this.c, this.d))
      {
        long l = paramLong;
        if (paramBoolean) {
          l = this.a.roundFloor(paramLong);
        }
        return l;
      }
    }
  }
  
  final class b
  {
    final DateTimeZone a = DateTimeParserBucket.a(DateTimeParserBucket.this);
    final Integer b = DateTimeParserBucket.b(DateTimeParserBucket.this);
    final DateTimeParserBucket.a[] c = DateTimeParserBucket.c(DateTimeParserBucket.this);
    final int d = DateTimeParserBucket.d(DateTimeParserBucket.this);
    
    b() {}
  }
}


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