r670 - in trunk/echobase-services/src: main/java/fr/ifremer/echobase/services/removedata/strategy test/java/fr/ifremer/echobase/ui/actions/removedata
Author: tchemit Date: 2012-09-17 10:58:15 +0200 (Mon, 17 Sep 2012) New Revision: 670 Url: http://forge.codelutin.com/repositories/revision/echobase/670 Log: refs #1437: Suppression des imports (works fine but still need some clarifications) Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AbstractRemoveDataStrategy.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AcousticRemoveDataStrategy.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonAllRemoveDataStrategy.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonTransectRemoveDataStrategy.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/LegacyVoyageRemoveDataStrategy.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AcousticRemoveDataServiceTest.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonTransectRemoveDataServiceTest.java trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultRegionRemoveDataServiceTest.java Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AbstractRemoveDataStrategy.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AbstractRemoveDataStrategy.java 2012-09-16 13:56:31 UTC (rev 669) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AbstractRemoveDataStrategy.java 2012-09-17 08:58:15 UTC (rev 670) @@ -31,6 +31,8 @@ import fr.ifremer.echobase.entities.data.CategoryDAO; import fr.ifremer.echobase.entities.data.Cell; import fr.ifremer.echobase.entities.data.CellDAO; +import fr.ifremer.echobase.entities.data.DataProcessing; +import fr.ifremer.echobase.entities.data.DataProcessingDAO; import fr.ifremer.echobase.entities.data.Echotype; import fr.ifremer.echobase.entities.data.EchotypeDAO; import fr.ifremer.echobase.entities.data.LengthAgeKey; @@ -76,6 +78,8 @@ protected VoyageDAO voyageDao; + protected DataProcessingDAO dataProcessingDAO; + protected CellDAO cellDAO; protected CategoryDAO categoryDAO; @@ -92,6 +96,7 @@ public void setServiceContext(EchoBaseServiceContext serviceContext) { super.setServiceContext(serviceContext); + dataProcessingDAO = getDAO(DataProcessing.class, DataProcessingDAO.class); cellDAO = getDAO(Cell.class, CellDAO.class); echotypeDAO = getDAO(Echotype.class, EchotypeDAO.class); voyageDao = getDAO(Voyage.class, VoyageDAO.class); @@ -138,12 +143,10 @@ } protected void removePreDataInVoyage(Voyage voyage) throws TopiaException { - // by default nothing to remove } protected void removePostDataInVoyage(Voyage voyage) throws TopiaException { - // by default nothing to remove } @@ -191,16 +194,10 @@ protected void removeEchotype(Voyage entity, Echotype echotype) throws TopiaException { - // delete all category + // delete all categories using this echotype List<Category> allByEchotype = categoryDAO.findAllByEchotype(echotype); categoryDAO.deleteAll(allByEchotype); -// if (entity != null) { -// -// // remove it from the voyage -// entity.removeEchotype(echotype); -// } - // delete echotype echotypeDAO.delete(echotype); @@ -298,4 +295,29 @@ } } } + + protected void removeVoyageOrphanCells() 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 Cell c " + + "WHERE c.cell IS NULL AND c.dataprocessing IS NULL AND c.voyage IS NULL"; + PreparedStatement result = connection.prepareStatement(hql); + return result; + } + + @Override + protected String prepareResult(ResultSet set) throws SQLException { + return set.getString(1); + } + }; + + List<String> cellIds = query.findMultipleResult( + (TopiaContextImplementor) getTransaction()); + for (String cellId : cellIds) { + Cell cell = cellDAO.findByTopiaId(cellId); + cellDAO.delete(cell); + } + } } Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AcousticRemoveDataStrategy.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AcousticRemoveDataStrategy.java 2012-09-16 13:56:31 UTC (rev 669) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/AcousticRemoveDataStrategy.java 2012-09-17 08:58:15 UTC (rev 670) @@ -29,7 +29,6 @@ import fr.ifremer.echobase.entities.data.DataAcquisition; import fr.ifremer.echobase.entities.data.DataAcquisitionDAO; import fr.ifremer.echobase.entities.data.DataProcessing; -import fr.ifremer.echobase.entities.data.DataProcessingDAO; import fr.ifremer.echobase.entities.data.Transect; import fr.ifremer.echobase.entities.data.TransectDAO; import fr.ifremer.echobase.entities.data.Voyage; @@ -54,7 +53,6 @@ private static final Log log = LogFactory.getLog(AcousticRemoveDataStrategy.class); - protected DataProcessingDAO dataProcessingDAO; protected DataAcquisitionDAO dataAcquisitionDAO; @@ -65,7 +63,6 @@ super.setServiceContext(serviceContext); dataAcquisitionDAO = getDAO(DataAcquisition.class, DataAcquisitionDAO.class); - dataProcessingDAO = getDAO(DataProcessing.class, DataProcessingDAO.class); transectDAO = getDAO(Transect.class, TransectDAO.class); } @@ -77,6 +74,9 @@ // remove post cell from top voyage removeVoyagePostCell(voyage); + + // remove orphans cells + removeVoyageOrphanCells(); } @Override Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonAllRemoveDataStrategy.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonAllRemoveDataStrategy.java 2012-09-16 13:56:31 UTC (rev 669) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonAllRemoveDataStrategy.java 2012-09-17 08:58:15 UTC (rev 670) @@ -47,6 +47,13 @@ LogFactory.getLog(CommonAllRemoveDataStrategy.class); @Override + protected void removePostDataInVoyage(Voyage voyage) throws TopiaException { + + // remove orphans cells + removeVoyageOrphanCells(); + } + + @Override protected void removeImportData(Voyage voyage, String id) throws TopiaException { if (id.startsWith(Voyage.class.getName())) { Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonTransectRemoveDataStrategy.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonTransectRemoveDataStrategy.java 2012-09-16 13:56:31 UTC (rev 669) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/CommonTransectRemoveDataStrategy.java 2012-09-17 08:58:15 UTC (rev 670) @@ -71,6 +71,13 @@ } @Override + protected void removePostDataInVoyage(Voyage voyage) throws TopiaException { + + // remove orphans cells + removeVoyageOrphanCells(); + } + + @Override protected void removeImportData(Voyage voyage, String id) throws TopiaException { if (id.startsWith(Transect.class.getName())) { Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/LegacyVoyageRemoveDataStrategy.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/LegacyVoyageRemoveDataStrategy.java 2012-09-16 13:56:31 UTC (rev 669) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/removedata/strategy/LegacyVoyageRemoveDataStrategy.java 2012-09-17 08:58:15 UTC (rev 670) @@ -47,6 +47,13 @@ LogFactory.getLog(LegacyVoyageRemoveDataStrategy.class); @Override + protected void removePostDataInVoyage(Voyage voyage) throws TopiaException { + + // remove orphans cells + removeVoyageOrphanCells(); + } + + @Override protected void removeImportData(Voyage voyage, String id) throws TopiaException { if (id.startsWith(Voyage.class.getName())) { Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java 2012-09-16 13:56:31 UTC (rev 669) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AbstractRemoveDataServiceTest.java 2012-09-17 08:58:15 UTC (rev 670) @@ -287,7 +287,12 @@ for (String entityId : entityIds) { if (entityId == null) continue; E entity = getEntity(entityId); - Assert.assertNull("Entity with id " + entityId + " should have been deleted, but is still in db :(", entity); + if (entity instanceof ImportLog) { + + Assert.assertNull("ImporTLog with id " + entityId + " (" + ((ImportLog) entity).getImportType() + ") should have been deleted, but is still in db :(", entity); + } else { + Assert.assertNull("Entity with id " + entityId + " should have been deleted, but is still in db :(", entity); + } } } @@ -295,7 +300,8 @@ for (String entityId : entityIds) { if (entityId == null) continue; E entity = getEntity(entityId); - Assert.assertNotNull("Entity with id " + entityId + " should have not been deleted, but is deleted in db :(", entity); + Assert.assertNotNull("Entity with id " + entityId + " should NOT have been deleted, but is deleted in db :(", entity); + } } Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AcousticRemoveDataServiceTest.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AcousticRemoveDataServiceTest.java 2012-09-16 13:56:31 UTC (rev 669) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/AcousticRemoveDataServiceTest.java 2012-09-17 08:58:15 UTC (rev 670) @@ -48,7 +48,6 @@ // and all his imports assertEntityDeleted(importAcoustic1Id, - importResultVoyage1Id, importResultEsdu1Id, importResultRegion1Id, importResultMap1Id); @@ -61,6 +60,7 @@ assertEntityExists(importCommonAll1Id, importCommonTransect1Id, importOperation1Id, - importCatches1Id); + importCatches1Id, + importResultVoyage1Id); } } Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonTransectRemoveDataServiceTest.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonTransectRemoveDataServiceTest.java 2012-09-16 13:56:31 UTC (rev 669) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/CommonTransectRemoveDataServiceTest.java 2012-09-17 08:58:15 UTC (rev 670) @@ -58,9 +58,7 @@ importCatches1Id, importAcoustic1Id, importResultVoyage1Id, - importResultEsdu1Id, - importResultRegion1Id, - importResultMap1Id); + importResultEsdu1Id); // voyage 2 still in db Modified: trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultRegionRemoveDataServiceTest.java =================================================================== --- trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultRegionRemoveDataServiceTest.java 2012-09-16 13:56:31 UTC (rev 669) +++ trunk/echobase-services/src/test/java/fr/ifremer/echobase/ui/actions/removedata/ResultRegionRemoveDataServiceTest.java 2012-09-17 08:58:15 UTC (rev 670) @@ -45,7 +45,7 @@ assertEntityDeleted(cellRegion1Id, resultRegion1Id); // and all his imports - assertEntityDeleted(importResultEsdu1Id); + assertEntityDeleted(importResultRegion1Id); // voyage 1 other imports stay assertEntityExists(voyage1Id, transect1Id, operation1Id,
participants (1)
-
tchemit@users.forge.codelutin.com