Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.goda.chronic.repeaters;
  
  import java.util.HashMap;
  import java.util.Map;
 
 
 public abstract class RepeaterDayPortion<T> extends Repeater<T> {
   private static final String AM_PATTERN = "^ams?$";
   private static final String PM_PATTERN = "^pms?$";
   private static final String MORNING_PATTERN = "^mornings?$";
   private static final String AFTERNOON_PATTERN = "^afternoons?$";
   private static final String EVENING_PATTERN = "^evenings?$";
   private static final String NIGHT_PATTERN = "^(night|nite)s?$";
 
   private static final int FULL_DAY_SECONDS = 60 * 60 * 24;
 
   public static enum DayPortion {
     AM, PM, MORNING, AFTERNOON, EVENING, NIGHT
   }
 
   private Range _range;
 
   public RepeaterDayPortion(T type) {
     super(type);
      = createRange(type);
   }
 
   @Override
   protected MutableInterval _nextMutableInterval(PointerType pointer) {
     DateTime rangeStart;
     DateTime rangeEnd;
     if ( == null) {
       long nowSeconds = (getNow().getMillis() - Time.ymd(getNow()).getMillis()) / 1000;
       if (nowSeconds < .getBegin()) {
         if (pointer == ..) {
           rangeStart = Time.cloneAndAdd(Time.ymd(getNow()), ., (int.getBegin());
         }
         else if (pointer == ..) {
           rangeStart = Time.cloneAndAdd(Time.cloneAndAdd(Time.ymd(getNow()), ., -1), ., (int.getBegin());
         }
         else {
           throw new IllegalArgumentException("Unable to handle pointer type " + pointer);
         }
       }
       else if (nowSeconds > .getBegin()) {
         if (pointer == ..) {
           rangeStart = Time.cloneAndAdd(Time.cloneAndAdd(Time.ymd(getNow()), ., 1), ., (int).getBegin());
         }
         else if (pointer == ..) {
           rangeStart = Time.cloneAndAdd(Time.ymd(getNow()), .,(int).getBegin());
         }
         else {
           throw new IllegalArgumentException("Unable to handle pointer type " + pointer);
         }
       }
       else {
         if (pointer == ..) {
           rangeStart = Time.cloneAndAdd(Time.cloneAndAdd(Time.ymd(getNow()), ., 1), ., (int).getBegin());
         }
         else if (pointer == ..) {
           rangeStart = Time.cloneAndAdd(Time.cloneAndAdd(Time.ymd(getNow()), ., -1), .,(int.getBegin());
         }
         else {
           throw new IllegalArgumentException("Unable to handle pointer type " + pointer);
         }
       }
 
        = new MutableInterval(rangeStart, Time.cloneAndAdd(rangeStart.,(int.getWidth()));
     }
     else {
       if (pointer == ..) {
         // WARN: Does not use DateTime
                 .getEnd().plusSeconds());
       }
       else if (pointer == ..) {
         // WARN: Does not use DateTime
                 .getEnd().minusSeconds());
       }
       else {
         throw new IllegalArgumentException("Unable to handle pointer type " + pointer);
       }
     }
     return ;
   }
 
   @Override
   protected MutableInterval _thisMutableInterval(PointerType pointer) {
     DateTime rangeStart = Time.cloneAndAdd(Time.ymd(getNow()), ., (int.getBegin());
      = new MutableInterval(rangeStart, Time.cloneAndAdd(rangeStart.,(int.getWidth()));
  }
  public MutableInterval getOffset(MutableInterval mutableIntervaldouble amountPointerType pointer) {
    setStart(mutableInterval.getStart());
    MutableInterval portionMutableInterval = nextMutableInterval(pointer);
    int direction = (pointer == ..) ? 1 : -1;
    int seconds = (int) (direction * (amount - 1) * .);
    portionMutableInterval = new MutableIntervalportionMutableInterval.getStart().plusSeconds(seconds), portionMutableInterval.getEnd().plusSeconds(seconds));
    return portionMutableInterval;
  }
  public int getWidth() {
    if ( == null) {
      throw new IllegalStateException("Range has not been set");
    }
    int width;
    if ( != null) {
      width = (int) ( .getEndMillis() - .getStartMillis())/1000 ;
    }
    else {
      width = _getWidth();
    }
    return width;
  }
  
  protected abstract int _getWidth(Range range);
  
  protected abstract Range createRange(T type);
  public String toString() {
    return super.toString() + "-dayportion-" + getType();
  }
  public static EnumRepeaterDayPortion scan(Token token) {
    for (String scannerItem : scanner.keySet()) {
      if (token.getWord().matches(scannerItem)) {
        return new EnumRepeaterDayPortion(scanner.get(scannerItem));
      }
    }
    return null;
  }
New to GrepCode? Check out our FAQ X