Author: tchemit Date: 2014-04-24 17:27:22 +0200 (Thu, 24 Apr 2014) New Revision: 1731 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1731 Log: refs #4958 Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveCruiseToReadyToSynchAction.java Modified: trunk/pom.xml trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/EditCruiseFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportOperationValidationMessagesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ValidateCatchesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ValidateSelectedCruiseCatchesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIModel.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/pom.xml =================================================================== --- trunk/pom.xml 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/pom.xml 2014-04-24 15:27:22 UTC (rev 1731) @@ -289,6 +289,12 @@ <groupId>org.apache.struts.xwork</groupId> <artifactId>xwork-core</artifactId> <version>2.3.16</version> + <exclusions> + <exclusion> + <groupId>javassist</groupId> + <artifactId>javassist</artifactId> + </exclusion> + </exclusions> </dependency> <!-- JAXX --> Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -544,6 +544,11 @@ } @Override + public void setCruiseReadyToSynch(String cruiseId) { + cruiseService.setCruiseReadyToSynch(cruiseId); + } + + @Override public CaracteristicMap getGearCaracteristics(String cruiseId, String gearId, short rankOrder) { return cruiseService.getGearCaracteristics(cruiseId, gearId, rankOrder); } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -365,6 +365,11 @@ } @Override + public void setCruiseReadyToSynch(String cruiseId) { + throw notImplemented(); + } + + @Override public CaracteristicMap getGearCaracteristics(String cruiseId, String gearId, short rankOrder) { throw notImplemented(); } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -52,6 +52,9 @@ @Transactional(readOnly = false) Cruise saveCruise(Cruise bean, boolean updateVessel, boolean updateGear); + @Transactional(readOnly = false) + void setCruiseReadyToSynch(String cruiseId) ; + CaracteristicMap getGearCaracteristics(String cruiseId, String gearId, short rankOrder); @Transactional(readOnly = false) 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-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -381,6 +381,11 @@ } @Override + public void setCruiseReadyToSynch(String cruiseId) { + synchronizationStatusHelper.setCruiseReadyToSynch(cruiseId); + } + + @Override public CaracteristicMap getGearCaracteristics(String cruiseId, String gearId, short rankOrder) { Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/util/SynchronizationStatusHelper.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -50,7 +50,7 @@ } } - public void setReadyToSynch(String cruiseId) { + public void setCruiseReadyToSynch(String cruiseId) { String oldStatus = getDirtyValue(); String newStatus = SynchronizationStatus.READY_TO_SYNCHRONIZE.getValue(); Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -1018,6 +1018,11 @@ } @Override + public void setCruiseReadyToSynch(String cruiseId) { + driver.setCruiseReadyToSynch(cruiseId); + } + + @Override public CaracteristicMap getGearCaracteristics(String cruiseId, String gearId, short rankOrder) { return driver.getGearCaracteristics(cruiseId, gearId, rankOrder); } Modified: trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties =================================================================== --- trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties 2014-04-24 15:27:22 UTC (rev 1731) @@ -39,7 +39,7 @@ # Please fill the missing licenses for dependencies : # # -#Mon Apr 21 10:43:33 CEST 2014 +#Thu Apr 24 15:55:59 CEST 2014 batik--batik-awt-util--1.6=The Apache Software License, Version 2.0 batik--batik-bridge--1.6=The Apache Software License, Version 2.0 batik--batik-css--1.6=The Apache Software License, Version 2.0 @@ -55,4 +55,3 @@ batik--batik-xml--1.6=The Apache Software License, Version 2.0 commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0 dom4j--dom4j--1.6.1=BSD License -javassist--javassist--3.11.0.GA=The Apache Software License, Version 2.0 Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/EditCruiseFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/EditCruiseFishingOperationAction.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/EditCruiseFishingOperationAction.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -85,7 +85,7 @@ NuitonValidatorResult validationResult = validationService.validateCruiseOperation(operation); ValidateCruiseUIModel uiModel = getModel(); - uiModel.getValidator().put(uiModel.getSelectedFishingOperation(), validationResult); + uiModel.addValidatorResult(uiModel.getSelectedFishingOperation(), validationResult); getHandler().updateCurrentOperationNode(validationResult); @@ -128,7 +128,7 @@ NuitonValidatorResult validationResult = validationService.validateCruiseOperation(catchBatch); ValidateCruiseUIModel uiModel = getModel(); - uiModel.getValidator().put(uiModel.getSelectedFishingOperation(), validationResult); + uiModel.addValidatorResult(uiModel.getSelectedFishingOperation(), validationResult); getHandler().updateCurrentOperationNode(validationResult); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportOperationValidationMessagesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportOperationValidationMessagesAction.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportOperationValidationMessagesAction.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -30,6 +30,7 @@ import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUI; import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUIHandler; import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUIModel; +import org.nuiton.validator.NuitonValidatorResult; import java.io.File; @@ -74,7 +75,8 @@ public void doAction() throws Exception { ValidateCruiseUIModel uiModel = getModel(); FishingOperation operation = getModel().getSelectedFishingOperation(); - validationService.exportValidationResult(file, operation, uiModel.getValidator().get(operation)); + NuitonValidatorResult validatorResult = uiModel.getValidatorResult(operation); + validationService.exportValidationResult(file, operation, validatorResult); } @Override Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveCruiseToReadyToSynchAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveCruiseToReadyToSynchAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveCruiseToReadyToSynchAction.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -0,0 +1,64 @@ +package fr.ifremer.tutti.ui.swing.action; + +import com.google.common.base.Preconditions; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUI; +import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUIHandler; +import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUIModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JOptionPane; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 4/24/14. + * + * @author Tony Chemit <chemit@codelutin.com> + * @since 3.5 + */ +public class SaveCruiseToReadyToSynchAction extends AbstractTuttiAction<ValidateCruiseUIModel, ValidateCruiseUI, ValidateCruiseUIHandler> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(SaveCruiseToReadyToSynchAction.class); + + protected boolean askUserToConfirm; + + public SaveCruiseToReadyToSynchAction(ValidateCruiseUIHandler handler) { + super(handler, false); + setActionDescription(t("tutti.validationCruise.action.saveCruiseToReadyToSynch.tip")); + } + + public void setAskUserToConfirm(boolean askUserToConfirm) { + this.askUserToConfirm = askUserToConfirm; + } + + @Override + public boolean prepareAction() throws Exception { + boolean doAction = super.prepareAction(); + if (doAction && askUserToConfirm) { + int answer = JOptionPane.showConfirmDialog(getContext().getActionUI(), + t("tutti.validationCruise.action.saveCruiseToReadyToSynch.message"), + t("tutti.validationCruise.action.saveCruiseToReadyToSynch.title"), + JOptionPane.YES_NO_OPTION); + doAction = answer == JOptionPane.YES_OPTION; + } + return doAction; + } + + @Override + public void doAction() throws Exception { + + Preconditions.checkState(getContext().isProgramFilled()); + Preconditions.checkState(getContext().isCruiseFilled()); + + PersistenceService persistenceService = getContext().getPersistenceService(); + String cruiseId = getModel().getCruise().getId(); + + if (log.isInfoEnabled()) { + log.info("Pass synchronizationStatus to *ready to synch* for cruise: " + cruiseId); + } + persistenceService.setCruiseReadyToSynch(cruiseId); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/SaveCruiseToReadyToSynchAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ValidateCatchesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ValidateCatchesAction.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ValidateCatchesAction.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -28,6 +28,8 @@ import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.content.MainUIHandler; +import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUI; +import fr.ifremer.tutti.ui.swing.content.cruise.ValidateCruiseUIModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -57,4 +59,13 @@ } super.doAction(); } + + @Override + public void postSuccessAction() { + super.postSuccessAction(); + + ValidateCruiseUI currentBody = (ValidateCruiseUI) handler.getCurrentBody(); + ValidateCruiseUIModel model = currentBody.getModel(); + + } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ValidateSelectedCruiseCatchesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ValidateSelectedCruiseCatchesAction.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ValidateSelectedCruiseCatchesAction.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -49,6 +49,7 @@ @Override public void doAction() throws Exception { + Preconditions.checkState(getContext().isProgramFilled()); Preconditions.checkState(getContext().isCruiseFilled()); getContext().setValidationContext(ValidationService.VALIDATION_CONTEXT_VALIDATE); if (log.isInfoEnabled()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -561,4 +561,8 @@ public void setBodyTitle(String title) { ui.getBody().setTitle(title); } + + public JComponent getCurrentBody() { + return currentBody; + } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIHandler.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIHandler.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -27,11 +27,12 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import org.nuiton.jaxx.application.swing.action.ApplicationActionUIModel; -import org.nuiton.jaxx.application.swing.util.CloseableUI; import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.Cruises; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.ui.swing.action.EditCruiseFishingOperationAction; +import fr.ifremer.tutti.ui.swing.action.SaveCruiseToReadyToSynchAction; import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.RemoveablePropertyChangeListener; @@ -39,6 +40,9 @@ import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; +import org.nuiton.jaxx.application.swing.action.ApplicationActionUIModel; +import org.nuiton.jaxx.application.swing.util.CloseableUI; import org.nuiton.validator.NuitonValidatorResult; import org.nuiton.validator.NuitonValidatorScope; @@ -58,6 +62,7 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.List; import java.util.Map; import java.util.Set; @@ -74,17 +79,21 @@ protected EditCruiseFishingOperationAction editFishingOperationAction; + protected SaveCruiseToReadyToSynchAction saveCruiseToReadyToSynchAction; + @Override public void beforeInit(ValidateCruiseUI ui) { super.beforeInit(ui); ValidateCruiseUIModel model = new ValidateCruiseUIModel(); - + model.setCruise(getDataContext().getCruise()); ProgressionModel progressionModel = new ProgressionModel(); ApplicationActionUIModel actionUIModel = getContext().getActionUI().getModel(); actionUIModel.setProgressionModel(progressionModel); - model.setValidator(getValidateCruiseOperationsService().validateCruiseOperations(progressionModel)); + Map<FishingOperation, NuitonValidatorResult> validator = getValidateCruiseOperationsService().validateCruiseOperations(progressionModel); + + model.setValidator(validator); actionUIModel.setProgressionModel(null); model.addPropertyChangeListener(ValidateCruiseUIModel.PROPERTY_SELECTED_FISHING_OPERATION, @@ -95,37 +104,49 @@ editFishingOperationAction.setFishingOperation(operation); getContext().getActionEngine().runAction(editFishingOperationAction); } - }); + } + ); + model.addPropertyChangeListener(ValidateCruiseUIModel.PROPERTY_READY_TO_SYNCH, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + saveReadyToSynch(); + } + }); this.ui.setContextValue(model); } @Override public void afterInit(ValidateCruiseUI ui) { - initUI(this.ui); + initUI(ui); editFishingOperationAction = getContext().getActionFactory().createLogicAction(this, EditCruiseFishingOperationAction.class); + saveCruiseToReadyToSynchAction = getContext().getActionFactory().createLogicAction(this, SaveCruiseToReadyToSynchAction.class); + saveCruiseToReadyToSynchAction.setAskUserToConfirm(true); + ui.getOperationPanel().getModel().setSelectedFishingOperation(null); - this.ui.getOperationPanel().getModel().setSelectedFishingOperation(null); - DefaultMutableTreeNode root = new DefaultMutableTreeNode(); - Map<FishingOperation, NuitonValidatorResult> validator = getModel().getValidator(); - for (FishingOperation operation : validator.keySet()) { - NuitonValidatorResult result = validator.get(operation); + ValidateCruiseUIModel uiModel = getModel(); + for (FishingOperation operation : uiModel.getFishingOperations()) { + NuitonValidatorResult result = uiModel.getValidatorResult(operation); OperationTreeNode node = new OperationTreeNode(operation, result); root.add(node); } TreeModel model = new DefaultTreeModel(root); - JTree navigation = this.ui.getNavigation(); + JTree navigation = ui.getNavigation(); navigation.setModel(model); - navigation.setCellRenderer(new ValidationTreeCellRenderer()); + + Decorator<FishingOperation> fishingOperationDecorator = getDecorator(FishingOperation.class, null); + navigation.setCellRenderer(new ValidationTreeCellRenderer(fishingOperationDecorator)); SwingUtil.expandTree(navigation); SwingUtil.addExpandOnClickListener(navigation); - FishingOperationsUI operationPanel = this.ui.getOperationPanel(); + FishingOperationsUI operationPanel = ui.getOperationPanel(); operationPanel.getTopPanel().setVisible(false); + + saveReadyToSynch(); } @Override @@ -220,10 +241,26 @@ navigation.setSelectionPath(selectionPath); } - protected class ValidationTreeCellRenderer extends DefaultTreeCellRenderer { + protected void saveReadyToSynch() { + ValidateCruiseUIModel model = getModel(); + Cruise cruise = model.getCruise(); + if (model.isReadyToSynch() && Cruises.isDirty(cruise) && saveCruiseToReadyToSynchAction != null) { + // ask user to synch ? + getContext().getActionEngine().runAction(saveCruiseToReadyToSynchAction); + } + } + + protected static class ValidationTreeCellRenderer extends DefaultTreeCellRenderer { + private static final long serialVersionUID = 1L; + private final Decorator<FishingOperation> fishingOperationDecorator; + + public ValidationTreeCellRenderer(Decorator<FishingOperation> fishingOperationDecorator) { + this.fishingOperationDecorator = fishingOperationDecorator; + } + @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { JLabel label = (JLabel) super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); @@ -231,7 +268,7 @@ if (value != null) { if (value instanceof OperationTreeNode) { OperationTreeNode node = (OperationTreeNode) value; - String text = getDecorator(FishingOperation.class, null).toString(node.getUserObject()); + String text = fishingOperationDecorator.toString(node.getUserObject()); label.setText(text); label.setToolTipText(text); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIModel.java 2014-04-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIModel.java 2014-04-24 15:27:22 UTC (rev 1731) @@ -24,6 +24,8 @@ * #L% */ +import com.google.common.collect.ImmutableSet; +import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -31,6 +33,7 @@ import org.nuiton.validator.NuitonValidatorResult; import java.util.Map; +import java.util.Set; /** * @author kmorin <kmorin@codelutin.com> @@ -41,21 +44,22 @@ private static final long serialVersionUID = 1L; /** Logger. */ - private static final Log log = - LogFactory.getLog(ValidateCruiseUIModel.class); + private static final Log log = LogFactory.getLog(ValidateCruiseUIModel.class); public static final String PROPERTY_SELECTED_FISHING_OPERATION = "selectedFishingOperation"; public static final String PROPERTY_VALIDATOR = "validator"; - public static final String PROPERTY_CAN_SYNCH = "canSynch"; + public static final String PROPERTY_READY_TO_SYNCH = "readyToSynch"; protected FishingOperation selectedFishingOperation; protected Map<FishingOperation, NuitonValidatorResult> validator; - protected boolean canSynch; + protected boolean readyToSynch; + protected Cruise cruise; + public FishingOperation getSelectedFishingOperation() { return selectedFishingOperation; } @@ -70,19 +74,55 @@ return validator; } + public Set<FishingOperation> getFishingOperations() { + return ImmutableSet.<FishingOperation>builder().addAll(validator.keySet()).build(); + } + + public NuitonValidatorResult getValidatorResult(FishingOperation fishingOperation) { + return validator.get(fishingOperation); + } + public void setValidator(Map<FishingOperation, NuitonValidatorResult> validator) { Object oldValue = getValidator(); this.validator = validator; firePropertyChange(PROPERTY_VALIDATOR, oldValue, validator); } - public boolean isCanSynch() { - return canSynch; + public void addValidatorResult(FishingOperation fishingOperation, NuitonValidatorResult validatorResult) { + validator.put(fishingOperation, validatorResult); + firePropertyChange(PROPERTY_VALIDATOR, null, validator); + computeReadyToSynch(); } - public void setCanSynch(boolean canSynch) { - Object oldValue = isCanSynch(); - this.canSynch = canSynch; - firePropertyChange(PROPERTY_CAN_SYNCH, oldValue, canSynch); + protected void computeReadyToSynch() { + boolean result = true; + for (NuitonValidatorResult nuitonValidatorResult : validator.values()) { + if (nuitonValidatorResult.hasErrorMessagess() || nuitonValidatorResult.hasFatalMessages()) { + result = false; + break; + } + } + if (log.isInfoEnabled()) { + log.info("New readyToSynch value: " + result); + } + setReadyToSynch(result); } + + public boolean isReadyToSynch() { + return readyToSynch; + } + + public void setReadyToSynch(boolean readyToSynch) { + Object oldValue = isReadyToSynch(); + this.readyToSynch = readyToSynch; + firePropertyChange(PROPERTY_READY_TO_SYNCH, oldValue, readyToSynch); + } + + public void setCruise(Cruise cruise) { + this.cruise = cruise; + } + + public Cruise getCruise() { + return cruise; + } } 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-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2014-04-24 15:27:22 UTC (rev 1731) @@ -1580,6 +1580,9 @@ tutti.validateCruise.navigation.action.export.operation.mnemonic= tutti.validateCruise.navigation.action.export.operation.tip= tutti.validateCruise.navigation.title= +tutti.validationCruise.action.saveCruiseToReadyToSynch.message= +tutti.validationCruise.action.saveCruiseToReadyToSynch.tip= +tutti.validationCruise.action.saveCruiseToReadyToSynch.title= tutti.validator.error.benthosFrequency.lengthStepCaracteristic.required= tutti.validator.error.benthosFrequency.oneRowRequired= tutti.validator.error.benthosFrequency.step.positiveValue= 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-24 11:01:46 UTC (rev 1730) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2014-04-24 15:27:22 UTC (rev 1731) @@ -1564,6 +1564,9 @@ tutti.validateCruise.navigation.action.export.operation.mnemonic=x tutti.validateCruise.navigation.action.export.operation.tip=Exporter les messages de validation de l'opération tutti.validateCruise.navigation.title=Traits +tutti.validationCruise.action.saveCruiseToReadyToSynch.message=<html>Voulez vous rendre vos données synchronisables vers Harmonie ?</html> +tutti.validationCruise.action.saveCruiseToReadyToSynch.tip=Rendre les données synchronisables vers Harmonie +tutti.validationCruise.action.saveCruiseToReadyToSynch.title=Rendre synchronisable les données vers Harmonie tutti.validator.error.benthosFrequency.lengthStepCaracteristic.required=La classe de taille est obligatoire tutti.validator.error.benthosFrequency.oneRowRequired=Au moins une classe de taille doit être observée tutti.validator.error.benthosFrequency.step.positiveValue=Le pas de la classe de taille doit être strictement positif