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 f754e8b3503e988bfa2ac9e6ea26ff142361ffc5 Author: Julien Ruchaud <julien.ruchaud@debux.org> Date: Tue Jun 21 17:19:40 2016 +0200 Add remove strategies for mooring (not tested) --- .../echobase/entities/data/CellTopiaDao.java | 89 +++++++++++++++++++++- .../i18n/echobase-domain_en_GB.properties | 4 + .../i18n/echobase-domain_fr_FR.properties | 4 + .../services/service/UserDbPersistenceService.java | 20 ++++- .../service/removedata/RemoveDataService.java | 9 ++- .../strategy/AbstractRemoveDataStrategy.java | 80 ++++--------------- .../strategy/AcousticRemoveDataStrategy.java | 1 - .../strategy/CommonAllRemoveDataStrategy.java | 1 - .../strategy/CommonTransectRemoveDataStrategy.java | 1 - .../strategy/CommonTransitRemoveDataStrategy.java | 1 - .../strategy/DummyMooringRemoveDataStrategy.java | 60 +++++++++++++++ .../strategy/LegacyVoyageRemoveDataStrategy.java | 1 - ...java => MooringAcousticRemoveDataStrategy.java} | 50 +++++------- .../strategy/MooringRemoveDataStrategy.java | 83 ++++++++++++++++++++ 14 files changed, 293 insertions(+), 111 deletions(-) diff --git a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellTopiaDao.java b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellTopiaDao.java index 87f1d39..41cc9bf 100644 --- a/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellTopiaDao.java +++ b/echobase-domain/src/main/java/fr/ifremer/echobase/entities/data/CellTopiaDao.java @@ -37,13 +37,23 @@ public class CellTopiaDao extends AbstractCellTopiaDao<Cell> { return topiaSqlSupport.findSingleResult(query); } + public long countMooringOrphanCells(Mooring mooring) { + TopiaSqlQuery<Long> query = newCountMooringOrphanCellsQuery(mooring); + return topiaSqlSupport.findSingleResult(query); + } + public long countVoyageCellResults(Voyage voyage) { TopiaSqlQuery<Long> query = newCountVoyageCellResultsQuery(voyage); return topiaSqlSupport.findSingleResult(query); } - public List<String> getVoyageCellIds() throws TopiaException { - TopiaSqlQuery<String> query = newVoyageCellIdsQuery(); + public long countMooringCellResults(Mooring mooring) { + TopiaSqlQuery<Long> query = newCountMooringCellResultsQuery(mooring); + return topiaSqlSupport.findSingleResult(query); + } + + public List<String> getVoyageOrphanCellIds() throws TopiaException { + TopiaSqlQuery<String> query = newVoyageOrphanCellIdsQuery(); return topiaSqlSupport.findMultipleResult(query); } @@ -53,6 +63,12 @@ public class CellTopiaDao extends AbstractCellTopiaDao<Cell> { return topiaSqlSupport.findMultipleResult(query); } + public List<String> getMooringCellIds(Mooring mooring) throws TopiaException { + TopiaSqlQuery<String> query = newMooringCellIdsQuery(mooring); + + return topiaSqlSupport.findMultipleResult(query); + } + protected TopiaSqlQuery<Long> newCountVoyageOrphanCellsQuery(final Voyage voyage) { return new TopiaSqlQuery<Long>() { @Override @@ -80,6 +96,29 @@ public class CellTopiaDao extends AbstractCellTopiaDao<Cell> { }; } + protected TopiaSqlQuery<Long> newCountMooringOrphanCellsQuery(Mooring mooring) { + return new TopiaSqlQuery<Long>() { + @Override + public PreparedStatement prepareQuery(Connection connection) throws SQLException { + String hql = "SELECT count(c2.topiaid) FROM DataAcquisition da, " + + " DataProcessing dp, " + + " Cell c, Cell c2 " + + "WHERE da.mooring = ? " + + "AND da.topiaId = dp.dataacquisition " + + "AND dp.topiaId = c.dataprocessing " + + "AND c.topiaId = c2.cell"; + PreparedStatement result = connection.prepareStatement(hql); + result.setString(1, mooring.getTopiaId()); + return result; + } + + @Override + public Long prepareResult(ResultSet set) throws SQLException { + return set.getLong(1); + } + }; + } + protected TopiaSqlQuery<Long> newCountVoyageCellResultsQuery(final Voyage voyage) { return new TopiaSqlQuery<Long>() { @Override @@ -106,7 +145,29 @@ public class CellTopiaDao extends AbstractCellTopiaDao<Cell> { }; } - protected TopiaSqlQuery<String> newVoyageCellIdsQuery() { + protected TopiaSqlQuery<Long> newCountMooringCellResultsQuery(Mooring mooring) { + return new TopiaSqlQuery<Long>() { + @Override + public PreparedStatement prepareQuery(Connection connection) throws SQLException { + String hql = "SELECT count(c.topiaid) FROM DataAcquisition da, " + + " DataProcessing dp, " + + " Cell c " + + "WHERE da.mooring = ?" + + "AND da.topiaId = dp.dataacquisition " + + "AND dp.topiaId = c.dataprocessing"; + PreparedStatement result = connection.prepareStatement(hql); + result.setString(1, mooring.getTopiaId()); + return result; + } + + @Override + public Long prepareResult(ResultSet set) throws SQLException { + return set.getLong(1); + } + }; + } + + protected TopiaSqlQuery<String> newVoyageOrphanCellIdsQuery() { return new TopiaSqlQuery<String>() { @Override public PreparedStatement prepareQuery(Connection connection) throws SQLException { @@ -147,4 +208,26 @@ public class CellTopiaDao extends AbstractCellTopiaDao<Cell> { } }; } + + protected TopiaSqlQuery<String> newMooringCellIdsQuery(Mooring mooring) { + return new TopiaSqlQuery<String>() { + @Override + public PreparedStatement prepareQuery(Connection connection) throws SQLException { + String hql = "SELECT c.topiaid FROM DataAcquisition da, " + + " DataProcessing dp, " + + " Cell c " + + "WHERE da.mooring = ? " + + "AND da.topiaId = dp.dataacquisition " + + "AND dp.topiaId = c.dataprocessing"; + PreparedStatement result = connection.prepareStatement(hql); + result.setString(1, mooring.getTopiaId()); + return result; + } + + @Override + public String prepareResult(ResultSet set) throws SQLException { + return set.getString(1); + } + }; + } } diff --git a/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties b/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties index 1529209..740e221 100644 --- a/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties +++ b/echobase-domain/src/main/resources/i18n/echobase-domain_en_GB.properties @@ -22,6 +22,10 @@ echobase.common.importType.resultsMapFish=Import the “map (fishes)” cells re echobase.common.importType.resultsMapFish.short=Map (fishes) echobase.common.importType.resultsMapOther=Import the “map (others)” cells results echobase.common.importType.resultsMapOther.short=Maps (others) +echobase.common.importType.resultsMooring= +echobase.common.importType.resultsMooring.short= +echobase.common.importType.resultsMooringEsdu= +echobase.common.importType.resultsMooringEsdu.short= echobase.common.importType.resultsRegion=Import the “region” cells results echobase.common.importType.resultsRegion.short=Region echobase.common.importType.resultsVoyage=Import the voyage-related results diff --git a/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties b/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties index 6933fa1..03a3f2d 100644 --- a/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties +++ b/echobase-domain/src/main/resources/i18n/echobase-domain_fr_FR.properties @@ -22,6 +22,10 @@ echobase.common.importType.resultsMapFish=Import des cellules de type Carte (Poi echobase.common.importType.resultsMapFish.short=Carte (Poisson) echobase.common.importType.resultsMapOther=Import des cellules de type Carte (Autres) echobase.common.importType.resultsMapOther.short=Carte (Autres) +echobase.common.importType.resultsMooring= +echobase.common.importType.resultsMooring.short= +echobase.common.importType.resultsMooringEsdu= +echobase.common.importType.resultsMooringEsdu.short= echobase.common.importType.resultsRegion=Import des cellules de type Région echobase.common.importType.resultsRegion.short=Région echobase.common.importType.resultsVoyage=Import des résultats du voyage diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java index aeb556a..9c14106 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/UserDbPersistenceService.java @@ -253,18 +253,30 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { return persistenceContext.getCellDao().countVoyageOrphanCells(voyage); } + public long countMooringOrphanCells(Mooring mooring) { + return persistenceContext.getCellDao().countMooringOrphanCells(mooring); + } + public long countVoyageCellResults(final Voyage voyage) { return persistenceContext.getCellDao().countVoyageCellResults(voyage); } - public List<String> getVoyageCellIds() throws TopiaException { - return persistenceContext.getCellDao().getVoyageCellIds(); + public long countMooringCellResults(Mooring mooring) { + return persistenceContext.getCellDao().countMooringCellResults(mooring); + } + + public List<String> getVoyageOrphanCellIds() throws TopiaException { + return persistenceContext.getCellDao().getVoyageOrphanCellIds(); } public List<String> getVoyageCellIds(Voyage voyage) throws TopiaException { return persistenceContext.getCellDao().getVoyageCellIds(voyage); } + public List<String> getMooringCellIds(Mooring mooring) throws TopiaException { + return persistenceContext.getCellDao().getMooringCellIds(mooring); + } + public ValueParser<Cell> newCellValueParser() { CellTopiaDao cellDao = persistenceContext.getCellDao(); @@ -726,6 +738,10 @@ public class UserDbPersistenceService extends EchoBaseServiceSupport { public Mooring createMooring(Mooring mooring) { return persistenceContext.getMooringDao().create(mooring); } + + public void deleteMooring(Mooring mooring) { + persistenceContext.getMooringDao().delete(mooring); + } //------------------------------------------------------------------------// //--- Mission ------------------------------------------------------------// 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 852df35..c4dfbb2 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 @@ -42,7 +42,10 @@ 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.DummyMooringRemoveDataStrategy; 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; import fr.ifremer.echobase.services.service.removedata.strategy.OperationRemoveDataStrategy; import fr.ifremer.echobase.services.service.removedata.strategy.ResultEsduRemoveDataStrategy; import fr.ifremer.echobase.services.service.removedata.strategy.ResultMapFishRemoveDataStrategy; @@ -290,8 +293,10 @@ public class RemoveDataService extends EchoBaseServiceSupport { strategies.put(ImportType.RESULT_MAP_FISH, ResultMapFishRemoveDataStrategy.class); strategies.put(ImportType.RESULT_MAP_OTHER, ResultMapOtherRemoveDataStrategy.class); strategies.put(ImportType.RESULT_REGION, ResultRegionRemoveDataStrategy.class); - strategies.put(ImportType.MOORING, LegacyVoyageRemoveDataStrategy.class); - strategies.put(ImportType.MOORING_ACOUSTIC, AcousticRemoveDataStrategy.class); + strategies.put(ImportType.MOORING, MooringRemoveDataStrategy.class); + strategies.put(ImportType.MOORING_ACOUSTIC, MooringAcousticRemoveDataStrategy.class); + strategies.put(ImportType.RESULT_MOORING, DummyMooringRemoveDataStrategy.class); + strategies.put(ImportType.RESULT_MOORING_ESDU, DummyMooringRemoveDataStrategy.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/AbstractRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/AbstractRemoveDataStrategy.java index f2bd49d..486b0d8 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/AbstractRemoveDataStrategy.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/AbstractRemoveDataStrategy.java @@ -31,6 +31,7 @@ import fr.ifremer.echobase.entities.ImportLog; import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Category; import fr.ifremer.echobase.entities.data.Cell; +import fr.ifremer.echobase.entities.data.Mooring; import fr.ifremer.echobase.entities.data.Result; import fr.ifremer.echobase.entities.data.Voyage; import fr.ifremer.echobase.services.EchoBaseServiceSupport; @@ -151,8 +152,7 @@ public abstract class AbstractRemoveDataStrategy<E extends TopiaEntity> extends protected void removeVoyage(Voyage entity) throws TopiaException { // get categories to remove after - List<Category> categories = - persistenceService.getCategoryUsingEchotype(entity); + List<Category> categories = persistenceService.getCategoryUsingEchotype(entity); // dettach obsolete categories from their echotypes // FIXME This with topia 3.0 ? @@ -165,7 +165,6 @@ public abstract class AbstractRemoveDataStrategy<E extends TopiaEntity> extends // remove obsolete categories for (Category category : categories) { - persistenceService.deleteCategory(category); incrementOp("Remove orphan category " + category.getTopiaId()); } @@ -194,35 +193,16 @@ public abstract class AbstractRemoveDataStrategy<E extends TopiaEntity> extends } protected void removeVoyageCellResults(Voyage voyage) throws TopiaException { - - // Get all cells of the voyage -// TopiaSQLQuery<String> query = new TopiaSQLQuery<String>() { -// @Override -// protected PreparedStatement prepareQuery(Connection connection) throws SQLException { -// String hql = "SELECT c.topiaid FROM Transit ta, " + -// " Transect te, " + -// " DataAcquisition da, " + -// " DataProcessing dp, " + -// " Cell c " + -// "WHERE ta.voyage = ? " + -// "AND ta.topiaId = te.transit " + -// "AND te.topiaId = da.transect " + -// "AND da.topiaId = dp.dataacquisition " + -// "AND dp.topiaId = c.dataprocessing"; -// PreparedStatement result = connection.prepareStatement(hql); -// result.setString(1, voyage.getTopiaId()); -// return result; -// } -// -// @Override -// protected String prepareResult(ResultSet set) throws SQLException { -// return set.getString(1); -// } -// }; - List<String> cellIds = persistenceService.getVoyageCellIds(voyage); - - + this.removeCellResults(cellIds); + } + + protected void removeMooringCellResults(Mooring mooring) throws TopiaException { + List<String> cellIds = persistenceService.getMooringCellIds(mooring); + this.removeCellResults(cellIds); + } + + protected void removeCellResults(List<String> cellIds) throws TopiaException { // remove all result of cells for (String cellId : cellIds) { Optional<Cell> optionalCell = persistenceService.getOptionalCell(cellId); @@ -239,42 +219,10 @@ public abstract class AbstractRemoveDataStrategy<E extends TopiaEntity> extends incrementOp("Remove cell " + cellId + " results"); } } - -// protected long countVoyageCellResults(final Voyage voyage) { -// TopiaSQLQuery<Long> query = new TopiaSQLQuery<Long>() { -// @Override -// protected PreparedStatement prepareQuery(Connection connection) throws SQLException { -// String hql = "SELECT count(c.topiaid) FROM Transit ta, " + -// " Transect te, " + -// " DataAcquisition da, " + -// " DataProcessing dp, " + -// " Cell c " + -// "WHERE ta.voyage = ? " + -// "AND ta.topiaId = te.transit " + -// "AND te.topiaId = da.transect " + -// "AND da.topiaId = dp.dataacquisition " + -// "AND dp.topiaId = c.dataprocessing"; -// PreparedStatement result = connection.prepareStatement(hql); -// result.setString(1, voyage.getTopiaId()); -// return result; -// } -// -// @Override -// protected Long prepareResult(ResultSet set) throws SQLException { -// return set.getLong(1); -// } -// }; -// try { -// Long result = getEchoBaseUserPersistenceContext().findSingleResult(query); -// return result; -// } catch (TopiaException e) { -// throw new EchoBaseTechnicalException(e); -// } -// } - + protected void removeVoyageOrphanCells() throws TopiaException { - - List<String> cellIds = persistenceService.getVoyageCellIds(); + List<String> cellIds = persistenceService.getVoyageOrphanCellIds(); + for (String cellId : cellIds) { Cell cell = persistenceService.getCell(cellId); persistenceService.deleteCell(cell); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/AcousticRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/AcousticRemoveDataStrategy.java index 85fc991..0bd91dd 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/AcousticRemoveDataStrategy.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/AcousticRemoveDataStrategy.java @@ -80,7 +80,6 @@ public class AcousticRemoveDataStrategy extends AbstractRemoveDataStrategy<Voyag @Override protected void removePostData(DataAccousticProvider<Voyage> provider) throws TopiaException { - // remove orphans cells removeVoyageOrphanCells(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonAllRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonAllRemoveDataStrategy.java index 082a979..2c0c260 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonAllRemoveDataStrategy.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonAllRemoveDataStrategy.java @@ -48,7 +48,6 @@ public class CommonAllRemoveDataStrategy extends AbstractRemoveDataStrategy<Voya @Override protected void removePostData(DataAccousticProvider<Voyage> provider) throws TopiaException { - // remove orphans cells removeVoyageOrphanCells(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonTransectRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonTransectRemoveDataStrategy.java index 720aa4a..b928931 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonTransectRemoveDataStrategy.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonTransectRemoveDataStrategy.java @@ -78,7 +78,6 @@ public class CommonTransectRemoveDataStrategy extends AbstractRemoveDataStrategy @Override protected void removePostData(DataAccousticProvider<Voyage> provider) throws TopiaException { - // remove orphans cells removeVoyageOrphanCells(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonTransitRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonTransitRemoveDataStrategy.java index 41228ed..5ecefe3 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonTransitRemoveDataStrategy.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/CommonTransitRemoveDataStrategy.java @@ -77,7 +77,6 @@ public class CommonTransitRemoveDataStrategy extends AbstractRemoveDataStrategy< @Override protected void removePostData(DataAccousticProvider<Voyage> provider) throws TopiaException { - // remove orphans cells removeVoyageOrphanCells(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/DummyMooringRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/DummyMooringRemoveDataStrategy.java new file mode 100644 index 0000000..794fb40 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/DummyMooringRemoveDataStrategy.java @@ -0,0 +1,60 @@ +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 com.google.common.collect.Sets; +import fr.ifremer.echobase.entities.DataAccousticProvider; +import fr.ifremer.echobase.entities.ImportLog; +import fr.ifremer.echobase.entities.ImportType; +import fr.ifremer.echobase.entities.data.Mooring; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaException; + +import java.util.Set; + +/** + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 + */ +public class DummyMooringRemoveDataStrategy extends AbstractRemoveDataStrategy<Mooring> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(DummyMooringRemoveDataStrategy.class); + + + @Override + public long computeNbSteps(DataAccousticProvider<Mooring> provider, ImportLog importLog) { + long result = getImportFileIdsCount(importLog); + return result; + } + + @Override + protected void removeImportData(DataAccousticProvider<Mooring> provider, String id) throws TopiaException { + } + + @Override + public Set<ImportType> getPossibleSubImportType() { + return Sets.newHashSet(); + } + +} diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/LegacyVoyageRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/LegacyVoyageRemoveDataStrategy.java index 480b237..615bd78 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/LegacyVoyageRemoveDataStrategy.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/LegacyVoyageRemoveDataStrategy.java @@ -48,7 +48,6 @@ public class LegacyVoyageRemoveDataStrategy extends AbstractRemoveDataStrategy<V @Override protected void removePostData(DataAccousticProvider<Voyage> provider) throws TopiaException { - // remove orphans cells removeVoyageOrphanCells(); } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/AcousticRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringAcousticRemoveDataStrategy.java similarity index 67% copy from echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/AcousticRemoveDataStrategy.java copy to echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringAcousticRemoveDataStrategy.java index 85fc991..b794bf2 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/AcousticRemoveDataStrategy.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringAcousticRemoveDataStrategy.java @@ -28,8 +28,8 @@ import fr.ifremer.echobase.entities.ImportType; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.DataAcquisition; import fr.ifremer.echobase.entities.data.DataProcessing; +import fr.ifremer.echobase.entities.data.Mooring; import fr.ifremer.echobase.entities.data.Transect; -import fr.ifremer.echobase.entities.data.Voyage; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.TopiaException; @@ -37,56 +37,43 @@ import org.nuiton.topia.persistence.TopiaException; import java.util.Set; /** - * Remove a {@link ImportType#ACOUSTIC} import. + * Remove a {@link ImportType#MOORING_ACOUSTIC} import. * * Can remove only {@link DataAcquisition} or {@link Cell}. * - * @author Tony Chemit - chemit@codelutin.com - * @since 1.2 + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 */ -public class AcousticRemoveDataStrategy extends AbstractRemoveDataStrategy<Voyage> { +public class MooringAcousticRemoveDataStrategy extends AbstractRemoveDataStrategy<Mooring> { /** Logger. */ - private static final Log log = - LogFactory.getLog(AcousticRemoveDataStrategy.class); + private static final Log log = LogFactory.getLog(MooringAcousticRemoveDataStrategy.class); @Override - public long computeNbSteps(DataAccousticProvider<Voyage> provider, ImportLog importLog) { - Voyage voyage = provider.getEntity(); + public long computeNbSteps(DataAccousticProvider<Mooring> provider, ImportLog importLog) { + Mooring mooring = provider.getEntity(); long result = getImportFileIdsCount(importLog); // add all cell results - result += persistenceService.countVoyageCellResults(voyage); - - // add all postCell - result += voyage.sizePostCell(); + result += persistenceService.countMooringCellResults(mooring); // add all orphan cells - result += persistenceService.countVoyageOrphanCells(voyage); + result += persistenceService.countMooringOrphanCells(mooring); + return result; } @Override - protected void removePreData(DataAccousticProvider<Voyage> provider) throws TopiaException { - Voyage voyage = provider.getEntity(); + protected void removePreData(DataAccousticProvider<Mooring> provider) throws TopiaException { + Mooring mooring = provider.getEntity(); // remove all cell results - removeVoyageCellResults(voyage); - - // remove post cell from top voyage - removeVoyagePostCell(voyage); - } - - @Override - protected void removePostData(DataAccousticProvider<Voyage> provider) throws TopiaException { - - // remove orphans cells - removeVoyageOrphanCells(); + removeMooringCellResults(mooring); } @Override - protected void removeImportData(DataAccousticProvider<Voyage> provider, String id) throws TopiaException { + protected void removeImportData(DataAccousticProvider<Mooring> provider, String id) throws TopiaException { if (id.startsWith(DataAcquisition.class.getName())) { @@ -126,10 +113,7 @@ public class AcousticRemoveDataStrategy extends AbstractRemoveDataStrategy<Voyag @Override public Set<ImportType> getPossibleSubImportType() { - return Sets.newHashSet(ImportType.RESULT_VOYAGE, - ImportType.RESULT_ESDU, - ImportType.RESULT_MAP_FISH, - ImportType.RESULT_MAP_OTHER, - ImportType.RESULT_REGION); + return Sets.newHashSet(ImportType.RESULT_MOORING, + ImportType.RESULT_MOORING_ESDU); } } diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringRemoveDataStrategy.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringRemoveDataStrategy.java new file mode 100644 index 0000000..4a52c93 --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/removedata/strategy/MooringRemoveDataStrategy.java @@ -0,0 +1,83 @@ +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 com.google.common.collect.Sets; +import fr.ifremer.echobase.entities.DataAccousticProvider; +import fr.ifremer.echobase.entities.ImportLog; +import fr.ifremer.echobase.entities.ImportType; +import fr.ifremer.echobase.entities.data.Mooring; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaException; + +import java.util.Set; + +/** + * Remove a {@link ImportType#MOORING} import. + * + * Can remove only {@link Mooring}. + * + * /!\ The provider is null in this case /!\ + * + * @author Julien Ruchaud - ruchaud@codelutin.com + * @since 4.0 + */ +public class MooringRemoveDataStrategy extends AbstractRemoveDataStrategy<Mooring> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(MooringRemoveDataStrategy.class); + + + @Override + public long computeNbSteps(DataAccousticProvider<Mooring> provider, ImportLog importLog) { + long result = getImportFileIdsCount(importLog); + return result; + } + + @Override + protected void removeImportData(DataAccousticProvider<Mooring> provider, String id) throws TopiaException { + + if (id.startsWith(Mooring.class.getName())) { + + // get entity to delete + Mooring entity = persistenceService.getMooring(id); + + // delete it + persistenceService.deleteMooring(entity); + + if (log.isDebugEnabled()) { + log.debug(entity.getTopiaId() + " was removed"); + } + } else { + canNotDealWithId(id); + } + } + + @Override + public Set<ImportType> getPossibleSubImportType() { + return Sets.newHashSet(ImportType.MOORING_ACOUSTIC, + ImportType.RESULT_MOORING, + ImportType.RESULT_MOORING_ESDU); + } + +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.