// If the Decision Table model was pre-5.4 Numeric data-types were always stored as // BigDecimals. This function attempts to set the correct DTCellValue property based // on the *true* data type. private void convertDTCellValueFromNumeric(DataType.DataTypes dataType, DTCellValue52 dcv) { // Generic type NUMERIC was always stored as a BigDecimal final BigDecimal value = (BigDecimal) dcv.getNumericValue(); switch (dataType) { case NUMERIC_BIGDECIMAL: dcv.setNumericValue(value == null ? null : value); break; case NUMERIC_BIGINTEGER: dcv.setNumericValue(value == null ? null : value.toBigInteger()); break; case NUMERIC_BYTE: dcv.setNumericValue(value == null ? null : value.byteValue()); break; case NUMERIC_DOUBLE: dcv.setNumericValue(value == null ? null : value.doubleValue()); break; case NUMERIC_FLOAT: dcv.setNumericValue(value == null ? null : value.floatValue()); break; case NUMERIC_INTEGER: dcv.setNumericValue(value == null ? null : value.intValue()); break; case NUMERIC_LONG: dcv.setNumericValue(value == null ? null : value.longValue()); break; case NUMERIC_SHORT: dcv.setNumericValue(value == null ? null : value.shortValue()); break; } }
@Override public void populateDecisionTable(final GuidedDecisionTable52 dtable, final int maxRowCount) { if (this.values.size() < maxRowCount) { for (int iRow = this.values.size(); iRow < maxRowCount; iRow++) { this.values.add(new DTCellValue52(0)); } } for (int iRow = 0; iRow < this.values.size(); iRow++) { dtable.getData().add(new ArrayList<DTCellValue52>()); final DTCellValue52 dcv = this.values.get(iRow); dcv.setNumericValue(Integer.valueOf(iRow + 1)); dtable.getData().get(iRow).add(0, dcv); } }
// If the Decision Table model has been converted from the legacy text based // class then all values are held in the DTCellValue's StringValue. This // function attempts to set the correct DTCellValue property based on // the DTCellValue's data type. private void convertDTCellValueFromString(DataType.DataTypes dataType, DTCellValue52 dcv) { String text = dcv.getStringValue(); switch (dataType) { case BOOLEAN: dcv.setBooleanValue((text == null ? false : Boolean.valueOf(text))); break; case DATE: Date d = null; try { if (text != null) { if (DATE_CONVERTOR == null) { throw new IllegalArgumentException("DATE_CONVERTOR has not been initialised."); } d = DATE_CONVERTOR.parse(text); } } catch (IllegalArgumentException e) { } dcv.setDateValue(d); break; case NUMERIC: BigDecimal numericValue = null; try { if (text != null) { numericValue = new BigDecimal(text); } } catch (Exception e) { } dcv.setNumericValue(numericValue); break; case NUMERIC_BIGDECIMAL: BigDecimal bigDecimalValue = null; try { if (text != null) { bigDecimalValue = new BigDecimal(text); } } catch (Exception e) { } dcv.setNumericValue(bigDecimalValue); break; case NUMERIC_BIGINTEGER: BigInteger bigIntegerValue = null; try { if (text != null) { bigIntegerValue = new BigInteger(text); } } catch (Exception e) { } dcv.setNumericValue(bigIntegerValue); break; case NUMERIC_BYTE: Byte byteValue = null; try { if (text != null) { byteValue = new Byte(text); } } catch (Exception e) { } dcv.setNumericValue(byteValue); break; case NUMERIC_DOUBLE: Double doubleValue = null; try { if (text != null) { doubleValue = new Double(text); } } catch (Exception e) { } dcv.setNumericValue(doubleValue); break; case NUMERIC_FLOAT: Float floatValue = null; try { if (text != null) { floatValue = new Float(text); } } catch (Exception e) { } dcv.setNumericValue(floatValue); break; case NUMERIC_INTEGER: Integer integerValue = null; try { if (text != null) { integerValue = new Integer(text); } } catch (Exception e) { } dcv.setNumericValue(integerValue); break; case NUMERIC_LONG: Long longValue = null; try { if (text != null) { longValue = new Long(text); } } catch (Exception e) { } dcv.setNumericValue(longValue); break; case NUMERIC_SHORT: Short shortValue = null; try { if (text != null) { shortValue = new Short(text); } } catch (Exception e) { } dcv.setNumericValue(shortValue); break; } }