@Test public void testDefaultTimeCoverageSelector() throws Exception { // Use default default value strategy: setupResourceDimensionDefaultValue(WATTEMP_FUTURE, ResourceInfo.TIME, null); Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY)); cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE)); cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND)); cal.set(Calendar.MILLISECOND, cal.getActualMinimum(Calendar.MILLISECOND)); long todayMidnight = cal.getTimeInMillis(); CoverageInfo coverage = getCatalog().getCoverageByName(WATTEMP_FUTURE.getLocalPart()); java.util.Date d = (java.util.Date) wms.getDefaultTime(coverage); assertTrue("Returns a valid Default time", d != null); assertTrue("Default time should be the closest one", d.getTime() == todayMidnight); }
@Test public void testExplicitMaxTimeCoverageSelector() throws Exception { // Use explicit default value strategy: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.MAXIMUM); setupResourceDimensionDefaultValue(WATTEMP_FUTURE, ResourceInfo.TIME, defaultValueSetting); Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY)); cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE)); cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND)); cal.set(Calendar.MILLISECOND, cal.getActualMinimum(Calendar.MILLISECOND)); // This is what the test data setup does, and it makes a difference at the // end of the month (e.g. 29 Jan) cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1); cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1); cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) + 1); long oneYearInFuture = cal.getTimeInMillis(); CoverageInfo coverage = getCatalog().getCoverageByName(WATTEMP_FUTURE.getLocalPart()); java.util.Date d = (java.util.Date) wms.getDefaultTime(coverage); assertTrue("Returns a valid Default time", d != null); assertTrue("Default time should be the biggest one", d.getTime() == oneYearInFuture); }
@Test public void testExplicitMinTimeCoverageSelector() throws Exception { // Use explicit default value strategy: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.MINIMUM); setupResourceDimensionDefaultValue(WATTEMP_FUTURE, ResourceInfo.TIME, defaultValueSetting); // From src/test/resources/org/geoserver/wms/watertemp.zip: Date expected = Date.valueOf("2008-10-31"); CoverageInfo coverage = getCatalog().getCoverageByName(WATTEMP_FUTURE.getLocalPart()); java.util.Date d = (java.util.Date) wms.getDefaultTime(coverage); assertTrue("Returns a valid Default time", d != null); assertTrue("Default time should be the smallest one", d.getTime() == expected.getTime()); }
@Test public void testExplicitCurrentTimeCoverageSelector() throws Exception { // Use explicit default value strategy: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.NEAREST); defaultValueSetting.setReferenceValue(DimensionDefaultValueSetting.TIME_CURRENT); setupResourceDimensionDefaultValue(WATTEMP_FUTURE, ResourceInfo.TIME, defaultValueSetting); Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, cal.getActualMinimum(Calendar.HOUR_OF_DAY)); cal.set(Calendar.MINUTE, cal.getActualMinimum(Calendar.MINUTE)); cal.set(Calendar.SECOND, cal.getActualMinimum(Calendar.SECOND)); cal.set(Calendar.MILLISECOND, cal.getActualMinimum(Calendar.MILLISECOND)); long todayMidnight = cal.getTimeInMillis(); CoverageInfo coverage = getCatalog().getCoverageByName(WATTEMP_FUTURE.getLocalPart()); java.util.Date d = (java.util.Date) wms.getDefaultTime(coverage); assertTrue("Returns a valid Default time", d != null); assertTrue("Default time should be the closest one", d.getTime() == todayMidnight); }
@Test public void testDefaultTimeVectorSelector() throws Exception { int fid = 1000; // Use default DimensionInfo setup, should return the "current" time: setupFeatureTimeDimension(null); FeatureTypeInfo timeWithStartEnd = getCatalog().getFeatureTypeByName(TIME_WITH_START_END.getLocalPart()); Date twoDaysAgo = addFeatureWithTimeTwoDaysAgo(fid++); this.addFeature(fid++, twoDaysAgo, Double.valueOf(0d)); java.util.Date d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the closest one", d.getTime() == twoDaysAgo.getTime()); // Add some features with timestamps in the future: Date dayAfterTomorrow = addFeatureWithTimeDayAfterTomorrow(fid++); addFeatureWithTimeOneYearFromNow(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue( "Default time should be the closest one", d.getTime() == dayAfterTomorrow.getTime()); Date todayMidnight = addFeatureWithTimeTodayMidnight(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue( "Default time should be the closest one", d.getTime() == todayMidnight.getTime()); }
@Test public void testExplicitMinTimeVectorSelector() throws Exception { int fid = 1000; // Use explicit default value DimensionInfo setup: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.MINIMUM); setupFeatureTimeDimension(defaultValueSetting); FeatureTypeInfo timeWithStartEnd = getCatalog().getFeatureTypeByName(TIME_WITH_START_END.getLocalPart()); Date smallest = Date.valueOf("2012-02-11"); Date twoDaysAgo = addFeatureWithTimeTwoDaysAgo(fid++); this.addFeature(fid++, twoDaysAgo, Double.valueOf(0d)); java.util.Date d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the smallest one", d.getTime() == smallest.getTime()); // Add some features with timestamps in the future: addFeatureWithTimeDayAfterTomorrow(fid++); addFeatureWithTimeOneYearFromNow(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the smallest one", d.getTime() == smallest.getTime()); addFeatureWithTimeTodayMidnight(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the smallest one", d.getTime() == smallest.getTime()); }
@Test public void testExplicitNearestToGivenTimeCoverageSelector() throws Exception { String preferredTimeStr = "2009-01-01T00:00:00.000Z"; // Use explicit default value strategy: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.NEAREST); defaultValueSetting.setReferenceValue(preferredTimeStr); setupResourceDimensionDefaultValue(WATTEMP_FUTURE, ResourceInfo.TIME, defaultValueSetting); // From src/test/resources/org/geoserver/wms/watertemp.zip: Date expected = Date.valueOf("2008-11-01"); CoverageInfo coverage = getCatalog().getCoverageByName(WATTEMP_FUTURE.getLocalPart()); java.util.Date d = (java.util.Date) wms.getDefaultTime(coverage); assertTrue("Returns a valid Default time", d != null); assertTrue("Default time should be the closest one", d.getTime() == expected.getTime()); }
@Test public void testExplicitMaxTimeVectorSelector() throws Exception { int fid = 1000; // Use explicit default value DimensionInfo setup: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.MAXIMUM); setupFeatureTimeDimension(defaultValueSetting); FeatureTypeInfo timeWithStartEnd = getCatalog().getFeatureTypeByName(TIME_WITH_START_END.getLocalPart()); Date twoDaysAgo = addFeatureWithTimeTwoDaysAgo(fid++); this.addFeature(fid++, twoDaysAgo, Double.valueOf(0d)); java.util.Date d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the biggest one", d.getTime() == twoDaysAgo.getTime()); // Add some features with timestamps in the future: addFeatureWithTimeDayAfterTomorrow(fid++); Date oneYearFromNow = addFeatureWithTimeOneYearFromNow(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue( "Default time should be the biggest one", d.getTime() == oneYearFromNow.getTime()); addFeatureWithTimeTodayMidnight(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue( "Default time should be the biggest one", d.getTime() == oneYearFromNow.getTime()); }
@Test public void testExplicitCurrentTimeVectorSelector() throws Exception { int fid = 1000; // Use explicit default value DimensionInfo setup: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.NEAREST); defaultValueSetting.setReferenceValue(DimensionDefaultValueSetting.TIME_CURRENT); setupFeatureTimeDimension(defaultValueSetting); FeatureTypeInfo timeWithStartEnd = getCatalog().getFeatureTypeByName(TIME_WITH_START_END.getLocalPart()); Date twoDaysAgo = addFeatureWithTimeTwoDaysAgo(fid++); this.addFeature(fid++, twoDaysAgo, Double.valueOf(0d)); java.util.Date d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the closest one", d.getTime() == twoDaysAgo.getTime()); // Add some features with timestamps in the future: Date dayAfterTomorrow = addFeatureWithTimeDayAfterTomorrow(fid++); addFeatureWithTimeOneYearFromNow(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue( "Default time should be the closest one", d.getTime() == dayAfterTomorrow.getTime()); Date todayMidnight = addFeatureWithTimeTodayMidnight(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue( "Default time should be the closest one", d.getTime() == todayMidnight.getTime()); }
@Test public void testExplicitNearestToGivenTimeVectorSelector() throws Exception { int fid = 1000; String preferredTimeStr = "2012-06-01T03:00:00.000Z"; // Use explicit default value DimensionInfo setup: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.NEAREST); defaultValueSetting.setReferenceValue(preferredTimeStr); // From src/test/resources/org/geoserver/wms/TimeElevationWithStartEnd.properties: Date expected = Date.valueOf("2012-02-12"); setupFeatureTimeDimension(defaultValueSetting); FeatureTypeInfo timeWithStartEnd = getCatalog().getFeatureTypeByName(TIME_WITH_START_END.getLocalPart()); Date twoDaysAgo = addFeatureWithTimeTwoDaysAgo(fid++); this.addFeature(fid++, twoDaysAgo, Double.valueOf(0d)); java.util.Date d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the closest one", d.getTime() == expected.getTime()); // Add some features with timestamps in the future: addFeatureWithTimeDayAfterTomorrow(fid++); addFeatureWithTimeOneYearFromNow(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the closest one", d.getTime() == expected.getTime()); addFeatureWithTimeTodayMidnight(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the closest one", d.getTime() == expected.getTime()); }
if (datetime == null) { datetime = getDefaultTime(typeInfo);
for (int i = 0; i < fixedTimes.size(); i++) { if (fixedTimes.get(i) == null) { fixedTimes.set(i, getDefaultTime(coverage));
@Test public void testExplicitFixedTimeVectorSelector() throws Exception { int fid = 1000; String fixedTimeStr = "2012-06-01T03:00:00.000Z"; // Use explicit default value DimensionInfo setup: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.FIXED); defaultValueSetting.setReferenceValue(fixedTimeStr); long fixedTime = DateUtil.parseDateTime(fixedTimeStr); setupFeatureTimeDimension(defaultValueSetting); FeatureTypeInfo timeWithStartEnd = getCatalog().getFeatureTypeByName(TIME_WITH_START_END.getLocalPart()); Date twoDaysAgo = addFeatureWithTimeTwoDaysAgo(fid++); this.addFeature(fid++, twoDaysAgo, Double.valueOf(0d)); java.util.Date d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the fixed one", d.getTime() == fixedTime); // Add some features with timestamps in the future: addFeatureWithTimeDayAfterTomorrow(fid++); addFeatureWithTimeOneYearFromNow(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the fixed one", d.getTime() == fixedTime); addFeatureWithTimeTodayMidnight(fid++); d = (java.util.Date) wms.getDefaultTime(timeWithStartEnd); assertTrue("Default time is null", d != null); assertTrue("Default time should be the fixed one", d.getTime() == fixedTime); }
@Test public void testExplicitFixedTimeCoverageSelector() throws Exception { String fixedTimeStr = "2012-06-01T03:00:00.000Z"; // Use explicit default value strategy: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.FIXED); defaultValueSetting.setReferenceValue(fixedTimeStr); setupResourceDimensionDefaultValue(WATTEMP_FUTURE, ResourceInfo.TIME, defaultValueSetting); long fixedTime = DateUtil.parseDateTime(fixedTimeStr); CoverageInfo coverage = getCatalog().getCoverageByName(WATTEMP_FUTURE.getLocalPart()); java.util.Date d = (java.util.Date) wms.getDefaultTime(coverage); assertTrue("Returns a valid Default time", d != null); assertTrue("Default time should be the fixed one", d.getTime() == fixedTime); }
@Test public void testFixedTimeRange() throws Exception { // Use explicit default value strategy: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.FIXED); defaultValueSetting.setReferenceValue("P1M/PRESENT"); setupResourceDimensionDefaultValue(WATTEMP_FUTURE, ResourceInfo.TIME, defaultValueSetting); CoverageInfo coverage = getCatalog().getCoverageByName(WATTEMP_FUTURE.getLocalPart()); // the default is a single value, as we get the nearest to the range java.util.Date curr = new java.util.Date(); Range d = (Range) wms.getDefaultTime(coverage); assertTrue("Returns a valid Default range", d != null); // check "now" it's in the same minute... should work for even the slowest build server assertDateEquals(curr, (java.util.Date) d.getMaxValue(), MILLIS_IN_MINUTE); // the beginning assertDateEquals( new Date(curr.getTime() - 30l * MILLIS_IN_DAY), (java.util.Date) d.getMinValue(), 60000); }
@Test public void testFixedRange() throws Exception { // Use explicit default value DimensionInfo setup: DimensionDefaultValueSetting defaultValueSetting = new DimensionDefaultValueSetting(); defaultValueSetting.setStrategyType(Strategy.FIXED); defaultValueSetting.setReferenceValue("P1M/PRESENT"); setupFeatureTimeDimension(defaultValueSetting); FeatureTypeInfo timeWithStartEnd = getCatalog().getFeatureTypeByName(TIME_WITH_START_END.getLocalPart()); // the default should be the range we requested java.util.Date curr = new java.util.Date(); Range d = (Range) wms.getDefaultTime(timeWithStartEnd); assertTrue("Returns a valid Default range", d != null); // check "now" it's in the same minute... should work for even the slowest build server assertDateEquals(curr, (java.util.Date) d.getMaxValue(), MILLIS_IN_MINUTE); // the beginning assertDateEquals( new Date(curr.getTime() - 30l * MILLIS_IN_DAY), (java.util.Date) d.getMinValue(), 60000); }