Controlled instantiation of BoolPtg (made consistent with ErrPtg)

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@887477 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2009-12-05 01:04:44 +00:00
parent 9fb5841de3
commit 1992068d14
3 changed files with 16 additions and 9 deletions

View File

@ -22,22 +22,29 @@ import org.apache.poi.util.LittleEndianOutput;
/** /**
* Boolean (boolean) Stores a (java) boolean value in a formula. * Boolean (boolean) Stores a (java) boolean value in a formula.
* *
* @author Paul Krause (pkrause at soundbite dot com) * @author Paul Krause (pkrause at soundbite dot com)
* @author Andrew C. Oliver (acoliver at apache dot org) * @author Andrew C. Oliver (acoliver at apache dot org)
* @author Jason Height (jheight at chariot dot net dot au) * @author Jason Height (jheight at chariot dot net dot au)
*/ */
public final class BoolPtg extends ScalarConstantPtg { public final class BoolPtg extends ScalarConstantPtg {
public final static int SIZE = 2; public static final int SIZE = 2;
public final static byte sid = 0x1D; public static final byte sid = 0x1D;
private static final BoolPtg FALSE = new BoolPtg(false);
private static final BoolPtg TRUE = new BoolPtg(true);
private final boolean _value; private final boolean _value;
public BoolPtg(LittleEndianInput in) { private BoolPtg(boolean b) {
_value = (in.readByte() == 1); _value = b;
} }
public BoolPtg(String formulaToken) { public static BoolPtg valueOf(boolean b) {
_value = (formulaToken.equalsIgnoreCase("TRUE")); return b ? TRUE : FALSE;
}
public static BoolPtg read(LittleEndianInput in) {
return valueOf(in.readByte() == 1);
} }
public boolean getValue() { public boolean getValue() {

View File

@ -152,7 +152,7 @@ public abstract class Ptg {
case StringPtg.sid: return new StringPtg(in); // 0x17 case StringPtg.sid: return new StringPtg(in); // 0x17
case AttrPtg.sid: return new AttrPtg(in); // 0x19 case AttrPtg.sid: return new AttrPtg(in); // 0x19
case ErrPtg.sid: return ErrPtg.read(in); // 0x1c case ErrPtg.sid: return ErrPtg.read(in); // 0x1c
case BoolPtg.sid: return new BoolPtg(in); // 0x1d case BoolPtg.sid: return BoolPtg.read(in); // 0x1d
case IntPtg.sid: return new IntPtg(in); // 0x1e case IntPtg.sid: return new IntPtg(in); // 0x1e
case NumberPtg.sid: return new NumberPtg(in); // 0x1f case NumberPtg.sid: return new NumberPtg(in); // 0x1f
} }

View File

@ -551,7 +551,7 @@ public final class FormulaParser {
return function(name); return function(name);
} }
if (name.equalsIgnoreCase("TRUE") || name.equalsIgnoreCase("FALSE")) { if (name.equalsIgnoreCase("TRUE") || name.equalsIgnoreCase("FALSE")) {
return new ParseNode(new BoolPtg(name.toUpperCase())); return new ParseNode(BoolPtg.valueOf(name.equalsIgnoreCase("TRUE")));
} }
if (_book == null) { if (_book == null) {
// Only test cases omit the book (expecting it not to be needed) // Only test cases omit the book (expecting it not to be needed)