joerg 2003/06/13 17:24:59
Modified: src/blocks/poi/java/org/apache/cocoon/components/elementprocessor/impl/poi/hssf/elements Cell.java Log: fixed internationalization support (hack: harcoded encoding UTF-16), bug 15365 Revision Changes Path 1.3 +41 -60 cocoon-2.1/src/blocks/poi/java/org/apache/cocoon/components/elementprocessor/impl/poi/hssf/elements/Cell.java Index: Cell.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/poi/java/org/apache/cocoon/components/elementprocessor/impl/poi/hssf/elements/Cell.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Cell.java 11 Mar 2003 19:05:01 -0000 1.2 +++ Cell.java 14 Jun 2003 00:24:59 -0000 1.3 @@ -1,4 +1,3 @@ - /* ============================================================================ @@ -69,33 +68,36 @@ * @version CVS $Id$ */ // package scope -class Cell -{ + +class Cell { + private HSSFCell _cell; // original CellType value - private int _celltype; - private Locale locale; + private int _celltype; + private Locale locale; /** - * Constructor Cell + * Constructor Cell. + * Only a hack as long as the POI stuff is not maintained in the POI CVS: + * Setting the encoding to UTF-16 for internationalization + * (<a href="http://jakarta.apache.org/poi/javadocs/org/apache/poi/hssf/usermodel/HSSFCell.html#getEncoding()">POI API</a>). * * @param cell */ - - Cell(final HSSFCell cell, final int cellType) - { - _cell = cell; + Cell(final HSSFCell cell, final int cellType) { + _cell = cell; _celltype = cellType; + _cell.setEncoding(HSSFCell.ENCODING_UTF_16); } /** * if there is a locale that can be used for validation it is - * set here. Cell expects a fully constructed locale. It must + * set here. Cell expects a fully constructed locale. It must * be passed in before SetContent can be called. */ void setLocale(Locale locale) { - this.locale = locale; + this.locale = locale; } /** @@ -105,54 +107,39 @@ * * @exception IOException */ - - void setContent(final String content) - throws IOException - { - if (content.charAt(0) == '=') { //seems like a kludge but this is - //actually how gnumeric does it + void setContent(final String content) throws IOException { + if (content.charAt(0) == '=') { + //seems like a kludge but this is actually how gnumeric does it _cell.setCellType(HSSFCell.CELL_TYPE_FORMULA); } - - if (_cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) - { - try - { - if (_celltype == CellType.CELL_TYPE_FLOAT) - { // if there is a locale set then we'll use it to - // parse the string form of the number... otherwise - // we'll use the default. - NumberFormat form = null; - if (locale == null) { - form = NumberFormat.getInstance(); - } else { - form = NumberFormat.getInstance(locale); - } - _cell.setCellValue(form.parse(content).doubleValue()); - } - else - { + if (_cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { + try { + if (_celltype == CellType.CELL_TYPE_FLOAT) { + // if there is a locale set then we'll use it to parse the + // string form of the number... otherwise we'll use the default. + NumberFormat form = null; + if (locale == null) { + form = NumberFormat.getInstance(); + } else { + form = NumberFormat.getInstance(locale); + } + _cell.setCellValue(form.parse(content).doubleValue()); + } else { _cell.setCellValue(Integer.parseInt(content)); } - } - catch (NumberFormatException e) - { - throw new CascadingIOException("Invalid value for a numeric cell: " - + content, e); - } - catch (ParseException e) { + } catch (NumberFormatException e) { + throw new CascadingIOException("Invalid value for a numeric cell: " + content, e); + } catch (ParseException e) { throw new CascadingIOException("Invalid value for a numberic cell: " + content, e); } - } - else if (_cell.getCellType() == HSSFCell.CELL_TYPE_STRING) - { + } else if (_cell.getCellType() == HSSFCell.CELL_TYPE_STRING) { _cell.setCellValue(content); } else if (_cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA) { - _cell.setCellFormula(content.toUpperCase().substring(1)); + _cell.setCellFormula(content.toUpperCase().substring(1)); } } - - void setStyle (HSSFCellStyle style) { + + void setStyle(HSSFCellStyle style) { if (style != null) { _cell.setCellStyle(style); } @@ -161,27 +148,21 @@ /** * @return cell type */ - - int getCellType() - { + int getCellType() { return _cell.getCellType(); } /** * @return string value */ - - String getStringValue() - { + String getStringValue() { return _cell.getStringCellValue(); } /** * @return numeric value */ - - double getNumericValue() - { + double getNumericValue() { return _cell.getNumericCellValue(); } } // end package scope class Cell