This is an automated email from the git hooks/post-receive script. New commit to branch feature/8180 in repository echobase. See https://gitlab.nuiton.org/codelutin/echobase.git commit e81e229cc4769cdd4e3b812bad0dd72140a14b2f Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Mon Jul 4 17:11:36 2016 +0200 Create remove strategy for esdu results import for mooring --- .../service/removedata/RemoveDataService.java | 4 +- .../MooringResultEsduRemoveDataStrategy.java | 82 ++++++++++++++++++++++ .../removedata/AbstractRemoveDataServiceTest.java | 33 ++++++++- .../MooringAcousticRemoveDataServiceTest.java | 4 +- .../removedata/MooringRemoveDataServiceTest.java | 4 +- ...=> MooringResultEsduRemoveDataServiceTest.java} | 15 ++-- .../MooringResultsRemoveDataServiceTest.java | 4 +- 7 files changed, 133 insertions(+), 13 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/RemoveDataService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/RemoveDataService.java index 99853a7..85004bb 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/RemoveDataService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/RemoveDataService.java @@ -41,7 +41,6 @@ import fr.ifremer.echobase.services.service.removedata.strategy.CommonAllRemoveD import fr.ifremer.echobase.services.service.removedata.strategy.CommonTransectRemoveDataStrategy; import fr.ifremer.echobase.services.service.removedata.strategy.CommonTransitRemoveDataStrategy; import fr.ifremer.echobase.services.service.removedata.strategy.CommonVoyageRemoveDataStrategy; -import fr.ifremer.echobase.services.service.removedata.strategy.DummyRemoveDataStrategy; import fr.ifremer.echobase.services.service.removedata.strategy.LegacyVoyageRemoveDataStrategy; import fr.ifremer.echobase.services.service.removedata.strategy.MooringAcousticRemoveDataStrategy; import fr.ifremer.echobase.services.service.removedata.strategy.MooringRemoveDataStrategy; @@ -66,6 +65,7 @@ import java.util.Set; import fr.ifremer.echobase.entities.data.DataAcousticProvider; import fr.ifremer.echobase.services.service.removedata.strategy.CommonAncillaryInstrumentationRemoveDataStrategy; import fr.ifremer.echobase.services.service.removedata.strategy.MooringAncillaryInstrumentationRemoveDataStrategy; +import fr.ifremer.echobase.services.service.removedata.strategy.MooringResultEsduRemoveDataStrategy; import fr.ifremer.echobase.services.service.removedata.strategy.MooringResultsRemoveDataStrategy; /** @@ -298,7 +298,7 @@ public class RemoveDataService extends EchoBaseServiceSupport { strategies.put(ImportType.MOORING_ANCILLARY_INSTRUMENTATION, MooringAncillaryInstrumentationRemoveDataStrategy.class); strategies.put(ImportType.MOORING_ACOUSTIC, MooringAcousticRemoveDataStrategy.class); strategies.put(ImportType.RESULT_MOORING, MooringResultsRemoveDataStrategy.class); - strategies.put(ImportType.RESULT_MOORING_ESDU, DummyRemoveDataStrategy.class); + strategies.put(ImportType.RESULT_MOORING_ESDU, MooringResultEsduRemoveDataStrategy.class); Preconditions.checkState( ImportType.values().length == strategies.size(), "It miss some remove data strategies..."); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringResultEsduRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringResultEsduRemoveDataStrategy.java new file mode 100644 index 0000000..f3730b7 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringResultEsduRemoveDataStrategy.java @@ -0,0 +1,82 @@ +package fr.ifremer.echobase.services.service.removedata.strategy; + +/* + * #%L + * EchoBase :: Services + * %% + * Copyright (C) 2011 - 2012 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% + */ + +import fr.ifremer.echobase.entities.ImportLog; +import fr.ifremer.echobase.entities.ImportType; +import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Result; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaException; + +import java.util.Collections; +import java.util.Set; +import fr.ifremer.echobase.entities.data.DataAcousticProvider; +import fr.ifremer.echobase.entities.data.Mooring; + +/** + * Remove a {@link ImportType#RESULT_MOORING_ESDU} import. + * + * Can remove only {@link Result}. + * + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 + */ +public class MooringResultEsduRemoveDataStrategy extends AbstractRemoveDataStrategy<Mooring> { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(MooringResultEsduRemoveDataStrategy.class); + + @Override + public long computeNbSteps(DataAcousticProvider<Mooring> provider, ImportLog importLog) { + return getImportFileIdsCount(importLog); + } + + @Override + protected void removeImportData(DataAcousticProvider<Mooring> provider, String id) throws TopiaException { + + if (id.startsWith(Result.class.getName())) { + + // get result + Result result = persistenceService.getResult(id); + + // remove it from cell + Cell cell = persistenceService.getCellContainsResult(result); + cell.removeResult(result); + + // remove result + persistenceService.deleteResult(result); + if (log.isDebugEnabled()) { + log.debug(result.getTopiaId() + " was removed"); + } + } else { + canNotDealWithId(id); + } + } + + @Override + public Set<ImportType> getPossibleSubImportType() { + return Collections.emptySet(); + } +} diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java index fc94f50..3eb2c6e 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java @@ -139,6 +139,8 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS protected String importResultVoyage1Id; protected String importResultEsdu1Id; + + protected String importMooringResultEsduId; protected String importResultRegion1Id; @@ -187,6 +189,8 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS protected static final String cellEsdu1_2Id = "fr.ifremer.echobase.entities.data.Cell#1#esdu2"; protected static final String resultEsdu1Id = "fr.ifremer.echobase.entities.data.Result#1#esdu1"; + + protected static final String resultEsdu2Id = "fr.ifremer.echobase.entities.data.Result#1#esdu2"; protected static final String resultMapFish1Id = "fr.ifremer.echobase.entities.data.Result#1#mapFish1"; @@ -337,6 +341,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS createMooringAcousticImport(); createMooringAncillaryInstrumentationImport(); createMooringResultsImport(); + createMooringResultEsduImport(); } protected void removeImport(String importId, String... shoudDeleteIds) throws TopiaException { @@ -361,6 +366,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS importVoyageAncillaryInstrumentationId, importMooringAncillaryInstrumentationId, importMooringResultsId, + importMooringResultEsduId, voyage1Id, transit1Id, transect1Id, transect1_2Id, operation1Id, totalSample1Id, subSample1Id, biometrySample1Id, @@ -371,7 +377,7 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS echotype1Id, lengthAgeKey1Id, lengthWeightKey1Id, voyage2Id, transit2Id, transect2Id, transect2_2Id, mooringId, - dataAcquisition2Id, cellEsdu2Id, cellElementary2Id, + dataAcquisition2Id, cellEsdu2Id, cellElementary2Id, resultEsdu2Id, echotype2Id ); List<String> deletedId = Lists.newArrayList(); @@ -998,6 +1004,31 @@ public abstract class AbstractRemoveDataServiceTest extends EchoBaseTestServiceS echotype); } + private void createMooringResultEsduImport() throws TopiaException { + + // create result (on ESDU) + + Category category = categoryDAO.create(); + + Result result = resultDAO.create(TopiaEntity.PROPERTY_TOPIA_ID, resultEsdu2Id, + Result.PROPERTY_CATEGORY, category, + Result.PROPERTY_DATA_METADATA, getFirstEntity(DataMetadata.class), + Result.PROPERTY_RESULT_VALUE, "resultValueEdsu2", + Result.PROPERTY_RESULT_LABEL, "resultLabelEdsu2" + ); + + Cell cell = getEntity(cellEsdu2Id); + cell.addResult(result); + + importMooringResultEsduId = createImport( + new MooringResultsImportConfiguration(getLocale()), + ImportType.RESULT_MOORING_ESDU, + "ResultsEsdu2", + mooringId, + result); + } + + private <C extends ImportDataConfigurationSupport> String createImport(C importConf, ImportType importType, String importNote, diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringAcousticRemoveDataServiceTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringAcousticRemoveDataServiceTest.java index 34fe85c..e8b1957 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringAcousticRemoveDataServiceTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringAcousticRemoveDataServiceTest.java @@ -40,8 +40,10 @@ public class MooringAcousticRemoveDataServiceTest extends AbstractRemoveDataServ importMooringAcousticId, // data that should be removed dataAcquisition2Id, cellEsdu2Id, cellElementary2Id, + resultEsdu2Id, // importLog that should be removed - importMooringAcousticId + importMooringAcousticId, + importMooringResultEsduId ); } diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java index ed54a25..d487bfc 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringRemoveDataServiceTest.java @@ -44,12 +44,14 @@ public class MooringRemoveDataServiceTest extends AbstractRemoveDataServiceTest mooringId, dataAcquisition2Id, cellEsdu2Id, cellElementary2Id, echotype2Id, + resultEsdu2Id, // importLog that should be removed importMooringId, importMooringResultsId, importMooringAcousticId, - importMooringAncillaryInstrumentationId); + importMooringAncillaryInstrumentationId, + importMooringResultEsduId); } } diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultsRemoveDataServiceTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultEsduRemoveDataServiceTest.java similarity index 76% copy from echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultsRemoveDataServiceTest.java copy to echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultEsduRemoveDataServiceTest.java index 64e720d..f234968 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultsRemoveDataServiceTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultEsduRemoveDataServiceTest.java @@ -22,26 +22,27 @@ package fr.ifremer.echobase.ui.actions.removedata; */ import fr.ifremer.echobase.services.service.removedata.RemoveDataService; -import fr.ifremer.echobase.services.service.removedata.strategy.MooringResultsRemoveDataStrategy; +import fr.ifremer.echobase.services.service.removedata.strategy.MooringResultEsduRemoveDataStrategy; import org.junit.Test; import org.nuiton.topia.persistence.TopiaException; /** - * Test{@link RemoveDataService} with {@link MooringResultsRemoveDataStrategy}. + * Test{@link RemoveDataService} with {@link MooringResultEsduRemoveDataStrategy}. * * @author Julien Ruchaud - ruchaud@codelutin.com * @since 4.0 */ -public class MooringResultsRemoveDataServiceTest extends AbstractRemoveDataServiceTest { +public class MooringResultEsduRemoveDataServiceTest extends AbstractRemoveDataServiceTest { @Test - public void removeEchotypeImport() throws TopiaException { + public void removeImport() throws TopiaException { removeImport(// import to remove - importMooringResultsId, + importMooringResultEsduId, // data that should be removed - echotype2Id, + resultEsdu2Id, // importLog that should be removed - importMooringResultsId); + importMooringResultEsduId); } + } diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultsRemoveDataServiceTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultsRemoveDataServiceTest.java index 64e720d..d5b4479 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultsRemoveDataServiceTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/MooringResultsRemoveDataServiceTest.java @@ -41,7 +41,9 @@ public class MooringResultsRemoveDataServiceTest extends AbstractRemoveDataServi importMooringResultsId, // data that should be removed echotype2Id, + resultEsdu2Id, // importLog that should be removed - importMooringResultsId); + importMooringResultsId, + importMooringResultEsduId); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.