Author: tchemit Date: 2011-12-26 11:02:16 +0100 (Mon, 26 Dec 2011) New Revision: 212 Url: http://forge.codelutin.com/repositories/revision/echobase/212 Log: remove OperationType entity let's declare all copiable entities add decorator test (to make sure there is a decorator for each type of entity) Added: trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDecoratorProviderTest.java Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntitiesUtil.java trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/DbMeta.java trunk/echobase-entities/src/main/xmi/echobase.zargo trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EntitiesUtilTest.java Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java 2011-12-24 12:14:02 UTC (rev 211) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/EchoBaseDecoratorProvider.java 2011-12-26 10:02:16 UTC (rev 212) @@ -67,7 +67,6 @@ import fr.ifremer.echobase.entities.references.Mission; import fr.ifremer.echobase.entities.references.OperationEvent; import fr.ifremer.echobase.entities.references.OperationMetadata; -import fr.ifremer.echobase.entities.references.OperationType; import fr.ifremer.echobase.entities.references.ReferenceDatum; import fr.ifremer.echobase.entities.references.ReferenceDatumType; import fr.ifremer.echobase.entities.references.ReferencingMethod; @@ -189,9 +188,6 @@ // OperationMetadata decorator registerJXPathDecorator(locale, OperationMetadata.class, "${name}$s"); - // OperationType decorator - registerJXPathDecorator(locale, OperationType.class, "${name}$s"); - // ReferenceDatum decorator registerJXPathDecorator(locale, ReferenceDatum.class, "${id}$s"); Modified: trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntitiesUtil.java =================================================================== --- trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntitiesUtil.java 2011-12-24 12:14:02 UTC (rev 211) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/EntitiesUtil.java 2011-12-26 10:02:16 UTC (rev 212) @@ -24,6 +24,9 @@ package fr.ifremer.echobase.entities; import com.google.common.collect.Lists; +import fr.ifremer.echobase.entities.meta.DbMeta; +import fr.ifremer.echobase.entities.meta.MetaFilenameAware; +import fr.ifremer.echobase.entities.meta.TableMeta; import java.util.List; @@ -64,7 +67,7 @@ * @return the entity types of data in correct order for replication * purpose. */ - public static EchoBaseEntityEnum[] getDataTypesforCopy() { + public static EchoBaseEntityEnum[] getDataTypesForCopy() { List<EchoBaseEntityEnum> result = Lists.newLinkedList(); @@ -115,7 +118,6 @@ result.add(EchoBaseEntityEnum.GearCharacteristicValue); result.add(EchoBaseEntityEnum.GearMetadata); result.add(EchoBaseEntityEnum.Calibration); - result.add(EchoBaseEntityEnum.OperationType); result.add(EchoBaseEntityEnum.MeasurementMetadata); result.add(EchoBaseEntityEnum.SampleDataType); result.add(EchoBaseEntityEnum.SampleType); @@ -146,24 +148,19 @@ public static EchoBaseEntityEnum[] getReferenceTypesForCopy() { List<EchoBaseEntityEnum> result = Lists.newLinkedList(); + // with no dep result.add(EchoBaseEntityEnum.Strata); result.add(EchoBaseEntityEnum.SexCategory); result.add(EchoBaseEntityEnum.AgeCategory); result.add(EchoBaseEntityEnum.SizeCategory); result.add(EchoBaseEntityEnum.Species); - result.add(EchoBaseEntityEnum.SpeciesCategory); result.add(EchoBaseEntityEnum.Calibration); - result.add(EchoBaseEntityEnum.AcousticInstrument); - result.add(EchoBaseEntityEnum.TSParameters); result.add(EchoBaseEntityEnum.VesselType); - result.add(EchoBaseEntityEnum.Vessel); result.add(EchoBaseEntityEnum.Mission); result.add(EchoBaseEntityEnum.DepthStratum); result.add(EchoBaseEntityEnum.EchotypeCategory); - result.add(EchoBaseEntityEnum.Echotype); result.add(EchoBaseEntityEnum.AreaOfOperation); result.add(EchoBaseEntityEnum.ReferenceDatumType); - result.add(EchoBaseEntityEnum.ReferenceDatum); result.add(EchoBaseEntityEnum.DataType); result.add(EchoBaseEntityEnum.DataQuality); result.add(EchoBaseEntityEnum.CellMethod); @@ -171,13 +168,62 @@ result.add(EchoBaseEntityEnum.OperationEvent); result.add(EchoBaseEntityEnum.SampleDataType); result.add(EchoBaseEntityEnum.SampleType); - result.add(EchoBaseEntityEnum.DataMetadata); + result.add(EchoBaseEntityEnum.GearCharacteristic); + result.add(EchoBaseEntityEnum.CategoryMeaning); + result.add(EchoBaseEntityEnum.CategoryType); + result.add(EchoBaseEntityEnum.MeasureType); + result.add(EchoBaseEntityEnum.MeasurementMetadata); + result.add(EchoBaseEntityEnum.ReferencingMethod); + + // with deps + result.add(EchoBaseEntityEnum.AcousticInstrument); + result.add(EchoBaseEntityEnum.Vessel); + result.add(EchoBaseEntityEnum.ReferenceDatum); result.add(EchoBaseEntityEnum.OperationMetadata); result.add(EchoBaseEntityEnum.GearMetadata); + result.add(EchoBaseEntityEnum.GearCharacteristicValue); result.add(EchoBaseEntityEnum.Gear); result.add(EchoBaseEntityEnum.LengthAgeKey); + + result.add(EchoBaseEntityEnum.SpeciesCategory); result.add(EchoBaseEntityEnum.LengthWeightKey); + result.add(EchoBaseEntityEnum.TSParameters); + result.add(EchoBaseEntityEnum.Echotype); + result.add(EchoBaseEntityEnum.DataMetadata); + result.add(EchoBaseEntityEnum.Category); + result.add(EchoBaseEntityEnum.CategoryRef); + result.add(EchoBaseEntityEnum.Impacte); + result.add(EchoBaseEntityEnum.DataProtocol); return result.toArray(new EchoBaseEntityEnum[result.size()]); } + public static MetaFilenameAware[] getEntries(DbMeta dbMeta) { + + List<MetaFilenameAware> entities = Lists.newArrayList(); + List<MetaFilenameAware> associations = Lists.newArrayList(); + + addEntries(dbMeta, entities, associations, getReferenceTypesForCopy()); + addEntries(dbMeta, entities, associations, getDataTypesForCopy()); + entities.addAll(associations); + return entities.toArray(new MetaFilenameAware[entities.size()]); + } + + protected static void addEntries(DbMeta dbMeta, + List<MetaFilenameAware> entities, + List<MetaFilenameAware> associations, + EchoBaseEntityEnum[] types) { + for (EchoBaseEntityEnum type : types) { + + TableMeta tableMeta = getTableMeta(dbMeta, type); + entities.add(tableMeta); + associations.addAll(tableMeta.getAssociations()); + } + } + + protected static TableMeta getTableMeta(DbMeta dbMeta, + EchoBaseEntityEnum tableName) { + TableMeta result = dbMeta.getTable(tableName); + return result; + } + } 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 2011-12-24 12:14:02 UTC (rev 211) +++ trunk/echobase-entities/src/main/java/fr/ifremer/echobase/entities/meta/DbMeta.java 2011-12-26 10:02:16 UTC (rev 212) @@ -43,7 +43,12 @@ protected final EchoBaseEntityEnum[] entityEnums; - public static DbMeta newDbMeta(List<EchoBaseEntityEnum> entityEnums) { + 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()])); } Modified: trunk/echobase-entities/src/main/xmi/echobase.zargo =================================================================== (Binary files differ) Added: trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDecoratorProviderTest.java =================================================================== --- trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDecoratorProviderTest.java (rev 0) +++ trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDecoratorProviderTest.java 2011-12-26 10:02:16 UTC (rev 212) @@ -0,0 +1,78 @@ +/* + * #%L + * EchoBase :: Entities + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Ifremer, Codelutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package fr.ifremer.echobase; + +import com.google.common.collect.Lists; +import fr.ifremer.echobase.entities.EchoBaseEntityEnum; +import fr.ifremer.echobase.entities.EntitiesUtilTest; +import fr.ifremer.echobase.entities.data.Voyage; +import fr.ifremer.echobase.entities.references.Mission; +import junit.framework.Assert; +import org.junit.Test; +import org.nuiton.util.decorator.Decorator; + +import java.util.List; +import java.util.Locale; + +/** + * To test the {@link EchoBaseDecoratorProvider}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.2 + */ +public class EchoBaseDecoratorProviderTest { + + @Test + public void getDecoratorForReferences() throws Exception { + Locale locale = Locale.FRANCE; + EchoBaseDecoratorProvider provider = new EchoBaseDecoratorProvider(); + provider.loadDecorators(locale); + List<EchoBaseEntityEnum> expectedTypes = + Lists.newArrayList(EntitiesUtilTest.getContractsOf( + Mission.class.getPackage())); + + for (EchoBaseEntityEnum type : expectedTypes) { + Decorator<?> decorator = + provider.getDecoratorByType(locale, type.getContract()); + Assert.assertNotNull("Missing decorator for type : " + type, decorator); + } + } + + @Test + public void getDecoratorForData() throws Exception { + Locale locale = Locale.FRANCE; + EchoBaseDecoratorProvider provider = new EchoBaseDecoratorProvider(); + provider.loadDecorators(locale); + List<EchoBaseEntityEnum> expectedTypes = + Lists.newArrayList(EntitiesUtilTest.getContractsOf( + Voyage.class.getPackage())); + + for (EchoBaseEntityEnum type : expectedTypes) { + Decorator<?> decorator = + provider.getDecoratorByType(locale, type.getContract()); + Assert.assertNotNull("Missing decorator for type : " + type, decorator); + } + } + +} Property changes on: trunk/echobase-entities/src/test/java/fr/ifremer/echobase/EchoBaseDecoratorProviderTest.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EntitiesUtilTest.java =================================================================== --- trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EntitiesUtilTest.java 2011-12-24 12:14:02 UTC (rev 211) +++ trunk/echobase-entities/src/test/java/fr/ifremer/echobase/entities/EntitiesUtilTest.java 2011-12-26 10:02:16 UTC (rev 212) @@ -60,6 +60,23 @@ } @Test + public void getReferenceTypesForCopy() { + + List<EchoBaseEntityEnum> types = + Arrays.asList(EntitiesUtil.getReferenceTypesForCopy()); + + List<EchoBaseEntityEnum> expectedTypes = + Lists.newArrayList(getContractsOf(Mission.class.getPackage())); + + Assert.assertNotNull(types); + + for (EchoBaseEntityEnum type : expectedTypes) { + Assert.assertTrue("Missing type : " + type, types.contains(type)); + } + Assert.assertEquals(expectedTypes.size(), types.size()); + } + + @Test public void getDataTypes() { List<EchoBaseEntityEnum> types = @@ -76,6 +93,23 @@ Assert.assertEquals(expectedTypes.size(), types.size()); } + + @Test + public void getDataTypesForCopy() { + + List<EchoBaseEntityEnum> types = + Arrays.asList(EntitiesUtil.getDataTypesForCopy()); + + List<EchoBaseEntityEnum> expectedTypes = + Lists.newArrayList(getContractsOf(Voyage.class.getPackage())); + + Assert.assertNotNull(types); + + for (EchoBaseEntityEnum type : expectedTypes) { + Assert.assertTrue("Missing type : " + type, types.contains(type)); + } + Assert.assertEquals(expectedTypes.size(), types.size()); + } /** * Used to get all contract of a package *