} else if (value instanceof Literal) {
val = ((Literal) value).getValue();
} else if (value instanceof Constant) {
val = ((Constant) value).getValue(params);
} else {
throw new UserException(_loc.get("only-update-primitives"));
}
OpenJPAStateManager sm = _broker.getStateManager(ob);
int i = fmd.getIndex();
PersistenceCapable into = ImplHelper.toPersistenceCapable(ob,
_broker.getConfiguration());
// set the actual field in the instance
int set = OpenJPAStateManager.SET_USER;
switch (fmd.getDeclaredTypeCode()) {
case JavaTypes.BOOLEAN:
sm.settingBooleanField(into, i, sm.fetchBooleanField(i),
val == null ? false : ((Boolean) val).booleanValue(),
set);
break;
case JavaTypes.BYTE:
sm.settingByteField(into, i, sm.fetchByteField(i),
val == null ? 0 : ((Number) val).byteValue(), set);
break;
case JavaTypes.CHAR:
sm.settingCharField(into, i, sm.fetchCharField(i),
val == null ? 0 : val.toString().charAt(0), set);
break;
case JavaTypes.DOUBLE:
sm.settingDoubleField(into, i, sm.fetchDoubleField(i),
val == null ? 0 : ((Number) val).doubleValue(), set);
break;
case JavaTypes.FLOAT:
sm.settingFloatField(into, i, sm.fetchFloatField(i),
val == null ? 0 : ((Number) val).floatValue(), set);
break;
case JavaTypes.INT:
sm.settingIntField(into, i, sm.fetchIntField(i),
val == null ? 0 : ((Number) val).intValue(), set);
break;
case JavaTypes.LONG:
sm.settingLongField(into, i, sm.fetchLongField(i),
val == null ? 0 : ((Number) val).longValue(), set);
break;
case JavaTypes.SHORT:
sm.settingShortField(into, i, sm.fetchShortField(i),
val == null ? 0 : ((Number) val).shortValue(), set);
break;
case JavaTypes.STRING:
sm.settingStringField(into, i, sm.fetchStringField(i),
val == null ? null : val.toString(), set);
break;
case JavaTypes.DATE:
case JavaTypes.NUMBER:
case JavaTypes.BOOLEAN_OBJ:
case JavaTypes.BYTE_OBJ:
case JavaTypes.CHAR_OBJ:
case JavaTypes.DOUBLE_OBJ:
case JavaTypes.FLOAT_OBJ:
case JavaTypes.INT_OBJ:
case JavaTypes.LONG_OBJ:
case JavaTypes.SHORT_OBJ:
case JavaTypes.BIGDECIMAL:
case JavaTypes.BIGINTEGER:
case JavaTypes.LOCALE:
case JavaTypes.OBJECT:
case JavaTypes.OID:
sm.settingObjectField(into, i, sm.fetchObjectField(i), val,
set);
break;
default:
throw new UserException(_loc.get("only-update-primitives"));
}
}
}