r855 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-service/src/main/java/fr/ifremer/tutti/service/catches tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency tutti-ui-swing/src/main/java/f
Author: kmorin Date: 2013-04-22 19:03:12 +0200 (Mon, 22 Apr 2013) New Revision: 855 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/855 Log: fixes #2214 [CAMPAGNE] - Navire - Changement du navire saisi use isNotEmpty instead of !isEmpty Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceService.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportService.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-04-22 17:03:12 UTC (rev 855) @@ -58,6 +58,7 @@ import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus; import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory; import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; @@ -99,6 +100,9 @@ protected ProgramPersistenceService programService; @Autowired + protected FishingOperationPersistenceService fishingOperationService; + + @Autowired protected VesselPersonFeaturesPersistenceHelper vesselPersonFeaturesPersistenceHelper; @Resource(name = "scientificCruiseDao") @@ -289,9 +293,20 @@ throw new DataRetrievalFailureException("Could not retrieve cruise with id=" + bean.getId()); } + boolean vesselChanged = !bean.getVessel().equals(scientificCruise.getVessel()); + cruiseToEntity(bean, scientificCruise); scientificCruiseDao.update(scientificCruise); + if (vesselChanged) { + Vessel vessel = bean.getVessel(); + List<FishingOperation> operations = fishingOperationService.getAllFishingOperation(bean.getId()); + for (FishingOperation operation : operations) { + operation.setVessel(vessel); + } + fishingOperationService.saveFishingOperations(operations); + } + return bean; } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceService.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceService.java 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceService.java 2013-04-22 17:03:12 UTC (rev 855) @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import org.springframework.transaction.annotation.Transactional; +import java.util.Collection; import java.util.List; /** @@ -50,5 +51,8 @@ FishingOperation saveFishingOperation(FishingOperation bean); @Transactional(readOnly = false) + Collection<FishingOperation> saveFishingOperations(Collection<FishingOperation> beans); + + @Transactional(readOnly = false) void deleteFishingOperation(String id); } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-04-22 17:03:12 UTC (rev 855) @@ -85,14 +85,7 @@ import java.io.Serializable; import java.sql.Timestamp; import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * @author tchemit <chemit@codelutin.com> @@ -372,18 +365,8 @@ @Override public FishingOperation saveFishingOperation(FishingOperation bean) { - Preconditions.checkNotNull(bean); - Preconditions.checkNotNull(bean.getId()); - Preconditions.checkNotNull(bean.getCruise()); - Preconditions.checkNotNull(bean.getCruise().getId()); - //TODO-TC Voir si il n'y a pas d'autre données obligatoires + checkFishingOperation(bean); - if (bean.getGearShootingStartDate() != null && bean.getGearShootingEndDate() != null) { - - //make sure not same date - Preconditions.checkArgument(!bean.getGearShootingStartDate().equals(bean.getGearShootingEndDate())); - } - getCurrentSession().clear(); getCurrentSession().setFlushMode(FlushMode.COMMIT); fr.ifremer.adagio.core.dao.data.operation.FishingOperation fishingOperation = fishingOperationDao.load(Integer.valueOf(bean.getId())); @@ -397,6 +380,27 @@ } @Override + public Collection<FishingOperation> saveFishingOperations(Collection<FishingOperation> beans) { + getCurrentSession().clear(); + getCurrentSession().setFlushMode(FlushMode.COMMIT); + + List<fr.ifremer.adagio.core.dao.data.operation.FishingOperation> operations = Lists.newArrayList(); + for (FishingOperation bean : beans) { + fr.ifremer.adagio.core.dao.data.operation.FishingOperation fishingOperation = + fishingOperationDao.load(Integer.valueOf(bean.getId())); + if (fishingOperation == null) { + throw new DataRetrievalFailureException("Could not retrieve fishing operation with id=" + bean.getId()); + } + beanToEntity(bean, fishingOperation); + operations.add(fishingOperation); + } + + fishingOperationDao.update(operations); + getCurrentSession().flush(); + return beans; + } + + @Override public void deleteFishingOperation(String id) { Preconditions.checkNotNull(id); @@ -409,6 +413,20 @@ //-- Internal methods --// //------------------------------------------------------------------------// + protected void checkFishingOperation(FishingOperation bean) { + Preconditions.checkNotNull(bean); + Preconditions.checkNotNull(bean.getId()); + Preconditions.checkNotNull(bean.getCruise()); + Preconditions.checkNotNull(bean.getCruise().getId()); + //TODO-TC Voir si il n'y a pas d'autre données obligatoires + + if (bean.getGearShootingStartDate() != null && bean.getGearShootingEndDate() != null) { + + //make sure not same date + Preconditions.checkArgument(!bean.getGearShootingStartDate().equals(bean.getGearShootingEndDate())); + } + } + protected void getVesselUseCaracteristics(String fishingOperationId, FishingOperation result) { // retrieve fishing operation caracteristics Iterator<Object[]> list = queryList( Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java 2013-04-22 17:03:12 UTC (rev 855) @@ -142,7 +142,7 @@ List<Map<String, Object>> catchList = Lists.newArrayList(catches.values()); // add the benthos row - if (!CollectionUtils.isEmpty(rootBenthosBatch.getChildren())) { + if (CollectionUtils.isNotEmpty(rootBenthosBatch.getChildren())) { Map<String, Object> benthosCatch = createBenthosCatch(rootBenthosBatch, catchBatch.getBenthosTotalComputedWeight(), totalWeight); catchList.add(benthosCatch); Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportService.java 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportService.java 2013-04-22 17:03:12 UTC (rev 855) @@ -308,7 +308,7 @@ carrouselSortedWeight += beanWeight; } - if (!CollectionUtils.isEmpty(speciesList)) { + if (CollectionUtils.isNotEmpty(speciesList)) { Species species = speciesList.get(0); PupitriCatch pupitriCatch = new PupitriCatch(species, sorted); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java 2013-04-22 17:03:12 UTC (rev 855) @@ -28,8 +28,11 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; +import javax.swing.*; + import static org.nuiton.i18n.I18n._; /** @@ -40,20 +43,43 @@ */ public class SaveCruiseAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUI, EditCruiseUIHandler> { + protected PersistenceService persistenceService; + public SaveCruiseAction(EditCruiseUIHandler handler) { super(handler, true); + persistenceService = getContext().getPersistenceService(); } - /** - * If the event source is a TuttiScreen, then the screen changes to the source. - * Otherwise, the screen changes to the home. - */ @Override + protected boolean prepareAction() throws Exception { + boolean result = super.prepareAction(); + + Cruise bean = getModel().toBean(); + if (!TuttiEntities.isNew(bean)) { + Cruise oldCruise = persistenceService.getCruise(bean.getId()); + if (!oldCruise.getVessel().equals(bean.getVessel())) { + String htmlMessage = String.format( + AbstractTuttiUIHandler.CONFIRMATION_FORMAT, + _("tutti.editCruise.action.save.vesselChanged.message"), + _("tutti.editCruise.action.save.vesselChanged.help")); + + int answer = JOptionPane.showConfirmDialog(getContext().getActionUI(), + htmlMessage, + _("tutti.editCruise.action.save.vesselChanged.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.WARNING_MESSAGE); + + result = answer == JOptionPane.OK_OPTION; + } + } + + return result; + } + + @Override protected void doAction() throws Exception { TuttiUIContext context = getContext(); EditCruiseUIModel model = getModel(); - PersistenceService persistenceService = - getContext().getPersistenceService(); Cruise bean = model.toBean(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-22 17:03:12 UTC (rev 855) @@ -296,7 +296,7 @@ && (!speciesProtocol.isMaturityEnabled() || row.getMaturityCategoryValue() != null) && (!speciesProtocol.isAgeEnabled() || row.getAgeCategoryValue() != null) && (!speciesProtocol.isCountIfNoFrequencyEnabled() - || !CollectionUtils.isEmpty(row.getFrequency()) + || CollectionUtils.isNotEmpty(row.getFrequency()) || row.getNumber() != null); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-04-22 17:03:12 UTC (rev 855) @@ -432,7 +432,7 @@ // try to load existing frequency - if (!CollectionUtils.isEmpty(frequency)) { + if (CollectionUtils.isNotEmpty(frequency)) { BenthosFrequencyTableModel tableModel = getTableModel(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-04-22 17:03:12 UTC (rev 855) @@ -293,7 +293,7 @@ && (!speciesProtocol.isMaturityEnabled() || row.getMaturityCategoryValue() != null) && (!speciesProtocol.isAgeEnabled() || row.getAgeCategoryValue() != null) && (!speciesProtocol.isCountIfNoFrequencyEnabled() - || !CollectionUtils.isEmpty(row.getFrequency()) + || CollectionUtils.isNotEmpty(row.getFrequency()) || row.getNumber() != null); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-04-22 17:03:12 UTC (rev 855) @@ -433,7 +433,7 @@ // try to load existing frequency - if (!CollectionUtils.isEmpty(frequency)) { + if (CollectionUtils.isNotEmpty(frequency)) { SpeciesFrequencyTableModel tableModel = getTableModel(); Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-22 17:03:12 UTC (rev 855) @@ -410,6 +410,9 @@ tutti.editCruise.action.generateCampaignName= tutti.editCruise.action.generateCampaignName.mnemonic= tutti.editCruise.action.generateName.tip= +tutti.editCruise.action.save.vesselChanged.help= +tutti.editCruise.action.save.vesselChanged.message= +tutti.editCruise.action.save.vesselChanged.title= tutti.editCruise.action.saveCruise= tutti.editCruise.action.saveCruise.mnemonic= tutti.editCruise.action.saveCruise.tip= Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-22 13:54:29 UTC (rev 854) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-22 17:03:12 UTC (rev 855) @@ -399,6 +399,9 @@ tutti.editCruise.action.generateCampaignName=Générer le nom tutti.editCruise.action.generateCampaignName.mnemonic=G tutti.editCruise.action.generateName.tip=Générer le nom normalisé de la campagne +tutti.editCruise.action.save.vesselChanged.help=Le navire des traits de la campagne va également être modifié.<ul><li><strong>Annuler</strong> pour ne pas enregistrer les modifications de la campagne ni les traits</li><li><strong>OK</strong> pour enregistrer la campagne et modifier le navire des traits</li></ul>. +tutti.editCruise.action.save.vesselChanged.message=Le navire de la campagne a été modifié. +tutti.editCruise.action.save.vesselChanged.title=Navire modifié tutti.editCruise.action.saveCruise=Enregistrer tutti.editCruise.action.saveCruise.mnemonic=E tutti.editCruise.action.saveCruise.tip=Enregistrer la campagne @@ -859,7 +862,7 @@ tutti.label.tab.catches=Captures tutti.label.tab.catchesCaracteristics=Résumé tutti.label.tab.fishingOperation=Trait -tutti.label.tab.individualObservations=Observatiosn individuelles +tutti.label.tab.individualObservations=Observations individuelles tutti.label.tab.marineLitter=Macro déchets tutti.label.tab.plancton=Plancton tutti.label.tab.species=Espèces
participants (1)
-
kmorin@users.forge.codelutin.com