List of usage examples for org.apache.commons.lang.time DateUtils getFragmentInDays
public static long getFragmentInDays(Calendar calendar, int fragment)
Returns the number of days within the fragment.
From source file:net.audumla.climate.MockObserverTest.java
@Test public void testMock() { Date now = new Date(); now = DateUtils.setMonths(now, 9);/*from ww w . j av a 2 s.c o m*/ now = DateUtils.setDays(now, 1); ClimateObserver observer = new MockObserverClassDefinition(); ClimateObserverCollectionHandler aggregateObserver = new ClimateObserverCollectionHandler( observer.getSource()); aggregateObserver.addClimateObserverTop(observer); aggregateObserver.addClimateObserverTail(new DerivedClimateObserver(observer.getSource())); observer = aggregateObserver.buildClimateObserver(); ClimateData data = observer.getClimateData(now); while (data != null && DateUtils.getFragmentInDays(now, Calendar.MONTH) < 29) { // logger.debug(data.getTime()+" - " +data.getEvapotranspiration()); now = DateUtils.addDays(now, 1); data = observer.getClimateData(now); } }
From source file:net.audumla.climate.MockObserverClassDefinition.java
public MockObserverClassDefinition() { Date now = new Date(); now = DateUtils.setDays(now, 1);//from w w w. j a v a 2 s . c o m now = DateUtils.setMonths(now, 1); now = DateUtils.setYears(now, 2010); now = DateUtils.setHours(now, 0); now = DateUtils.setMinutes(now, 0); source = ClimateDataSourceFactory.getInstance().newInstance(); source.setName("Mock"); source.setElevation(20d); source.setLatitude(-37.84); source.setLongitude(144.98); for (int i = 0; i < 28; ++i) { WritableClimateData data = ClimateDataFactory.newWritableClimateData(this, getSource()); dataList.put(DateUtils.getFragmentInDays(now, Calendar.MONTH), data); data.setTime(now); if (i < 25) { data.setDataSource(ClimateDataSourceFactory.decorateInstance(source)); data.getDataSource().setType(ClimateDataSource.ClimateDataSourceType.DAILY_OBSERVATION); data.setAverageWindSpeed(10.0d + (i / 10d)); data.setMaximumTemperature(10.0d + (i / 10d)); data.setMinimumTemperature(10.0d - (i / 10d)); data.setMinimumHumidity(60d - i); data.setMaximumHumidity(60d + i); data.setRainfall(i / 10d); data.setRainfallProbability(data.getRainfall() > 0 ? 100d : 0d); data.setSunshineHours(6d + (i / 15d)); // data.setSolarRadiation(5 + (i / 5d)); data.setWindSpeedHeight(10.0); } else { data.setDataSource(ClimateDataSourceFactory.decorateInstance(source)); data.getDataSource().setType(ClimateDataSource.ClimateDataSourceType.DAILY_FORECAST); data.setAverageWindSpeed(10.0 + (i / 10d)); data.setMaximumTemperature(10.0 + (i / 10d)); data.setMinimumTemperature(10.0 - (i / 10d)); data.setRainfall(i / 10d); data.setRainfallProbability(data.getRainfall() > 0 ? 80d : 0d); data.setSunshineHours(6d + (i / 15d)); data.setWindSpeedHeight(10.0d); data.setMinimumHumidity(60d - i); data.setMaximumHumidity(60d + i); } if (i > 22 && i < 25) { now = DateUtils.setHours(now, 0); now = DateUtils.setMinutes(now, 0); for (int n = 1; n < 48; ++n) { WritableClimateObservation obs = ClimateDataFactory.newWritableClimateObservation(this, getSource()); obs.setDataSource(ClimateDataSourceFactory.decorateInstance(source)); obs.getDataSource().setType(ClimateDataSource.ClimateDataSourceType.PERIODIC_OBSERVATION); obs.setTime(now); obs.setWindSpeedHeight(10.0); obs.setWindSpeed(data.getAverageWindSpeed() / 48d); if (n > 10 && n < 21) { obs.setRainfall(data.getRainfall() * (n / 20d)); } else { obs.setRainfall(0d); } obs.setTemperature(data.getMinimumTemperature() + (((data.getMinimumTemperature() - data.getMaximumTemperature()) / 48d) * n)); obs.setHumidity(data.getMinimumHumidity() + (((data.getMinimumHumidity() - data.getMaximumHumidity()) / 48d) * n)); obs.setRainfallProbablity(obs.getRainfall() > 0 ? 100d : 0d); data.addObservation(obs); now = DateUtils.addMinutes(now, 30); } } now = DateUtils.addDays(now, 1); } }
From source file:net.audumla.climate.MockObserverClassDefinition.java
@Override public ClimateData getClimateData(Date date) { return dataList.get(DateUtils.getFragmentInDays(date, Calendar.MONTH)); }