#59836 - Tracker: Replace primitives with enums

preparation for removing those many HSSFColor subclasses with an enum

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1779866 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andreas Beeker 2017-01-22 22:01:22 +00:00
parent d9bce7fff9
commit c48a0cf334
17 changed files with 1054 additions and 1650 deletions

View File

@ -17,19 +17,22 @@
package org.apache.poi.hssf.usermodel.examples;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
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.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
/**
* Demonstrates many features of the user API at once. Used in the HOW-TO guide.
*
* @author Glen Stampoultzis (glens at apache.org)
* @author Andrew Oliver (acoliver at apache.org)
*/
public class BigExample {
public static void main(String[] args) throws IOException {
@ -56,17 +59,17 @@ public class BigExample {
//set font 1 to 12 point type
f.setFontHeightInPoints((short) 12);
//make it red
f.setColor(HSSFColor.RED.index);
f.setColor(HSSFColorPredefined.RED.getIndex());
// make it bold
//arial is the default font
f.setBoldweight(Font.BOLDWEIGHT_BOLD);
f.setBold(true);
//set font 2 to 10 point type
f2.setFontHeightInPoints((short) 10);
//make it the color at palette index 0xf (white)
f2.setColor(HSSFColor.WHITE.index);
f2.setColor(HSSFColorPredefined.WHITE.getIndex());
//make it bold
f2.setBoldweight(Font.BOLDWEIGHT_BOLD);
f2.setBold(true);
//set cell stlye
cs.setFont(f);
@ -74,11 +77,11 @@ public class BigExample {
cs.setDataFormat(HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)"));
//set a thin border
cs2.setBorderBottom(CellStyle.BORDER_THIN);
cs2.setBorderBottom(BorderStyle.THIN);
//fill w fg fill color
cs2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cs2.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// set foreground fill to red
cs2.setFillForegroundColor(HSSFColor.RED.index);
cs2.setFillForegroundColor(HSSFColorPredefined.RED.getIndex());
// set the font
cs2.setFont(f2);
@ -143,7 +146,7 @@ public class BigExample {
// define the third style to be the default
// except with a thick black border at the bottom
cs3.setBorderBottom(CellStyle.BORDER_THICK);
cs3.setBorderBottom(BorderStyle.THICK);
//create 50 cells
for (int cellnum =0; cellnum < 50; cellnum++) {

View File

@ -25,7 +25,7 @@ import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.usermodel.BorderStyle;
/**
@ -46,13 +46,13 @@ public class Borders {
// Style the cell with borders all around.
HSSFCellStyle style = wb.createCellStyle();
style.setBorderBottom(BorderStyle.THIN);
style.setBottomBorderColor(HSSFColor.BLACK.index);
style.setBottomBorderColor(HSSFColorPredefined.BLACK.getIndex());
style.setBorderLeft(BorderStyle.THIN);
style.setLeftBorderColor(HSSFColor.GREEN.index);
style.setLeftBorderColor(HSSFColorPredefined.GREEN.getIndex());
style.setBorderRight(BorderStyle.THIN);
style.setRightBorderColor(HSSFColor.BLUE.index);
style.setRightBorderColor(HSSFColorPredefined.BLUE.getIndex());
style.setBorderTop(BorderStyle.MEDIUM_DASHED);
style.setTopBorderColor(HSSFColor.ORANGE.index);
style.setTopBorderColor(HSSFColorPredefined.ORANGE.getIndex());
cell.setCellStyle(style);
// Write the output to a file

View File

@ -28,7 +28,7 @@ import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
/**
* Demonstrates how to work with excel cell comments.
@ -81,7 +81,7 @@ public class CellComments {
font.setFontName("Arial");
font.setFontHeightInPoints((short)10);
font.setBold(true);
font.setColor(HSSFColor.RED.index);
font.setColor(HSSFColorPredefined.RED.getIndex());
string.applyFont(font);
comment2.setString(string);

View File

@ -25,7 +25,7 @@ import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.usermodel.FillPatternType;
/**
@ -41,7 +41,7 @@ public class FrillsAndFills {
// Aqua background
HSSFCellStyle style = wb.createCellStyle();
style.setFillBackgroundColor(HSSFColor.AQUA.index);
style.setFillBackgroundColor(HSSFColorPredefined.AQUA.getIndex());
style.setFillPattern(FillPatternType.BIG_SPOTS);
HSSFCell cell = row.createCell(1);
cell.setCellValue("X");
@ -49,7 +49,7 @@ public class FrillsAndFills {
// Orange "foreground", foreground being the fill foreground not the font color.
style = wb.createCellStyle();
style.setFillForegroundColor(HSSFColor.ORANGE.index);
style.setFillForegroundColor(HSSFColorPredefined.ORANGE.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell = row.createCell(2);
cell.setCellValue("X");

View File

@ -28,13 +28,11 @@ import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFHyperlink;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.usermodel.Font;
/**
* Demonstrates how to create hyperlinks.
*
* @author Yegor Kozlov (yegor at apach.org)
*/
public class Hyperlinks {
@ -47,7 +45,7 @@ public class Hyperlinks {
HSSFCellStyle hlink_style = wb.createCellStyle();
HSSFFont hlink_font = wb.createFont();
hlink_font.setUnderline(Font.U_SINGLE);
hlink_font.setColor(HSSFColor.BLUE.index);
hlink_font.setColor(HSSFColorPredefined.BLUE.getIndex());
hlink_style.setFont(hlink_font);
HSSFCell cell;

View File

@ -18,6 +18,8 @@
package org.apache.poi.hssf.view;
import static org.apache.poi.hssf.view.SVTableUtils.getAWTColor;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
@ -25,7 +27,6 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.util.EventObject;
import java.util.Map;
import javax.swing.AbstractCellEditor;
import javax.swing.JTable;
@ -37,7 +38,7 @@ import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.usermodel.FillPatternType;
/**
@ -47,10 +48,8 @@ import org.apache.poi.ss.usermodel.FillPatternType;
* @author Jason Height
*/
public class SVTableCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
private static final Color black = getAWTColor(new HSSFColor.BLACK());
private static final Color white = getAWTColor(new HSSFColor.WHITE());
private Map<Integer,HSSFColor> colors = HSSFColor.getIndexHash();
private static final Color black = getAWTColor(HSSFColorPredefined.BLACK);
private static final Color white = getAWTColor(HSSFColorPredefined.WHITE);
private HSSFWorkbook wb;
private JTextField editor;
@ -67,7 +66,7 @@ public class SVTableCellEditor extends AbstractCellEditor implements TableCellEd
* @return The cellEditable value
*/
@Override
public boolean isCellEditable(java.util.EventObject e) {
public boolean isCellEditable(java.util.EventObject e) {
if (e instanceof MouseEvent) {
return ((MouseEvent) e).getClickCount() >= 2;
}
@ -76,7 +75,7 @@ public boolean isCellEditable(java.util.EventObject e) {
@Override
public boolean shouldSelectCell(EventObject anEvent) {
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
@ -88,7 +87,7 @@ public boolean shouldSelectCell(EventObject anEvent) {
@Override
public boolean stopCellEditing() {
public boolean stopCellEditing() {
System.out.println("Stop Cell Editing");
fireEditingStopped();
return true;
@ -96,14 +95,14 @@ public boolean stopCellEditing() {
@Override
public void cancelCellEditing() {
public void cancelCellEditing() {
System.out.println("Cancel Cell Editing");
fireEditingCanceled();
}
@Override
public void actionPerformed(ActionEvent e) {
public void actionPerformed(ActionEvent e) {
System.out.println("Action performed");
stopCellEditing();
}
@ -115,7 +114,7 @@ public void actionPerformed(ActionEvent e) {
* @return The cellEditorValue value
*/
@Override
public Object getCellEditorValue() {
public Object getCellEditorValue() {
System.out.println("GetCellEditorValue");
//JMH Look at when this method is called. Should it return a HSSFCell?
return editor.getText();
@ -128,7 +127,7 @@ public Object getCellEditorValue() {
* @return The tableCellEditorComponent value
*/
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected,
int row,
int column) {
@ -142,18 +141,26 @@ public Component getTableCellEditorComponent(JTable table, Object value,
int fontstyle = Font.PLAIN;
if (isbold) fontstyle = Font.BOLD;
if (isitalics) fontstyle = fontstyle | Font.ITALIC;
if (isbold) {
fontstyle = Font.BOLD;
}
if (isitalics) {
fontstyle = fontstyle | Font.ITALIC;
}
int fontheight = f.getFontHeightInPoints();
if (fontheight == 9) fontheight = 10; //fix for stupid ol Windows
if (fontheight == 9) {
fontheight = 10; //fix for stupid ol Windows
}
Font font = new Font(f.getFontName(),fontstyle,fontheight);
editor.setFont(font);
if (style.getFillPatternEnum() == FillPatternType.SOLID_FOREGROUND) {
editor.setBackground(getAWTColor(style.getFillForegroundColor(), white));
} else editor.setBackground(white);
} else {
editor.setBackground(white);
}
editor.setForeground(getAWTColor(f.getColor(), black));
@ -202,18 +209,4 @@ public Component getTableCellEditorComponent(JTable table, Object value,
}
return editor;
}
/** This method retrieves the AWT Color representation from the colour hash table
*
*/
private final Color getAWTColor(int index, Color deflt) {
HSSFColor clr = colors.get(index);
if (clr == null) return deflt;
return getAWTColor(clr);
}
private static final Color getAWTColor(HSSFColor clr) {
short[] rgb = clr.getTriplet();
return new Color(rgb[0],rgb[1],rgb[2]);
}
}

View File

@ -18,12 +18,16 @@
package org.apache.poi.hssf.view;
import java.util.*;
import java.awt.*;
import javax.swing.border.*;
import java.awt.Color;
import java.awt.Font;
import java.util.Map;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
/**
* SVTableCell Editor and Renderer helper functions.
@ -33,9 +37,9 @@ import org.apache.poi.hssf.util.*;
public class SVTableUtils {
private final static Map<Integer,HSSFColor> colors = HSSFColor.getIndexHash();
/** Description of the Field */
public final static Color black = getAWTColor(new HSSFColor.BLACK());
public final static Color black = getAWTColor(HSSFColorPredefined.BLACK);
/** Description of the Field */
public final static Color white = getAWTColor(new HSSFColor.WHITE());
public final static Color white = getAWTColor(HSSFColorPredefined.WHITE);
/** Description of the Field */
public static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
@ -44,7 +48,7 @@ public class SVTableUtils {
* Creates a new font for a specific cell style
*/
public static Font makeFont(HSSFFont font) {
boolean isbold = font.getBoldweight() > HSSFFont.BOLDWEIGHT_NORMAL;
boolean isbold = font.getBold();
boolean isitalics = font.getItalic();
int fontstyle = Font.PLAIN;
if (isbold) {
@ -63,31 +67,20 @@ public class SVTableUtils {
return new Font(font.getFontName(), fontstyle, fontheight);
}
/**
* This method retrieves the AWT Color representation from the colour hash table
/** This method retrieves the AWT Color representation from the colour hash table
*
* @param index Description of the Parameter
* @param deflt Description of the Parameter
* @return The aWTColor value
*/
public final static Color getAWTColor(int index, Color deflt) {
/* package */ static final Color getAWTColor(int index, Color deflt) {
HSSFColor clr = colors.get(index);
if (clr == null) {
return deflt;
}
return getAWTColor(clr);
short[] rgb = clr.getTriplet();
return new Color(rgb[0],rgb[1],rgb[2]);
}
/**
* Gets the aWTColor attribute of the SVTableUtils class
*
* @param clr Description of the Parameter
* @return The aWTColor value
*/
public final static Color getAWTColor(HSSFColor clr) {
/* package */ static final Color getAWTColor(HSSFColorPredefined clr) {
short[] rgb = clr.getTriplet();
return new Color(rgb[0], rgb[1], rgb[2]);
return new Color(rgb[0],rgb[1],rgb[2]);
}
}

View File

@ -16,24 +16,23 @@
==================================================================== */
package org.apache.poi.ss.examples.html;
import java.util.Formatter;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFPalette;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.usermodel.CellStyle;
import java.util.Formatter;
/**
* Implementation of {@link HtmlHelper} for HSSF files.
*
* @author Ken Arnold, Industrious Media LLC
*/
public class HSSFHtmlHelper implements HtmlHelper {
private final HSSFWorkbook wb;
private final HSSFPalette colors;
private static final HSSFColor HSSF_AUTO = new HSSFColor.AUTOMATIC();
private static final HSSFColor HSSF_AUTO = HSSFColorPredefined.AUTOMATIC.getColor();
public HSSFHtmlHelper(HSSFWorkbook wb) {
this.wb = wb;
@ -45,7 +44,7 @@ public class HSSFHtmlHelper implements HtmlHelper {
@Override
public void colorStyles(CellStyle style, Formatter out) {
HSSFCellStyle cs = (HSSFCellStyle) style;
out.format(" /* fill pattern = %d */%n", cs.getFillPattern());
out.format(" /* fill pattern = %d */%n", cs.getFillPatternEnum().getCode());
styleColor(out, "background-color", cs.getFillForegroundColor());
styleColor(out, "color", cs.getFont(wb).getColor());
styleColor(out, "border-left-color", cs.getLeftBorderColor());

View File

@ -88,7 +88,7 @@ import org.apache.poi.hssf.record.WriteAccessRecord;
import org.apache.poi.hssf.record.WriteProtectRecord;
import org.apache.poi.hssf.record.common.UnicodeString;
import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.poifs.crypt.CryptoFunctions;
import org.apache.poi.poifs.crypt.Decryptor;
import org.apache.poi.poifs.crypt.EncryptionInfo;
@ -231,9 +231,10 @@ public final class InternalWorkbook {
* @return Workbook object
*/
public static InternalWorkbook createWorkbook(List<Record> recs) {
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "Workbook (readfile) created with reclen=",
Integer.valueOf(recs.size()));
}
InternalWorkbook retval = new InternalWorkbook();
List<Record> records = new ArrayList<Record>(recs.size() / 3);
retval.records.setRecords(records);
@ -244,54 +245,62 @@ public final class InternalWorkbook {
if (rec.getSid() == EOFRecord.sid) {
records.add(rec);
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found workbook eof record at " + k);
}
break;
}
switch (rec.getSid()) {
case BoundSheetRecord.sid :
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found boundsheet record at " + k);
}
retval.boundsheets.add((BoundSheetRecord) rec);
retval.records.setBspos( k );
break;
case SSTRecord.sid :
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found sst record at " + k);
}
retval.sst = ( SSTRecord ) rec;
break;
case FontRecord.sid :
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found font record at " + k);
}
retval.records.setFontpos( k );
retval.numfonts++;
break;
case ExtendedFormatRecord.sid :
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found XF record at " + k);
}
retval.records.setXfpos( k );
retval.numxfs++;
break;
case TabIdRecord.sid :
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found tabid record at " + k);
}
retval.records.setTabpos( k );
break;
case ProtectRecord.sid :
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found protect record at " + k);
}
retval.records.setProtpos( k );
break;
case BackupRecord.sid :
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found backup record at " + k);
}
retval.records.setBackuppos( k );
break;
case ExternSheetRecord.sid :
@ -299,57 +308,67 @@ public final class InternalWorkbook {
case NameRecord.sid :
case SupBookRecord.sid :
// LinkTable can start with either of these
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found SupBook record at " + k);
}
retval.linkTable = new LinkTable(recs, k, retval.records, retval.commentRecords);
k+=retval.linkTable.getRecordCount() - 1;
continue;
case FormatRecord.sid :
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found format record at " + k);
}
retval.formats.add((FormatRecord) rec);
retval.maxformatid = retval.maxformatid >= ((FormatRecord)rec).getIndexCode() ? retval.maxformatid : ((FormatRecord)rec).getIndexCode();
break;
case DateWindow1904Record.sid :
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found datewindow1904 record at " + k);
}
retval.uses1904datewindowing = ((DateWindow1904Record)rec).getWindowing() == 1;
break;
case PaletteRecord.sid:
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found palette record at " + k);
}
retval.records.setPalettepos( k );
break;
case WindowOneRecord.sid:
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found WindowOneRecord at " + k);
}
retval.windowOne = (WindowOneRecord) rec;
break;
case WriteAccessRecord.sid:
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found WriteAccess at " + k);
}
retval.writeAccess = (WriteAccessRecord) rec;
break;
case WriteProtectRecord.sid:
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found WriteProtect at " + k);
}
retval.writeProtect = (WriteProtectRecord) rec;
break;
case FileSharingRecord.sid:
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found FileSharing at " + k);
}
retval.fileShare = (FileSharingRecord) rec;
break;
case NameCommentRecord.sid:
final NameCommentRecord ncr = (NameCommentRecord) rec;
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "found NameComment at " + k);
}
retval.commentRecords.put(ncr.getNameText(), ncr);
break;
default:
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "ignoring record (sid=" + rec.getSid() + ") at " + k);
}
break;
}
records.add(rec);
@ -376,8 +395,9 @@ public final class InternalWorkbook {
if (retval.windowOne == null) {
retval.windowOne = createWindowOne();
}
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "exit create workbook from existing file function");
}
return retval;
}
@ -389,8 +409,9 @@ public final class InternalWorkbook {
*/
public static InternalWorkbook createWorkbook()
{
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log( DEBUG, "creating new workbook from scratch" );
}
InternalWorkbook retval = new InternalWorkbook();
List<Record> records = new ArrayList<Record>( 30 );
retval.records.setRecords(records);
@ -463,8 +484,9 @@ public final class InternalWorkbook {
records.add(InternalWorkbook.createExtendedSST());
records.add(EOFRecord.instance);
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log( DEBUG, "exit create new workbook from scratch" );
}
return retval;
}
@ -592,9 +614,10 @@ public final class InternalWorkbook {
*/
public void setSheetBof(int sheetIndex, int pos) {
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "setting bof for sheetnum =", Integer.valueOf(sheetIndex),
" at pos=", Integer.valueOf(pos));
}
checkSheets(sheetIndex);
getBoundSheetRec(sheetIndex)
.setPositionOfBof(pos);
@ -626,7 +649,9 @@ public final class InternalWorkbook {
checkSheets(sheetnum);
// YK: Mimic Excel and silently truncate sheet names longer than 31 characters
if(sheetname.length() > 31) sheetname = sheetname.substring(0, 31);
if(sheetname.length() > 31) {
sheetname = sheetname.substring(0, 31);
}
BoundSheetRecord sheet = boundsheets.get(sheetnum);
sheet.setSheetname(sheetname);
@ -868,8 +893,9 @@ public final class InternalWorkbook {
*/
public int getNumSheets() {
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "getNumSheets=", Integer.valueOf(boundsheets.size()));
}
return boundsheets.size();
}
@ -880,8 +906,9 @@ public final class InternalWorkbook {
*/
public int getNumExFormats() {
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "getXF=", Integer.valueOf(numxfs));
}
return numxfs;
}
@ -1019,8 +1046,9 @@ public final class InternalWorkbook {
*/
public int addSSTString(UnicodeString string) {
if (log.check( POILogger.DEBUG ))
log.log(DEBUG, "insert to sst string='", string);
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "insert to sst string='", string);
}
if (sst == null) {
insertSST();
}
@ -1038,9 +1066,10 @@ public final class InternalWorkbook {
}
UnicodeString retval = sst.getString(str);
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "Returning SST for index=", Integer.valueOf(str),
" String= ", retval);
}
return retval;
}
@ -1052,8 +1081,9 @@ public final class InternalWorkbook {
*/
public void insertSST() {
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log(DEBUG, "creating new SST via insertSST!");
}
sst = new SSTRecord();
records.add(records.size() - 1, createExtendedSST());
records.add(records.size() - 2, sst);
@ -1096,8 +1126,9 @@ public final class InternalWorkbook {
*/
public int serialize( int offset, byte[] data )
{
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log( DEBUG, "Serializing Workbook with offsets" );
}
int pos = 0;
@ -1133,8 +1164,9 @@ public final class InternalWorkbook {
///// DEBUG END /////
pos += len; // rec.length;
}
if (log.check( POILogger.DEBUG ))
if (log.check( POILogger.DEBUG )) {
log.log( DEBUG, "Exiting serialize workbook" );
}
return pos;
}
@ -1207,13 +1239,15 @@ public final class InternalWorkbook {
for ( int k = 0; k < records.size(); k++ )
{
Record record = records.get( k );
if (record instanceof SSTRecord)
if (record instanceof SSTRecord) {
sst = (SSTRecord)record;
}
if (record.getSid() == ExtSSTRecord.sid && sst != null)
if (record.getSid() == ExtSSTRecord.sid && sst != null) {
retval += sst.calcExtSSTRecordSize();
else
} else {
retval += record.getRecordSize();
}
}
return retval;
@ -1250,7 +1284,9 @@ public final class InternalWorkbook {
try {
String username = System.getProperty("user.name");
// Google App engine returns null for user.name, see Bug 53974
if(username == null) username = defaultUserName;
if(username == null) {
username = defaultUserName;
}
retval.setUsername(username);
} catch (AccessControlException e) {
@ -1799,10 +1835,10 @@ public final class InternalWorkbook {
retval.setPaletteOptions(( short ) 0);
retval.setAdtlPaletteOptions(( short ) 0);
retval.setFillPaletteOptions(( short ) 0x20c0);
retval.setTopBorderPaletteIdx(HSSFColor.BLACK.index);
retval.setBottomBorderPaletteIdx(HSSFColor.BLACK.index);
retval.setLeftBorderPaletteIdx(HSSFColor.BLACK.index);
retval.setRightBorderPaletteIdx(HSSFColor.BLACK.index);
retval.setTopBorderPaletteIdx(HSSFColorPredefined.BLACK.getIndex());
retval.setBottomBorderPaletteIdx(HSSFColorPredefined.BLACK.getIndex());
retval.setLeftBorderPaletteIdx(HSSFColorPredefined.BLACK.getIndex());
retval.setRightBorderPaletteIdx(HSSFColorPredefined.BLACK.getIndex());
return retval;
}
@ -2172,8 +2208,9 @@ public final class InternalWorkbook {
FormatRecord rec = new FormatRecord(maxformatid, formatString);
int pos = 0;
while ( pos < records.size() && records.get( pos ).getSid() != FormatRecord.sid )
while ( pos < records.size() && records.get( pos ).getSid() != FormatRecord.sid ) {
pos++;
}
pos += formats.size();
formats.add( rec );
records.add( pos, rec );
@ -2226,8 +2263,9 @@ public final class InternalWorkbook {
int matches = 0;
for (Record record : records) {
if (record.getSid() == sid) {
if (matches++ == pos)
if (matches++ == pos) {
return record;
}
}
}
return null;
@ -2266,7 +2304,9 @@ public final class InternalWorkbook {
Record rec = records.get(palettePos);
if (rec instanceof PaletteRecord) {
palette = (PaletteRecord) rec;
} else throw new RuntimeException("InternalError: Expected PaletteRecord but got a '"+rec+"'");
} else {
throw new RuntimeException("InternalError: Expected PaletteRecord but got a '"+rec+"'");
}
}
else
{
@ -2316,7 +2356,9 @@ public final class InternalWorkbook {
drawingManager = new DrawingManager2(dgg);
if(bStore != null){
for(EscherRecord bs : bStore.getChildRecords()){
if(bs instanceof EscherBSERecord) escherBSERecords.add((EscherBSERecord)bs);
if(bs instanceof EscherBSERecord) {
escherBSERecords.add((EscherBSERecord)bs);
}
}
}
return drawingManager;
@ -2344,7 +2386,9 @@ public final class InternalWorkbook {
drawingManager = new DrawingManager2(dgg);
if(bStore != null){
for(EscherRecord bs : bStore.getChildRecords()){
if(bs instanceof EscherBSERecord) escherBSERecords.add((EscherBSERecord)bs);
if(bs instanceof EscherBSERecord) {
escherBSERecords.add((EscherBSERecord)bs);
}
}
}
}
@ -2395,8 +2439,9 @@ public final class InternalWorkbook {
splitMenuColors.setColor4(0x100000F7);
dggContainer.addChildRecord(dgg);
if (bstoreContainer != null)
if (bstoreContainer != null) {
dggContainer.addChildRecord( bstoreContainer );
}
dggContainer.addChildRecord(opt);
dggContainer.addChildRecord(splitMenuColors);

View File

@ -26,6 +26,7 @@ import org.apache.poi.hssf.record.FontRecord;
import org.apache.poi.hssf.record.FormatRecord;
import org.apache.poi.hssf.record.StyleRecord;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
@ -112,6 +113,7 @@ public final class HSSFCellStyle implements CellStyle {
// avoid multi-threading issues when different workbooks are accessed in
// multiple threads at the same time
private static final ThreadLocal<Short> lastDateFormat = new ThreadLocal<Short>() {
@Override
protected Short initialValue() {
return Short.MIN_VALUE;
}
@ -273,6 +275,7 @@ public final class HSSFCellStyle implements CellStyle {
* @see #ALIGN_CENTER_SELECTION
* @deprecated POI 3.15 beta 3. Use {@link #setAlignment(HorizontalAlignment)} instead.
*/
@Deprecated
@Removal(version="3.17")
@Override
public void setAlignment(short align)
@ -303,6 +306,7 @@ public final class HSSFCellStyle implements CellStyle {
* @see #ALIGN_CENTER_SELECTION
* @deprecated POI 3.15 beta 3. Use {@link #getAlignmentEnum()} instead.
*/
@Deprecated
@Override
public short getAlignment()
{
@ -349,6 +353,7 @@ public final class HSSFCellStyle implements CellStyle {
* @see VerticalAlignment
* @deprecated POI 3.15 beta 3. Use {@link #setVerticalAlignment(VerticalAlignment)} instead.
*/
@Deprecated
@Removal(version="3.17")
@Override
public void setVerticalAlignment(short align)
@ -375,6 +380,7 @@ public final class HSSFCellStyle implements CellStyle {
* @see VerticalAlignment
* @deprecated POI 3.15 beta 3. Use {@link #getVerticalAlignmentEnum()} instead.
*/
@Deprecated
@Override
public short getVerticalAlignment()
{
@ -480,6 +486,7 @@ public final class HSSFCellStyle implements CellStyle {
* @see #BORDER_SLANTED_DASH_DOT
* @deprecated 3.15 beta 2. Use {@link HSSFCellStyle#setBorderLeft(BorderStyle)} instead.
*/
@Deprecated
@Removal(version="3.17")
@Override
public void setBorderLeft(short border)
@ -504,6 +511,7 @@ public final class HSSFCellStyle implements CellStyle {
* @return border type
* @deprecated POI 3.15. Will return a BorderStyle enum in the future. Use {@link #getBorderLeftEnum()}.
*/
@Deprecated
@Override
public short getBorderLeft()
{
@ -539,6 +547,7 @@ public final class HSSFCellStyle implements CellStyle {
* @see #BORDER_SLANTED_DASH_DOT
* @deprecated 3.15 beta 2. Use {@link HSSFCellStyle#setBorderRight(BorderStyle)} instead.
*/
@Deprecated
@Removal(version="3.17")
@Override
public void setBorderRight(short border)
@ -563,6 +572,7 @@ public final class HSSFCellStyle implements CellStyle {
* @return border type
* @deprecated POI 3.15. Will return a BorderStyle enum in the future. Use {@link #getBorderRightEnum()}.
*/
@Deprecated
@Override
public short getBorderRight()
{
@ -598,6 +608,7 @@ public final class HSSFCellStyle implements CellStyle {
* @see #BORDER_SLANTED_DASH_DOT
* @deprecated 3.15 beta 2. Use {@link HSSFCellStyle#setBorderTop(BorderStyle)} instead.
*/
@Deprecated
@Removal(version="3.17")
@Override
public void setBorderTop(short border)
@ -622,6 +633,7 @@ public final class HSSFCellStyle implements CellStyle {
* @return border type
* @deprecated POI 3.15. Will return a BorderStyle enum in the future. Use {@link #getBorderTopEnum()}.
*/
@Deprecated
@Override
public short getBorderTop()
{
@ -657,6 +669,7 @@ public final class HSSFCellStyle implements CellStyle {
* @see #BORDER_SLANTED_DASH_DOT
* @deprecated 3.15 beta 2. Use {@link HSSFCellStyle#setBorderBottom(BorderStyle)} instead.
*/
@Deprecated
@Removal(version="3.17")
@Override
public void setBorderBottom(short border)
@ -681,6 +694,7 @@ public final class HSSFCellStyle implements CellStyle {
* @return border type
* @deprecated POI 3.15. Will return a BorderStyle enum in the future. Use {@link #getBorderBottomEnum()}.
*/
@Deprecated
@Override
public short getBorderBottom()
{
@ -806,6 +820,7 @@ public final class HSSFCellStyle implements CellStyle {
* @param fp fill pattern (set to 1 to fill w/foreground color)
* @deprecated POI 3.15 beta 3. Use {@link #setFillPattern(FillPatternType)} instead.
*/
@Deprecated
@Removal(version="3.17")
@Override
public void setFillPattern(short fp)
@ -830,6 +845,7 @@ public final class HSSFCellStyle implements CellStyle {
* @return fill pattern
* @deprecated POI 3.15 beta 3. This method will return {@link FillPatternType} in the future. Use {@link #setFillPattern(FillPatternType)} instead.
*/
@Deprecated
@Override
public short getFillPattern()
{
@ -857,16 +873,20 @@ public final class HSSFCellStyle implements CellStyle {
* <p>0x40 0xSOMETHING</p>
*/
private void checkDefaultBackgroundFills() {
if (_format.getFillForeground() == org.apache.poi.hssf.util.HSSFColor.AUTOMATIC.index) {
//JMH: Why +1, hell why not. I guess it made some sense to someone at the time. Doesnt
//to me now.... But experience has shown that when the fore is set to AUTOMATIC then the
//background needs to be incremented......
if (_format.getFillBackground() != (org.apache.poi.hssf.util.HSSFColor.AUTOMATIC.index+1))
setFillBackgroundColor((short)(org.apache.poi.hssf.util.HSSFColor.AUTOMATIC.index+1));
} else if (_format.getFillBackground() == org.apache.poi.hssf.util.HSSFColor.AUTOMATIC.index+1)
//Now if the forground changes to a non-AUTOMATIC color the background resets itself!!!
if (_format.getFillForeground() != org.apache.poi.hssf.util.HSSFColor.AUTOMATIC.index)
setFillBackgroundColor(org.apache.poi.hssf.util.HSSFColor.AUTOMATIC.index);
final short autoIdx = HSSFColorPredefined.AUTOMATIC.getIndex();
if (_format.getFillForeground() == autoIdx) {
//JMH: Why +1, hell why not. I guess it made some sense to someone at the time. Doesnt
//to me now.... But experience has shown that when the fore is set to AUTOMATIC then the
//background needs to be incremented......
if (_format.getFillBackground() != autoIdx+1) {
setFillBackgroundColor((short)(autoIdx+1));
}
} else if (_format.getFillBackground() == autoIdx+1) {
//Now if the forground changes to a non-AUTOMATIC color the background resets itself!!!
if (_format.getFillForeground() != autoIdx) {
setFillBackgroundColor(autoIdx);
}
}
}
/**
@ -909,13 +929,13 @@ public final class HSSFCellStyle implements CellStyle {
* @return fill color
*/
@Override
public short getFillBackgroundColor()
{
public short getFillBackgroundColor() {
final short autoIndex = HSSFColorPredefined.AUTOMATIC.getIndex();
short result = _format.getFillBackground();
//JMH: Do this ridiculous conversion, and let HSSFCellStyle
//internally migrate back and forth
if (result == (HSSFColor.AUTOMATIC.index+1)) {
return HSSFColor.AUTOMATIC.index;
if (result == autoIndex+1) {
return autoIndex;
}
return result;
}
@ -1117,17 +1137,24 @@ public final class HSSFCellStyle implements CellStyle {
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (obj instanceof HSSFCellStyle) {
final HSSFCellStyle other = (HSSFCellStyle) obj;
if (_format == null) {
if (other._format != null)
if (other._format != null) {
return false;
} else if (!_format.equals(other._format))
}
} else if (!_format.equals(other._format)) {
return false;
if (_index != other._index)
}
if (_index != other._index) {
return false;
}
return true;
}
return false;

View File

@ -21,6 +21,7 @@ import java.util.Locale;
import org.apache.poi.hssf.record.PaletteRecord;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
/**
* Represents a workbook color palette.
@ -45,16 +46,13 @@ public final class HSSFPalette {
public HSSFColor getColor(short index)
{
//Handle the special AUTOMATIC case
if (index == HSSFColor.AUTOMATIC.index) {
return HSSFColor.AUTOMATIC.getInstance();
if (index == HSSFColorPredefined.AUTOMATIC.getIndex()) {
return HSSFColorPredefined.AUTOMATIC.getColor();
}
byte[] b = _palette.getColor(index);
if (b != null)
{
return new CustomColor(index, b);
}
return null;
return (b == null) ? null : new CustomColor(index, b);
}
/**
* Retrieves the color at a given index
*

File diff suppressed because it is too large Load Diff

View File

@ -18,8 +18,13 @@
package org.apache.poi.hssf.record;
import static org.junit.Assert.assertArrayEquals;
import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import org.apache.poi.hssf.HSSFITestDataProvider;
import org.apache.poi.hssf.record.CFRuleBase.ComparisonOperator;
@ -28,44 +33,49 @@ import org.apache.poi.hssf.record.cf.FontFormatting;
import org.apache.poi.hssf.record.cf.PatternFormatting;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.formula.ptg.Ptg;
import org.apache.poi.ss.formula.ptg.RefNPtg;
import org.apache.poi.ss.formula.ptg.RefPtg;
import org.apache.poi.ss.usermodel.ConditionalFormattingThreshold.RangeType;
import org.apache.poi.ss.usermodel.IconMultiStateFormatting.IconSet;
import org.apache.poi.util.LittleEndian;
import org.junit.Test;
import junit.framework.AssertionFailedError;
/**
* Tests the serialization and deserialization of the TestCFRuleRecord
* class works correctly.
*/
@SuppressWarnings("resource")
public final class TestCFRuleRecord extends TestCase {
public void testConstructors () {
public final class TestCFRuleRecord {
@Test
public void testConstructors () throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
CFRuleRecord rule1 = CFRuleRecord.create(sheet, "7");
assertEquals(CFRuleRecord.CONDITION_TYPE_FORMULA, rule1.getConditionType());
assertEquals(CFRuleBase.CONDITION_TYPE_FORMULA, rule1.getConditionType());
assertEquals(ComparisonOperator.NO_COMPARISON, rule1.getComparisonOperation());
assertNotNull(rule1.getParsedExpression1());
assertSame(Ptg.EMPTY_PTG_ARRAY, rule1.getParsedExpression2());
CFRuleRecord rule2 = CFRuleRecord.create(sheet, ComparisonOperator.BETWEEN, "2", "5");
assertEquals(CFRuleRecord.CONDITION_TYPE_CELL_VALUE_IS, rule2.getConditionType());
assertEquals(CFRuleBase.CONDITION_TYPE_CELL_VALUE_IS, rule2.getConditionType());
assertEquals(ComparisonOperator.BETWEEN, rule2.getComparisonOperation());
assertNotNull(rule2.getParsedExpression1());
assertNotNull(rule2.getParsedExpression2());
CFRuleRecord rule3 = CFRuleRecord.create(sheet, ComparisonOperator.EQUAL, null, null);
assertEquals(CFRuleRecord.CONDITION_TYPE_CELL_VALUE_IS, rule3.getConditionType());
assertEquals(CFRuleBase.CONDITION_TYPE_CELL_VALUE_IS, rule3.getConditionType());
assertEquals(ComparisonOperator.EQUAL, rule3.getComparisonOperation());
assertSame(Ptg.EMPTY_PTG_ARRAY, rule3.getParsedExpression2());
assertSame(Ptg.EMPTY_PTG_ARRAY, rule3.getParsedExpression2());
workbook.close();
}
public void testCreateCFRuleRecord() {
@Test
public void testCreateCFRuleRecord() throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
CFRuleRecord record = CFRuleRecord.create(sheet, "7");
@ -87,13 +97,14 @@ public final class TestCFRuleRecord extends TestCase {
// Compare
assertEquals("Output size", recordData.length+4, output.length); //includes sid+recordlength
for (int i = 0; i < recordData.length;i++)
{
for (int i = 0; i < recordData.length;i++) {
assertEquals("CFRuleRecord doesn't match", recordData[i], output[i+4]);
}
workbook.close();
}
public void testCreateCFRule12Record() {
@Test
public void testCreateCFRule12Record() throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
CFRule12Record record = CFRule12Record.create(sheet, "7");
@ -115,13 +126,14 @@ public final class TestCFRuleRecord extends TestCase {
// Compare
assertEquals("Output size", recordData.length+4, output.length); //includes sid+recordlength
for (int i = 0; i < recordData.length;i++)
{
for (int i = 0; i < recordData.length;i++) {
assertEquals("CFRule12Record doesn't match", recordData[i], output[i+4]);
}
workbook.close();
}
public void testCreateIconCFRule12Record() {
@Test
public void testCreateIconCFRule12Record() throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
CFRule12Record record = CFRule12Record.create(sheet, IconSet.GREY_5_ARROWS);
@ -155,10 +167,10 @@ public final class TestCFRuleRecord extends TestCase {
// Compare
assertEquals("Output size", recordData.length+4, output.length); //includes sid+recordlength
for (int i = 0; i < recordData.length;i++)
{
for (int i = 0; i < recordData.length;i++) {
assertEquals("CFRule12Record doesn't match", recordData[i], output[i+4]);
}
workbook.close();
}
private void testCFRuleRecord(CFRuleRecord record) {
@ -227,11 +239,11 @@ public final class TestCFRuleRecord extends TestCase {
}
private void testPatternFormattingAccessors(PatternFormatting patternFormatting) {
patternFormatting.setFillBackgroundColor(HSSFColor.GREEN.index);
assertEquals(HSSFColor.GREEN.index,patternFormatting.getFillBackgroundColor());
patternFormatting.setFillBackgroundColor(HSSFColorPredefined.GREEN.getIndex());
assertEquals(HSSFColorPredefined.GREEN.getIndex(),patternFormatting.getFillBackgroundColor());
patternFormatting.setFillForegroundColor(HSSFColor.INDIGO.index);
assertEquals(HSSFColor.INDIGO.index,patternFormatting.getFillForegroundColor());
patternFormatting.setFillForegroundColor(HSSFColorPredefined.INDIGO.getIndex());
assertEquals(HSSFColorPredefined.INDIGO.getIndex(),patternFormatting.getFillForegroundColor());
patternFormatting.setFillPattern(PatternFormatting.DIAMONDS);
assertEquals(PatternFormatting.DIAMONDS,patternFormatting.getFillPattern());
@ -258,24 +270,24 @@ public final class TestCFRuleRecord extends TestCase {
borderFormatting.setBorderTop(BorderFormatting.BORDER_HAIR);
assertEquals(BorderFormatting.BORDER_HAIR, borderFormatting.getBorderTop());
borderFormatting.setBottomBorderColor(HSSFColor.AQUA.index);
assertEquals(HSSFColor.AQUA.index, borderFormatting.getBottomBorderColor());
borderFormatting.setBottomBorderColor(HSSFColorPredefined.AQUA.getIndex());
assertEquals(HSSFColorPredefined.AQUA.getIndex(), borderFormatting.getBottomBorderColor());
borderFormatting.setDiagonalBorderColor(HSSFColor.RED.index);
assertEquals(HSSFColor.RED.index, borderFormatting.getDiagonalBorderColor());
borderFormatting.setDiagonalBorderColor(HSSFColorPredefined.RED.getIndex());
assertEquals(HSSFColorPredefined.RED.getIndex(), borderFormatting.getDiagonalBorderColor());
assertFalse(borderFormatting.isForwardDiagonalOn());
borderFormatting.setForwardDiagonalOn(true);
assertTrue(borderFormatting.isForwardDiagonalOn());
borderFormatting.setLeftBorderColor(HSSFColor.BLACK.index);
assertEquals(HSSFColor.BLACK.index, borderFormatting.getLeftBorderColor());
borderFormatting.setLeftBorderColor(HSSFColorPredefined.BLACK.getIndex());
assertEquals(HSSFColorPredefined.BLACK.getIndex(), borderFormatting.getLeftBorderColor());
borderFormatting.setRightBorderColor(HSSFColor.BLUE.index);
assertEquals(HSSFColor.BLUE.index, borderFormatting.getRightBorderColor());
borderFormatting.setRightBorderColor(HSSFColorPredefined.BLUE.getIndex());
assertEquals(HSSFColorPredefined.BLUE.getIndex(), borderFormatting.getRightBorderColor());
borderFormatting.setTopBorderColor(HSSFColor.GOLD.index);
assertEquals(HSSFColor.GOLD.index, borderFormatting.getTopBorderColor());
borderFormatting.setTopBorderColor(HSSFColorPredefined.GOLD.getIndex());
assertEquals(HSSFColorPredefined.GOLD.getIndex(), borderFormatting.getTopBorderColor());
}
@ -378,7 +390,8 @@ public final class TestCFRuleRecord extends TestCase {
assertTrue(fontFormatting.isUnderlineTypeModified());
}
public void testWrite() {
@Test
public void testWrite() throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
CFRuleRecord rr = CFRuleRecord.create(sheet, ComparisonOperator.BETWEEN, "5", "10");
@ -397,6 +410,7 @@ public final class TestCFRuleRecord extends TestCase {
assertEquals("undocumented flags should be 0000", 0, flags & 0x03C00000); // Otherwise Excel gets unhappy
// check all remaining flag bits (some are not well understood yet)
assertEquals(0x203FFFFF, flags);
workbook.close();
}
private static final byte[] DATA_REFN = {
@ -413,6 +427,7 @@ public final class TestCFRuleRecord extends TestCase {
/**
* tRefN and tAreaN tokens must be preserved when re-serializing conditional format formulas
*/
@Test
public void testReserializeRefNTokens() {
RecordInputStream is = TestcaseRecordInputStream.create(CFRuleRecord.sid, DATA_REFN);
@ -431,7 +446,8 @@ public final class TestCFRuleRecord extends TestCase {
TestcaseRecordInputStream.confirmRecordEncoding(CFRuleRecord.sid, DATA_REFN, data);
}
public void testBug53691() {
@Test
public void testBug53691() throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
@ -442,12 +458,16 @@ public final class TestCFRuleRecord extends TestCase {
byte [] serializedRecord = record.serialize();
byte [] serializedClone = clone.serialize();
assertArrayEquals(serializedRecord, serializedClone);
workbook.close();
}
public void testBug57231_rewrite() {
HSSFWorkbook wb = HSSFITestDataProvider.instance.openSampleWorkbook("57231_MixedGasReport.xls");
assertEquals(7, wb.getNumberOfSheets());
wb = HSSFITestDataProvider.instance.writeOutAndReadBack(wb);
assertEquals(7, wb.getNumberOfSheets());
@Test
public void testBug57231_rewrite() throws IOException {
HSSFWorkbook wb1 = HSSFITestDataProvider.instance.openSampleWorkbook("57231_MixedGasReport.xls");
assertEquals(7, wb1.getNumberOfSheets());
HSSFWorkbook wb2 = HSSFITestDataProvider.instance.writeOutAndReadBack(wb1);
assertEquals(7, wb2.getNumberOfSheets());
wb2.close();
wb1.close();
}
}

View File

@ -27,8 +27,6 @@ import org.junit.Test;
/**
* Verifies that custom palette editing works correctly
*
* @author Brian Sanders (bsanders at risklabs dot com)
*/
public final class TestPaletteRecord {
@ -46,8 +44,8 @@ public final class TestPaletteRecord {
HSSFColor c = entry.getValue();
short[] rgbTriplet = c.getTriplet();
byte[] paletteTriplet = palette.getColor((short) index);
String msg = "Expected HSSFColor constant to match PaletteRecord at index 0x"
+ Integer.toHexString(c.getIndex());
String msg = "Expected HSSFColor constant to match PaletteRecord at index" + (index == c.getIndex2() ? "2" : "") + " 0x"
+ Integer.toHexString(index);
assertEquals(msg, rgbTriplet[0], paletteTriplet[0] & 0xff);
assertEquals(msg, rgbTriplet[1], paletteTriplet[1] & 0xff);
assertEquals(msg, rgbTriplet[2], paletteTriplet[2] & 0xff);

View File

@ -18,6 +18,10 @@
package org.apache.poi.hssf.usermodel;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import java.awt.Color;
import java.io.IOException;
@ -27,21 +31,19 @@ import java.util.Map;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.record.PaletteRecord;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.junit.Before;
import org.junit.Test;
import junit.framework.TestCase;
/**
* @author Brian Sanders (bsanders at risklabs dot com)
*/
public final class TestHSSFPalette extends TestCase {
public final class TestHSSFPalette {
private PaletteRecord _palette;
private HSSFPalette _hssfPalette;
@Override
public void setUp()
{
@Before
public void setUp() {
_palette = new PaletteRecord();
_hssfPalette = new HSSFPalette(_palette);
}
@ -49,6 +51,7 @@ public final class TestHSSFPalette extends TestCase {
/**
* Verifies that a custom palette can be created, saved, and reloaded
*/
@Test
public void testCustomPalette() {
//reading sample xls
HSSFWorkbook book = HSSFTestDataSamples.openSampleWorkbook("Simple.xls");
@ -62,9 +65,9 @@ public final class TestHSSFPalette extends TestCase {
book = HSSFTestDataSamples.writeOutAndReadBack(book);
palette = book.getCustomPalette();
HSSFColor color = palette.getColor(HSSFColor.CORAL.index); //unmodified
HSSFColor color = palette.getColor(HSSFColorPredefined.CORAL.getIndex()); //unmodified
assertNotNull("Unexpected null in custom palette (unmodified index)", color);
short[] expectedRGB = HSSFColor.CORAL.triplet;
short[] expectedRGB = HSSFColorPredefined.CORAL.getTriplet();
short[] actualRGB = color.getTriplet();
String msg = "Expected palette position to remain unmodified";
assertEquals(msg, expectedRGB[0], actualRGB[0]);
@ -83,6 +86,7 @@ public final class TestHSSFPalette extends TestCase {
/**
* Uses the palette from cell stylings
*/
@Test
public void testPaletteFromCellColours() {
HSSFWorkbook book = HSSFTestDataSamples.openSampleWorkbook("SimpleWithColours.xls");
@ -98,8 +102,8 @@ public final class TestHSSFPalette extends TestCase {
assertEquals("I'm plain", cellA.getStringCellValue());
assertEquals(64, cellA.getCellStyle().getFillForegroundColor());
assertEquals(64, cellA.getCellStyle().getFillBackgroundColor());
assertEquals(HSSFFont.COLOR_NORMAL, cellA.getCellStyle().getFont(book).getColor());
assertEquals(0, cellA.getCellStyle().getFillPattern());
assertEquals(Font.COLOR_NORMAL, cellA.getCellStyle().getFont(book).getColor());
assertEquals(FillPatternType.NO_FILL, cellA.getCellStyle().getFillPatternEnum());
assertEquals("0:0:0", p.getColor((short)64).getHexString());
assertEquals(null, p.getColor((short)32767));
@ -108,7 +112,7 @@ public final class TestHSSFPalette extends TestCase {
assertEquals(64, cellB.getCellStyle().getFillForegroundColor());
assertEquals(64, cellB.getCellStyle().getFillBackgroundColor());
assertEquals(10, cellB.getCellStyle().getFont(book).getColor());
assertEquals(0, cellB.getCellStyle().getFillPattern());
assertEquals(FillPatternType.NO_FILL, cellB.getCellStyle().getFillPatternEnum());
assertEquals("0:0:0", p.getColor((short)64).getHexString());
assertEquals("FFFF:0:0", p.getColor((short)10).getHexString());
@ -117,7 +121,7 @@ public final class TestHSSFPalette extends TestCase {
assertEquals(11, cellC.getCellStyle().getFillForegroundColor());
assertEquals(64, cellC.getCellStyle().getFillBackgroundColor());
assertEquals(10, cellC.getCellStyle().getFont(book).getColor());
assertEquals(1, cellC.getCellStyle().getFillPattern());
assertEquals(FillPatternType.SOLID_FOREGROUND, cellC.getCellStyle().getFillPatternEnum());
assertEquals("0:FFFF:0", p.getColor((short)11).getHexString());
assertEquals("FFFF:0:0", p.getColor((short)10).getHexString());
@ -126,7 +130,7 @@ public final class TestHSSFPalette extends TestCase {
assertEquals(13, cellD.getCellStyle().getFillForegroundColor());
assertEquals(64, cellD.getCellStyle().getFillBackgroundColor());
assertEquals(14, cellD.getCellStyle().getFont(book).getColor());
assertEquals(0, cellD.getCellStyle().getFillPattern());
assertEquals(FillPatternType.NO_FILL, cellD.getCellStyle().getFillPatternEnum());
assertEquals("FFFF:FFFF:0", p.getColor((short)13).getHexString());
assertEquals("FFFF:0:FFFF", p.getColor((short)14).getHexString());
@ -135,11 +139,12 @@ public final class TestHSSFPalette extends TestCase {
assertEquals(13, cellE.getCellStyle().getFillForegroundColor());
assertEquals(64, cellE.getCellStyle().getFillBackgroundColor());
assertEquals(14, cellE.getCellStyle().getFont(book).getColor());
assertEquals(0, cellE.getCellStyle().getFillPattern());
assertEquals(FillPatternType.NO_FILL, cellE.getCellStyle().getFillPatternEnum());
assertEquals("FFFF:FFFF:0", p.getColor((short)13).getHexString());
assertEquals("FFFF:0:FFFF", p.getColor((short)14).getHexString());
}
@Test
public void testFindSimilar() throws IOException {
HSSFWorkbook book = new HSSFWorkbook();
HSSFPalette p = book.getCustomPalette();
@ -230,6 +235,7 @@ public final class TestHSSFPalette extends TestCase {
* Verifies that the generated gnumeric-format string values match the
* hardcoded values in the HSSFColor default color palette
*/
@Test
public void testGnumericStrings() {
compareToDefaults(new ColorComparator() {
@Override
@ -243,6 +249,7 @@ public final class TestHSSFPalette extends TestCase {
/**
* Verifies that the palette handles invalid palette indexes
*/
@Test
public void testBadIndexes() {
//too small
_hssfPalette.setColorAtIndex((short) 2, (byte) 255, (byte) 255, (byte) 255);
@ -275,6 +282,7 @@ public final class TestHSSFPalette extends TestCase {
}
}
@Test
public void testAddColor() {
try
{

View File

@ -17,22 +17,18 @@
package org.apache.poi.hssf.util;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
/**
* Collects all tests for org.apache.poi.hssf.util.
*
* @author Josh Micich
*/
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestAreaReference.class,
TestCellReference.class,
TestHSSFColor.class,
TestRKUtil.class
})
public class AllHSSFUtilTests {
public static Test suite() {
TestSuite result = new TestSuite(AllHSSFUtilTests.class.getName());
result.addTestSuite(TestAreaReference.class);
// result.addTestSuite(TestCellReference.class); //converted to junit4
result.addTestSuite(TestHSSFColor.class);
result.addTestSuite(TestRKUtil.class);
return result;
}
}

View File

@ -17,38 +17,45 @@
package org.apache.poi.hssf.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Map;
import junit.framework.TestCase;
/**
* @author Nick Burch
*/
public final class TestHSSFColor extends TestCase {
public void testBasics() {
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
import org.junit.Test;
public final class TestHSSFColor {
@Test
public void testBasics() {
assertNotNull(HSSFColor.YELLOW.class);
assertTrue(HSSFColor.YELLOW.index > 0);
assertTrue(HSSFColor.YELLOW.index2 > 0);
assertTrue(HSSFColorPredefined.YELLOW.getIndex() > 0);
assertTrue(HSSFColorPredefined.YELLOW.getIndex2() > 0);
}
@Test
public void testContents() {
assertEquals(3, HSSFColor.YELLOW.triplet.length);
assertEquals(255, HSSFColor.YELLOW.triplet[0]);
assertEquals(255, HSSFColor.YELLOW.triplet[1]);
assertEquals(0, HSSFColor.YELLOW.triplet[2]);
short[] triplet = HSSFColorPredefined.YELLOW.getTriplet();
assertEquals(3, triplet.length);
assertEquals(255, triplet[0]);
assertEquals(255, triplet[1]);
assertEquals(0, triplet[2]);
assertEquals("FFFF:FFFF:0", HSSFColor.YELLOW.hexString);
assertEquals("FFFF:FFFF:0", HSSFColorPredefined.YELLOW.getHexString());
}
@Test
public void testTrippletHash() {
Map<String, HSSFColor> tripplets = HSSFColor.getTripletHash();
assertEquals(
HSSFColor.MAROON.class,
tripplets.get(HSSFColor.MAROON.hexString).getClass()
tripplets.get(HSSFColorPredefined.MAROON.getHexString()).getClass()
);
assertEquals(
HSSFColor.YELLOW.class,
tripplets.get(HSSFColor.YELLOW.hexString).getClass()
tripplets.get(HSSFColorPredefined.YELLOW.getHexString()).getClass()
);
}
}