private Period makePeriod() { Period p = null; try { String scaleStr = getValue("scale"); // Changed name for this attribute if(scaleStr == null) scaleStr = getValue("autoperiod"); int scale = jrds.Util.parseStringNumber(scaleStr, -1); String end = getValue("end"); String begin = getValue("begin"); if(scale > 0) p = new Period(scale); else if(end != null && begin != null) p = new Period(begin, end); else p = new Period(); if(params.containsKey("periodnext")) p = p.next(); else if(params.containsKey("periodprevious")) p = p.previous(); } catch (NumberFormatException | ParseException e) { logger.error("Period cannot be parsed: " + e.getMessage()); } return p; }
@Test public void nextScale() throws ParseException { Period p = new Period().next(); logger.trace(p.getBegin()); logger.trace(p.getEnd()); long offsetDay = 86400 * 1000 - (p.getEnd().getTime() - p.getBegin().getTime()); Assert.assertTrue("offset to large: " + offsetDay, Math.abs(offsetDay) < 1100); Assert.assertEquals(0, p.getScale()); }
@Test public void nextFull() throws ParseException { begin = fullISOFORMAT.parse("2007-03-03T00:00:00"); end = fullISOFORMAT.parse("2007-03-03T23:59:59"); Period p = new Period("2007-03-02 00:00:00", "2007-03-02 23:59:59").next(); logger.trace(p.getBegin()); logger.trace(p.getEnd()); Assert.assertEquals(begin, p.getBegin()); Assert.assertEquals(end, p.getEnd()); Assert.assertEquals(0, p.getScale()); }
@Test public void nextFullWithOneSecond() throws ParseException { begin = fullISOFORMAT.parse("2007-03-03T00:00:00"); end = fullISOFORMAT.parse("2007-03-03T23:59:59"); Period p = new Period("2007-03-02 00:00:00", "2007-03-03T00:00:00").next(); logger.trace(p.getBegin()); logger.trace(p.getEnd()); Assert.assertEquals(begin, p.getBegin()); Assert.assertEquals(end, p.getEnd()); Assert.assertEquals(0, p.getScale()); }