@Override public void assign(Object obj) { if (!checkAssign(obj)) return; if (obj instanceof Number) value = ((Number) obj).floatValue(); else if (obj instanceof NumericFieldValue) value = (((NumericFieldValue) obj).getNumber().floatValue()); else if (obj instanceof String || obj instanceof StringFieldValue) value = Float.parseFloat(obj.toString()); else throw new IllegalArgumentException("Class " + obj.getClass() + " not applicable to an " + this.getClass() + " instance."); }
private double getAsNumber(Object value) { if (value instanceof Number) { return ((Number)value).doubleValue(); } else if (value instanceof NumericFieldValue) { return getAsNumber(((NumericFieldValue)value).getNumber()); } else { return Double.NaN; //new IllegalStateException("Term '" + value + "' (" + value.getClass() + ") does not evaluate to a number."); } }
@Override public void assign(Object obj) { if (!checkAssign(obj)) { return; } if (obj instanceof Number) { value = ((Number) obj).doubleValue(); } else if (obj instanceof NumericFieldValue) { value = (((NumericFieldValue) obj).getNumber().doubleValue()); } else if (obj instanceof String || obj instanceof StringFieldValue) { value = Double.parseDouble(obj.toString()); } else { throw new IllegalArgumentException("Class " + obj.getClass() + " not applicable to an " + this.getClass() + " instance."); } }
@Override public void assign(Object o) { if (!checkAssign(o)) { return; } if (o instanceof Number) { value = ((Number) o).byteValue(); } else if (o instanceof NumericFieldValue) { value = ((NumericFieldValue) o).getNumber().byteValue(); } else if (o instanceof String || o instanceof StringFieldValue) { value = Byte.parseByte(o.toString()); } else { throw new IllegalArgumentException("Class " + o.getClass() + " not applicable to an " + this.getClass() + " instance."); } }
@Override public void assign(Object obj) { if (!checkAssign(obj)) { return; } if (obj instanceof Number) { value = ((Number) obj).floatValue(); } else if (obj instanceof NumericFieldValue) { value = (((NumericFieldValue) obj).getNumber().floatValue()); } else if (obj instanceof String || obj instanceof StringFieldValue) { value = Float.parseFloat(obj.toString()); } else { throw new IllegalArgumentException("Class " + obj.getClass() + " not applicable to an " + this.getClass() + " instance."); } }
@Override public void assign(Object obj) { if (!checkAssign(obj)) { return; } if (obj instanceof Number) { value = ((Number) obj).longValue(); } else if (obj instanceof NumericFieldValue) { value = (((NumericFieldValue) obj).getNumber().longValue()); } else if (obj instanceof String || obj instanceof StringFieldValue) { value = Long.parseLong(obj.toString()); } else { throw new IllegalArgumentException("Class " + obj.getClass() + " not applicable to an " + this.getClass() + " instance."); } }
@Override public void assign(Object obj) { if (!checkAssign(obj)) { return; } if (obj instanceof Number) { value = ((Number) obj).intValue(); } else if (obj instanceof NumericFieldValue) { value = (((NumericFieldValue) obj).getNumber().intValue()); } else if (obj instanceof String || obj instanceof StringFieldValue) { value = Integer.parseInt(obj.toString()); } else { throw new IllegalArgumentException("Class " + obj.getClass() + " not applicable to an " + this.getClass() + " instance."); } }
@Override public ModificationStatus doModify(FieldValue fv) { if (fv instanceof NumericFieldValue) { Map<String, Object> vars = new HashMap<String, Object>(); for (Map.Entry<String, IndexValue> entry : getVariables().entrySet()) { if (entry.getValue().getKey() != null && entry.getValue().getKey() instanceof NumericFieldValue) { vars.put(entry.getKey(), ((NumericFieldValue)entry.getValue().getKey()).getNumber()); } else { vars.put(entry.getKey(), entry.getValue().getIndex()); } } vars.put("value", ((NumericFieldValue)fv).getNumber()); try { Number d = calc.evaluate(doc, vars); if (removeIfZero && d.longValue() == 0) { return ModificationStatus.REMOVED; } else { fv.assign(calc.evaluate(doc, vars)); } } catch (IllegalArgumentException e) { // Ignore divide by zero return ModificationStatus.NOT_MODIFIED; } } else { throw new IllegalArgumentException("Trying to perform arithmetic on " + fv + " of type " + fv.getDataType()); } return ModificationStatus.MODIFIED; }
@Override public ModificationStatus doModify(FieldValue fv) { if (!fv.getDataType().equals(newValue.getDataType())) { throw new IllegalArgumentException("Trying to assign " + newValue + " of type " + newValue.getDataType() + " to an instance of " + fv.getDataType()); } else { if (removeIfZero && (newValue instanceof NumericFieldValue) && ((NumericFieldValue)newValue).getNumber().longValue() == 0) { return ModificationStatus.REMOVED; } fv.assign(newValue); } return ModificationStatus.MODIFIED; }
val = ((NumericFieldValue)val).getNumber();