Author: tchemit Date: 2014-04-19 15:25:21 +0200 (Sat, 19 Apr 2014) New Revision: 1711 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1711 Log: fixes #4957 Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 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 2014-04-19 13:24:36 UTC (rev 1710) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2014-04-19 13:25:21 UTC (rev 1711) @@ -58,7 +58,6 @@ import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueDao; import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl; import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus; -import org.nuiton.jaxx.application.ApplicationBusinessException; import fr.ifremer.tutti.persistence.dao.GearPhysicalFeaturesDaoTutti; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; @@ -76,11 +75,13 @@ import fr.ifremer.tutti.persistence.entities.referential.Vessel; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.type.IntegerType; import org.hibernate.type.ShortType; import org.hibernate.type.StringType; +import org.nuiton.jaxx.application.ApplicationBusinessException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataRetrievalFailureException; import org.springframework.stereotype.Service; @@ -613,8 +614,16 @@ Location returnLocation = load(LocationImpl.class, Integer.valueOf(source.getReturnLocation().getId())); fishingTrip.setReturnLocation(returnLocation); - setSurveyMeasurement(fishingTrip, enumeration.PMFM_ID_SURVEY_PART, null, source.getSurveyPart(), null); + if (StringUtils.isEmpty(source.getSurveyPart())) { + // remove surveyMeasurement if exists + removeSurveyMeasurement(fishingTrip, enumeration.PMFM_ID_SURVEY_PART); + } else { + + // update it or create it + setSurveyMeasurement(fishingTrip, enumeration.PMFM_ID_SURVEY_PART, null, source.getSurveyPart(), null); + } + // Gear if (source.isGearEmpty() && fishingTrip.getGearPhysicalFeatures() != null) { fishingTrip.getGearPhysicalFeatures().clear(); @@ -746,9 +755,8 @@ fishingTrip.getVesselPersonFeatures().addAll(vesselPersonFeaturesMap.values()); } - // adapt to surveyMeasurement - protected SurveyMeasurement getOrCreateSurveyMeasurement(FishingTrip fishingTrip, - Integer pmfmId) { + protected SurveyMeasurement getSurveyMeasurement(FishingTrip fishingTrip, + Integer pmfmId) { SurveyMeasurement result = null; for (SurveyMeasurement vum : fishingTrip.getSurveyMeasurements()) { @@ -758,25 +766,39 @@ } } - if (result == null) { + return result; + } - // create new measurement - result = SurveyMeasurement.Factory.newInstance(); - result.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED)); - result.setDepartment(fishingTrip.getRecorderDepartment()); - Pmfm pmfm = load(PmfmImpl.class, pmfmId); - result.setPmfm(pmfm); - result.setFishingTrip(fishingTrip); + protected SurveyMeasurement createSurveyMeasurement(FishingTrip fishingTrip, + Integer pmfmId, + Float numericalValue, + String alphanumericalValue, + Integer qualitativevalueId) { - // add it to fishingTrip - if (fishingTrip.getSurveyMeasurements() == null) { + SurveyMeasurement result = SurveyMeasurement.Factory.newInstance(); + result.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED)); + result.setDepartment(fishingTrip.getRecorderDepartment()); + Pmfm pmfm = load(PmfmImpl.class, pmfmId); + result.setPmfm(pmfm); + result.setFishingTrip(fishingTrip); - //create new set of measurements - fishingTrip.setSurveyMeasurements(Sets.<SurveyMeasurement>newHashSet()); - } + if (alphanumericalValue != null) { + result.setAlphanumericalValue(alphanumericalValue); + } else if (numericalValue != null) { + result.setNumericalValue(numericalValue); + } else if (qualitativevalueId != null) { + result.setQualitativeValue(load(QualitativeValueImpl.class, qualitativevalueId)); + } - fishingTrip.getSurveyMeasurements().add(result); + // add it to fishingTrip + if (fishingTrip.getSurveyMeasurements() == null) { + + //create new set of measurements + fishingTrip.setSurveyMeasurements(Sets.<SurveyMeasurement>newHashSet()); } + + fishingTrip.getSurveyMeasurements().add(result); + return result; } @@ -785,16 +807,30 @@ Float numericalValue, String alphanumericalValue, Integer qualitativevalueId) { - SurveyMeasurement result = getOrCreateSurveyMeasurement(fishingTrip, pmfmId); + SurveyMeasurement result = getSurveyMeasurement(fishingTrip, pmfmId); - if (alphanumericalValue != null) { - result.setAlphanumericalValue(alphanumericalValue); - } else if (numericalValue != null) { - result.setNumericalValue(numericalValue); - } else if (qualitativevalueId != null) { - result.setQualitativeValue(load(QualitativeValueImpl.class, qualitativevalueId)); + if (result == null) { + result = createSurveyMeasurement(fishingTrip, + pmfmId, + numericalValue, + alphanumericalValue, + qualitativevalueId); } return result; } + + protected SurveyMeasurement removeSurveyMeasurement(FishingTrip fishingTrip, + Integer pmfmId) { + SurveyMeasurement result = getSurveyMeasurement(fishingTrip, pmfmId); + + if (result != null) { + + // measurement found, remove it + result.setFishingTrip(null); + fishingTrip.getSurveyMeasurements().remove(result); + } + + return result; + } } Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2014-04-19 13:24:36 UTC (rev 1710) +++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2014-04-19 13:25:21 UTC (rev 1711) @@ -1,5 +1,5 @@ #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Fri Apr 18 09:21:37 CEST 2014 +#Sat Apr 19 15:02:16 CEST 2014 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -143,6 +143,7 @@ tutti.editCruise.action.close.help=editCruise.html\#actions tutti.editCruise.action.editGearCaracteristics.help=editCruise.html\#actions tutti.editCruise.action.generateName.help=editCruise.html\#actions +tutti.editCruise.action.resetSurveyPart.help=editCruise.html\#actions tutti.editCruise.action.save.help=editCruise.html\#actions tutti.editCruise.action.viewGearCaracteristics.help= tutti.editCruise.field.beginDate.help=editCruise.html\#fields Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2014-04-19 13:24:36 UTC (rev 1710) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2014-04-19 13:25:21 UTC (rev 1711) @@ -22,6 +22,12 @@ * #L% */ +JToolBar { + floatable: false; + opaque: false; + borderPainted: false; +} + BeanFilterableComboBox { showReset: true; bean: {model}; @@ -284,6 +290,13 @@ _validatorLabel: {t("tutti.editCruise.field.comment")}; } +#surveyPartResetButton { + actionIcon: reset; + toolTipText: "tutti.editCruise.action.resetSurveyPart.tip"; + i18nMnemonic: "tutti.editCruise.action.resetSurveyPart.mnemonic"; + _help: {"tutti.editCruise.action.resetSurveyPart.help"}; +} + #saveButton { actionIcon: save; text: "tutti.editCruise.action.saveCruise"; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2014-04-19 13:24:36 UTC (rev 1710) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2014-04-19 13:25:21 UTC (rev 1711) @@ -113,8 +113,14 @@ <JLabel id='surveyPartLabel'/> </cell> <cell> - <JTextField id='surveyPartField' - onKeyReleased='handler.setText(event, "surveyPart")'/> + <JPanel layout="{new BorderLayout()}"> + <JToolBar constraints="BorderLayout.WEST"> + <JButton id='surveyPartResetButton' + onActionPerformed="model.setSurveyPart(null)"/> + </JToolBar> + <JTextField id='surveyPartField' constraints="BorderLayout.CENTER" + onKeyReleased='handler.setText(event, "surveyPart")'/> + </JPanel> </cell> </row> @@ -133,8 +139,8 @@ </cell> <cell> <JPanel layout="{new BorderLayout()}"> - <JXDatePicker id='beginDateField' constraints="BorderLayout.CENTER" - onActionPerformed='handler.setDate(event, "beginDate")'/> + <JXDatePicker id='beginDateField' constraints="BorderLayout.CENTER" + onActionPerformed='handler.setDate(event, "beginDate")'/> <SimpleTimeEditor id='beginTimeField' constraints="BorderLayout.EAST" constructorParams='this'/> </JPanel> 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 2014-04-19 13:24:36 UTC (rev 1710) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2014-04-19 13:25:21 UTC (rev 1711) @@ -600,6 +600,8 @@ tutti.editCruise.action.generateCampaignName= tutti.editCruise.action.generateCampaignName.mnemonic= tutti.editCruise.action.generateName.tip= +tutti.editCruise.action.resetSurveyPart.mnemonic=S +tutti.editCruise.action.resetSurveyPart.tip=Reset survey part tutti.editCruise.action.save.gearChanged.help= tutti.editCruise.action.save.gearChanged.message= tutti.editCruise.action.save.gearChanged.title= 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 2014-04-19 13:24:36 UTC (rev 1710) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2014-04-19 13:25:21 UTC (rev 1711) @@ -591,6 +591,8 @@ 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.resetSurveyPart.mnemonic=S +tutti.editCruise.action.resetSurveyPart.tip=Réinitialiser la série partielle tutti.editCruise.action.save.gearChanged.help=Les engins des traits de la campagne vont également être modifiés.<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 les engins des traits</li></ul>. tutti.editCruise.action.save.gearChanged.message=Les engins de la campagne ont été modifiés. tutti.editCruise.action.save.gearChanged.title=Engin(s) modifié(s)