r108 - trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta
Author: tchemit Date: 2011-11-23 11:34:23 +0100 (Wed, 23 Nov 2011) New Revision: 108 Url: http://forge.codelutin.com/repositories/revision/echobase/108 Log: add binder facility inside the TableMeta object Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java 2011-11-22 11:33:08 UTC (rev 107) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/TableMeta.java 2011-11-23 10:34:23 UTC (rev 108) @@ -29,6 +29,8 @@ import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.util.EntityOperator; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderModelBuilder; import java.beans.Introspector; import java.io.Serializable; @@ -55,6 +57,8 @@ protected List<ColumnMeta> columns; + protected Binder<TopiaEntity, TopiaEntity> binder; + public TableMeta(EchoBaseEntityEnum entityEnum) { Preconditions.checkNotNull(entityEnum); this.entityEnum = entityEnum; @@ -127,8 +131,31 @@ return columns; } + public void copy(TopiaEntity source, TopiaEntity target) { + getBinder().copy(source, target); + } + @Override public Iterator<ColumnMeta> iterator() { return getColumns().iterator(); } + + protected static <E extends TopiaEntity> Binder<E, E> newbinder(TableMeta meta) { + BinderModelBuilder<E, E> binderModelBuilder = + (BinderModelBuilder<E, E>) BinderModelBuilder.newEmptyBuilder(meta.getEntityType()); + for (ColumnMeta columnMeta : meta) { + binderModelBuilder.addSimpleProperties( + columnMeta.getName() + ); + } + Binder<E, E> binder = binderModelBuilder.toBinder(); + return binder; + } + + protected Binder<TopiaEntity, TopiaEntity> getBinder() { + if (binder == null) { + binder = newbinder(this); + } + return binder; + } }
participants (1)
-
tchemit@users.forge.codelutin.com