Package er.chronic.repeaters

Source Code of er.chronic.repeaters.RepeaterHour

package er.chronic.repeaters;

import java.util.Calendar;

import er.chronic.tags.Pointer;
import er.chronic.tags.Pointer.PointerType;
import er.chronic.utils.Span;
import er.chronic.utils.Time;

public class RepeaterHour extends RepeaterUnit {
  public static final int HOUR_SECONDS = 3600; // (60 * 60);

  private Calendar _currentDayStart;

  @Override
  protected Span _nextSpan(PointerType pointer) {
    if (_currentDayStart == null) {
      if (pointer == PointerType.FUTURE) {
        _currentDayStart = Time.cloneAndAdd(Time.ymdh(getNow()), Calendar.HOUR, 1);
      }
      else if (pointer == PointerType.PAST) {
        _currentDayStart = Time.cloneAndAdd(Time.ymdh(getNow()), Calendar.HOUR, -1);
      }
      else {
        throw new IllegalArgumentException("Unable to handle pointer " + pointer + ".");
      }
    }
    else {
      int direction = (pointer == Pointer.PointerType.FUTURE) ? 1 : -1;
      _currentDayStart.add(Calendar.HOUR, direction);
    }
    return new Span(_currentDayStart, Calendar.HOUR, 1);
  }

  @Override
  protected Span _thisSpan(PointerType pointer) {
    Calendar hourStart;
    Calendar hourEnd;
    if (pointer == PointerType.FUTURE) {
      hourStart = Time.cloneAndAdd(Time.ymdhm(getNow()), Calendar.MINUTE, 1);
      hourEnd = Time.cloneAndAdd(Time.ymdh(getNow()), Calendar.HOUR, 1);
    }
    else if (pointer == PointerType.PAST) {
      hourStart = Time.ymdh(getNow());
      hourEnd = Time.ymdhm(getNow());
    }
    else if (pointer == PointerType.NONE) {
      hourStart = Time.ymdh(getNow());
      hourEnd = Time.cloneAndAdd(hourStart, Calendar.HOUR, 1);
    }
    else {
      throw new IllegalArgumentException("Unable to handle pointer " + pointer + ".");
    }
    return new Span(hourStart, hourEnd);
  }

  @Override
  public Span getOffset(Span span, float amount, Pointer.PointerType pointer) {
    int direction = (pointer == Pointer.PointerType.FUTURE) ? 1 : -1;
    // WARN: Does not use Calendar
    return span.add(direction * amount * RepeaterHour.HOUR_SECONDS);
  }

  @Override
  public int getWidth() {
    // WARN: Does not use Calendar
    return RepeaterHour.HOUR_SECONDS;
  }

  @Override
  public String toString() {
    return super.toString() + "-hour";
  }
}
TOP

Related Classes of er.chronic.repeaters.RepeaterHour

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.