Bug 63294

Summary: Add CellType enum variant of FormulaRecord.getCachedResultType()
Product: POI Reporter: Shawn Smith <shawn>
Component: HSSFAssignee: POI Developers List <dev>
Status: RESOLVED FIXED    
Severity: enhancement    
Priority: P2    
Version: 4.0.0-FINAL   
Target Milestone: ---   
Hardware: PC   
OS: Mac OS X 10.1   

Description Shawn Smith 2019-03-27 18:33:18 UTC
CellType.getCode() has been deprecated since POI 3.15.  But it's still used in org.apache.poi.hssf.record.FormulaRecord and OldFormulaRecord:

public final class FormulaRecord extends CellRecord implements Cloneable {
    ...
    public int getCachedResultType() {
        if (specialCachedValue == null) {
            return CellType.NUMERIC.getCode();
        }
        return specialCachedValue.getValueType();
    }
    ...
}

It would be nice to have a variant of the getCachedResultType() method that returns 'CellType' instead of 'int' so I can remove code that calls deprecated 'CellType.forInt(code)'.

For example:

FormulaRecord fr = ...;
//noinspection deprecation
switch (CellType.forInt(fr.getCachedResultType())) {
    case BOOLEAN:
        emit(fr.getCachedBooleanValue(), fr);
        break;
    case NUMERIC:
        emit(getFormattedValue(fr.getValue(), fr), fr);
        break;
    ...
}
Comment 1 Dominik Stadler 2020-04-24 20:59:47 UTC
After r1876948 there are new methods with "Enum" suffix in the name to be used for now and deprecation warnings on the previously used methods so we can remove them in a future version and replace them with the enum-variant finally in yet another future version.