package gw.rating.rtm.domain uses java.lang.Comparable uses java.util.HashMap class ImportPersistenceAdapter extends EntityProcessingPersistenceAdapter { private var _data : HashMap //key is the physical column name of keyable bean type private var _persistedEntity : KeyableBean construct(type : Type) { super(type) _data = new HashMap() } construct(bean : KeyableBean) { this(typeof bean) foreach (var beanProperty in bean.IntrinsicType.EntityProperties) { setFieldValue(beanProperty.getColumnName(), bean.getFieldValue(beanProperty)) } } override function getFieldValue(field: String) : Object { return _data.get(field) } override function setFieldValue(field: String, value: Object) { _data.put(field, value) } override function remove() { } override function copy(): ImportPersistenceAdapter { var adapter = new ImportPersistenceAdapter(_beanType) _data.eachKeyAndValue(\k, val -> adapter.setFieldValue(k, val)) return adapter } override function getFieldValue(column: RateTableColumn): Object { return getFieldValue(column.PhysicalColumnName) } override function getParam(paramName: String): Comparable { return getFieldValue(paramName) as Comparable } override function saveEntityData() { if (_persistedEntity == null) { _persistedEntity = _beanType.TypeInfo.getConstructor(null).Constructor.newInstance(null) as KeyableBean } _data.eachKeyAndValue(\k, val -> _persistedEntity.setFieldValue(k, val)) } }