From 6129d6323d6065a3d6953803e4526bcbbd931d8b Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 12 Aug 2013 23:07:42 +0200 Subject: [PATCH] Bug 54593: Implement toString() and hashCode() in XSSFCellBorder to try to speed up certain operations --- .../xssf/usermodel/extensions/XSSFCellBorder.java | 27 +++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java index b100bc2..b366d81 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java @@ -33,6 +33,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle; public class XSSFCellBorder { private ThemesTable _theme; private CTBorder border; + private String borderStr; /** * Creates a Cell Border from the supplied XML definition @@ -47,6 +48,7 @@ public class XSSFCellBorder { */ public XSSFCellBorder(CTBorder border) { this.border = border; + this.borderStr = null; } /** @@ -55,6 +57,7 @@ public class XSSFCellBorder { */ public XSSFCellBorder() { border = CTBorder.Factory.newInstance(); + this.borderStr = null; } /** @@ -136,9 +139,11 @@ public class XSSFCellBorder { */ public void setBorderColor(BorderSide side, XSSFColor color) { CTBorderPr borderPr = getBorder(side, true); - if (color == null) borderPr.unsetColor(); + if (color == null) + borderPr.unsetColor(); else borderPr.setColor(color.getCTColor()); + this.borderStr = null; } private CTBorderPr getBorder(BorderSide side) { @@ -172,14 +177,24 @@ public class XSSFCellBorder { } - public int hashCode() { - return border.toString().hashCode(); + @Override + public int hashCode() { + return toString().hashCode(); } - public boolean equals(Object o) { + @Override + public boolean equals(Object o) { if (!(o instanceof XSSFCellBorder)) return false; XSSFCellBorder cf = (XSSFCellBorder) o; - return border.toString().equals(cf.getCTBorder().toString()); + return toString().equals(cf.toString()); } -} \ No newline at end of file + + @Override + public String toString() { + if(borderStr == null) { + borderStr = border.toString(); + } + return borderStr; + } +} -- 1.7.9.5