298-1-2

int columns = dataset.getColumnCount(); int rows = dataset.getRowCount(); double space = 0.0; PlotOrientation orientation = plot.getOrientation(); if (orientation == PlotOrientation.HORIZONTAL) { space = dataArea.getHeight(); } else if (orientation == PlotOrientation.VERTICAL) { space = dataArea.getWidth(); } double maxWidth = space * getMaximumBarWidth(); double categoryMargin = 0.0; double currentItemMargin = 0.0; if (columns > 1) { categoryMargin = domainAxis.getCategoryMargin(); } if (rows > 1) { currentItemMargin = getItemMargin(); } double used = space * (1 - domainAxis.getLowerMargin() - domainAxis.getUpperMargin() - categoryMargin - currentItemMargin); if ((rows * columns) > 0) { state.setBarWidth(Math.min(used / (rows * columns), maxWidth)); } else { state.setBarWidth(Math.min(used, maxWidth)); }
int columns = dataset.getColumnCount(); int rows = dataset.getRowCount(); double space = 0.0; PlotOrientation orientation = plot.getOrientation(); if (orientation == PlotOrientation.HORIZONTAL) { space = dataArea.getHeight(); } else if (orientation == PlotOrientation.VERTICAL) { space = dataArea.getWidth(); } double maxWidth = space * getMaximumBarWidth(); double categoryMargin = 0.0; double currentItemMargin = 0.0; if (columns > 1) { categoryMargin = domainAxis.getCategoryMargin(); } if (rows > 1) { currentItemMargin = getItemMargin(); } double used = space * (1 - domainAxis.getLowerMargin() - domainAxis.getUpperMargin() - categoryMargin - currentItemMargin); if ((rows * columns) > 0) { state.setBarWidth(Math.min(used / (dataset.getColumnCount() * dataset.getRowCount()), maxWidth)); } else { state.setBarWidth(Math.min(used, maxWidth)); }

Clone fragments detected by clone detection tool
File path: /jfreechart-1.0.10/src/org/jfree/chart/renderer/category/BarRenderer.java |  | File path: /jfreechart-1.0.10/src/org/jfree/chart/renderer/category/BoxAndWhiskerRenderer.java
Method name: `void calculateBarWidth(CategoryPlot, Rectangle2D, int, CategoryItemRendererState)` |  | Method name: `CategoryItemRendererState initialise(Graphics2D, Rectangle2D, CategoryPlot, int, PlotRenderingInfo)`
Number of AST nodes: 19 |  | Number of AST nodes: 19

1

    int columns = dataset.getColumnCount();↵

1

    int columns = dataset.getColumnCount();↵

2

                int rows = dataset.getRowCount();↵

2

                int rows = dataset.getRowCount();↵

3

                double space = 0.0;↵

3

                double space = 0.0;↵

4

                PlotOrientation orientation = plot.getOrientation();↵

4

                PlotOrientation orientation = plot.getOrientation();↵

5

                if (orientation == PlotOrientation.HORIZONTAL) {↵

5

                if (orientation == PlotOrientation.HORIZONTAL) {↵

6

                    space = dataArea.getHeight();↵

6

                    space = dataArea.getHeight();↵

7

                }↵

7

                }↵

8

                else if (orientation == PlotOrientation.VERTICAL) {↵

8

                else if (orientation == PlotOrientation.VERTICAL) {↵

9

                    space = dataArea.getWidth();↵

9

                    space = dataArea.getWidth();↵

10

                }↵

10

                }↵

11

                double maxWidth = space * getMaximumBarWidth();↵

11

                double maxWidth = space * getMaximumBarWidth();↵

12

                double categoryMargin = 0.0;↵

12

                double categoryMargin = 0.0;↵

13

                double currentItemMargin = 0.0;↵

13

                double currentItemMargin = 0.0;↵

14

                if (columns > 1) {↵

14

                if (columns > 1) {↵

15

                    categoryMargin = domainAxis.getCategoryMargin();↵

15

                    categoryMargin = domainAxis.getCategoryMargin();↵

16

                }↵

16

                }↵

17

                if (rows > 1) {↵

17

                if (rows > 1) {↵

18

                    currentItemMargin = getItemMargin();↵

18

                    currentItemMargin = getItemMargin();↵

19

                }↵

19

                }↵

20

                double used = space * (1 - domainAxis.getLowerMargin()↵

20

                double used = space * (1 - domainAxis.getLowerMargin()↵

21

                                         - domainAxis.getUpperMargin()↵

21

                                         - domainAxis.getUpperMargin()↵

22

                                         - categoryMargin - currentItemMargin);↵

22

                                         - categoryMargin - currentItemMargin);↵

