aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJaven O'Neal <onealj@apache.org>2015-11-24 08:52:45 +0000
committerJaven O'Neal <onealj@apache.org>2015-11-24 08:52:45 +0000
commitd84be50d5492dbf74c576993f875c8b5fd1be4f4 (patch)
treebd46c280f59846a5cea35c9dcf54facf1bdf258c /src
parentfc4b3fc08f2a9264883f4ea1751186495e1cb370 (diff)
downloadpoi-d84be50d5492dbf74c576993f875c8b5fd1be4f4.tar.gz
poi-d84be50d5492dbf74c576993f875c8b5fd1be4f4.zip
bug 58348: use copy constructor design pattern rather than cloneable pattern for CellCopyPolicy
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1716074 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/java/org/apache/poi/ss/usermodel/CellCopyPolicy.java27
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java2
2 files changed, 21 insertions, 8 deletions
diff --git a/src/java/org/apache/poi/ss/usermodel/CellCopyPolicy.java b/src/java/org/apache/poi/ss/usermodel/CellCopyPolicy.java
index 80043210a6..8a0377b9a8 100644
--- a/src/java/org/apache/poi/ss/usermodel/CellCopyPolicy.java
+++ b/src/java/org/apache/poi/ss/usermodel/CellCopyPolicy.java
@@ -20,7 +20,7 @@ package org.apache.poi.ss.usermodel;
import org.apache.poi.util.Beta;
@Beta
-public class CellCopyPolicy implements Cloneable {
+public class CellCopyPolicy {
// cell-level policies
public static final boolean DEFAULT_COPY_CELL_VALUE_POLICY = true;
public static final boolean DEFAULT_COPY_CELL_STYLE_POLICY = true;
@@ -55,6 +55,24 @@ public class CellCopyPolicy implements Cloneable {
*/
public CellCopyPolicy() { }
+ /**
+ * Copy constructor
+ *
+ * @param other policy to copy
+ */
+ public CellCopyPolicy(CellCopyPolicy other) {
+ copyCellValue = other.isCopyCellValue();
+ copyCellStyle = other.isCopyCellStyle();
+ copyCellFormula = other.isCopyCellFormula();
+ copyHyperlink = other.isCopyHyperlink();
+ mergeHyperlink = other.isMergeHyperlink();
+
+ copyRowHeight = other.isCopyRowHeight();
+ condenseRows = other.isCondenseRows();
+
+ copyMergedRegions = other.isCopyMergedRegions();
+ }
+
// should builder be replaced with CellCopyPolicy setters that return the object
// to allow setters to be chained together?
// policy.setCopyCellValue(true).setCopyCellStyle(true)
@@ -134,7 +152,7 @@ public class CellCopyPolicy implements Cloneable {
}
}
- private Builder createBuilder() {
+ public Builder createBuilder() {
final Builder builder = new Builder()
.cellValue(copyCellValue)
.cellStyle(copyCellStyle)
@@ -146,11 +164,6 @@ public class CellCopyPolicy implements Cloneable {
.mergedRegions(copyMergedRegions);
return builder;
}
-
- @Override
- public CellCopyPolicy clone() {
- return createBuilder().build();
- }
/*
* Cell-level policies
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
index 379a675bba..fd3674b3e0 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
@@ -2705,7 +2705,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
// FIXME: is special behavior needed if srcRows and destRows belong to the same sheets and the regions overlap?
- final CellCopyPolicy options = policy.clone();
+ final CellCopyPolicy options = new CellCopyPolicy(policy);
// avoid O(N^2) performance scanning through all regions for each row
// merged regions will be copied after all the rows have been copied
options.setCopyMergedRegions(false);