Author: tchemit Date: 2012-01-06 16:26:42 +0100 (Fri, 06 Jan 2012) New Revision: 240 Url: http://forge.codelutin.com/repositories/revision/echobase/240 Log: improve dbMeta api Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/DbMeta.java Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/DbMeta.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/DbMeta.java 2012-01-05 11:04:49 UTC (rev 239) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/DbMeta.java 2012-01-06 15:26:42 UTC (rev 240) @@ -26,10 +26,12 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import fr.ifremer.echobase.entities.EchoBaseEntityEnum; import java.util.Iterator; import java.util.List; +import java.util.Set; /** * Define metas about a db. @@ -39,23 +41,20 @@ */ public class DbMeta implements Iterable<TableMeta> { - protected List<TableMeta> tables; + /** All metas of the db. */ + protected final List<TableMeta> tables; - protected final EchoBaseEntityEnum[] entityEnums; + /** All types that we do not want to edit. */ + protected final Set<EchoBaseEntityEnum> nonEditableTypes = Sets.immutableEnumSet( + EchoBaseEntityEnum.EchoBaseUser, + EchoBaseEntityEnum.EntityModificationLog, + EchoBaseEntityEnum.ExportQuery + ); public static DbMeta newDbMeta() { - List<EchoBaseEntityEnum> entityEnums = - Lists.newArrayList(EchoBaseEntityEnum.values()); - entityEnums.remove(EchoBaseEntityEnum.EchoBaseUser); - entityEnums.remove(EchoBaseEntityEnum.EntityModificationLog); - entityEnums.remove(EchoBaseEntityEnum.ExportQuery); - return newDbMeta(entityEnums.toArray(new EchoBaseEntityEnum[entityEnums.size()])); + return new DbMeta(EchoBaseEntityEnum.values()); } - public static DbMeta newDbMeta(EchoBaseEntityEnum[] entityEnums) { - return new DbMeta(entityEnums); - } - public List<String> getTableNames() { List<String> result = Lists.newArrayList(); for (TableMeta tableMeta : getTables()) { @@ -65,21 +64,14 @@ } public List<TableMeta> getTables() { - if (tables == null) { - tables = Lists.newArrayList(); - for (EchoBaseEntityEnum entityEnum : entityEnums) { - TableMeta tableMeta = TableMeta.newMeta(entityEnum); - tables.add(tableMeta); - } - } return tables; } - public TableMeta getTable(EchoBaseEntityEnum tableName) { - Preconditions.checkNotNull(tableName); + public TableMeta getTable(EchoBaseEntityEnum entityType) { + Preconditions.checkNotNull(entityType); TableMeta result = null; for (TableMeta tableMeta : getTables()) { - if (tableName.equals(tableMeta.getSource())) { + if (entityType.equals(tableMeta.getSource())) { result = tableMeta; break; } @@ -92,7 +84,15 @@ return getTables().iterator(); } - protected DbMeta(EchoBaseEntityEnum[] entityEnums) { - this.entityEnums = entityEnums; + protected DbMeta(EchoBaseEntityEnum[] entityTypes) { + tables = Lists.newArrayList(); + for (EchoBaseEntityEnum entityEnum : entityTypes) { + TableMeta tableMeta = TableMeta.newMeta(entityEnum); + tables.add(tableMeta); + } } + + public boolean isEditable(TableMeta meta) { + return !nonEditableTypes.contains(meta.getSource()); + } }