This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 1b9936af1b0dd47a741f78a3b597834473932640 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 7 22:16:24 2015 +0200 add a test --- .../its/replication/AbstractReplicateDataTest.java | 213 +++++++-------------- .../replication/H2LonglineReplicateDataTest.java | 177 +++++++++++++++++ .../its/replication/ReplicationDataModel.java | 148 ++++++++++++++ .../src/test/resources/db/3.16/ANO-6611.sql.gz | Bin 0 -> 172354 bytes 4 files changed, 392 insertions(+), 146 deletions(-) diff --git a/observe-business/src/test/java/fr/ird/observe/its/replication/AbstractReplicateDataTest.java b/observe-business/src/test/java/fr/ird/observe/its/replication/AbstractReplicateDataTest.java index 7a6d23a..435b2b3 100644 --- a/observe-business/src/test/java/fr/ird/observe/its/replication/AbstractReplicateDataTest.java +++ b/observe-business/src/test/java/fr/ird/observe/its/replication/AbstractReplicateDataTest.java @@ -21,24 +21,19 @@ */ package fr.ird.observe.its.replication; -import fr.ird.observe.entities.Entities; import fr.ird.observe.ObserveEntityEnum; import fr.ird.observe.db.DataSource; +import fr.ird.observe.entities.Entities; import fr.ird.observe.entities.seine.ActivitySeine; -import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.entities.seine.FloatingObject; import fr.ird.observe.entities.seine.NonTargetCatch; +import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.entities.seine.SchoolEstimate; +import fr.ird.observe.entities.seine.SetSeine; import fr.ird.observe.entities.seine.TargetCatch; +import fr.ird.observe.entities.seine.TargetLength; import fr.ird.observe.entities.seine.TargetSample; -import fr.ird.observe.entities.seine.SchoolEstimate; import fr.ird.observe.entities.seine.TripSeine; -import fr.ird.observe.entities.seine.FloatingObject; -import fr.ird.observe.entities.seine.Route; -import fr.ird.observe.entities.seine.TargetLength; -import fr.ird.observe.entities.referentiel.Country; -import fr.ird.observe.entities.referentiel.Vessel; -import fr.ird.observe.entities.referentiel.seine.WeightCategory; -import fr.ird.observe.entities.referentiel.Species; -import fr.ird.observe.entities.referentiel.Program; import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; @@ -48,43 +43,10 @@ import org.nuiton.topia.TopiaException; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityEnum; -import java.util.Date; - -//FIXME Add data for Longline model /** @author Tony Chemit - chemit@codelutin.com */ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { - static protected Program program; - - static protected Country country; - - static protected Route route; - - static protected TripSeine maree; - - static protected ActivitySeine activitySeine; - - static protected SetSeine setSeine; - - static protected FloatingObject dcp; - - static protected SchoolEstimate estimation; - - static protected Species species; - - static protected Species speciesFaune; - - static protected WeightCategory weightCategory; - - static protected TargetCatch discarded; - - static protected NonTargetCatch nonTargetCatch; - - static protected TargetLength taille; - - static protected TargetSample echantillon; - - static protected Vessel vessel; + static protected ReplicationDataModel replicationDataModel = new ReplicationDataModel(); @Before @Override @@ -96,26 +58,21 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { super.setUp(); - program = (Program) ctxt.findByTopiaId(program.getTopiaId()); - setSeine = update(setSeine); - activitySeine = update(activitySeine); - maree = update(maree); - route = update(route); - estimation = update(estimation); - species = update(species); - speciesFaune = update(speciesFaune); - discarded = update(discarded); - nonTargetCatch = update(nonTargetCatch); - dcp = update(dcp); - taille = update(taille); - echantillon = update(echantillon); + updateModel(); + if (getLog().isDebugEnabled()) { getLog().debug("start test (end setup) :)"); } } + protected void updateModel() throws Exception { + + replicationDataModel.update(ctxt); + } + + @Override - protected final void createModel(DataSource service) throws Exception { + protected void createModel(DataSource service) throws Exception { if (init) { if (getLog().isInfoEnabled()) { @@ -126,43 +83,7 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { TopiaContext tx = service.beginTransaction("createModel"); try { - program = service.getDAO(tx, Program.class).create(Program.PROPERTY_CODE, "9999", Program.PROPERTY_LABEL2, "program-1"); - country = service.getDAO(tx, Country.class).create(Country.PROPERTY_CODE, "9999", Country.PROPERTY_LABEL2, "country-1"); - vessel = service.getDAO(tx, Vessel.class).create(Vessel.PROPERTY_CODE, "9999", Vessel.PROPERTY_LABEL2, "vessel-1", Vessel.PROPERTY_FLAG_COUNTRY, country); - - species = service.getDAO(tx, Species.class).create(Species.PROPERTY_CODE, "9999"); - speciesFaune = service.getDAO(tx, Species.class).create(Species.PROPERTY_CODE, "9999"); - weightCategory = service.getDAO(tx, WeightCategory.class).create(WeightCategory.PROPERTY_CODE, "9999", WeightCategory.PROPERTY_SPECIES, species); - - echantillon = service.getDAO(tx, TargetSample.class).create(TargetSample.PROPERTY_NATURE, "nature"); - taille = service.getDAO(tx, TargetLength.class).create(TargetLength.PROPERTY_TARGET_SAMPLE, echantillon, TargetLength.PROPERTY_SPECIES, species, TargetLength.PROPERTY_COUNT, 1, TargetLength.PROPERTY_LENGTH, 1.0f); - maree = service.getDAO(tx, TripSeine.class).create(TripSeine.PROPERTY_START_DATE, new Date()); - route = service.getDAO(tx, Route.class).create(Route.PROPERTY_DATE, new Date()); - activitySeine = service.getDAO(tx, ActivitySeine.class).create(ActivitySeine.PROPERTY_TIME, new Date()); - setSeine = service.getDAO(tx, SetSeine.class).create(SetSeine.PROPERTY_START_TIME, new Date()); - dcp = service.getDAO(tx, FloatingObject.class).create(FloatingObject.PROPERTY_SUPPORT_VESSEL_NAME, "supportVesselName"); - discarded = service.getDAO(tx, TargetCatch.class).create( - TargetCatch.PROPERTY_SET_SEINE, setSeine, - TargetCatch.PROPERTY_WEIGHT_CATEGORY, weightCategory, - TargetCatch.PROPERTY_CATCH_WEIGHT, 1.0f); - - estimation = service.getDAO(tx, SchoolEstimate.class).create( - SchoolEstimate.PROPERTY_TOTAL_WEIGHT, 10, - SchoolEstimate.PROPERTY_SET_SEINE, setSeine, - SchoolEstimate.PROPERTY_SPECIES, species); - - nonTargetCatch = service.getDAO(tx, NonTargetCatch.class).create( - NonTargetCatch.PROPERTY_SPECIES, speciesFaune - ); - - maree.setProgram(program); - maree.addRoute(route); - route.addActivitySeine(activitySeine); - activitySeine.addFloatingObject(dcp); - activitySeine.setSetSeine(setSeine); - echantillon.addTargetLength(taille); - setSeine.addTargetSample(echantillon); - setSeine.addNonTargetCatch(nonTargetCatch); + replicationDataModel.createModel(service, tx); service.commitTransaction(tx, "createModel"); } finally { @@ -179,7 +100,7 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { } @Override - protected final TopiaEntityEnum[] getContracts() { + protected TopiaEntityEnum[] getContracts() { return Entities.DATA_ENTITIES; } @@ -210,13 +131,13 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { // detectOperations(set); // detectOperations(activity); // detectOperations(route); - detectOperations(maree); + detectOperations(replicationDataModel.tripSeine); // detectOperations(program); } @Test @Override - public final void testDoReplicate() throws Exception { + public void testDoReplicate() throws Exception { if (getLog().isDebugEnabled()) { getLog().debug("start test"); } @@ -226,23 +147,23 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { // doReplicate(ObserveEntityEnum.Set, set); // doReplicate(ObserveEntityEnum.Activity, activity); // doReplicate(ObserveEntityEnum.Route, route); - doReplicateWithComputedOrder(maree); + doReplicateWithComputedOrder(replicationDataModel.tripSeine); TopiaContext tx = dstCtxt.beginTransaction(); try { - SetSeine setSeine2 = (SetSeine) tx.findByTopiaId(setSeine.getTopiaId()); + SetSeine setSeine2 = (SetSeine) tx.findByTopiaId(replicationDataModel.setSeine.getTopiaId()); Assert.assertNotNull(setSeine2); Assert.assertFalse(setSeine2.isNonTargetCatchEmpty()); Assert.assertNotNull(setSeine2.getNonTargetCatch()); Assert.assertEquals(1, setSeine2.sizeNonTargetCatch()); NonTargetCatch nonTargetCatche1 = setSeine2.getNonTargetCatch().iterator().next(); - Assert.assertEquals(nonTargetCatch.getTopiaId(), nonTargetCatche1.getTopiaId()); + Assert.assertEquals(replicationDataModel.nonTargetCatch.getTopiaId(), nonTargetCatche1.getTopiaId()); Assert.assertNotNull(setSeine2.getTargetSample()); Assert.assertEquals(1, setSeine2.sizeTargetSample()); TargetSample ec1 = setSeine2.getTargetSample().iterator().next(); - Assert.assertEquals(echantillon.getTopiaId(), ec1.getTopiaId()); + Assert.assertEquals(replicationDataModel.targetSample.getTopiaId(), ec1.getTopiaId()); } finally { tx.closeContext(); @@ -263,17 +184,17 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { if (getLog().isDebugEnabled()) { getLog().debug("start test"); } - Assert.assertFalse(setSeine.isSchoolEstimateEmpty()); - Assert.assertNotNull(setSeine.getSchoolEstimateByTopiaId(estimation.getTopiaId())); - Assert.assertNotNull(estimation.getSetSeine()); - Assert.assertNotNull(discarded.getSetSeine()); - - detectTypes(dcp, FloatingObject.class); - detectTypes(setSeine, SetSeine.class, SchoolEstimate.class, TargetSample.class, TargetLength.class, TargetCatch.class, NonTargetCatch.class); - detectTypes(activitySeine, ActivitySeine.class, SetSeine.class, SchoolEstimate.class, FloatingObject.class, TargetSample.class, TargetLength.class, TargetCatch.class, NonTargetCatch.class); - detectTypes(route, Route.class, ActivitySeine.class, SetSeine.class, SchoolEstimate.class, FloatingObject.class, TargetSample.class, TargetLength.class, TargetCatch.class, NonTargetCatch.class); - detectTypes(maree, TripSeine.class, Route.class, ActivitySeine.class, SetSeine.class, SchoolEstimate.class, FloatingObject.class, TargetSample.class, TargetLength.class, TargetCatch.class, NonTargetCatch.class); - detectTypes(program); + Assert.assertFalse(replicationDataModel.setSeine.isSchoolEstimateEmpty()); + Assert.assertNotNull(replicationDataModel.setSeine.getSchoolEstimateByTopiaId(replicationDataModel.schoolEstimate.getTopiaId())); + Assert.assertNotNull(replicationDataModel.schoolEstimate.getSetSeine()); + Assert.assertNotNull(replicationDataModel.targetCatch.getSetSeine()); + + detectTypes(replicationDataModel.floatingObject, FloatingObject.class); + detectTypes(replicationDataModel.setSeine, SetSeine.class, SchoolEstimate.class, TargetSample.class, TargetLength.class, TargetCatch.class, NonTargetCatch.class); + detectTypes(replicationDataModel.activitySeine, ActivitySeine.class, SetSeine.class, SchoolEstimate.class, FloatingObject.class, TargetSample.class, TargetLength.class, TargetCatch.class, NonTargetCatch.class); + detectTypes(replicationDataModel.route, Route.class, ActivitySeine.class, SetSeine.class, SchoolEstimate.class, FloatingObject.class, TargetSample.class, TargetLength.class, TargetCatch.class, NonTargetCatch.class); + detectTypes(replicationDataModel.tripSeine, TripSeine.class, Route.class, ActivitySeine.class, SetSeine.class, SchoolEstimate.class, FloatingObject.class, TargetSample.class, TargetLength.class, TargetCatch.class, NonTargetCatch.class); + detectTypes(replicationDataModel.programSeine); } @Test @@ -282,27 +203,27 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { if (getLog().isDebugEnabled()) { getLog().debug("start test"); } - detectAssociations(dcp); + detectAssociations(replicationDataModel.floatingObject); - detectAssociations(setSeine, + detectAssociations(replicationDataModel.setSeine, ObserveEntityEnum.SetSeine, SetSeine.PROPERTY_SCHOOL_ESTIMATE); - detectAssociations(activitySeine, + detectAssociations(replicationDataModel.activitySeine, ObserveEntityEnum.ActivitySeine, ActivitySeine.PROPERTY_FLOATING_OBJECT, ObserveEntityEnum.SetSeine, SetSeine.PROPERTY_SCHOOL_ESTIMATE); - detectAssociations(route, + detectAssociations(replicationDataModel.route, ObserveEntityEnum.Route, Route.PROPERTY_ACTIVITY_SEINE, ObserveEntityEnum.ActivitySeine, ActivitySeine.PROPERTY_FLOATING_OBJECT, ObserveEntityEnum.SetSeine, SetSeine.PROPERTY_SCHOOL_ESTIMATE); - detectAssociations(maree, + detectAssociations(replicationDataModel.tripSeine, ObserveEntityEnum.TripSeine, TripSeine.PROPERTY_ROUTE, ObserveEntityEnum.Route, Route.PROPERTY_ACTIVITY_SEINE, ObserveEntityEnum.ActivitySeine, ActivitySeine.PROPERTY_FLOATING_OBJECT, ObserveEntityEnum.SetSeine, SetSeine.PROPERTY_SCHOOL_ESTIMATE); - detectAssociations(program); + detectAssociations(replicationDataModel.programSeine); } @Test @@ -312,29 +233,29 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { getLog().debug("start test"); } detectDirectDependencies( - dcp + replicationDataModel.floatingObject ); detectDirectDependencies( - setSeine, + replicationDataModel.setSeine, ObserveEntityEnum.SchoolEstimate, SchoolEstimate.PROPERTY_SET_SEINE); detectDirectDependencies( - activitySeine, + replicationDataModel.activitySeine, ObserveEntityEnum.SchoolEstimate, SchoolEstimate.PROPERTY_SET_SEINE, ObserveEntityEnum.ActivitySeine, ActivitySeine.PROPERTY_SET_SEINE); detectDirectDependencies( - route, + replicationDataModel.route, ObserveEntityEnum.SchoolEstimate, SchoolEstimate.PROPERTY_SET_SEINE, ObserveEntityEnum.ActivitySeine, ActivitySeine.PROPERTY_SET_SEINE); detectDirectDependencies( - maree, + replicationDataModel.tripSeine, ObserveEntityEnum.SchoolEstimate, SchoolEstimate.PROPERTY_SET_SEINE, ObserveEntityEnum.ActivitySeine, ActivitySeine.PROPERTY_SET_SEINE); - detectDirectDependencies(program); + detectDirectDependencies(replicationDataModel.programSeine); } @Test @@ -343,12 +264,12 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { if (getLog().isDebugEnabled()) { getLog().debug("start test"); } - detectShell(dcp, + detectShell(replicationDataModel.floatingObject, ObserveEntityEnum.ObjectSchoolEstimate, ObserveEntityEnum.ObjectObservedSpecies, ObserveEntityEnum.TransmittingBuoy ); - detectShell(estimation, + detectShell(replicationDataModel.schoolEstimate, ObserveEntityEnum.SetSeine, ObserveEntityEnum.TargetCatch, ObserveEntityEnum.TargetSample, @@ -357,7 +278,7 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { ObserveEntityEnum.NonTargetSample, ObserveEntityEnum.NonTargetLength ); - detectShell(setSeine, + detectShell(replicationDataModel.setSeine, ObserveEntityEnum.SchoolEstimate, ObserveEntityEnum.TargetCatch, ObserveEntityEnum.TargetSample, @@ -366,7 +287,7 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { ObserveEntityEnum.NonTargetSample, ObserveEntityEnum.NonTargetLength ); - detectShell(activitySeine, + detectShell(replicationDataModel.activitySeine, ObserveEntityEnum.SetSeine, ObserveEntityEnum.SchoolEstimate, ObserveEntityEnum.FloatingObject, @@ -380,7 +301,7 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { ObserveEntityEnum.ObjectObservedSpecies, ObserveEntityEnum.TransmittingBuoy ); - detectShell(route, + detectShell(replicationDataModel.route, ObserveEntityEnum.ActivitySeine, ObserveEntityEnum.SetSeine, ObserveEntityEnum.SchoolEstimate, @@ -395,7 +316,7 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { ObserveEntityEnum.ObjectObservedSpecies, ObserveEntityEnum.TransmittingBuoy ); - detectShell(maree, + detectShell(replicationDataModel.tripSeine, ObserveEntityEnum.Route, ObserveEntityEnum.ActivitySeine, ObserveEntityEnum.SetSeine, @@ -425,13 +346,13 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { if (getLog().isDebugEnabled()) { getLog().debug("start test"); } - detectObjectsToDettach(dcp); - detectObjectsToDettach(estimation, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); - detectObjectsToDettach(setSeine, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); - detectObjectsToDettach(activitySeine, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); - detectObjectsToDettach(route, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); - detectObjectsToDettach(maree, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); - detectObjectsToDettach(program, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); + detectObjectsToDettach(replicationDataModel.floatingObject); + detectObjectsToDettach(replicationDataModel.schoolEstimate, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); + detectObjectsToDettach(replicationDataModel.setSeine, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); + detectObjectsToDettach(replicationDataModel.activitySeine, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); + detectObjectsToDettach(replicationDataModel.route, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); + detectObjectsToDettach(replicationDataModel.tripSeine, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); + detectObjectsToDettach(replicationDataModel.programSeine, ObserveEntityEnum.SetSeine, new String[]{SetSeine.PROPERTY_SCHOOL_ESTIMATE}); } /** @@ -447,21 +368,21 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { getLog().debug("start test"); } detectDependencies( - dcp, + replicationDataModel.floatingObject, new ObserveEntityEnum[]{ObserveEntityEnum.FloatingObject} ); detectDependencies( - estimation, + replicationDataModel.schoolEstimate, new ObserveEntityEnum[]{ObserveEntityEnum.SetSeine}, new ObserveEntityEnum[]{ObserveEntityEnum.SchoolEstimate} ); detectDependencies( - setSeine, + replicationDataModel.setSeine, new ObserveEntityEnum[]{ObserveEntityEnum.SetSeine}, new ObserveEntityEnum[]{ObserveEntityEnum.SchoolEstimate} ); detectDependencies( - activitySeine, + replicationDataModel.activitySeine, new ObserveEntityEnum[]{ObserveEntityEnum.SetSeine}, new ObserveEntityEnum[]{ ObserveEntityEnum.SchoolEstimate, @@ -470,20 +391,20 @@ public abstract class AbstractReplicateDataTest extends AbstractReplicateTest { new ObserveEntityEnum[]{ObserveEntityEnum.ActivitySeine} ); detectDependencies( - route, + replicationDataModel.route, new ObserveEntityEnum[]{ObserveEntityEnum.SetSeine}, new ObserveEntityEnum[]{ObserveEntityEnum.SchoolEstimate, ObserveEntityEnum.FloatingObject}, new ObserveEntityEnum[]{ObserveEntityEnum.ActivitySeine}, new ObserveEntityEnum[]{ObserveEntityEnum.Route} ); detectDependencies( - maree, + replicationDataModel.tripSeine, new ObserveEntityEnum[]{ObserveEntityEnum.SetSeine}, new ObserveEntityEnum[]{ObserveEntityEnum.SchoolEstimate, ObserveEntityEnum.FloatingObject}, new ObserveEntityEnum[]{ObserveEntityEnum.ActivitySeine}, new ObserveEntityEnum[]{ObserveEntityEnum.Route}, new ObserveEntityEnum[]{ObserveEntityEnum.TripSeine} ); - detectDependencies(program); + detectDependencies(replicationDataModel.programSeine); } } diff --git a/observe-business/src/test/java/fr/ird/observe/its/replication/H2LonglineReplicateDataTest.java b/observe-business/src/test/java/fr/ird/observe/its/replication/H2LonglineReplicateDataTest.java new file mode 100644 index 0000000..622f12d --- /dev/null +++ b/observe-business/src/test/java/fr/ird/observe/its/replication/H2LonglineReplicateDataTest.java @@ -0,0 +1,177 @@ +package fr.ird.observe.its.replication; + +import com.google.common.collect.Maps; +import fr.ird.observe.ObserveEntityEnum; +import fr.ird.observe.db.DBTestHelper; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.entities.Entities; +import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.entities.longline.TripLongline; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.TopiaContextImplementor; +import org.nuiton.topia.persistence.TopiaDAO; +import org.nuiton.topia.persistence.TopiaEntityEnum; + +import java.io.File; +import java.util.EnumMap; + +/** + * Created on 4/7/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.16 + */ +public class H2LonglineReplicateDataTest extends AbstractReplicateDataTest { + + /** Logger */ + private static final Log log = LogFactory.getLog(H2LonglineReplicateDataTest.class); + + @BeforeClass + public static void init() throws Exception { + + DBTestHelper.initDbForTest(H2LonglineReplicateDataTest.class, false, false); + + } + + @Override + protected DataSource createStorage(String name) throws Exception { + + File sourceDbDump = new File("src/test/resources/db/3.16/ANO-6611.sql.gz"); + + File dir = new File(getTestDir(getClass()), "localDB_" + name); + + DataSource dataSource = DBTestHelper.createAndOpenFromDump(dir, sourceDbDump.toURI().toURL(), false, false, true, true, true); + return dataSource; + } + + @Override + protected Log getLog() { + return log; + } + + @Override + protected void createModel(DataSource service) throws Exception { + // Do not create model, imported db is the model + } + + @Override + protected void updateModel() throws Exception { + // Do not update model, imported db is the model + } + + @Override + protected TopiaEntityEnum[] getContracts() { + return Entities.DATA_LONGLINE_ENTITIES; + } + + @Test + @Override + public void testDoReplicate() throws Exception { + if (getLog().isDebugEnabled()) { + getLog().debug("start test"); + } + + EnumMap<ObserveEntityEnum, Long> counts = Maps.newEnumMap(ObserveEntityEnum.class); + + counts.put(ObserveEntityEnum.TargetSample, 0l); + counts.put(ObserveEntityEnum.TargetLength, 0l); + counts.put(ObserveEntityEnum.NonTargetSample, 0l); + counts.put(ObserveEntityEnum.NonTargetLength, 0l); + counts.put(ObserveEntityEnum.NonTargetCatch, 0l); + counts.put(ObserveEntityEnum.SetSeine, 0l); + counts.put(ObserveEntityEnum.TargetCatch, 0l); + counts.put(ObserveEntityEnum.TransmittingBuoy, 0l); + counts.put(ObserveEntityEnum.ObjectObservedSpecies, 0l); + counts.put(ObserveEntityEnum.SchoolEstimate, 0l); + counts.put(ObserveEntityEnum.ObjectSchoolEstimate, 0l); + counts.put(ObserveEntityEnum.FloatingObject, 0l); + counts.put(ObserveEntityEnum.ActivitySeine, 0l); + counts.put(ObserveEntityEnum.Route, 0l); + counts.put(ObserveEntityEnum.TripSeine, 0l); + counts.put(ObserveEntityEnum.HooksComposition, 2l); + counts.put(ObserveEntityEnum.BranchlinesComposition, 2l); + counts.put(ObserveEntityEnum.BaitsComposition, 2l); + counts.put(ObserveEntityEnum.FloatlinesComposition, 2l); + counts.put(ObserveEntityEnum.SizeMeasure, 2l); + counts.put(ObserveEntityEnum.WeightMeasure, 2l); + counts.put(ObserveEntityEnum.SetLongline, 1l); + counts.put(ObserveEntityEnum.Branchline, 2l); + counts.put(ObserveEntityEnum.Basket, 1l); + counts.put(ObserveEntityEnum.Section, 1l); + counts.put(ObserveEntityEnum.CatchLongline, 2l); + counts.put(ObserveEntityEnum.Tdr, 2l); + counts.put(ObserveEntityEnum.Encounter, 2l); + counts.put(ObserveEntityEnum.SensorUsed, 2l); + counts.put(ObserveEntityEnum.ActivityLongline, 1l); + counts.put(ObserveEntityEnum.TdrRecord, 0l); + counts.put(ObserveEntityEnum.TripLongline, 1l); + + String tripLonglineId = "fr.ird.observe.entities.longline.TripLongline#1428427025277#0.8587988145746449"; + assertNbEntities(ctxt, counts, tripLonglineId); + + dstCtxt = (TopiaContextImplementor) createReplicateDb("doReplicateWithComputedOrder"); + + localService.getReplicationService().replicateData(localService, dbCible, tripLonglineId); + + TopiaContext tx = dstCtxt.beginTransaction(); + + try { + + assertNbEntities(tx, counts, tripLonglineId); + + } finally { + tx.closeContext(); + } + + } + + @Override + protected void assertDbEquals(TopiaEntityEnum[] contracts, TopiaContextImplementor ctxt, TopiaContextImplementor ctxt2) throws TopiaException { + // No! + } + + protected void assertNbEntities(TopiaContext tx, EnumMap<ObserveEntityEnum, Long> counts, String tripLonglineId) throws TopiaException { + + for (ObserveEntityEnum dataEntity : Entities.DATA_ENTITIES) { + + long expected = counts.get(dataEntity); + + TopiaDAO<?> dao = ((TopiaContextImplementor) tx).getDAO(dataEntity.getContract()); + long actual = dao.count(); + + + Assert.assertEquals("For entity: " + dataEntity, expected, actual); + } + + TripLongline tripLongline = (TripLongline) tx.findByTopiaId(tripLonglineId); + Assert.assertNotNull(tripLongline); + Assert.assertFalse(tripLongline.isActivityLonglineEmpty()); + Assert.assertEquals(1, tripLongline.sizeActivityLongline()); + + ActivityLongline activityLongline = tripLongline.getActivityLongline().get(0); + Assert.assertNotNull(activityLongline); + + Assert.assertFalse(activityLongline.isEncounterEmpty()); + Assert.assertEquals(2, activityLongline.sizeEncounter()); + + Assert.assertFalse(activityLongline.isSensorUsedEmpty()); + Assert.assertEquals(2, activityLongline.sizeSensorUsed()); + + SetLongline setLongline = activityLongline.getSetLongline(); + Assert.assertNotNull(setLongline); + + Assert.assertFalse(setLongline.isCatchLonglineEmpty()); + Assert.assertEquals(2, setLongline.sizeCatchLongline()); + + Assert.assertFalse(setLongline.isTdrEmpty()); + Assert.assertEquals(2, setLongline.sizeTdr()); + + } +} diff --git a/observe-business/src/test/java/fr/ird/observe/its/replication/ReplicationDataModel.java b/observe-business/src/test/java/fr/ird/observe/its/replication/ReplicationDataModel.java new file mode 100644 index 0000000..abca4c3 --- /dev/null +++ b/observe-business/src/test/java/fr/ird/observe/its/replication/ReplicationDataModel.java @@ -0,0 +1,148 @@ +package fr.ird.observe.its.replication; + +import fr.ird.observe.db.DataSource; +import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.entities.referentiel.Country; +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.entities.referentiel.Species; +import fr.ird.observe.entities.referentiel.Vessel; +import fr.ird.observe.entities.referentiel.seine.WeightCategory; +import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.entities.seine.FloatingObject; +import fr.ird.observe.entities.seine.NonTargetCatch; +import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.entities.seine.SchoolEstimate; +import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.entities.seine.TargetCatch; +import fr.ird.observe.entities.seine.TargetLength; +import fr.ird.observe.entities.seine.TargetSample; +import fr.ird.observe.entities.seine.TripSeine; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.persistence.TopiaEntity; + +import java.util.Date; + +/** + * TODO Complete it with Longline model. + * + * Created on 2/5/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.16 + */ +public class ReplicationDataModel { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ReplicationDataModel.class); + + protected Program programSeine; + + protected Program programLongline; + + protected Country country; + + protected Route route; + + protected TripSeine tripSeine; + + protected TripLongline tripLongline; + + protected ActivitySeine activitySeine; + + protected ActivityLongline activityLongline; + + protected SetSeine setSeine; + + protected SetLongline setLongline; + + protected FloatingObject floatingObject; + + protected SchoolEstimate schoolEstimate; + + protected Species species; + + protected Species speciesFaune; + + protected WeightCategory weightCategory; + + protected TargetCatch targetCatch; + + protected NonTargetCatch nonTargetCatch; + + protected TargetLength targetLength; + + protected TargetSample targetSample; + + protected Vessel vessel; + + public void createModel(DataSource service, TopiaContext tx) throws TopiaException { + + programSeine = service.getDAO(tx, Program.class).create(Program.PROPERTY_CODE, "9999", Program.PROPERTY_LABEL2, "program-1-Seine"); + programLongline = service.getDAO(tx, Program.class).create(Program.PROPERTY_CODE, "9998", Program.PROPERTY_LABEL2, "program-1-Longline"); + + country = service.getDAO(tx, Country.class).create(Country.PROPERTY_CODE, "9999", Country.PROPERTY_LABEL2, "country-1"); + vessel = service.getDAO(tx, Vessel.class).create(Vessel.PROPERTY_CODE, "9999", Vessel.PROPERTY_LABEL2, "vessel-1", Vessel.PROPERTY_FLAG_COUNTRY, country); + + species = service.getDAO(tx, Species.class).create(Species.PROPERTY_CODE, "9999"); + speciesFaune = service.getDAO(tx, Species.class).create(Species.PROPERTY_CODE, "9999"); + weightCategory = service.getDAO(tx, WeightCategory.class).create(WeightCategory.PROPERTY_CODE, "9999", WeightCategory.PROPERTY_SPECIES, species); + + targetSample = service.getDAO(tx, TargetSample.class).create(TargetSample.PROPERTY_NATURE, "nature"); + targetLength = service.getDAO(tx, TargetLength.class).create(TargetLength.PROPERTY_TARGET_SAMPLE, targetSample, TargetLength.PROPERTY_SPECIES, species, TargetLength.PROPERTY_COUNT, 1, TargetLength.PROPERTY_LENGTH, 1.0f); + tripSeine = service.getDAO(tx, TripSeine.class).create(TripSeine.PROPERTY_START_DATE, new Date()); + route = service.getDAO(tx, Route.class).create(Route.PROPERTY_DATE, new Date()); + activitySeine = service.getDAO(tx, ActivitySeine.class).create(ActivitySeine.PROPERTY_TIME, new Date()); + setSeine = service.getDAO(tx, SetSeine.class).create(SetSeine.PROPERTY_START_TIME, new Date()); + floatingObject = service.getDAO(tx, FloatingObject.class).create(FloatingObject.PROPERTY_SUPPORT_VESSEL_NAME, "supportVesselName"); + targetCatch = service.getDAO(tx, TargetCatch.class).create( + TargetCatch.PROPERTY_SET_SEINE, setSeine, + TargetCatch.PROPERTY_WEIGHT_CATEGORY, weightCategory, + TargetCatch.PROPERTY_CATCH_WEIGHT, 1.0f); + + schoolEstimate = service.getDAO(tx, SchoolEstimate.class).create( + SchoolEstimate.PROPERTY_TOTAL_WEIGHT, 10, + SchoolEstimate.PROPERTY_SET_SEINE, setSeine, + SchoolEstimate.PROPERTY_SPECIES, species); + + nonTargetCatch = service.getDAO(tx, NonTargetCatch.class).create( + NonTargetCatch.PROPERTY_SPECIES, speciesFaune + ); + + tripSeine.setProgram(programSeine); + tripSeine.addRoute(route); + route.addActivitySeine(activitySeine); + activitySeine.addFloatingObject(floatingObject); + activitySeine.setSetSeine(setSeine); + targetSample.addTargetLength(targetLength); + setSeine.addTargetSample(targetSample); + setSeine.addNonTargetCatch(nonTargetCatch); + + } + + public void update(TopiaContext ctxt) throws TopiaException { + + programSeine = (Program) ctxt.findByTopiaId(programSeine.getTopiaId()); + setSeine = update(ctxt, setSeine); + activitySeine = update(ctxt, activitySeine); + tripSeine = update(ctxt, tripSeine); + route = update(ctxt, route); + schoolEstimate = update(ctxt, schoolEstimate); + species = update(ctxt, species); + speciesFaune = update(ctxt, speciesFaune); + targetCatch = update(ctxt, targetCatch); + nonTargetCatch = update(ctxt, nonTargetCatch); + floatingObject = update(ctxt, floatingObject); + targetLength = update(ctxt, targetLength); + targetSample = update(ctxt, targetSample); + + } + + protected <E extends TopiaEntity> E update(TopiaContext ctxt, E e) throws TopiaException { + return (E) ctxt.findByTopiaId(e.getTopiaId()); + } +} diff --git a/observe-business/src/test/resources/db/3.16/ANO-6611.sql.gz b/observe-business/src/test/resources/db/3.16/ANO-6611.sql.gz new file mode 100644 index 0000000..04ae05a Binary files /dev/null and b/observe-business/src/test/resources/db/3.16/ANO-6611.sql.gz differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.