ソースを参照

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
tags/REL_3_14_BETA1
Javen O'Neal 8年前
コミット
d84be50d54

+ 20
- 7
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

+ 1
- 1
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);

読み込み中…
キャンセル
保存