From bug #50786 - Speed up calls to HSSFColor.getIndexHash() by returning a cached, unmodifiable Map. HSSFColor.getModifiableIndexHash() provides access to the old (slow but modifiable) functionality
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1077920 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
63077a605f
commit
640a664542
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.8-beta2" date="2011-??-??">
|
<release version="3.8-beta2" date="2011-??-??">
|
||||||
|
<action dev="poi-developers" type="fix">50786 - Speed up calls to HSSFColor.getIndexHash() by returning a cached, unmodifiable Map. HSSFColor.getModifiableIndexHash() provides access to the old (slow but modifiable) functionality</action>
|
||||||
<action dev="poi-developers" type="fix">47100 - Change related formulas and named ranges when XSSFWorkbook.setSheetName is called</action>
|
<action dev="poi-developers" type="fix">47100 - Change related formulas and named ranges when XSSFWorkbook.setSheetName is called</action>
|
||||||
</release>
|
</release>
|
||||||
<release version="3.8-beta1" date="2011-03-07">
|
<release version="3.8-beta1" date="2011-03-07">
|
||||||
|
@ -37,7 +37,7 @@ import org.apache.poi.hssf.util.HSSFColor;
|
|||||||
public class SVTableCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
|
public class SVTableCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
|
||||||
private static final Color black = getAWTColor(new HSSFColor.BLACK());
|
private static final Color black = getAWTColor(new HSSFColor.BLACK());
|
||||||
private static final Color white = getAWTColor(new HSSFColor.WHITE());
|
private static final Color white = getAWTColor(new HSSFColor.WHITE());
|
||||||
private Hashtable colors = HSSFColor.getIndexHash();
|
private Map<Integer,HSSFColor> colors = HSSFColor.getIndexHash();
|
||||||
|
|
||||||
|
|
||||||
private HSSFWorkbook wb;
|
private HSSFWorkbook wb;
|
||||||
|
@ -31,7 +31,7 @@ import org.apache.poi.hssf.util.*;
|
|||||||
* @author Jason Height
|
* @author Jason Height
|
||||||
*/
|
*/
|
||||||
public class SVTableUtils {
|
public class SVTableUtils {
|
||||||
private final static Hashtable colors = HSSFColor.getIndexHash();
|
private final static Map<Integer,HSSFColor> colors = HSSFColor.getIndexHash();
|
||||||
/** Description of the Field */
|
/** Description of the Field */
|
||||||
public final static Color black = getAWTColor(new HSSFColor.BLACK());
|
public final static Color black = getAWTColor(new HSSFColor.BLACK());
|
||||||
/** Description of the Field */
|
/** Description of the Field */
|
||||||
|
@ -16,15 +16,15 @@
|
|||||||
==================================================================== */
|
==================================================================== */
|
||||||
package org.apache.poi.ss.examples.html;
|
package org.apache.poi.ss.examples.html;
|
||||||
|
|
||||||
|
import java.util.Formatter;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.poi.hssf.util.HSSFColor;
|
import org.apache.poi.hssf.util.HSSFColor;
|
||||||
import org.apache.poi.ss.usermodel.CellStyle;
|
import org.apache.poi.ss.usermodel.CellStyle;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
|
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFColor;
|
import org.apache.poi.xssf.usermodel.XSSFColor;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
|
|
||||||
import java.util.Formatter;
|
|
||||||
import java.util.Hashtable;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of {@link HtmlHelper} for XSSF files.
|
* Implementation of {@link HtmlHelper} for XSSF files.
|
||||||
*
|
*
|
||||||
@ -33,7 +33,7 @@ import java.util.Hashtable;
|
|||||||
public class XSSFHtmlHelper implements HtmlHelper {
|
public class XSSFHtmlHelper implements HtmlHelper {
|
||||||
private final XSSFWorkbook wb;
|
private final XSSFWorkbook wb;
|
||||||
|
|
||||||
private static final Hashtable colors = HSSFColor.getIndexHash();
|
private static final Map<Integer,HSSFColor> colors = HSSFColor.getIndexHash();
|
||||||
|
|
||||||
public XSSFHtmlHelper(XSSFWorkbook wb) {
|
public XSSFHtmlHelper(XSSFWorkbook wb) {
|
||||||
this.wb = wb;
|
this.wb = wb;
|
||||||
|
@ -18,7 +18,9 @@
|
|||||||
package org.apache.poi.hssf.util;
|
package org.apache.poi.hssf.util;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.poi.ss.usermodel.Color;
|
import org.apache.poi.ss.usermodel.Color;
|
||||||
|
|
||||||
@ -37,7 +39,7 @@ import org.apache.poi.ss.usermodel.Color;
|
|||||||
* @author Brian Sanders (bsanders at risklabs dot com) - full default color palette
|
* @author Brian Sanders (bsanders at risklabs dot com) - full default color palette
|
||||||
*/
|
*/
|
||||||
public class HSSFColor implements Color {
|
public class HSSFColor implements Color {
|
||||||
// TODO make subclass instances immutable
|
private static Map<Integer,HSSFColor> indexHash;
|
||||||
|
|
||||||
/** Creates a new instance of HSSFColor */
|
/** Creates a new instance of HSSFColor */
|
||||||
public HSSFColor()
|
public HSSFColor()
|
||||||
@ -45,17 +47,26 @@ public class HSSFColor implements Color {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* this function returns all colors in a hastable. Its not implemented as a
|
* This function returns all the colours in an unmodifiable Map.
|
||||||
* static member/staticly initialized because that would be dirty in a
|
* The map is cached on first use.
|
||||||
* server environment as it is intended. This means you'll eat the time
|
|
||||||
* it takes to create it once per request but you will not hold onto it
|
|
||||||
* if you have none of those requests.
|
|
||||||
*
|
*
|
||||||
* @return a hashtable containing all colors keyed by <tt>Integer</tt> excel-style palette indexes
|
* @return a Map containing all colours keyed by <tt>Integer</tt> excel-style palette indexes
|
||||||
*/
|
*/
|
||||||
public final static Hashtable<Integer,HSSFColor> getIndexHash() {
|
public final static Map<Integer,HSSFColor> getIndexHash() {
|
||||||
|
if(indexHash == null) {
|
||||||
|
indexHash = Collections.unmodifiableMap( createColorsByIndexMap() );
|
||||||
|
}
|
||||||
|
|
||||||
return createColorsByIndexMap();
|
return indexHash;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This function returns all the Colours, stored in a Hashtable that
|
||||||
|
* can be edited. No caching is performed. If you don't need to edit
|
||||||
|
* the table, then call {@link #getIndexHash()} which returns a
|
||||||
|
* statically cached imuatable map of colours.
|
||||||
|
*/
|
||||||
|
public final static Hashtable<Integer,HSSFColor> getMutableIndexHash() {
|
||||||
|
return createColorsByIndexMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Hashtable<Integer,HSSFColor> createColorsByIndexMap() {
|
private static Hashtable<Integer,HSSFColor> createColorsByIndexMap() {
|
||||||
|
Loading…
Reference in New Issue
Block a user