List of usage examples for org.joda.time DateTime plusDays
public DateTime plusDays(int days)
From source file:org.jgrasstools.hortonmachine.modules.hydrogeomorphology.lwrb.OmsLongwaveRadiationBalance.java
License:Open Source License
@Execute public void process() throws Exception { // transform the if (init) {//from w ww . jav a 2 s . co m outSimulated = new double[pDimMeas]; outMeasured = new double[pDimMeas]; init = false; } if (init2) { init2 = false; if (pDoReadMeas) { // outSimulated=new double[pDimMeas+1]; // outMeasured = new double[pDimMeas]; int dim = pDimMeas; double[] portate = new double[dim]; int cont_portate = 0; // System.out.println("SONOENTRATO"); // lettura portate// try { String str = new String(); str = pPathtoMeas; FileInputStream fstream = new FileInputStream(str); DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine; double aa = 0; while ((strLine = br.readLine()) != null) { aa = Double.parseDouble(strLine); portate[cont_portate] = aa; // System.out.println(aa); cont_portate += 1; } in.close(); } catch (Exception e) { // System.err.println("Errore: " + e.getMessage()); } outMeasured = portate; pDoReadMeas = false; } } // extract some attributes of the map attribute = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); double dx = attribute.get(CoverageUtilities.XRES); /* * The models use only one value of the latitude. So I have decided to * set it to the center of the raster. Extract the CRS of the * GridCoverage and transform the value of a WGS84 latitude. */ CoordinateReferenceSystem sourceCRS = inElev.getCoordinateReferenceSystem2D(); CoordinateReferenceSystem targetCRS = DefaultGeographicCRS.WGS84; DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm").withZone(DateTimeZone.UTC); DateTime startcurrentDatetime = formatter.parseDateTime(tStartDate); DateTime endcurrentDatetime = formatter.parseDateTime(tEndDate); long diff = (endcurrentDatetime.getMillis() - startcurrentDatetime.getMillis()) / (1000 * 60 * 60); DateTime array[] = new DateTime[(int) diff]; if (doDaily == false) { for (int i = 0; i < array.length; i++) { array[i] = startcurrentDatetime.plusHours(i); } } if (doDaily == true) { for (int i = 0; i < array.length; i++) { array[i] = startcurrentDatetime.plusDays(i); } } if (workWithRaster == false) { List<Double> xStationList = new ArrayList<Double>(); List<Double> yStationList = new ArrayList<Double>(); List<Double> zStationList = new ArrayList<Double>(); List<Double> iddList = new ArrayList<Double>(); List<Double> albedoList = new ArrayList<Double>(); /* * counter for the number of station with measured value !=0. */ /* * Store the station coordinates and measured data in the array. */ FeatureIterator<SimpleFeature> stationsIter = inStations.features(); try { while (stationsIter.hasNext()) { SimpleFeature feature = stationsIter.next(); double zzz = 0; int id = ((Number) feature.getAttribute(fStationsid)).intValue(); if (fStationsAlb != null) { double albedo = ((Number) feature.getAttribute(fStationsAlb)).doubleValue(); albedoList.add(albedo); } Coordinate coordinate = ((Geometry) feature.getDefaultGeometry()).getCentroid().getCoordinate(); xStationList.add(coordinate.x); yStationList.add(coordinate.y); zStationList.add(zzz); iddList.add((double) id); } } finally { stationsIter.close(); } int nStaz = xStationList.size(); /* * The coordinates of the station points plus in last position a * place for the coordinate of the point to interpolate. */ xStation = new double[nStaz]; yStation = new double[nStaz]; zStation = new double[nStaz]; idStation = new int[nStaz]; colnumvetVect = new int[nStaz]; rownumvetVect = new int[nStaz]; albedoStation = new double[nStaz]; if (nStaz != 0) { for (int i = 0; i < nStaz; i++) { double xTmp = xStationList.get(i); double yTmp = yStationList.get(i); double zTmp = zStationList.get(i); int idTmp = iddList.get(i).intValue(); xStation[i] = xTmp; yStation[i] = yTmp; zStation[i] = zTmp; idStation[i] = idTmp; if (albedoList.size() != 0l) { albedoStation[i] = albedoList.get(i); } else { if (!isNovalue(pAlphag)) { albedoStation[i] = pAlphag; } else { albedoStation[i] = 0.5; } } } } MathTransform transf = inElev.getGridGeometry().getCRSToGrid2D(); for (int i = 0; i < xStation.length; i++) { DirectPosition point = new DirectPosition2D(sourceCRS, xStation[i], yStation[i]); DirectPosition gridPoint = transf.transform(point, null); colnumvetVect[i] = (int) gridPoint.getCoordinate()[0]; rownumvetVect[i] = (int) gridPoint.getCoordinate()[1]; System.out.println( idStation[i] + " " + gridPoint.getCoordinate()[0] + " " + gridPoint.getCoordinate()[1]); } } double srcPts[] = new double[] { attribute.get(CoverageUtilities.EAST), attribute.get(CoverageUtilities.SOUTH) }; Coordinate source = new Coordinate(srcPts[0], srcPts[1]); Point[] so = new Point[] { GeometryUtilities.gf().createPoint(source) }; CrsUtilities.reproject(sourceCRS, targetCRS, so); // the latitude value lambda = Math.toRadians(so[0].getY()); CoverageUtilities.getRegionParamsFromGridCoverage(inElev); RenderedImage pitTmpRI = inElev.getRenderedImage(); width = pitTmpRI.getWidth(); height = pitTmpRI.getHeight(); pitWR = CoverageUtilities.replaceNovalue(pitTmpRI, -9999.0); pitTmpRI = null; WritableRaster insolationWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); WritableRaster staoWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); WritableRaster diffuseWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); WritableRaster gradientWR = normalVector(pitWR, dx); // vetgio = new double[array.length]; if (workWithRaster) { resultstaoWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); resultinsWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); resultdiffWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); for (int i = 0; i < array.length; i++) { DateTime currentime = array[i]; calcInsolation(lambda, pitWR, gradientWR, insolationWR, staoWR, diffuseWR, dx, currentime); // pm.worked(i - startDay); } } if (workWithRaster == false) { OmsTimeSeriesIteratorReader reader_temp = new OmsTimeSeriesIteratorReader(); if (!((inPathToTemp == null))) { reader_temp.file = inPathToTemp; reader_temp.idfield = "ID"; reader_temp.tStart = tStartDate; reader_temp.tEnd = tEndDate; reader_temp.fileNovalue = "-9999"; reader_temp.tTimestep = inTimestep; } OmsTimeSeriesIteratorReader reader_umi = new OmsTimeSeriesIteratorReader(); if (!(inPathToHumidity == null)) { reader_umi.file = inPathToHumidity; reader_umi.idfield = "ID"; reader_umi.tStart = tStartDate; reader_umi.tEnd = tEndDate; reader_umi.fileNovalue = "-9999"; reader_umi.tTimestep = inTimestep; } OmsTimeSeriesIteratorReader reader_soiltemp = new OmsTimeSeriesIteratorReader(); if (!(inPathToSoilTemp == null)) { reader_soiltemp.file = inPathToSoilTemp; reader_soiltemp.idfield = "ID"; reader_soiltemp.tStart = tStartDate; reader_soiltemp.tEnd = tEndDate; reader_soiltemp.fileNovalue = "-9999"; reader_soiltemp.tTimestep = inTimestep; } OmsTimeSeriesIteratorReader reader_clear = new OmsTimeSeriesIteratorReader(); if (!(inPathToClearness == null)) { reader_clear.file = inPathToClearness; reader_clear.idfield = "ID"; reader_clear.tStart = tStartDate; reader_clear.tEnd = tEndDate; reader_clear.fileNovalue = "-9999"; reader_clear.tTimestep = inTimestep; } OmsTimeSeriesIteratorWriter writer4 = new OmsTimeSeriesIteratorWriter(); OmsTimeSeriesIteratorWriter writer5 = new OmsTimeSeriesIteratorWriter(); OmsTimeSeriesIteratorWriter writer6 = new OmsTimeSeriesIteratorWriter(); writer4.file = pathToLongwaveDownwelling; writer5.file = pathToLongwaveUpwelling; writer6.file = pathToLongwave; writer4.tStart = tStartDate; writer5.tStart = tStartDate; writer6.tStart = tStartDate; writer4.tTimestep = inTimestep; writer5.tTimestep = inTimestep; writer6.tTimestep = inTimestep; for (int i = 0; i < array.length; i++) { outHMlongwaveDownwelling = new HashMap<Integer, double[]>(); outHMlongwaveUpwelling = new HashMap<Integer, double[]>(); outHMlongwave = new HashMap<Integer, double[]>(); System.out.println(" data=" + array[i]); DateTime currentime = array[i]; if (!(inPathToTemp == null)) { reader_temp.nextRecord(); tempvalues = reader_temp.outData; } if (!(inPathToClearness == null)) { reader_clear.nextRecord(); clearindexvalue = reader_clear.outData; } if (!(inPathToHumidity == null)) { reader_umi.nextRecord(); umivalues = reader_umi.outData; } if (!(inPathToSoilTemp == null)) { reader_soiltemp.nextRecord(); soiltempvalues = reader_soiltemp.outData; } calcInsolation(lambda, pitWR, gradientWR, insolationWR, staoWR, diffuseWR, dx, currentime); writer4.inData = outHMlongwaveDownwelling; writer4.writeNextLine(); writer5.inData = outHMlongwaveUpwelling; writer5.writeNextLine(); writer6.inData = outHMlongwave; writer6.writeNextLine(); // pm.worked(i - startDay); } if (pathToLongwaveDownwelling != null) { writer4.close(); } if (pathToLongwaveUpwelling != null) { writer5.close(); } if (pathToLongwave != null) { writer6.close(); } } }
From source file:org.jimcat.gui.histogram.image.DateTakenDimension.java
License:Open Source License
/** * this methode will reload statistical information from the library * /*from w w w.ja va 2 s . c om*/ * @param library */ private void reloadValues(ImageLibrary library) { // get images List<Image> images = new ArrayList<Image>(library.getAll()); // 1) find min / max date int i = 0; DateTime min = null; DateTime max = null; while (min == null && i < images.size()) { min = getDateTaken(images.get(i)); max = min; i++; } if (min == null || max == null) { // result is an empty vector values = new int[RESOLUTION_COUNT][0]; maxValues = new int[RESOLUTION_COUNT]; minDate = null; fireStructureChangedEvent(); return; } // iterate through images for (; i < images.size(); i++) { Image img = images.get(i); DateTime date = getDateTaken(img); if (date != null && min.isAfter(date)) { min = date; } if (date != null && max.isBefore(date)) { max = date; } } // save min dates // get references // must be a pure day DateTime dayRef = new DateTime(2000, 1, 1, 0, 0, 0, 0); // must be a monday DateTime weekRef = new DateTime(2000, 1, 3, 0, 0, 0, 0); // must be the first of any month DateTime monthRef = dayRef; minDate = new DateTime[RESOLUTION_COUNT]; minDate[DAYS] = dayRef.plusDays(Days.daysBetween(dayRef, min).getDays()); minDate[WEEKS] = weekRef.plusWeeks(Weeks.weeksBetween(weekRef, min).getWeeks()); minDate[MONTHS] = monthRef.plusMonths(Months.monthsBetween(monthRef, min).getMonths()); // 2) build arrays values = new int[RESOLUTION_COUNT][]; values[DAYS] = new int[Days.daysBetween(minDate[DAYS], max).getDays() + 1]; values[WEEKS] = new int[Weeks.weeksBetween(minDate[WEEKS], max).getWeeks() + 1]; values[MONTHS] = new int[Months.monthsBetween(minDate[MONTHS], max).getMonths() + 1]; // 3) fill in values for (Image img : images) { // extract date DateTime date = getDateTaken(img); if (date != null) { values[DAYS][Days.daysBetween(minDate[DAYS], date).getDays()]++; values[WEEKS][Weeks.weeksBetween(minDate[WEEKS], date).getWeeks()]++; values[MONTHS][Months.monthsBetween(minDate[MONTHS], date).getMonths()]++; } } // 4) get max values maxValues = new int[RESOLUTION_COUNT]; for (int j = 0; j < RESOLUTION_COUNT; j++) { maxValues[j] = values[j][0]; for (int k = 1; k < values[j].length; k++) { if (maxValues[j] < values[j][k]) { maxValues[j] = values[j][k]; } } } // 6) notify listners fireStructureChangedEvent(); }
From source file:org.jlucrum.realtime.strategy.SimpleIndicatorsOnlyStrategy.java
License:Open Source License
@Override public MarketSignal makeDecision(HashMap<String, MethodResults> inputs) { bestRsi = Double.MAX_VALUE;// w w w. j a v a2 s. c o m MethodResults res = inputs.get("TaLibRSI"); HashMap<String, Double> indResults = res.getResults(); for (Map.Entry<String, Double> entry : indResults.entrySet()) { if (entry.getKey().compareTo("Nokia Oyj") == 0) continue; double rsi = entry.getValue(); if (rsi > 40) continue; double freq = inputs.get("StatisticsFreqPeriod").getResults().get(entry.getKey()); if (freq < -0.04f || freq >= 0f) { System.out.printf("rejected freq for:%s is :%f\n", entry.getKey(), freq); continue; } if (bestRsi > freq * rsi) { System.out.printf("Accpeted : rsi:%f freq: %f\n", rsi, freq); bestRsi = freq * rsi; stockToBuy = entry.getKey(); } } if (bestRsi == Double.MIN_VALUE) { return null; } DateTime dateToFetch = res.getDate().plusDays(1); while (DayisHoliday.isHoliday(dateToFetch)) { dateToFetch = dateToFetch.plusDays(1); } if (res.getDate().isBefore(dateToFetch.plusDays(1))) { return null; } DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MM-yyyy"); System.out.printf("price to buy for date %s '%s'\n", formatter.print(dateToFetch), stockToBuy); //fixme:ensure that day corresponds to processing day! double price = fetcher.fetchData(stockToBuy, dateToFetch, "CLOSE").doubleValue(); final MarketSignal signal = new MarketSignal(); signal.setStockName(stockToBuy); signal.setPriceToBuy(price); return signal; }
From source file:org.jlucrum.realtime.training.TrainManager.java
License:Open Source License
private DateTime performStrategyTest(HashMap<String, MethodResults> inputs, DateTime currentDate) { boolean sold = false; MarketSignal signal = strategy.makeDecision(inputs); if (signal != null) { epRuntime.sendEvent(signal); // Buying BigDecimal maxWin = BigDecimal.valueOf(signal.getPriceToBuy()) .multiply(BigDecimal.valueOf(config.maxWin)); BigDecimal maxLoss = BigDecimal.valueOf(signal.getPriceToBuy()) .multiply(BigDecimal.valueOf(config.maxLost)); while (!sold) { currentDate = currentDate.plusDays(1); if (currentDate.isAfter(portfolio.inputEndingDate.minusDays(1))) { System.out.printf("%s is done!\n", this.getClass().getSimpleName()); return null; }//from w ww . jav a 2s . c o m DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MM-yyyy"); System.out.printf("Train manager %s\n", formatter.print(currentDate)); BigDecimal price = fetcher.fetchData(signal.getStockName(), currentDate, "CLOSE"); if (price == null) { continue; } if (price.compareTo(maxWin) > 0 || price.compareTo(maxLoss) <= 0) { sold = true; signal.setPriceToSell(price.doubleValue()); epRuntime.sendEvent(signal); // Buying } } } currentDate = currentDate.plusDays(1); return currentDate; }
From source file:org.jmxtrans.embedded.samples.graphite.BasicAppMetricsSimulator.java
License:Open Source License
public void generateLoad(GraphiteDataInjector graphiteDataInjector) throws Exception { int dataPointIntervalInSeconds = 30; int scaleFactor = 2; TimeSeries timeSeries = new TimeSeries("www.requestsCounter"); DateTime now = new DateTime(); DateTime end = now.plusDays(2); DateTime date = now.minusDays(1);/*w w w . jav a 2 s . co m*/ int integratedValue = 0; while (date.isBefore(end)) { integratedValue += dataPointIntervalInSeconds * scaleFactor; timeSeries.add(new Second(date.toDate()), integratedValue); date = date.plusSeconds(dataPointIntervalInSeconds); } graphiteDataInjector.exportMetrics(timeSeries); }
From source file:org.jmxtrans.embedded.samples.graphite.CocktailAppMetricsSimulator.java
License:Open Source License
public void generateLoad(GraphiteDataInjector graphiteDataInjector) throws Exception { TimeSeries rawIntegratedTimeSeries = new TimeSeries("sales.integrated.raw"); TimeSeries rawTimeSeries = new TimeSeries("sales.raw"); DateTime now = new DateTime(); DateTime end = now.plusDays(3); DateTime date = now.minusDays(15);//from w w w. java2 s . co m DateTime twoDaysAfterBegin = date.plusDays(2); double serverFairness = 1.05; int integratedValue = 0; MathContext mathContext = new MathContext(1, RoundingMode.CEILING); int randomFactor = 0; while (date.isBefore(end)) { if (rawIntegratedTimeSeries.getItemCount() % 120 == 0) { randomFactor = 10 + random.nextInt(2); } int weekGrowthFactor = 6 - (now.getWeekOfWeekyear() - date.getWeekOfWeekyear()); int value = new BigDecimal(randomFactor) // random factor .multiply(new BigDecimal(10)) // go to cents of USD .multiply(new BigDecimal(weekGrowthFactor)) .multiply(new BigDecimal(hourlyDistribution[date.getHourOfDay()])) .multiply(new BigDecimal(weeklyDistribution[date.getDayOfWeek()])) .divide(new BigDecimal(20), mathContext).intValue(); // split hourly value in minutes integratedValue += value; for (int i1 = 0; i1 < 3; i1++) { Second period = new Second(date.toDate()); rawTimeSeries.add(period, value); rawIntegratedTimeSeries.add(period, integratedValue); date = date.plusSeconds(30); } } rawIntegratedTimeSeries = MovingAverage.createMovingAverage(rawIntegratedTimeSeries, rawIntegratedTimeSeries.getKey().toString(), 60 * 7, 0); rawTimeSeries = MovingAverage.createMovingAverage(rawTimeSeries, rawTimeSeries.getKey().toString(), 60 * 7, 0); // SALES - REVENUE TimeSeries salesRevenueInCentsCounter = new TimeSeries("sales.revenueInCentsCounter"); TimeSeries salesRevenueInCentsCounterSrv1 = new TimeSeries("srv1.sales.revenueInCentsCounter"); TimeSeries salesRevenueInCentsCounterSrv2 = new TimeSeries("srv2.sales.revenueInCentsCounter"); int resetValue2ToZeroOffset = 0; // reset value 2 after 3 days of metrics for (int i = 0; i < rawIntegratedTimeSeries.getItemCount(); i++) { TimeSeriesDataItem dataItem = rawIntegratedTimeSeries.getDataItem(i); int value = dataItem.getValue().intValue(); // value1 is 5% higher to value2 due to a 'weirdness' in the load balancing int value1 = Math.min((int) (value * serverFairness / 2), value); { // simulate srv2 restart DateTime currentDate = new DateTime(dataItem.getPeriod().getStart()); boolean shouldResetValue2 = resetValue2ToZeroOffset == 0 && currentDate.getDayOfYear() == twoDaysAfterBegin.getDayOfYear(); if (shouldResetValue2) { resetValue2ToZeroOffset = value - value1; System.out.println("reset value2 of " + resetValue2ToZeroOffset + " at " + currentDate); } } int value2 = value - value1 - resetValue2ToZeroOffset; salesRevenueInCentsCounter.add(dataItem.getPeriod(), value); salesRevenueInCentsCounterSrv1.add(dataItem.getPeriod(), value1); salesRevenueInCentsCounterSrv2.add(dataItem.getPeriod(), value2); } graphiteDataInjector.exportMetrics(salesRevenueInCentsCounter, salesRevenueInCentsCounterSrv1, salesRevenueInCentsCounterSrv2); // SALES - ITEMS TimeSeries salesItemsCounter = new TimeSeries("sales.itemsCounter"); TimeSeries salesItemsCounterSrv1 = new TimeSeries("srv1.sales.itemsCounter"); TimeSeries salesItemsCounterSrv2 = new TimeSeries("srv2.sales.itemsCounter"); for (int i = 0; i < rawIntegratedTimeSeries.getItemCount(); i++) { RegularTimePeriod period = salesRevenueInCentsCounter.getDataItem(i).getPeriod(); int ordersPriceInCents1 = salesRevenueInCentsCounterSrv1.getDataItem(i).getValue().intValue(); int ordersPriceInCents2 = salesRevenueInCentsCounterSrv2.getDataItem(i).getValue().intValue(); int value1 = ordersPriceInCents1 / 600; int value2 = ordersPriceInCents2 / 600; salesItemsCounter.add(period, value1 + value2); salesItemsCounterSrv1.add(period, value1); salesItemsCounterSrv2.add(period, value2); } graphiteDataInjector.exportMetrics(salesItemsCounter, salesItemsCounterSrv1, salesItemsCounterSrv2); // WEBSITE - VISITORS TimeSeries newVisitorsCounterSrv1 = new TimeSeries("srv1.website.visitors.newVisitorsCounter"); TimeSeries newVisitorsCounterSrv2 = new TimeSeries("srv1.website.visitors.newVisitorsCounter"); TimeSeries activeVisitorsGaugeSrv1 = new TimeSeries("srv1.website.visitors.activeGauge"); TimeSeries activeVisitorsGaugeSrv2 = new TimeSeries("srv2.website.visitors.activeGauge"); int integratedValue1 = 0; int integratedValue2 = 0; float activeVisitorsFactor = 1; for (int i = 0; i < rawTimeSeries.getItemCount(); i++) { TimeSeriesDataItem dataItem = rawTimeSeries.getDataItem(i); RegularTimePeriod period = dataItem.getPeriod(); int value = dataItem.getValue().intValue() / 20; integratedValue += value; int value1 = Math.min((int) (value * serverFairness / 2), value); integratedValue1 += value1; int value2 = value - value1; integratedValue2 += value2; newVisitorsCounterSrv1.add(period, integratedValue1); newVisitorsCounterSrv2.add(period, integratedValue2); if (i % 120 == 0) { activeVisitorsFactor = (10 + random.nextInt(3)) / 10; } activeVisitorsGaugeSrv1.add(period, Math.floor(value1 * activeVisitorsFactor)); activeVisitorsGaugeSrv2.add(period, Math.floor(value2 * activeVisitorsFactor)); } graphiteDataInjector.exportMetrics(newVisitorsCounterSrv1, newVisitorsCounterSrv2, activeVisitorsGaugeSrv1, activeVisitorsGaugeSrv2); }
From source file:org.jmxtrans.samples.graphite.GraphiteDataInjector.java
License:Open Source License
public void generateLoad() throws Exception { System.out.println("Inject data on Graphite server " + this.graphiteHost); TimeSeries timeSeries = new TimeSeries("shopping-cart.raw"); DateTime now = new DateTime(); DateTime end = now.plusDays(1); DateTime date = now.minusDays(15);//w ww. ja v a 2s . co m DateTime twoDaysAfterBegin = date.plusDays(2); int integratedValue = 0; MathContext mathContext = new MathContext(1, RoundingMode.CEILING); int randomFactor = 0; while (date.isBefore(end)) { if (timeSeries.getItemCount() % 120 == 0) { randomFactor = 10 + random.nextInt(2); } int weekGrowthFactor = 6 - (now.getWeekOfWeekyear() - date.getWeekOfWeekyear()); int value = new BigDecimal(randomFactor) // random factor .multiply(new BigDecimal(10)) // go to cents of USD .multiply(new BigDecimal(weekGrowthFactor)) .multiply(new BigDecimal(hourlyDistribution[date.getHourOfDay()])) .multiply(new BigDecimal(weeklyDistribution[date.getDayOfWeek()])) .divide(new BigDecimal(20), mathContext).intValue(); // split hourly value in minutes integratedValue += value; for (int i1 = 0; i1 < 3; i1++) { timeSeries.add(new Minute(date.toDate()), integratedValue); date = date.plusMinutes(1); } } TimeSeries ordersPriceInCentsTimeSeries = MovingAverage.createMovingAverage(timeSeries, "shopping-cart.OrdersPriceInCents", 60 * 7, 0); TimeSeries ordersPriceInCentsSrv1TimeSeries = new TimeSeries("srv1.shopping-cart.OrdersPriceInCents"); TimeSeries ordersPriceInCentsSrv2TimeSeries = new TimeSeries("srv2.shopping-cart.OrdersPriceInCents"); int resetValue2ToZeroOffset = 0; // reset value 2 after 3 days of metrics for (int i = 0; i < ordersPriceInCentsTimeSeries.getItemCount(); i++) { TimeSeriesDataItem dataItem = ordersPriceInCentsTimeSeries.getDataItem(i); int value = dataItem.getValue().intValue(); // value1 is 5% higher to value2 due to a 'weirdness' in the load balancing int value1 = Math.min((int) (value * 1.05 / 2), value); { // simulate srv2 restart DateTime currentDate = new DateTime(dataItem.getPeriod().getStart()); boolean shouldResetValue2 = resetValue2ToZeroOffset == 0 && currentDate.getDayOfYear() == twoDaysAfterBegin.getDayOfYear(); if (shouldResetValue2) { resetValue2ToZeroOffset = value - value1; System.out.println("reset value2 of " + resetValue2ToZeroOffset + " at " + currentDate); } } int value2 = value - value1 - resetValue2ToZeroOffset; // System.out.println("value=" + value + ", value1=" + value1 + ", value2=" + value2); ordersPriceInCentsSrv1TimeSeries.add(dataItem.getPeriod(), value1); ordersPriceInCentsSrv2TimeSeries.add(dataItem.getPeriod(), value2); } TimeSeries orderItemsCountTimeSeries = new TimeSeries("shopping-cart.OrderItemsCount"); TimeSeries orderItemsCountSrv1TimeSeries = new TimeSeries("srv1.shopping-cart.OrderItemsCount"); TimeSeries orderItemsCountSrv2TimeSeries = new TimeSeries("srv2.shopping-cart.OrderItemsCount"); for (int i = 0; i < ordersPriceInCentsTimeSeries.getItemCount(); i++) { RegularTimePeriod period = ordersPriceInCentsTimeSeries.getDataItem(i).getPeriod(); int ordersPriceInCents1 = ordersPriceInCentsSrv1TimeSeries.getDataItem(i).getValue().intValue(); int ordersPriceInCents2 = ordersPriceInCentsSrv2TimeSeries.getDataItem(i).getValue().intValue(); int value1 = ordersPriceInCents1 / 600; int value2 = ordersPriceInCents2 / 600; orderItemsCountTimeSeries.add(period, value1 + value2); orderItemsCountSrv1TimeSeries.add(period, value1); orderItemsCountSrv2TimeSeries.add(period, value2); } exportMetrics(ordersPriceInCentsTimeSeries, ordersPriceInCentsSrv1TimeSeries, ordersPriceInCentsSrv2TimeSeries, ordersPriceInCentsTimeSeries, orderItemsCountTimeSeries, orderItemsCountSrv1TimeSeries, orderItemsCountSrv2TimeSeries); TimeSeries activeSrv1Visitors = new TimeSeries("srv1.visitors.currentActive"); TimeSeries activeSrv2Visitors = new TimeSeries("srv1.visitors.currentActive"); }
From source file:org.jobscheduler.dashboard.web.rest.SchedulerHistoryResource.java
License:Apache License
/** * Build one serie with number of jobs between startDate and endDate (job in * error or not)/*from w w w. jav a 2 s. c o m*/ * * @param startTime * @param endTime * @param model * @return */ @RequestMapping("/nbJobsBetween2Date") @ApiOperation(value = "Build one serie with number of jobs between startDate and endDate") public @ResponseBody List<SerieDTO> nbJobsBetween2Date( @RequestParam(value = "startDate", required = false) @DateTimeFormat(pattern = "yyyy/MM/dd") DateTime startChartDT, @RequestParam(value = "endDate", required = false) @DateTimeFormat(pattern = "yyyy/MM/dd") DateTime endChartDT, @RequestParam(value = "jobInError", required = false) Boolean jobInError, Model model) { if ((startChartDT == null) || (endChartDT == null)) return null; Days days = Days.daysBetween(startChartDT, endChartDT); if (days.getDays() < 0) return new ArrayList<SerieDTO>(0); // Create 1 serie with point per day List<SerieDTO> series = new ArrayList<SerieDTO>(1); SerieDTO serie = new SerieDTO(); List<PointDTO> points = new ArrayList<PointDTO>(days.getDays() + 1); for (int i = 0; i < days.getDays() + 1; i++) { PointDTO point = new PointDTO(); point.setX(startChartDT.plusDays(i).getMillis()); Long nbJobs; if (jobInError) { nbJobs = schedulerHistoryRepository.countByStartTimeBetweenAndError( new Timestamp(startChartDT.plusDays(i).getMillis()), new Timestamp(startChartDT.plusDays(i + 1).getMillis()), new BigDecimal(1)); } else { nbJobs = schedulerHistoryRepository.countByStartTimeBetween( new Timestamp(startChartDT.plusDays(i).getMillis()), new Timestamp(startChartDT.plusDays(i + 1).getMillis())); } point.setY(nbJobs); points.add(point); } String inError = ""; if (jobInError) inError = "in Error"; serie.setKey("Number of jobs " + inError + " between " + startChartDT.toString(fmt) + " and " + endChartDT.toString(fmt)); serie.setValues(points); series.add(serie); return series; }
From source file:org.jobscheduler.dashboard.web.rest.SchedulerHistoryResource.java
License:Apache License
/** * Build series with long running jobs/*from w w w .java 2 s. co m*/ * * @param startTime * @param endTime * @param model * @return */ @RequestMapping("/longRunningJobsBetween2Date") @ApiOperation(value = "Build series with the most long running jobs between startDate and endDate") public @ResponseBody List<SerieDTO> longRunningJobsBetween2Date( @RequestParam(value = "startDate", required = false) @DateTimeFormat(pattern = "yyyy/MM/dd") DateTime startChartDT, @RequestParam(value = "endDate", required = false) @DateTimeFormat(pattern = "yyyy/MM/dd") DateTime endChartDT, Model model) { if ((startChartDT == null) || (endChartDT == null)) return null; Days days = Days.daysBetween(startChartDT, endChartDT); if (days.getDays() < 0) return new ArrayList<SerieDTO>(0); // 1 serie by day List<SerieDTO> series = new ArrayList<SerieDTO>(days.getDays()); for (int i = 0; i < days.getDays() + 1; i++) { // 1 serie contains the most long running jobs SerieDTO serie = new SerieDTO(); serie.setKey("Serie " + i + " in seconds"); List<PointDTO> points = new ArrayList<PointDTO>(); serie.setValues(points); series.add(serie); } for (int i = 0; i < days.getDays() + 1; i++) { List<SchedulerHistory> schedulerHistories = schedulerHistoryRepository .findByStartTimeBetweenAndDuringTime(new Timestamp(startChartDT.getMillis()), new Timestamp(startChartDT.plusDays(i).getMillis()), new PageRequest(0, days.getDays() + 1)); SerieDTO serie = series.get(days.getDays() - i); for (int j = 0; j < schedulerHistories.size(); j++) { List<PointDTO> points = (List<PointDTO>) serie.getValues(); PointDTO point = new PointDTO(); point.setX(startChartDT.plusDays(j).getMillis()); if (schedulerHistories.get(j).getEndTime() != null && schedulerHistories.get(j).getStartTime() != null) { long elapsedTime = schedulerHistories.get(j).getEndTime().getTime() - schedulerHistories.get(j).getStartTime().getTime(); point.setY(elapsedTime); } else point.setY(0L); points.add(point); } } return series; }
From source file:org.jruby.ext.date.RubyDateTime.java
License:LGPL
@JRubyMethod(name = "civil", alias = "new", meta = true, optional = 8) public static RubyDateTime civil(ThreadContext context, IRubyObject self, IRubyObject[] args) { // year=-4712, month=1, mday=1, // hour=0, minute=0, second=0, offset=0, start=Date::ITALY final int len = args.length; int hour = 0, minute = 0, second = 0; long millis = 0; long subMillisNum = 0, subMillisDen = 1; int off = 0;//from w w w.j a va 2 s.c om long sg = ITALY; if (len == 8) sg = val2sg(context, args[7]); if (len >= 7) off = val2off(context, args[6]); final int year = (sg > 0) ? getYear(args[0]) : args[0].convertToInteger().getIntValue(); final int month = getMonth(args[1]); final long[] rest = new long[] { 0, 1 }; final int day = (int) getDay(context, args[2], rest); if (len >= 4 || rest[0] != 0) { hour = getHour(context, len >= 4 ? args[3] : RubyFixnum.zero(context.runtime), rest); } if (len >= 5 || rest[0] != 0) { minute = getMinute(context, len >= 5 ? args[4] : RubyFixnum.zero(context.runtime), rest); } if (len >= 6 || rest[0] != 0) { IRubyObject sec = len >= 6 ? args[5] : RubyFixnum.zero(context.runtime); second = getSecond(context, sec, rest); final long r0 = rest[0], r1 = rest[1]; if (r0 != 0) { millis = (1000 * r0) / r1; subMillisNum = ((1000 * r0) - (millis * r1)); subMillisDen = r1; } } if (hour == 24 && (minute != 0 || second != 0 || millis != 0)) { throw context.runtime.newArgumentError("invalid date"); } final Chronology chronology = getChronology(context, sg, off); DateTime dt = civilDate(context, year, month, day, chronology); // hour: 0, minute: 0, second: 0 try { long ms = dt.getMillis(); ms = chronology.hourOfDay().set(ms, hour == 24 ? 0 : hour); ms = chronology.minuteOfHour().set(ms, minute); ms = chronology.secondOfMinute().set(ms, second); dt = dt.withMillis(ms + millis); if (hour == 24) dt = dt.plusDays(1); } catch (IllegalArgumentException ex) { debug(context, "invalid date", ex); throw context.runtime.newArgumentError("invalid date"); } return (RubyDateTime) new RubyDateTime(context.runtime, (RubyClass) self, dt, off, sg, subMillisNum, subMillisDen).normalizeSubMillis(); }