23

                if ((rows * columns) > 0) {↵

23

                if ((rows * columns) > 0) {↵

24

                    state.setBarWidth(Math.min(used / (rows * columns↵

24

                    state.setBarWidth(Math.min(used / (dataset.getColumnCount()↵

25

    ), maxWidth));↵

25

                            * dataset.getRowCount()), maxWidth));↵

26

                }↵

26

                }↵

27

                else {↵

27

                else {↵

28

                    state.setBarWidth(Math.min(used, maxWidth));↵

28

                    state.setBarWidth(Math.min(used, maxWidth));↵

29

                }

29

                }

See real code fragment |  | See real code fragment

Summary
Number of common nesting structure subtrees | 1
Number of refactorable cases | 0
Number of non-refactorable cases | 1
Time elapsed for finding largest common nesting structure subtrees (ms) | 1.5
Clones location | Clones are in different classes having the same super class
Number of node comparisons | 148

1. {Non-refactorable}

   Mapping Summary
   Number of mapped statements | 19
   Number of unmapped statements in the first code fragment | 0
   Number of unmapped statements in the second code fragment | 0
   Time elapsed for statement mapping (ms) | 5.2
   Clone type | Type 2

   Mapped Statements
   ID | Statement |  | ID | Statement
   --- | --- | --- | --- | ---

   4

       int columns = dataset.getColumnCount();

   5

       int columns = dataset.getColumnCount();

   5

       int rows = dataset.getRowCount();

   6

       int rows = dataset.getRowCount();

   6

       double space = 0.0;

   7

       double space = 0.0;

   7

       PlotOrientation orientation = plot.getOrientation();

   8

       PlotOrientation orientation = plot.getOrientation();

   8

       if (orientation == PlotOrientation.HORIZONTAL)

   9

       if (orientation == PlotOrientation.HORIZONTAL)

   9

       space = dataArea.getHeight();

   10

       space = dataArea.getHeight();

   10

       else if (orientation == PlotOrientation.VERTICAL)

   11

       else if (orientation == PlotOrientation.VERTICAL)

   11

       space = dataArea.getWidth();

   12

       space = dataArea.getWidth();

   12

       double maxWidth = space * getMaximumBarWidth();

   13

       double maxWidth = space * getMaximumBarWidth();

   13

       double categoryMargin = 0.0;

   14

       double categoryMargin = 0.0;

   14

       double currentItemMargin = 0.0;

   15

       double currentItemMargin = 0.0;

   15

       if (columns > 1)

   16

       if (columns > 1)

   16

       categoryMargin = domainAxis.getCategoryMargin();

   17

       categoryMargin = domainAxis.getCategoryMargin();

   17

       if (rows > 1)

   18

       if (rows > 1)

   18

       currentItemMargin = getItemMargin();

   19

       currentItemMargin = getItemMargin();

   19

       double used = space * (1 - domainAxis.getLowerMargin() - domainAxis.getUpperMargin() - categoryMargin - currentItemMargin);

   20

       double used = space * (1 - domainAxis.getLowerMargin() - domainAxis.getUpperMargin() - categoryMargin - currentItemMargin);

   20

       if ((rows * columns) > 0)

   21

       if ((rows * columns) > 0)

   21

       state.setBarWidth(Math.min(used / (rows * columns), maxWidth));

   21 | state.setBarWidth(Math.min(used / (rows * columns), maxWidth));
   22 | state.setBarWidth(Math.min(used / (dataset.getColumnCount() * dataset.getRowCount()), maxWidth));

   Differences
   Expression1 | Expression2 | Difference
   --- | --- | ---
   rows | dataset.getColumnCount() | TYPE_COMPATIBLE_REPLACEMENT
   columns | dataset.getRowCount() | TYPE_COMPATIBLE_REPLACEMENT

   Preondition Violations
   Expression rows cannot be parameterized, because it has dependencies to/from statements that will be extracted
   Expression columns cannot be parameterized, because it has dependencies to/from statements that will be extracted

   22

       state.setBarWidth(Math.min(used / (dataset.getColumnCount() * dataset.getRowCount()), maxWidth));

       else

       else

   22

       state.setBarWidth(Math.min(used, maxWidth));

   23

       state.setBarWidth(Math.min(used, maxWidth));

   Precondition Violations (2)
   Row | Violation
   --- | ---
   1 | Expression rows cannot be parameterized, because it has dependencies to/from statements that will be extracted
   2 | Expression columns cannot be parameterized, because it has dependencies to/from statements that will be extracted