[Title]chart update(allow different series hight), timeline file chart
authoryeongtaik.byeon <yeongtaik.byeon@samsung.com>
Mon, 20 Aug 2012 10:37:15 +0000 (19:37 +0900)
committeryeongtaik.byeon <yeongtaik.byeon@samsung.com>
Mon, 20 Aug 2012 10:37:15 +0000 (19:37 +0900)
add
[Type]update
[Module]timeline chart
[Priority]normal
[CQ#]
[Redmine#]6438
[Problem]
[Cause]
[Solution]
[TestCase]

org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartPlot.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartRenderer.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/chart/DACustomChartSeries.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/DACPUChart.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/timeline/chart/DAFileChart.java

index 0ec5a91..8e6d40f 100644 (file)
@@ -27,6 +27,7 @@ public class DACustomChartPlot {
        private double startY = 0;
        private double endY = 0;
        private boolean bAutoHeightRange = false;
+       private boolean bSeriesHeightRange = false;
        private Image backgroundImage = null;
        private DACustomChart chart;
        private DACustomChartPlotIntervalMarker marker = null;
@@ -119,6 +120,15 @@ public class DACustomChartPlot {
                bAutoHeightRange = auto;
        }
 
+       
+       public boolean isSeriesHeightRange() {
+               return bSeriesHeightRange;
+       }
+       
+       public void setSeriesHeightRange(boolean bSeriesHeightRange) {
+               this.bSeriesHeightRange = bSeriesHeightRange;
+       }
+       
        public double getStartX() {
                return startX;
        }
@@ -152,14 +162,33 @@ public class DACustomChartPlot {
                return getXPixcelFromX(x, r);
        }
 
-       public int getYPixcelFromY(double y, Rectangle r) {
-               double pixcelY = ((double) r.height) * (y - startY) / (endY - startY);
+       public int getYPixcelFromY(DACustomChartSeries series, double y, Rectangle r) {
+               double endY = 0;
+               if(true == bSeriesHeightRange){
+                       if(true == bAutoHeightRange){
+                               endY = series.getMaxY()*1.1;
+                       }
+                       else{
+                               endY = series.getEndY()*1.1;
+                       }
+               }
+               else{
+                       endY = this.endY;
+               }
+               
+               double pixcelY;
+               if(startY == endY){
+                       pixcelY = 0;
+               }
+               else{
+                       pixcelY = ((double) r.height) * (y - startY) / (endY - startY);
+               }
                return (int) (r.height - pixcelY - 1);
        }
-
-       public int getYPixcelFromY(double y) {
+       
+       public int getYPixcelFromY(DACustomChartSeries series, double y) {
                Rectangle r = chart.getBounds();
-               return getYPixcelFromY(y, r);
+               return getYPixcelFromY(series, y, r);
        }
 
        public double getXFromXPixcel(int xPixcel, Rectangle r) {
index 12e0a0f..14a355f 100644 (file)
@@ -149,16 +149,14 @@ public class DACustomChartRenderer {
                                                .get(index).getY();
                                double xVal = series.getSeriesItemList()
                                                .get(index).getX();
-//                             text = series.getName() + ":" + yVal
-//                                             + series.getSeriesUnit();
+
                                text = series.getName() + " : " + series.getSeriesItemList()
                                                .get(index).getTooltipText();
-//                             System.out.println(series.getName()+" yVal : " + yVal);
-                               
+               
                                gc.setForeground(tooltip.getLineColor());
                                gc.setLineStyle(SWT.LINE_DOT);
-                               gc.drawLine(0, plot.getYPixcelFromY(yVal), r.width,
-                                               plot.getYPixcelFromY(yVal));
+                               gc.drawLine(0, plot.getYPixcelFromY(series,yVal,r), r.width,
+                                               plot.getYPixcelFromY(series,yVal,r));
                                gc.drawLine(plot.getXPixcelFromX(xVal), 0,
                                                plot.getXPixcelFromX(xVal), r.height);
                                gc.setLineStyle(SWT.LINE_CUSTOM);
@@ -224,6 +222,9 @@ public class DACustomChartRenderer {
 
                int seriesItemSize = seriesItems.size();
                DACustomChartSeriesItem seriesItem;
+               Color color = series.getColor();
+               gc.setBackground(color);
+               gc.setAntialias(SWT.ON);
 
                for (int i = 0; i < seriesItemSize; i++) {
                        seriesItem = seriesItems.get(i);
@@ -238,25 +239,28 @@ public class DACustomChartRenderer {
                        double currentX = seriesItem.getX();
                        if (currentX + barWidthTime < plot.getStartX()) {
                                continue;
-                       } else if (currentX > plot.getEndX()) {
+                       } else if (currentX - barWidthTime > plot.getEndX()) {
                                break;
                        }
                        int pixcelStartX = plot.getXPixcelFromX(seriesItem.getX(), r);
-                       int pixcelStartY = plot.getYPixcelFromY(seriesItem.getY(), r);
+                       int pixcelStartY = plot.getYPixcelFromY(series,seriesItem.getY(), r);
 
                        int barWidth = plot.getXPixcelFromX(currentX + barWidthTime, r);
 
                        if (barWidth < 1) {
                                barWidth = 1;
                        }
-                       Color color = seriesItem.getEventColor();
-                       if (null == color) {
-                               color = series.getColor();
+                       color = seriesItem.getEventColor();
+                       if (null != color) {
+                               gc.setBackground(color);
+                               gc.fillRectangle(pixcelStartX, pixcelStartY, barWidth
+                                               - pixcelStartX, r.y + r.height - pixcelStartY);
+                               gc.setBackground(series.getColor());
+                       }
+                       else{
+                               gc.fillRectangle(pixcelStartX, pixcelStartY, barWidth
+                                               - pixcelStartX, r.y + r.height - pixcelStartY);
                        }
-                       gc.setBackground(color);
-                       gc.setAntialias(SWT.ON);
-                       gc.fillRectangle(pixcelStartX, pixcelStartY, barWidth
-                                       - pixcelStartX, r.y + r.height - pixcelStartY);
                }
        }
 
@@ -272,7 +276,7 @@ public class DACustomChartRenderer {
 
                DACustomChartSeriesItem seriesItem = seriesItems.get(0);
                int oldPixcelX = plot.getXPixcelFromX(seriesItem.getX(), r);
-               int oldPixcelY = plot.getYPixcelFromY(seriesItem.getY(), r);
+               int oldPixcelY = plot.getYPixcelFromY(series,seriesItem.getY(), r);
 
                if (seriesItemSize == 1) {
                        if (oldPixcelX < r.x) {
@@ -290,30 +294,31 @@ public class DACustomChartRenderer {
                int newPixcelY = 0;
 
                Color color = series.getColor();
+               gc.setForeground(color);
+               gc.setLineStyle(SWT.LINE_SOLID);
+               gc.setAntialias(SWT.ON);
 
                for (int i = 1; i < seriesItemSize; i++) {
                        seriesItem = seriesItems.get(i);
                        double currentX = seriesItem.getX();
                        if (currentX < plot.getStartX()) {
                                continue;
-                       } else if (currentX > plot.getEndX()) {
-                               break;
                        } else if (newPixcelX == 0 && newPixcelY == 0) {
                                oldPixcelX = plot.getXPixcelFromX(
                                                seriesItems.get(i - 1).getX(), r);
-                               oldPixcelY = plot.getYPixcelFromY(
+                               oldPixcelY = plot.getYPixcelFromY(series,
                                                seriesItems.get(i - 1).getY(), r);
                        } else {
                                oldPixcelX = newPixcelX;
                                oldPixcelY = newPixcelY;
                        }
                        newPixcelX = plot.getXPixcelFromX(currentX, r);
-                       newPixcelY = plot.getYPixcelFromY(seriesItem.getY(), r);
+                       newPixcelY = plot.getYPixcelFromY(series,seriesItem.getY(), r);
 
-                       gc.setForeground(color);
-                       gc.setLineStyle(SWT.LINE_SOLID);
-                       gc.setAntialias(SWT.ON);
                        gc.drawLine(oldPixcelX, oldPixcelY, newPixcelX, newPixcelY);
+                       if (currentX > plot.getEndX()) {
+                                       break;
+                       }
                }
        }
 
@@ -330,7 +335,7 @@ public class DACustomChartRenderer {
 
                DACustomChartSeriesItem seriesItem = seriesItems.get(0);
                int oldPixcelX = plot.getXPixcelFromX(seriesItem.getX(), r);
-               int oldPixcelY = plot.getYPixcelFromY(seriesItem.getY(), r);
+               int oldPixcelY = plot.getYPixcelFromY(series,seriesItem.getY(), r);
                int baseY = r.y + r.height;
 
                if (seriesItemSize == 1) {
@@ -349,30 +354,31 @@ public class DACustomChartRenderer {
                int newPixcelY = 0;
 
                Color color = series.getColor();
+               gc.setAntialias(SWT.ON);
+               gc.setBackground(color);
                for (int i = 1; i < seriesItemSize; i++) {
                        seriesItem = seriesItems.get(i);
                        double currentX = seriesItem.getX();
                        if (currentX < plot.getStartX()) {
                                continue;
-                       } else if (currentX > plot.getEndX()) {
-                               break;
-                       } else if (newPixcelX == 0 && newPixcelY == 0) {
+                       }else if (newPixcelX == 0 && newPixcelY == 0) {
                                oldPixcelX = plot.getXPixcelFromX(
                                                seriesItems.get(i - 1).getX(), r);
-                               oldPixcelY = plot.getYPixcelFromY(
+                               oldPixcelY = plot.getYPixcelFromY(series,
                                                seriesItems.get(i - 1).getY(), r);
                        } else {
                                oldPixcelX = newPixcelX;
                                oldPixcelY = newPixcelY;
                        }
                        newPixcelX = plot.getXPixcelFromX(currentX, r);
-                       newPixcelY = plot.getYPixcelFromY(seriesItem.getY(), r);
+                       newPixcelY = plot.getYPixcelFromY(series,seriesItem.getY(), r);
                        int[] polygon = { oldPixcelX, baseY, oldPixcelX, oldPixcelY,
-                                       newPixcelX, newPixcelY, newPixcelX, baseY };
+                                       newPixcelX+1, newPixcelY, newPixcelX+1, baseY };
 
-                       gc.setAntialias(SWT.ON);
-                       gc.setBackground(color);
                        gc.fillPolygon(polygon);
+                       if (currentX > plot.getEndX()) {
+                               break;
+                       }
                }
        }
 }
index d561493..b906370 100644 (file)
@@ -25,10 +25,10 @@ import org.eclipse.swt.graphics.Color;
 
 public class DACustomChartSeries {
        public static final int SERIES_STYLE_NONE = 0;
-       public static final int SERIES_STYLE_EVENT = 1;
+       public static final int SERIES_STYLE_LINE = 1;
        public static final int SERIES_STYLE_BAR = 2;
-       public static final int SERIES_STYLE_LINE = 3;
-       public static final int SERIES_STYLE_AREA = 4;
+       public static final int SERIES_STYLE_AREA = 3;
+       public static final int SERIES_STYLE_EVENT = 4;
        public static final int SERIES_DEFAULT_BAR_WIDTH = 1;
 
        private String name;
@@ -38,6 +38,8 @@ public class DACustomChartSeries {
        private double barWidth = SERIES_DEFAULT_BAR_WIDTH;
        private double maxX = 0;
        private double maxY = 0;
+       private double endX = 0;
+       private double endY = 0;
 
        public DACustomChartSeries(String name, int chartStyle) {
                this.name = name;
@@ -145,4 +147,21 @@ public class DACustomChartSeries {
                maxX = 0;
                maxY = 0;
        }
+       
+       public double getEndX() {
+               return endX;
+       }
+       
+       public void setEndX(double endX) {
+               this.endX = endX;
+       }
+
+       // need DACustomChartPlot's setSeriesHeightRange(true) and setAutoHeightRange(false)
+       public double getEndY() {
+               return endY;
+       }
+
+       public void setEndY(double endY) {
+               this.endY = endY;
+       }
 }
index 279aa2f..c71c71e 100644 (file)
@@ -172,6 +172,7 @@ public class DACPUChart extends DATimelineChart {
                        totalLoadSeries.addSeriesItem(new DACustomChartSeriesItem(time,
                                        systemAvgLoad, String.valueOf(systemAvgLoad)
                                                        + TimelineChartLabels.UNIT_PERCENTAGE));
+                       DAFileChart.getInstance().updateRW(time);
                }
        }
 
index a7cf905..38af336 100644 (file)
@@ -26,14 +26,21 @@ import org.eclipse.swt.widgets.Composite;
 import org.jfree.data.xy.XYSeries;
 import org.tizen.dynamicanalyzer.ColorResources;
 import org.tizen.dynamicanalyzer.ImageResources;
+import org.tizen.dynamicanalyzer.constants.LogCenterConstants;
 import org.tizen.dynamicanalyzer.constants.TimelineConstants;
 import org.tizen.dynamicanalyzer.model.LogPackage;
+import org.tizen.dynamicanalyzer.model.Logs;
 import org.tizen.dynamicanalyzer.nl.TimelineChartLabels;
 import org.tizen.dynamicanalyzer.widgets.chart.DACustomChart;
 import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartSeries;
+import org.tizen.dynamicanalyzer.widgets.chart.DACustomChartSeriesItem;
 
 public class DAFileChart extends DATimelineChart {
        private static DAFileChart instance = null;
+       
+       private long readByte = 0;
+       private long writeByte = 0;
+       private int fdCount = 0;
 
        private DACustomChartSeries readSeries;
        private DACustomChartSeries writeSeries;
@@ -77,6 +84,7 @@ public class DAFileChart extends DATimelineChart {
                chart.addSeries(fdCountSeries);
 
                setChartStyle();
+               chart.getPlot().setSeriesHeightRange(true);
                return chart;
        }
 
@@ -108,18 +116,84 @@ public class DAFileChart extends DATimelineChart {
                readSeries.clear();
                writeSeries.clear();
                fdCountSeries.clear();
+               readByte = 0;
+               writeByte = 0;
+               fdCount = 0;
        }
 
        @Override
        public void dispose() {
                // TODO Auto-generated method stub
-
        }
 
        @Override
        public void parsingLogPackage(LogPackage logPack, int probeType) {
-               // TODO Auto-generated method stub
-
+               if(!isAbleToParse(logPack, probeType)) {
+                       return;
+               }
+               
+               Logs logs = logPack.getLogs(probeType);
+               List<List<String>> logList = logs.getLogs();
+               for (int i = 0; i < logList.size(); i++) {
+                       parsingLog(logList.get(i));
+               }
        }
+       
+       private void parsingLog(List<String> log) {
+               if (null == log || 0 > log.size()) {
+                       return;
+               }
+
+               /* API check */
+               int fdApiType = 0;
 
+               try {
+                       //FIXME trim
+                       fdApiType = Integer.parseInt(log.get(LogCenterConstants.RESOURCE_FDAPITYPE_INDEX).trim());
+               } catch (NumberFormatException ne) {
+                       ne.printStackTrace();
+               }
+
+               long size = 0;
+
+               if (fdApiType == TimelineConstants.FD_API_TYPE_READ || fdApiType == TimelineConstants.FD_API_TYPE_WRITE) {
+                       if (log.get(LogCenterConstants.RESOURCE_SIZE_INDEX).isEmpty() || !log.get(LogCenterConstants.ERROR_INDEX).equals("0")) { //$NON-NLS-1$
+                               return;
+                       }
+
+                       try {
+                               String resourceSizeIndexStr = log.get(LogCenterConstants.RESOURCE_SIZE_INDEX).trim();
+                               size = Long.parseLong(resourceSizeIndexStr);
+                       } catch (NumberFormatException ne) {
+                               ne.printStackTrace();
+                       } catch (NullPointerException ne) {
+                               ne.printStackTrace();
+                       } catch (Exception e) {
+                               e.printStackTrace();
+                       }
+
+                       switch(fdApiType) {
+                       case TimelineConstants.FD_API_TYPE_READ:
+                               readByte += size;
+                               break;
+                       case TimelineConstants.FD_API_TYPE_WRITE:
+                               writeByte += size;
+                               break;
+                       }
+               } else {
+                       return;
+               }
+       }
+       
+       public void updateRW(long time) {
+               fdCountSeries.addSeriesItem(new DACustomChartSeriesItem(time, fdCount,String.valueOf(fdCount)));
+               
+               readSeries.addSeriesItem(new DACustomChartSeriesItem(time, readByte, String.valueOf(readByte)
+                               + TimelineChartLabels.UNIT_BYTE));
+               readByte = 0;
+               
+               writeSeries.addSeriesItem(new DACustomChartSeriesItem(time, writeByte, String.valueOf(writeByte)
+                               + TimelineChartLabels.UNIT_BYTE));
+               writeByte = 0;
+       }
 }