@Override public void setValue(Object target, Object value) throws UpdateFailedException { setValue(target, path, value, required, autoConvert); }
public static <C, V> void setValue(C target, String path, V value) { setValue(target, path, value, true, false); }
public static <C, V> void setValue(C target, String path, V value, boolean required, boolean autoConvert) { int sep = path.indexOf('.'); if (sep < 0) // it is a local property setLocal(target, path, value, required, autoConvert); else { // a recursive feature path needs to be resolved String localName = path.substring(0, sep); Object subTarget = FeatureAccessor.getValue(target, localName, true); if (subTarget == null) { // feature exists but is null, so create an object and assign it to the feature subTarget = setFeatureDefault(target, localName); } String remainingName = path.substring(sep + 1); setValue(subTarget, remainingName, value, required, autoConvert); } }
public <T> T parseAsBean(String row, Class<T> beanClass) { if (row.length() != rowLength) throw new SyntaxError("Row of type '" + name + "' has illegal length. " + "Expected: " + rowLength + ", found: " + row.length(), "'" + row + "'"); T bean = BeanUtil.newInstance(beanClass); ParsePosition pos = new ParsePosition(0); for (FixedWidthColumnDescriptor columnDescriptor : columnDescriptors) { int endIndex = pos.getIndex() + columnDescriptor.getWidth(); String cellContent = row.substring(pos.getIndex(), endIndex); try { Object cellObject = columnDescriptor.parse(cellContent); AnyMutator.setValue(bean, columnDescriptor.getName(), cellObject, true, true); } catch (ParseException e) { throw new SyntaxError("Error parsing column '" + columnDescriptor + "'. " + e.getMessage(), cellContent); } pos.setIndex(endIndex); } return bean; }
@Override public Object evaluate(Context context) { Object value = rhs.evaluate(context); if (lhs.length == 1) { // if lhs is a simple variable name then put the result into context by this name context.set(lhs[0], value); } else { // get last parent object of QN and set the feature denoted by the last QN part String fieldName = lhs[lhs.length - 1]; Object field = QNExpression.resolveNamePart(lhs, lhs.length - 1, context); AnyMutator.setValue(field, fieldName, value, true, true); } return value; }
@Override public E evaluate(Context context) { E bean = instantiation.evaluate(context); for (Assignment assignment : assignments) { String name = assignment.getName(); Object value = assignment.getExpression().evaluate(context); if (BeanUtil.hasProperty(bean.getClass(), name)) BeanUtil.setPropertyValue(bean, name, value, false); else AnyMutator.setValue(bean, name, value, true, true); } if (bean instanceof ContextAware) ((ContextAware) bean).setContext(context); return bean; }