public static Recur createFromExtraString(String extra) { if (Utils.isEmpty(extra)) { return new NoRecur(); } String[] a = extra.split(","); RecurInterval interval = RecurInterval.valueOf(a[0]); HashMap<String, String> values = toMap(a); switch (interval) { case NO_RECUR: return new NoRecur(values); case EVERY_X_DAY: return new EveryXDay(values); case DAILY: return new Daily(values); case WEEKLY: return new Weekly(values); case SEMI_MONTHLY: return new SemiMonthly(values); case MONTHLY: return new Monthly(values); case YEARLY: return new Yearly(values); } return null; }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(interval.name()).append(","); sb.append("startDate=").append(startDate).append(","); sb.append("period=").append(period.name()).append(","); sb.append("periodParam=").append(periodParam).append(","); toString(sb); return sb.toString(); }
@Override public Period[] repeat(RecurInterval interval, long startDate, long periodParam) { LinkedList<Period> periods = new LinkedList<Period>(); while (periodParam-- > 0) { Period p = interval.next(startDate); startDate = p.end + 1; periods.add(p); } return periods.toArray(new Period[periods.size()]); }