ImpreciseDateTimeField.java 3.61 KB
package org.joda.time.field;

import org.joda.time.DateTimeFieldType;
import org.joda.time.DurationField;
import org.joda.time.DurationFieldType;

public abstract class ImpreciseDateTimeField
  extends BaseDateTimeField
{
  private final DurationField a;
  final long b;
  
  public ImpreciseDateTimeField(DateTimeFieldType paramDateTimeFieldType, long paramLong)
  {
    super(paramDateTimeFieldType);
    this.b = paramLong;
    this.a = new a(paramDateTimeFieldType.getDurationType());
  }
  
  public abstract long add(long paramLong, int paramInt);
  
  public abstract long add(long paramLong1, long paramLong2);
  
  public abstract int get(long paramLong);
  
  public int getDifference(long paramLong1, long paramLong2)
  {
    return FieldUtils.safeToInt(getDifferenceAsLong(paramLong1, paramLong2));
  }
  
  public long getDifferenceAsLong(long paramLong1, long paramLong2)
  {
    long l2;
    if (paramLong1 < paramLong2) {
      l2 = -getDifferenceAsLong(paramLong2, paramLong1);
    }
    long l1;
    do
    {
      return l2;
      l1 = (paramLong1 - paramLong2) / this.b;
      if (add(paramLong2, l1) < paramLong1)
      {
        do
        {
          l2 = l1 + 1L;
          l1 = l2;
        } while (add(paramLong2, l2) <= paramLong1);
        return l2 - 1L;
      }
      l2 = l1;
    } while (add(paramLong2, l1) <= paramLong1);
    do
    {
      l2 = l1 - 1L;
      l1 = l2;
    } while (add(paramLong2, l2) > paramLong1);
    return l2;
  }
  
  public final DurationField getDurationField()
  {
    return this.a;
  }
  
  protected final long getDurationUnitMillis()
  {
    return this.b;
  }
  
  public abstract DurationField getRangeDurationField();
  
  public abstract long roundFloor(long paramLong);
  
  public abstract long set(long paramLong, int paramInt);
  
  final class a
    extends BaseDurationField
  {
    private static final long serialVersionUID = -203813474600094134L;
    
    a(DurationFieldType paramDurationFieldType)
    {
      super();
    }
    
    public final long add(long paramLong, int paramInt)
    {
      return ImpreciseDateTimeField.this.add(paramLong, paramInt);
    }
    
    public final long add(long paramLong1, long paramLong2)
    {
      return ImpreciseDateTimeField.this.add(paramLong1, paramLong2);
    }
    
    public final int getDifference(long paramLong1, long paramLong2)
    {
      return ImpreciseDateTimeField.this.getDifference(paramLong1, paramLong2);
    }
    
    public final long getDifferenceAsLong(long paramLong1, long paramLong2)
    {
      return ImpreciseDateTimeField.this.getDifferenceAsLong(paramLong1, paramLong2);
    }
    
    public final long getMillis(int paramInt, long paramLong)
    {
      return ImpreciseDateTimeField.this.add(paramLong, paramInt) - paramLong;
    }
    
    public final long getMillis(long paramLong1, long paramLong2)
    {
      return ImpreciseDateTimeField.this.add(paramLong2, paramLong1) - paramLong2;
    }
    
    public final long getUnitMillis()
    {
      return ImpreciseDateTimeField.this.b;
    }
    
    public final int getValue(long paramLong1, long paramLong2)
    {
      return ImpreciseDateTimeField.this.getDifference(paramLong2 + paramLong1, paramLong2);
    }
    
    public final long getValueAsLong(long paramLong1, long paramLong2)
    {
      return ImpreciseDateTimeField.this.getDifferenceAsLong(paramLong2 + paramLong1, paramLong2);
    }
    
    public final boolean isPrecise()
    {
      return false;
    }
  }
}


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