public Value apply(MatchResult m) { SUTime.Temporal t = new SUTime.PartialTime(); for (FormatComponent fc:builder.pieces) { int group = fc.getGroup(); if (group > 0) { String fieldValueStr = m.group(group); if (fieldValueStr != null) { try { t = fc.updateTemporal(t, fieldValueStr); } catch (IllegalArgumentException ex) { return null; } } } } return new Expressions.PrimitiveValue("Temporal", t); }
public SUTime.Temporal updateTemporal(SUTime.Temporal t, String fieldValueStr) { DateTimeFieldType dt = getDateTimeFieldType(); if (fieldValueStr != null && dt != null) { Integer v = parseValue(fieldValueStr); if (v != null) { Partial pt = new Partial(); pt = JodaTimeUtils.setField(pt, dt, v); t = t.intersect(new SUTime.PartialTime(pt)); } else { throw new IllegalArgumentException("Cannot interpret " + fieldValueStr + " for " + fieldType); } } return t; }
private SUTime.Time resolveWithYear(int year) { // TODO: If we knew location of article, can use that information to resolve holidays better Set<de.jollyday.Holiday> holidays = holidayManager.getHolidays(year); // Try to find this holiday for (de.jollyday.Holiday h : holidays) { if (h.getPropertiesKey().equals(base.getDescriptionPropertiesKey())) { return new SUTime.PartialTime(this, new Partial(h.getDate())); } } return null; }
if (JodaTimeUtils.hasField(unsupported, DurationFieldType.months()) && unsupported.getMonths() % 3 == 0 && JodaTimeUtils.hasField(p.base, JodaTimeUtils.QuarterOfYear)) { Partial p2 = p.base.withFieldAddWrapped(JodaTimeUtils.Quarters, unsupported.getMonths() / 3); p = new PartialTime(p, p2); unsupported = unsupported.withMonths(0); p = new PartialTime(p, p2); unsupported = unsupported.withMonths(0); p = new PartialTime(p, p2); unsupported = unsupported.withYears(0); && JodaTimeUtils.hasField(p.base, DateTimeFieldType.centuryOfEra())) { Partial p2 = p.base.withField(DateTimeFieldType.centuryOfEra(), p.base.get(DateTimeFieldType.centuryOfEra()) + unsupported.getYears() / 100); p = new PartialTime(p, p2); unsupported = unsupported.withYears(0);
PartialTime res = new PartialTime(p); if (dtz != null) return res.setTimeZone(dtz); else return res;
public List<Temporal> toList() { if (JodaTimeUtils.hasField(base, DateTimeFieldType.year()) && JodaTimeUtils.hasField(base, DateTimeFieldType.monthOfYear()) && JodaTimeUtils.hasField(base, DateTimeFieldType.dayOfWeek())) { List<Temporal> list = new ArrayList<>(); Partial pt = new Partial(); pt = JodaTimeUtils.setField(pt, DateTimeFieldType.year(), base.get(DateTimeFieldType.year())); pt = JodaTimeUtils.setField(pt, DateTimeFieldType.monthOfYear(), base.get(DateTimeFieldType.monthOfYear())); pt = JodaTimeUtils.setField(pt, DateTimeFieldType.dayOfMonth(), 1); Partial candidate = JodaTimeUtils.resolveDowToDay(base, pt); if (candidate.get(DateTimeFieldType.monthOfYear()) != base.get(DateTimeFieldType.monthOfYear())) { pt = JodaTimeUtils.setField(pt, DateTimeFieldType.dayOfMonth(), 8); candidate = JodaTimeUtils.resolveDowToDay(base, pt); if (candidate.get(DateTimeFieldType.monthOfYear()) != base.get(DateTimeFieldType.monthOfYear())) { // give up return null; } } try { while (candidate.get(DateTimeFieldType.monthOfYear()) == base.get(DateTimeFieldType.monthOfYear())) { list.add(new PartialTime(this, candidate)); pt = JodaTimeUtils.setField(pt, DateTimeFieldType.dayOfMonth(), pt.get(DateTimeFieldType.dayOfMonth()) + 7); candidate = JodaTimeUtils.resolveDowToDay(base, pt); } } catch (IllegalFieldValueException ex) {} return list; } else { return null; } }
@Override public Time resolve(Time refTime, int flags) { CompositePartialTime cpt = makeComposite(new PartialTime(this, new Partial()), this); if (cpt != null) { return cpt.resolve(refTime, flags); } Time groundedBase = null; if (base == TIME_REF) { groundedBase = refTime; } else if (base != null) { groundedBase = base.resolve(refTime, flags).getTime(); } Range groundedRange = null; if (range != null) { groundedRange = range.resolve(refTime, flags).getRange(); } /* if (groundedRange == range && groundedBase == base) { return this; } */ return createTemporal(standardTemporalType, timeLabel, mod, new InexactTime(groundedBase, duration, groundedRange)); //return new InexactTime(groundedBase, duration, groundedRange); }
@Override public PartialTime reduceGranularityTo(Duration granularity) { Partial pbase = base; if (JodaTimeUtils.hasField(granularity.getJodaTimePeriod(), DurationFieldType.weeks())) { // Make sure the partial time has weeks in it if (!JodaTimeUtils.hasField(pbase, DateTimeFieldType.weekOfWeekyear())) { // Add week year to it pbase = JodaTimeUtils.resolveWeek(pbase); } } Partial p = JodaTimeUtils.discardMoreSpecificFields( pbase, JodaTimeUtils.getMostSpecific(granularity.getJodaTimePeriod()) ); return new PartialTime(this,p); }
protected PartialTime addUnsupported(Period p, int scalar) { return new PartialTime(this, JodaTimeUtils.addForce(base, p, scalar)); }
@Override public Time resolve(Time refTime, int flags) { CompositePartialTime cpt = makeComposite(new PartialTime(new Partial()), this); if (cpt != null) { return cpt.resolve(refTime, flags); } Range groundedRange = null; if (range != null) { groundedRange = range.resolve(refTime, flags).getRange(); } return createTemporal(standardTemporalType, timeLabel, new TimeWithRange(this, groundedRange)); //return new TimeWithRange(this, groundedRange); }
protected PartialTime addSupported(Period p, int scalar) { return new PartialTime(base.withPeriodAdded(p, scalar)); }
@Override protected Time _createTemporal(int n) { return new PartialTime(new Partial(DateTimeFieldType.dayOfWeek(), n)); } },
@Override protected Time _createTemporal(int n) { return new PartialTime(new Partial(JodaTimeUtils.QuarterOfYear, n)); } },
@Override protected Time _createTemporal(int n) { return new PartialTime(new Partial(DateTimeFieldType.dayOfYear(), n)); } },
public InexactTime(Partial partial) { this.base = new PartialTime(partial); this.range = base.getRange(); this.approx = true; }
public static Temporal create(Expressions.CompositeValue compositeValue) { StandardTemporalType temporalType = compositeValue.get("type"); String label = compositeValue.get("label"); String modifier = compositeValue.get("modifier"); Temporal temporal = compositeValue.get("value"); if (temporal == null) { temporal = new PartialTime(); } return SUTime.createTemporal(temporalType, label, modifier, temporal); } }
@Override protected Time _createTemporal(int n) { return new PartialTime(new Partial(DateTimeFieldType.weekOfWeekyear(), n)); } },
public PartialTime padMoreSpecificFields(Duration granularity) { Period period = null; if (granularity != null) { period = granularity.getJodaTimePeriod(); } Partial p = JodaTimeUtils.padMoreSpecificFields(base, period); return new PartialTime(this,p); }
@Override protected Time _createTemporal(int n) { return new PartialTime(new Partial(JodaTimeUtils.HalfYearOfYear, n)); } };
@Override public PartialTime setTimeZone(DateTimeZone tz) { PartialTime tzPt = new PartialTime(this, base); tzPt.dateTimeZone = tz; return tzPt; }