Package org.jfree.data.time

Examples of org.jfree.data.time.RegularTimePeriod


    Class timePeriodClass = TimeTableXYDatasetChartDefinition.getTimePeriodClass( getDomainPeriodType() );
    Object[] rowData = data.next();
    while ( rowData != null ) {
      seriesName = (String) rowData[0];
      Date keyDate = getValidDate( rowData[1] );
      RegularTimePeriod regularTimePeriod =
          RegularTimePeriod.createInstance( timePeriodClass, keyDate, RegularTimePeriod.DEFAULT_TIME_ZONE );
      add( regularTimePeriod, ( (Number) rowData[2] ).doubleValue(), seriesName );
      rowData = data.next();
    }
    if ( ( data.getRowCount() > 0 ) && ( this.getSeriesCount() <= 0 ) ) {
View Full Code Here


    Object[] rowData = data.next();
    while ( rowData != null ) {
      String seriesName = (String) rowData[0];
      for ( int column = 1; column < rowData.length - 1; column = column + 2 ) {
        Date keyDate = getValidDate( rowData[column] );
        RegularTimePeriod regularTimePeriod =
            RegularTimePeriod.createInstance( timePeriodClass, keyDate, RegularTimePeriod.DEFAULT_TIME_ZONE );

        add( regularTimePeriod, ( (Number) rowData[column + 1] ).doubleValue(), seriesName );
      }
      rowData = data.next();
View Full Code Here

        wrkSeries = new TimeSeries( seriesName, timePeriodClass );
        lastSeries = seriesName;
        firstPass = false;
      }
      Date keyDate = getValidDate( rowData[1] );
      RegularTimePeriod regularTimePeriod =
          RegularTimePeriod.createInstance( timePeriodClass, keyDate, RegularTimePeriod.DEFAULT_TIME_ZONE );
      TimeSeriesDataItem timeSeriesDataItem =
          new TimeSeriesDataItem( regularTimePeriod, ( (Number) rowData[2] ).doubleValue() );
      if ( wrkSeries != null ) {
        wrkSeries.add( timeSeriesDataItem );
View Full Code Here

    String res=DataSetAccessFunctions.getDataSetResultFromId(profile, getData(),parametersObject);

    ArrayList<Activity> activities=new ArrayList<Activity>();


    RegularTimePeriod timePeriod = null;

    SourceBean sbRows=SourceBean.fromXMLString(res);
    List listAtts=sbRows.getAttributeAsList("ROW");
    // Run all rows
    if(listAtts==null){
      logger.error("Null rows retrieved from dataset");
      return null;
    }
    int j=0;
    // for each activity
    logger.debug("retrieved number rows: "+listAtts.size());
    for (Iterator iterator = listAtts.iterator(); iterator.hasNext();) {
      SourceBean row = (SourceBean) iterator.next();
      Activity activity=new Activity(row, beginDateFormat, beginHourFormat);
      activities.add(activity);
      logger.debug("Activity built from "+activity.getBeginDate()+" minutes"+activity.getMinutes()!=null?activity.getMinutes().toString():"");
      if(maxDateFound!=null && !activity.getBeginDate().after(maxDateFound)){
      }
      else{
        maxDateFound=activity.getBeginDate();
      }

      if(minDateFound!=null && !activity.getBeginDate().before(minDateFound)){
      }
      else{
        minDateFound=activity.getBeginDate();
      }
    }

    //    count days
    long daysBetween;
    if(dateMin!=null && dateMax!=null){
      logger.debug("use date limit defined in template: from "+dateMin.toString()+" to "+dateMax.toString());
      daysBetween=daysBetween(dateMin,dateMax);
    }
    else{
      logger.debug("use date limit found: from "+minDateFound.toString()+" to "+maxDateFound.toString());
      daysBetween=daysBetween(minDateFound,maxDateFound);
    }
    logger.debug("Days between the two dates "+daysBetween);
    // add a date to include extremis
    long minutesBetweenLong=daysBetween*24*60*2; // raddoppio in caso di sovrapposizioni
    int mbl=Long.valueOf(minutesBetweenLong).intValue();

    DefaultXYZDataset dataset = new DefaultXYZDataset();

    ArrayList<Long> xValuesList=new ArrayList<Long>();
    ArrayList<Double> yValuesList=new ArrayList<Double>();
    ArrayList<Double> zValuesList=new ArrayList<Double>();


    annotations=new HashMap<String, AnnotationBlock>();
    // run all the activities
    for (Iterator iterator = activities.iterator(); iterator.hasNext();) {
      Activity activity = (Activity) iterator.next();

      // insert only if activty falls inside the min and max Range (idf defined)
      if(dateMin!=null && dateMax!=null && (activity.getBeginDate().after(dateMax) || activity.getBeginDate().before(dateMin))){
        logger.debug("Activity discarde because starting out of selected bounds in "+activity.getBeginDate());
      }
      else
        logger.debug("Inserting activity with begin date "+activity.getBeginDate()+" adn pattern "+activity.getPattern());
        RegularTimePeriod rtp = new Day(activity.getBeginDate());
        long secondmills= rtp.getFirstMillisecond();

        Minute minute=activity.getMinutes();
        for(int i=0;i<activity.getDuration();i++){
          // convert from hour to number axis (da sessantesimi a centesimi!)
          Integer hour=Integer.valueOf(minute.getHourValue());
View Full Code Here

      List ticks = new ArrayList();
      double x0;
      double y0 = state.getCursor();
      double insideLength = getTickMarkInsideLength();
      double outsideLength = getTickMarkOutsideLength();
      RegularTimePeriod t = createInstance(this.majorTickTimePeriodClass,
              this.first.getStart(), getTimeZone(), this.locale);
      long t0 = t.getFirstMillisecond();
      Line2D inside = null;
      Line2D outside = null;
      long firstOnAxis = getFirst().getFirstMillisecond();
      long lastOnAxis = getLast().getLastMillisecond() + 1;
      while (t0 <= lastOnAxis)
      {
         ticks.add(new NumberTick(new Double(t0), "", TextAnchor.CENTER,
                 TextAnchor.CENTER, 0.0));
         x0 = valueToJava2D(t0, dataArea, edge);
         if (edge == RectangleEdge.TOP)
         {
            inside = new Line2D.Double(x0, y0, x0, y0 + insideLength);
            outside = new Line2D.Double(x0, y0, x0, y0 - outsideLength);
         }
         else if (edge == RectangleEdge.BOTTOM)
         {
            inside = new Line2D.Double(x0, y0, x0, y0 - insideLength);
            outside = new Line2D.Double(x0, y0, x0, y0 + outsideLength);
         }
         if (t0 >= firstOnAxis)
         {
            g2.setPaint(getTickMarkPaint());
            g2.setStroke(getTickMarkStroke());
            g2.draw(inside);
            g2.draw(outside);
         }
         // draw minor tick marks
         if (this.minorTickMarksVisible)
         {
            RegularTimePeriod tminor = createInstance(
                    this.minorTickTimePeriodClass, new Date(t0),
                    getTimeZone(), this.locale);
            long tt0 = tminor.getFirstMillisecond();
            while (tt0 < t.getLastMillisecond()
                    && tt0 < lastOnAxis)
            {
               double xx0 = valueToJava2D(tt0, dataArea, edge);
               if (edge == RectangleEdge.TOP)
               {
                  inside = new Line2D.Double(xx0, y0, xx0,
                          y0 + this.minorTickMarkInsideLength);
                  outside = new Line2D.Double(xx0, y0, xx0,
                          y0 - this.minorTickMarkOutsideLength);
               }
               else if (edge == RectangleEdge.BOTTOM)
               {
                  inside = new Line2D.Double(xx0, y0, xx0,
                          y0 - this.minorTickMarkInsideLength);
                  outside = new Line2D.Double(xx0, y0, xx0,
                          y0 + this.minorTickMarkOutsideLength);
               }
               if (tt0 >= firstOnAxis)
               {
                  g2.setPaint(this.minorTickMarkPaint);
                  g2.setStroke(this.minorTickMarkStroke);
                  g2.draw(inside);
                  g2.draw(outside);
               }
               tminor = tminor.next();
               tminor.peg(this.calendar);
               tt0 = tminor.getFirstMillisecond();
            }
         }
         t = t.next();
         t.peg(this.calendar);
         t0 = t.getFirstMillisecond();
View Full Code Here

      long axisMax = this.last.getLastMillisecond();
      g2.setFont(this.labelInfo[band].getLabelFont());
      g2.setPaint(this.labelInfo[band].getLabelPaint());

      // work out the number of periods to skip for labelling
      RegularTimePeriod p1 = this.labelInfo[band].createInstance(
              new Date(axisMin), this.timeZone, this.locale);
      RegularTimePeriod p2 = this.labelInfo[band].createInstance(
              new Date(axisMax), this.timeZone, this.locale);
      String label1 = this.labelInfo[band].getDateFormat().format(
              new Date(p1.getMiddleMillisecond()));
      String label2 = this.labelInfo[band].getDateFormat().format(
              new Date(p2.getMiddleMillisecond()));
      Rectangle2D b1 = TextUtilities.getTextBounds(label1, g2,
              g2.getFontMetrics());
      Rectangle2D b2 = TextUtilities.getTextBounds(label2, g2,
              g2.getFontMetrics());
      double w = Math.max(b1.getWidth(), b2.getWidth());
      long ww = Math.round(java2DToValue(dataArea.getX() + w + 5.0,
              dataArea, edge));
      if (isInverted())
      {
         ww = axisMax - ww;
      }
      else
      {
         ww = ww - axisMin;
      }
      long length = p1.getLastMillisecond()
              - p1.getFirstMillisecond();
      int periods = (int) (ww / length) + 1;

      RegularTimePeriod p = this.labelInfo[band].createInstance(
              new Date(axisMin), this.timeZone, this.locale);
      Rectangle2D b = null;
      long lastXX = 0L;
      float y = (float) (state.getCursor());
      TextAnchor anchor = TextAnchor.TOP_CENTER;
      float yDelta = (float) b1.getHeight();
      if (edge == RectangleEdge.TOP)
      {
         anchor = TextAnchor.BOTTOM_CENTER;
         yDelta = -yDelta;
      }
      while (p.getFirstMillisecond() <= axisMax)
      {
         float x = (float) valueToJava2D(p.getMiddleMillisecond(), dataArea,
                 edge);
         DateFormat df = this.labelInfo[band].getDateFormat();
         String label = df.format(new Date(p.getMiddleMillisecond()));
         long first = p.getFirstMillisecond();
         long last = p.getLastMillisecond();
         if (last > axisMax)
         {
            // this is the last period, but it is only partially visible
            // so check that the label will fit before displaying it...
            Rectangle2D bb = TextUtilities.getTextBounds(label, g2,
                    g2.getFontMetrics());
            if ((x + bb.getWidth() / 2) > dataArea.getMaxX())
            {
               float xstart = (float) valueToJava2D(Math.max(first,
                       axisMin), dataArea, edge);
               if (bb.getWidth() < (dataArea.getMaxX() - xstart))
               {
                  x = ((float) dataArea.getMaxX() + xstart) / 2.0f;
               }
               else
               {
                  label = null;
               }
            }
         }
         if (first < axisMin)
         {
            // this is the first period, but it is only partially visible
            // so check that the label will fit before displaying it...
            Rectangle2D bb = TextUtilities.getTextBounds(label, g2,
                    g2.getFontMetrics());
            if ((x - bb.getWidth() / 2) < dataArea.getX())
            {
               float xlast = (float) valueToJava2D(Math.min(last,
                       axisMax), dataArea, edge);
               if (bb.getWidth() < (xlast - dataArea.getX()))
               {
                  x = (xlast + (float) dataArea.getX()) / 2.0f;
               }
               else
               {
                  label = null;
               }
            }

         }
         if (label != null)
         {
            g2.setPaint(this.labelInfo[band].getLabelPaint());
            b = TextUtilities.drawAlignedString(label, g2, x, y, anchor);
         }
         if (lastXX > 0L)
         {
            if (this.labelInfo[band].getDrawDividers())
            {
               long nextXX = p.getFirstMillisecond();
               long mid = (lastXX + nextXX) / 2;
               float mid2d = (float) valueToJava2D(mid, dataArea, edge);
               g2.setStroke(this.labelInfo[band].getDividerStroke());
               g2.setPaint(this.labelInfo[band].getDividerPaint());
               g2.draw(new Line2D.Float(mid2d, y, mid2d, y + yDelta));
            }
         }
         lastXX = last;
         for (int i = 0; i < periods; i++)
         {
            p = p.next();
         }
         p.peg(this.calendar);
      }
      double used = 0.0;
      if (b != null)
      {
         used = b.getHeight();
View Full Code Here

    * @return The time period.
    */
   private RegularTimePeriod createInstance(Class periodClass,
           Date millisecond, TimeZone zone, Locale locale)
   {
      RegularTimePeriod result = null;
      try
      {
         Constructor c = periodClass.getDeclaredConstructor(new Class[]
                 {
                    Date.class, TimeZone.class, Locale.class
View Full Code Here

        TimeSeries tSeries = new TimeSeries(series.getKey().toString());

        for (Tuple tuple : tuples) {
            Object key = tuple.getKey();
            Object value = tuple.getValue();
            RegularTimePeriod period;

            if (key instanceof Date) {
                final Date time = (Date) key;
                period = RegularTimePeriod.createInstance(timePeriodPrecision.getTimePeriodClass(), time, TimeZone.getDefault());
            } else if (key instanceof Calendar) {
View Full Code Here

        List ticks = new ArrayList();
        double x0 = dataArea.getX();
        double y0 = state.getCursor();
        double insideLength = getTickMarkInsideLength();
        double outsideLength = getTickMarkOutsideLength();
        RegularTimePeriod t = createInstance(this.majorTickTimePeriodClass,
                this.first.getStart(), getTimeZone(), this.locale);
        long t0 = t.getFirstMillisecond();
        Line2D inside = null;
        Line2D outside = null;
        long firstOnAxis = getFirst().getFirstMillisecond();
        long lastOnAxis = getLast().getLastMillisecond() + 1;
        while (t0 <= lastOnAxis) {
            ticks.add(new NumberTick(new Double(t0), "", TextAnchor.CENTER,
                    TextAnchor.CENTER, 0.0));
            x0 = valueToJava2D(t0, dataArea, edge);
            if (edge == RectangleEdge.TOP) {
                inside = new Line2D.Double(x0, y0, x0, y0 + insideLength);
                outside = new Line2D.Double(x0, y0, x0, y0 - outsideLength);
            }
            else if (edge == RectangleEdge.BOTTOM) {
                inside = new Line2D.Double(x0, y0, x0, y0 - insideLength);
                outside = new Line2D.Double(x0, y0, x0, y0 + outsideLength);
            }
            if (t0 >= firstOnAxis) {
                g2.setPaint(getTickMarkPaint());
                g2.setStroke(getTickMarkStroke());
                g2.draw(inside);
                g2.draw(outside);
            }
            // draw minor tick marks
            if (this.minorTickMarksVisible) {
                RegularTimePeriod tminor = createInstance(
                        this.minorTickTimePeriodClass, new Date(t0),
                        getTimeZone(), this.locale);
                long tt0 = tminor.getFirstMillisecond();
                while (tt0 < t.getLastMillisecond()
                        && tt0 < lastOnAxis) {
                    double xx0 = valueToJava2D(tt0, dataArea, edge);
                    if (edge == RectangleEdge.TOP) {
                        inside = new Line2D.Double(xx0, y0, xx0,
                                y0 + this.minorTickMarkInsideLength);
                        outside = new Line2D.Double(xx0, y0, xx0,
                                y0 - this.minorTickMarkOutsideLength);
                    }
                    else if (edge == RectangleEdge.BOTTOM) {
                        inside = new Line2D.Double(xx0, y0, xx0,
                                y0 - this.minorTickMarkInsideLength);
                        outside = new Line2D.Double(xx0, y0, xx0,
                                y0 + this.minorTickMarkOutsideLength);
                    }
                    if (tt0 >= firstOnAxis) {
                        g2.setPaint(this.minorTickMarkPaint);
                        g2.setStroke(this.minorTickMarkStroke);
                        g2.draw(inside);
                        g2.draw(outside);
                    }
                    tminor = tminor.next();
                    tminor.peg(this.calendar);
                    tt0 = tminor.getFirstMillisecond();
                }
            }
            t = t.next();
            t.peg(this.calendar);
            t0 = t.getFirstMillisecond();
View Full Code Here

        long axisMax = this.last.getLastMillisecond();
        g2.setFont(this.labelInfo[band].getLabelFont());
        g2.setPaint(this.labelInfo[band].getLabelPaint());

        // work out the number of periods to skip for labelling
        RegularTimePeriod p1 = this.labelInfo[band].createInstance(
                new Date(axisMin), this.timeZone, this.locale);
        RegularTimePeriod p2 = this.labelInfo[band].createInstance(
                new Date(axisMax), this.timeZone, this.locale);
        String label1 = this.labelInfo[band].getDateFormat().format(
                new Date(p1.getMiddleMillisecond()));
        String label2 = this.labelInfo[band].getDateFormat().format(
                new Date(p2.getMiddleMillisecond()));
        Rectangle2D b1 = TextUtilities.getTextBounds(label1, g2,
                g2.getFontMetrics());
        Rectangle2D b2 = TextUtilities.getTextBounds(label2, g2,
                g2.getFontMetrics());
        double w = Math.max(b1.getWidth(), b2.getWidth());
        long ww = Math.round(java2DToValue(dataArea.getX() + w + 5.0,
                dataArea, edge));
        if (isInverted()) {
            ww = axisMax - ww;
        }
        else {
            ww = ww - axisMin;
        }
        long length = p1.getLastMillisecond()
                      - p1.getFirstMillisecond();
        int periods = (int) (ww / length) + 1;

        RegularTimePeriod p = this.labelInfo[band].createInstance(
                new Date(axisMin), this.timeZone, this.locale);
        Rectangle2D b = null;
        long lastXX = 0L;
        float y = (float) (state.getCursor());
        TextAnchor anchor = TextAnchor.TOP_CENTER;
        float yDelta = (float) b1.getHeight();
        if (edge == RectangleEdge.TOP) {
            anchor = TextAnchor.BOTTOM_CENTER;
            yDelta = -yDelta;
        }
        while (p.getFirstMillisecond() <= axisMax) {
            float x = (float) valueToJava2D(p.getMiddleMillisecond(), dataArea,
                    edge);
            DateFormat df = this.labelInfo[band].getDateFormat();
            String label = df.format(new Date(p.getMiddleMillisecond()));
            long first = p.getFirstMillisecond();
            long last = p.getLastMillisecond();
            if (last > axisMax) {
                // this is the last period, but it is only partially visible
                // so check that the label will fit before displaying it...
                Rectangle2D bb = TextUtilities.getTextBounds(label, g2,
                        g2.getFontMetrics());
                if ((x + bb.getWidth() / 2) > dataArea.getMaxX()) {
                    float xstart = (float) valueToJava2D(Math.max(first,
                            axisMin), dataArea, edge);
                    if (bb.getWidth() < (dataArea.getMaxX() - xstart)) {
                        x = ((float) dataArea.getMaxX() + xstart) / 2.0f;
                    }
                    else {
                        label = null;
                    }
                }
            }
            if (first < axisMin) {
                // this is the first period, but it is only partially visible
                // so check that the label will fit before displaying it...
                Rectangle2D bb = TextUtilities.getTextBounds(label, g2,
                        g2.getFontMetrics());
                if ((x - bb.getWidth() / 2) < dataArea.getX()) {
                    float xlast = (float) valueToJava2D(Math.min(last,
                            axisMax), dataArea, edge);
                    if (bb.getWidth() < (xlast - dataArea.getX())) {
                        x = (xlast + (float) dataArea.getX()) / 2.0f;
                    }
                    else {
                        label = null;
                    }
                }

            }
            if (label != null) {
                g2.setPaint(this.labelInfo[band].getLabelPaint());
                b = TextUtilities.drawAlignedString(label, g2, x, y, anchor);
            }
            if (lastXX > 0L) {
                if (this.labelInfo[band].getDrawDividers()) {
                    long nextXX = p.getFirstMillisecond();
                    long mid = (lastXX + nextXX) / 2;
                    float mid2d = (float) valueToJava2D(mid, dataArea, edge);
                    g2.setStroke(this.labelInfo[band].getDividerStroke());
                    g2.setPaint(this.labelInfo[band].getDividerPaint());
                    g2.draw(new Line2D.Float(mid2d, y, mid2d, y + yDelta));
                }
            }
            lastXX = last;
            for (int i = 0; i < periods; i++) {
                p = p.next();
            }
            p.peg(this.calendar);
        }
        double used = 0.0;
        if (b != null) {
            used = b.getHeight();
            // work out the trailing gap
View Full Code Here

TOP

Related Classes of org.jfree.data.time.RegularTimePeriod

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.