You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by an...@apache.org on 2003/11/07 10:29:52 UTC
cvs commit: cocoon-2.1/src/blocks/poi/java/org/apache/cocoon/components/elementprocessor/impl/poi/hssf/elements EPStyle.java Workbook.java
antonio 2003/11/07 01:29:52
Modified: . status.xml
src/blocks/poi/java/org/apache/cocoon/components/elementprocessor/impl/poi/hssf/elements
EPStyle.java Workbook.java
Log:
Fix HSSFSerializer Bug: Same cell definitions blows document. Applying patch from Grigorios Merenidis (Grigorios.Merenidis@Dresdner-Bank.com).
Revision Changes Path
1.185 +5 -1 cocoon-2.1/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs//cocoon-2.1/status.xml,v
retrieving revision 1.184
retrieving revision 1.185
diff -u -r1.184 -r1.185
--- status.xml 7 Nov 2003 09:14:34 -0000 1.184
+++ status.xml 7 Nov 2003 09:29:51 -0000 1.185
@@ -192,6 +192,10 @@
<changes>
<release version="@version@" date="@date@">
+ <action dev="AG" type="fix" fixes-bug="19638" due-to-email="Grigorios.Merenidis@Dresdner-Bank.com" due-to="Grigorios Merenidis">
+ Fix HSSFSerializer Bug: Same cell definitions blows document. Applying
+ patch from Grigorios Merenidis (Grigorios.Merenidis@Dresdner-Bank.com).
+ </action>
<action dev="CZ" type="fix" fixes-bug="24326" due-to-email="andrzej@chaeron.com" due-to="Andrzej Taramina">
SQLTransformer: Correcting handling of XML data with XML declarations. Applying
patch from Andrzej Taramina (andrzej@chaeron.com).
1.5 +41 -19 cocoon-2.1/src/blocks/poi/java/org/apache/cocoon/components/elementprocessor/impl/poi/hssf/elements/EPStyle.java
Index: EPStyle.java
===================================================================
RCS file: /home/cvs//cocoon-2.1/src/blocks/poi/java/org/apache/cocoon/components/elementprocessor/impl/poi/hssf/elements/EPStyle.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- EPStyle.java 1 Jul 2003 23:43:21 -0000 1.4
+++ EPStyle.java 7 Nov 2003 09:29:52 -0000 1.5
@@ -79,6 +79,7 @@
* @version CVS $Id$
*/
public class EPStyle extends BaseElementProcessor {
+ private static final String _general_format = "General";
private HorizontalAlignment _h_align;
private VerticalAlignment _v_align;
private BooleanResult _wrap_text;
@@ -153,11 +154,14 @@
style.setVerticalAlignment(cnvvalign);
style.setFillPattern((short)getShade());
-
+ Workbook workbook = getWorkbook();
+ HSSFDataFormat dataformat = workbook.createDataFormat();
if (getShade() == 1) {
// TODO: change to constant when upgrade to new HSSF
// solid w/foreground, bg doesn't matter
- getLogger().debug("shade = 1");
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("shade = 1");
+ }
HSSFColor color = (HSSFColor)colorhash.get(getBackgroundColor().toString());
if (color == null) {
getLogger().debug("s1 BG couldn't find color for " + getBackgroundColor().toString());
@@ -166,20 +170,26 @@
style.setFillForegroundColor(color.getIndex());
color = (HSSFColor)colorhash.get(getPatternColor().toString());
if (color == null) {
- getLogger().debug("s1 PC couldn't find color for " + getPatternColor().toString());
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("s1 PC couldn't find color for " + getPatternColor().toString());
+ }
color = new HSSFColor.BLACK();
}
style.setFillBackgroundColor(color.getIndex());
} else {
HSSFColor color = (HSSFColor)colorhash.get(getBackgroundColor().toString());
if (color == null) {
- getLogger().debug("BG couldn't find color for " + getBackgroundColor().toString());
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("BG couldn't find color for " + getBackgroundColor().toString());
+ }
color = new HSSFColor.BLACK();
}
style.setFillBackgroundColor(color.getIndex());
color = (HSSFColor)colorhash.get(getPatternColor().toString());
if (color == null) {
- getLogger().debug("PC couldn't find color for " + getPatternColor().toString());
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("PC couldn't find color for " + getPatternColor().toString());
+ }
color = new HSSFColor.WHITE();
}
style.setFillForegroundColor(color.getIndex());
@@ -191,15 +201,21 @@
try {
format = getFormat();
} catch (NullPointerException e) {
- format = "General";
+ format = _general_format;
}
- if (!format.equals("General")) {
+ if (!format.equals(_general_format)) {
+ short valuenumber;
format = kludgeForGnumericMisformats(format);
format = kludgeForGnumericDateDivergence(format);
- short nformat = HSSFDataFormat.getBuiltinFormat(format);
- getLogger().debug("setting format to " + nformat);
- style.setDataFormat(nformat);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("setting format to " + format);
+ }
+ Object o = workbook.getValidate(format, dataformat.getFormat(format));
+ Short sh = null;
+ sh = (Short) o;
+ valuenumber = sh.shortValue();
+ style.setDataFormat(valuenumber);
}
} else {
invalid = true;
@@ -529,7 +545,6 @@
default:
retval = HSSFCellStyle.ALIGN_GENERAL;
}
-
return retval;
}
@@ -566,19 +581,25 @@
*/
private String kludgeForGnumericMisformats(String format) {
String retval = format;
- getLogger().debug("going out of the format kludger " + retval);
- getLogger().debug("first )=" + format.indexOf(')'));
- getLogger().debug("first (=" + format.indexOf('('));
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("going out of the format kludger " + retval);
+ getLogger().debug("first )=" + format.indexOf(')'));
+ getLogger().debug("first (=" + format.indexOf('('));
+ }
if ((format.indexOf(')') < format.indexOf('(')) && (format.indexOf(')') != -1)) {
retval = "(" + format;
}
- getLogger().debug("going out of the format kludger " + retval);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("going out of the format kludger " + retval);
+ }
return retval;
}
private String kludgeForGnumericDateDivergence(String format) {
String retval = format;
- getLogger().debug("going into the format kludgeForGnumericDateDivergence" + retval);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("going into the format kludgeForGnumericDateDivergence" + retval);
+ }
if (retval.equals("mm/dd/yy")) {
retval = "m/d/yy";
@@ -587,8 +608,9 @@
} else if (retval.equals("dd-mmm")) {
retval = "d-mmm";
}
-
- getLogger().debug("going out of the format kludgeForGnumericDateDivergence" + retval);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("going out of the format kludgeForGnumericDateDivergence" + retval);
+ }
return retval;
}
1.5 +33 -3 cocoon-2.1/src/blocks/poi/java/org/apache/cocoon/components/elementprocessor/impl/poi/hssf/elements/Workbook.java
Index: Workbook.java
===================================================================
RCS file: /home/cvs//cocoon-2.1/src/blocks/poi/java/org/apache/cocoon/components/elementprocessor/impl/poi/hssf/elements/Workbook.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Workbook.java 22 Sep 2003 22:44:15 -0000 1.4
+++ Workbook.java 7 Nov 2003 09:29:52 -0000 1.5
@@ -53,8 +53,11 @@
import java.io.ByteArrayInputStream;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -73,6 +76,8 @@
{
private HSSFWorkbook _workbook;
private int _sheet_index;
+ private final static int REPEAT_CAPACITY = 91;
+ private Map _repeat;
/**
* Constructor Workbook
@@ -82,8 +87,35 @@
{
_workbook = new HSSFWorkbook();
_sheet_index = 0;
+ _repeat = new HashMap(REPEAT_CAPACITY);
}
+ /**
+ * Method createDataFormat
+ *
+ * @return newly created DataFormat
+ */
+
+ HSSFDataFormat createDataFormat()
+ {
+ return _workbook.createDataFormat();
+ }
+
+ /**
+ * check if the format exists
+ *
+ * @param format and the value
+ *
+ * @return the format index
+ */
+ Object getValidate(String format, short value)
+ {
+ if (_repeat.containsKey(format) == false) {
+ _repeat.put(format, new Short(value));
+ }
+ return _repeat.get(format);
+ }
+
/**
* Method getNextName
*
@@ -150,12 +182,10 @@
* create a font in the underlying HSSF model and return the reference
*/
HSSFFont createFont() {
-
HSSFFont font = _workbook.createFont();
return font;
}
-
HSSFWorkbook getWorkbook() {
return _workbook;