Example usage for org.joda.time DateTime plusDays

List of usage examples for org.joda.time DateTime plusDays

Introduction

In this page you can find the example usage for org.joda.time DateTime plusDays.

Prototype

public DateTime plusDays(int days) 

Source Link

Document

Returns a copy of this datetime plus the specified number of days.

Usage

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();
}