private static Number parseValue(String s, Class dataType) throws ParseException { if (Date.class.isAssignableFrom(dataType)) { return TimeParser.parsePeriod(s); } // TODO: add support for Number, e.g., elevation throw new IllegalArgumentException("Unsupported value type " + dataType); }
durationOffset = parsePeriod(period[0]); } else { begin = beginning(getFuzzyDate(period[0])); durationOffset = parsePeriod(period[1]); final Calendar calendar = new GregorianCalendar(); calendar.setTimeInMillis(begin.getTime() + durationOffset);
/** * Tests only the increment part of the time parameter. * * @throws ParseException if the string can't be parsed. */ public void testPeriod() throws ParseException { final long millisInDay = TimeParser.MILLIS_IN_DAY; assertEquals(millisInDay, TimeParser.parsePeriod("P1D")); assertEquals(3 * millisInDay, TimeParser.parsePeriod("P3D")); assertEquals(14 * millisInDay, TimeParser.parsePeriod("P2W")); assertEquals(8 * millisInDay, TimeParser.parsePeriod("P1W1D")); assertEquals(millisInDay, TimeParser.parsePeriod("PT24H")); assertEquals(Math.round(1.5 * millisInDay), TimeParser.parsePeriod("P1.5D")); }
Date[] range = parseTimeDuration(period); final long millisIncrement = parsePeriod(period[2]); final long startTime = range[0].getTime(); final long endTime = range[1].getTime();