Tutti-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
April 2013
- 5 participants
- 210 discussions
18 Apr '13
Author: tchemit
Date: 2013-04-18 21:11:54 +0200 (Thu, 18 Apr 2013)
New Revision: 827
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/827
Log:
reformat code, add license, ...
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java
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/ValidateCruiseUI.jaxx
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/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryColumnIdentifier.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/SelectSpeciesForIndividualObservationBatchAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java
trunk/tutti-ui-swing/src/main/resources/icons/error.png
trunk/tutti-ui-swing/src/main/resources/icons/fatal.png
trunk/tutti-ui-swing/src/main/resources/icons/info.png
trunk/tutti-ui-swing/src/main/resources/icons/warning.png
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -30,7 +30,12 @@
import fr.ifremer.tutti.TuttiIOUtil;
import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.RessourceClassLoader;
-import fr.ifremer.tutti.service.*;
+import fr.ifremer.tutti.service.ClosedPersistenceService;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiDataContext;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.ValidationService;
import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
import fr.ifremer.tutti.service.catches.ValidateCruiseOperationsService;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -34,7 +34,6 @@
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
import fr.ifremer.tutti.ui.swing.util.editor.TuttiLocationTableCell;
import fr.ifremer.tutti.ui.swing.util.editor.VesselTableCell;
import jaxx.runtime.SwingUtil;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseFishingOperationAction.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -1,36 +1,34 @@
package fr.ifremer.tutti.ui.swing.content.cruise;
-import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.InvalidBatchModelException;
-import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
-import fr.ifremer.tutti.persistence.entities.data.Attachment;
-import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.referential.Person;
-import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
-import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.ui.swing.content.operation.*;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.ComputeWeightsAction;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SaveCatchBatchAction;
-import fr.ifremer.tutti.ui.swing.content.operation.fishing.GearUseFeatureTabUI;
-import fr.ifremer.tutti.ui.swing.content.operation.fishing.VesselUseFeatureTabUI;
-import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.decorator.Decorator;
-import javax.swing.*;
-import java.awt.*;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.Collections;
-import java.util.List;
-
import static org.nuiton.i18n.I18n._;
/**
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 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-04-18 19:11:54 UTC (rev 827)
@@ -62,7 +62,7 @@
]]></script>
<EditCruiseUIHandler id='handler'
- initializer='getContextValue(EditCruiseUIHandler.class)'/>
+ initializer='getContextValue(EditCruiseUIHandler.class)'/>
<EditCruiseUIModel id='model'
initializer='getContextValue(EditCruiseUIModel.class)'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUI.jaxx 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUI.jaxx 2013-04-18 19:11:54 UTC (rev 827)
@@ -1,3 +1,26 @@
+<!--
+ #%L
+ Tutti :: UI
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2012 - 2013 Ifremer
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU 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 General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
<JSplitPane id='splitPane' decorator='help'
implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<ValidateCruiseUIModel, ValidateCruiseUIHandler>'>
@@ -23,10 +46,10 @@
]]></script>
<ValidateCruiseUIHandler id='handler'
- initializer='getContextValue(ValidateCruiseUIHandler.class)'/>
+ initializer='getContextValue(ValidateCruiseUIHandler.class)'/>
<ValidateCruiseUIModel id='model'
- initializer='getContextValue(ValidateCruiseUIModel.class)'/>
+ initializer='getContextValue(ValidateCruiseUIModel.class)'/>
<TuttiHelpBroker id='broker'
constructorParams='"tutti.validateCruise.help"'/>
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUI.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIHandler.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -1,13 +1,34 @@
package fr.ifremer.tutti.ui.swing.content.cruise;
-import com.google.common.collect.ArrayListMultimap;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import com.google.common.collect.LinkedListMultimap;
-import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.ValidationService;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.CloseableUI;
@@ -18,17 +39,20 @@
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jdesktop.swingx.tree.TreeUtilities;
import org.nuiton.validator.NuitonValidatorResult;
import org.nuiton.validator.NuitonValidatorScope;
-import javax.swing.*;
-import javax.swing.tree.*;
-import java.awt.*;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeModel;
+import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
-import java.util.*;
-import java.util.List;
+import java.util.Map;
import static org.nuiton.i18n.I18n._;
@@ -40,14 +64,10 @@
private final static Log log = LogFactory.getLog(ValidateCruiseUIHandler.class);
- /**
- * Persistence service.
- */
+ /** Persistence service. */
private final PersistenceService persistenceService;
- /**
- * Validation service.
- */
+ /** Validation service. */
private final ValidationService validationService;
protected EditCruiseFishingOperationAction editFishingOperationAction;
@@ -126,12 +146,12 @@
@Override
public SwingValidator<ValidateCruiseUIModel> getValidator() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ return null;
}
@Override
protected JComponent getComponentToFocus() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ return null;
}
@Override
@@ -141,6 +161,8 @@
protected class ValidationTreeCellRenderer extends DefaultTreeCellRenderer {
+ private static final long serialVersionUID = 1L;
+
@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);
@@ -163,15 +185,17 @@
protected class OperationTreeNode extends DefaultMutableTreeNode {
+ private static final long serialVersionUID = 1L;
+
public OperationTreeNode(FishingOperation operation,
- Multimap<NuitonValidatorScope, String> messages) {
+ Multimap<NuitonValidatorScope, String> messages) {
super(operation);
setAllowsChildren(messages != null);
createChildren(messages);
}
public void createChildren(Multimap<NuitonValidatorScope, String> messages) {
- for (NuitonValidatorScope scope: messages.keySet()) {
+ for (NuitonValidatorScope scope : messages.keySet()) {
for (String message : messages.get(scope)) {
MessageTreeNode child = new MessageTreeNode(scope, message);
this.add(child);
@@ -182,6 +206,8 @@
protected class MessageTreeNode extends DefaultMutableTreeNode {
+ private static final long serialVersionUID = 1L;
+
protected NuitonValidatorScope scope;
public MessageTreeNode(NuitonValidatorScope scope, String message) {
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIModel.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -1,15 +1,40 @@
package fr.ifremer.tutti.ui.swing.content.cruise;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
-import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
-import fr.ifremer.tutti.persistence.entities.data.*;
+import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.Person;
import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware;
-import org.nuiton.util.beans.Binder;
import java.util.Collection;
import java.util.Date;
@@ -20,7 +45,7 @@
* @since 1.4
*/
public class ValidateCruiseUIModel extends AbstractTuttiBeanUIModel<FishingOperation, ValidateCruiseUIModel>
- implements AttachmentModelAware, FishingOperation {
+ implements AttachmentModelAware, FishingOperation {
protected ValidateCruiseUIModel() {
super(FishingOperation.class, null, null);
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ValidateCruiseUIModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -26,7 +26,6 @@
*/
import com.google.common.collect.Lists;
-import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
@@ -91,7 +90,7 @@
BatchContainer<MarineLitterBatch> computedMarineLitterBatches;
try {
computedMarineLitterBatches =
- tuttiWeightComputingService.getComputedMarineLitterBatches(model.getFishingOperation());
+ tuttiWeightComputingService.getComputedMarineLitterBatches(model.getFishingOperation());
} catch (TuttiWeightComputingException e) {
getUI().getTabPane().setSelectedIndex(3);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-18 19:11:54 UTC (rev 827)
@@ -411,10 +411,12 @@
id='individualObservationTabCreateBatch'
constructorParams='this'/>
</JXTitledPanel>
- <JXTitledPanel id='individualObservationCaracteristicMapEditorReminderLabel'
- constraints='EditCatchesUIHandler.EDIT_CARACTERISTICS_CARD'>
- <CaracteristicMapEditorUI id='individualObservationCaracteristicMapEditor'
- constructorParams='individualObservationTabContent'/>
+ <JXTitledPanel
+ id='individualObservationCaracteristicMapEditorReminderLabel'
+ constraints='EditCatchesUIHandler.EDIT_CARACTERISTICS_CARD'>
+ <CaracteristicMapEditorUI
+ id='individualObservationCaracteristicMapEditor'
+ constructorParams='individualObservationTabContent'/>
</JXTitledPanel>
</JPanel>
</tab>
@@ -433,7 +435,7 @@
<JButton id='saveButton'/>
</cell>
<cell weightx="1">
- <JButton id='computeSpeciesBatchButton'/>
+ <JButton id='computeSpeciesBatchButton'/>
</cell>
</row>
</Table>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryColumnIdentifier.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryColumnIdentifier.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryColumnIdentifier.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -56,7 +56,7 @@
String weightPropertyName,
SampleCategoryEnum sampleCategoryType,
String headerI18nKey,
- String headerTipI18nKey ) {
+ String headerTipI18nKey) {
super(propertyName, headerI18nKey, headerTipI18nKey);
this.weightPropertyName = weightPropertyName;
this.sampleCategoryType = sampleCategoryType;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchTableModel.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -24,7 +24,6 @@
* #L%
*/
-import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -75,8 +75,8 @@
* @since 0.2
*/
public class AccidentalBatchUIHandler
- extends AbstractTuttiBatchTableUIHandler<AccidentalBatchRowModel, AccidentalBatchUIModel, AccidentalBatchUI>
- implements CaracteristicMapColumnUIHandler {
+ extends AbstractTuttiBatchTableUIHandler<AccidentalBatchRowModel, AccidentalBatchUIModel, AccidentalBatchUI>
+ implements CaracteristicMapColumnUIHandler {
/** Logger. */
private static final Log log =
@@ -347,9 +347,9 @@
{ // Other caracteristics column
addColumnToModel(columnModel,
- CaracteristicMapCellComponent.newEditor(ui),
- CaracteristicMapCellComponent.newRender(getContext()),
- IndividualObservationBatchTableModel.OTHER_CARACTERISTICS);
+ CaracteristicMapCellComponent.newEditor(ui),
+ CaracteristicMapCellComponent.newRender(getContext()),
+ IndividualObservationBatchTableModel.OTHER_CARACTERISTICS);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -855,14 +855,14 @@
}
}
- public BenthosBatchRowModel getFirstAncestor( SampleCategory<?> entrySampleCategory) {
+ public BenthosBatchRowModel getFirstAncestor(SampleCategory<?> entrySampleCategory) {
BenthosBatchRowModel result = this;
if (getParentBatch() != null) {
BenthosBatchRowModel parentBatch = getParentBatch();
SampleCategory<?> parentSampleCategory = parentBatch.getSampleCategory(entrySampleCategory.getCategoryType());
if (ObjectUtils.equals(entrySampleCategory, parentSampleCategory)) {
- result = parentBatch.getFirstAncestor( entrySampleCategory);
+ result = parentBatch.getFirstAncestor(entrySampleCategory);
}
}
return result;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx 2013-04-18 19:11:54 UTC (rev 827)
@@ -82,7 +82,7 @@
<JPanel layout='{new GridLayout(1,0)}'
constraints='BorderLayout.WEST'>
<JButton id='createIndividualObservationBatchButton'
- onActionPerformed='handler.createBatch()' />
+ onActionPerformed='handler.createBatch()'/>
</JPanel>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -35,7 +35,6 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
-import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapCellComponent;
import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUIModel;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
@@ -43,6 +42,7 @@
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor;
import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer;
+import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapCellComponent;
import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapColumnUIHandler;
import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapEditorUI;
import fr.ifremer.tutti.ui.swing.util.comment.CommentCellEditor;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -23,15 +23,12 @@
*/
import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import com.google.common.collect.Multimap;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
@@ -98,7 +95,7 @@
// get loaded protocol
TuttiProtocol protocol = getDataContext().getProtocol();
Preconditions.checkNotNull(protocol,
- "Could not find protocol in ui context");
+ "Could not find protocol in ui context");
final Map<Integer, SpeciesProtocol> speciesProtocolMap = Maps.newHashMap();
for (SpeciesProtocol sp : protocol.getSpecies()) {
@@ -108,20 +105,20 @@
final Map<String, Caracteristic> lengthStepCaracteristicMap = TuttiEntities.splitById(lengthStepCaracteristics);
getModel().addPropertyChangeListener(IndividualObservationBatch.PROPERTY_SPECIES,
- new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- Species species = (Species) evt.getNewValue();
- if (species != null) {
- SpeciesProtocol speciesProtocol = speciesProtocolMap.get(species.getReferenceTaxonId());
- if (speciesProtocol != null) {
- String lengthStepPmfmId = speciesProtocol.getLengthStepPmfmId();
- Caracteristic lengthStepCaracteristic = lengthStepCaracteristicMap.get(lengthStepPmfmId);
- getModel().setLengthStepCaracteristic(lengthStepCaracteristic);
- }
- }
- }
- });
+ new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ Species species = (Species) evt.getNewValue();
+ if (species != null) {
+ SpeciesProtocol speciesProtocol = speciesProtocolMap.get(species.getReferenceTaxonId());
+ if (speciesProtocol != null) {
+ String lengthStepPmfmId = speciesProtocol.getLengthStepPmfmId();
+ Caracteristic lengthStepCaracteristic = lengthStepCaracteristicMap.get(lengthStepPmfmId);
+ getModel().setLengthStepCaracteristic(lengthStepCaracteristic);
+ }
+ }
+ }
+ });
}
listenValidatorValid(ui.getValidator(), getModel());
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -22,11 +22,9 @@
* #L%
*/
-import com.google.common.collect.Multimap;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import org.apache.commons.logging.Log;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/SelectSpeciesForIndividualObservationBatchAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/SelectSpeciesForIndividualObservationBatchAction.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/SelectSpeciesForIndividualObservationBatchAction.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -42,8 +42,8 @@
* @since 2.0
*/
public class SelectSpeciesForIndividualObservationBatchAction extends AbstractTuttiAction<CreateIndividualObservationBatchUIModel,
- CreateIndividualObservationBatchUI,
- CreateIndividualObservationBatchUIHandler> {
+ CreateIndividualObservationBatchUI,
+ CreateIndividualObservationBatchUIHandler> {
protected List<Species> allSpecies;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -814,14 +814,14 @@
}
}
- public SpeciesBatchRowModel getFirstAncestor( SampleCategory<?> entrySampleCategory) {
+ public SpeciesBatchRowModel getFirstAncestor(SampleCategory<?> entrySampleCategory) {
SpeciesBatchRowModel result = this;
if (getParentBatch() != null) {
SpeciesBatchRowModel parentBatch = getParentBatch();
SampleCategory<?> parentSampleCategory = parentBatch.getSampleCategory(entrySampleCategory.getCategoryType());
if (ObjectUtils.equals(entrySampleCategory, parentSampleCategory)) {
- result = parentBatch.getFirstAncestor( entrySampleCategory);
+ result = parentBatch.getFirstAncestor(entrySampleCategory);
}
}
return result;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-04-18 19:11:54 UTC (rev 827)
@@ -208,10 +208,10 @@
</JPanel>
</tab>
<!--<tab title='tutti.editProtocol.tab.plankton' enabled='false'>-->
- <!--<JLabel text='tutti.to.be.done' horizontalAlignment="{JLabel.CENTER}"/>-->
+ <!--<JLabel text='tutti.to.be.done' horizontalAlignment="{JLabel.CENTER}"/>-->
<!--</tab>-->
<!--<tab title='tutti.editProtocol.tab.accidental' enabled='false'>-->
- <!--<JLabel text='tutti.to.be.done' horizontalAlignment="{JLabel.CENTER}"/>-->
+ <!--<JLabel text='tutti.to.be.done' horizontalAlignment="{JLabel.CENTER}"/>-->
<!--</tab>-->
</JTabbedPane>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -86,12 +86,23 @@
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
-import javax.swing.event.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
import javax.swing.text.JTextComponent;
-import java.awt.*;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dialog;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Point;
+import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
@@ -1004,10 +1015,10 @@
Rectangle r = source.getCellRect(lowestRow, source.getSelectedColumn(), true);
// get the point in the middle lower of the cell
- Point p = new Point(r.x + r.width/2, r.y + r.height);
+ Point p = new Point(r.x + r.width / 2, r.y + r.height);
if (log.isDebugEnabled()) {
- log.debug("Row " + lowestRow +" found t point [" + p + "]");
+ log.debug("Row " + lowestRow + " found t point [" + p + "]");
}
boolean canContinue = true;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -27,12 +27,9 @@
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
-import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
import jaxx.runtime.SwingUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnRowModel.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnRowModel.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -1,12 +1,34 @@
package fr.ifremer.tutti.ui.swing.util.caracteristics;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import java.io.Serializable;
-/**
- * @author kmorin <kmorin(a)codelutin.com>
- */
+/** @author kmorin <kmorin(a)codelutin.com> */
public interface CaracteristicMapColumnRowModel extends Serializable {
CaracteristicMap getCaracteristics();
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnRowModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java 2013-04-18 19:07:23 UTC (rev 826)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java 2013-04-18 19:11:54 UTC (rev 827)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.util.caracteristics;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
/**
* @author kmorin <kmorin(a)codelutin.com>
* @since 2.0
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/error.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/fatal.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/info.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/warning.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
1
0
r826 - in trunk/tutti-service/src/main/java/fr/ifremer/tutti/service: . catches
by tchemit@users.forge.codelutin.com 18 Apr '13
by tchemit@users.forge.codelutin.com 18 Apr '13
18 Apr '13
Author: tchemit
Date: 2013-04-18 21:07:23 +0200 (Thu, 18 Apr 2013)
New Revision: 826
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/826
Log:
reformat code, add license, ...
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingException.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java
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 2013-04-18 18:58:30 UTC (rev 825)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-04-18 19:07:23 UTC (rev 826)
@@ -319,7 +319,7 @@
public List<Species> getAllReferentSpecies(TuttiProtocol protocol) {
return driver.getAllReferentSpecies(protocol);
}
-
+
@Override
public Species getSpeciesByReferenceTaxonIdWithVernacularCode(Integer referenceTaxonId) {
return driver.getSpeciesByReferenceTaxonIdWithVernacularCode(referenceTaxonId);
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingException.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingException.java 2013-04-18 18:58:30 UTC (rev 825)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingException.java 2013-04-18 19:07:23 UTC (rev 826)
@@ -1,12 +1,39 @@
package fr.ifremer.tutti.service.catches;
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.TuttiBusinessException;
/**
* @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.5
*/
public class TuttiWeightComputingException extends TuttiBusinessException {
+ private static final long serialVersionUID = 1L;
+
public enum CatchType {
SPECIES, BENTHOS, MARINE_LITTER
}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingException.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-18 18:58:30 UTC (rev 825)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-18 19:07:23 UTC (rev 826)
@@ -190,9 +190,9 @@
try {
if (catchBatch != null) {
computeCatchBatchWeights(catchBatch,
- rootSpeciesBatch,
- rootBenthosBatch,
- rootMarineLitterBatch);
+ rootSpeciesBatch,
+ rootBenthosBatch,
+ rootMarineLitterBatch);
}
} catch (TuttiBusinessException e) {
result.add(e.getMessage());
@@ -480,9 +480,9 @@
// weight, then set the weight of the sample
if (frequencyWeight > categoryWeight) {
throw new TuttiWeightComputingException(_
- ("tutti.service.operations.computeWeights.species.error.incoherentCategoryWeight"),
- TuttiWeightComputingException.CatchType.SPECIES,
- thisIndex);
+ ("tutti.service.operations.computeWeights.species.error.incoherentCategoryWeight"),
+ TuttiWeightComputingException.CatchType.SPECIES,
+ thisIndex);
} else if (rowWeight == null) {
batch.setComputedWeight(frequencyWeight);
@@ -639,7 +639,7 @@
}
}
if (result == null
- && batch.getParentBatch() == null) {
+ && batch.getParentBatch() == null) {
throw new TuttiWeightComputingException(
_("tutti.service.operations.computeWeights.benthos.error.noWeight"),
TuttiWeightComputingException.CatchType.BENTHOS,
@@ -656,13 +656,13 @@
if (rootMarineLitterBatch != null) {
List<MarineLitterBatch> children = rootMarineLitterBatch.getChildren();
- for (int i = 0 ; i < children.size() ; i++) {
+ for (int i = 0; i < children.size(); i++) {
MarineLitterBatch batch = children.get(i);
if (batch.getWeight() == null) {
- throw new TuttiWeightComputingException(
- _("tutti.service.operations.computeWeights.marineLitter.error.noWeight"),
- TuttiWeightComputingException.CatchType.MARINE_LITTER,
- i);
+ throw new TuttiWeightComputingException(
+ _("tutti.service.operations.computeWeights.marineLitter.error.noWeight"),
+ TuttiWeightComputingException.CatchType.MARINE_LITTER,
+ i);
}
}
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java 2013-04-18 18:58:30 UTC (rev 825)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java 2013-04-18 19:07:23 UTC (rev 826)
@@ -1,11 +1,36 @@
package fr.ifremer.tutti.service.catches;
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import com.google.common.collect.Maps;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.service.*;
-import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiDataContext;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.ValidationService;
import org.nuiton.validator.NuitonValidatorResult;
import org.nuiton.validator.NuitonValidatorScope;
@@ -18,9 +43,6 @@
*/
public class ValidateCruiseOperationsService extends AbstractTuttiService {
- private static final Log log =
- LogFactory.getLog(TuttiWeightComputingService.class);
-
protected PersistenceService persistenceService;
protected ValidationService validationService;
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ValidateCruiseOperationsService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r825 - in trunk/tutti-persistence/src: main/java/fr/ifremer/tutti/persistence/entities main/java/fr/ifremer/tutti/persistence/service main/java/fr/ifremer/tutti/persistence/service/synchro main/resources test/java/fr/ifremer/tutti/persistence test/java/fr/ifremer/tutti/persistence/service
by tchemit@users.forge.codelutin.com 18 Apr '13
by tchemit@users.forge.codelutin.com 18 Apr '13
18 Apr '13
Author: tchemit
Date: 2013-04-18 20:58:30 +0200 (Thu, 18 Apr 2013)
New Revision: 825
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/825
Log:
refs #1866: [CAPTURE] - Captures accidentelles
refs #1867: [CAPTURE] - Observations individuelles
Added:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SampleMeasurementPersistenceHelper.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiPersistenceServiceLocator.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImpl.java
trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceReadTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceWriteTest.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -37,4 +37,12 @@
*/
public class CaracteristicMap extends LinkedHashMap<Caracteristic, Serializable> {
private static final long serialVersionUID = 1L;
+
+ public static CaracteristicMap copy(CaracteristicMap map) {
+ CaracteristicMap result = new CaracteristicMap();
+ if (map != null) {
+ result.putAll(map);
+ }
+ return result;
+ }
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -33,6 +33,7 @@
import com.google.common.collect.Multimaps;
import com.google.common.collect.Sets;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.Species;
@@ -276,6 +277,17 @@
return "jdbc:hsqldb:file:" + directory.getAbsolutePath() + "/" + dbName;
}
+ public static CaracteristicQualitativeValue getQualitativeValue(Caracteristic caracteristic, Integer qualitativeValueId) {
+ CaracteristicQualitativeValue value = null;
+ for (CaracteristicQualitativeValue qv : caracteristic.getQualitativeValue()) {
+ if (qualitativeValueId.equals(qv.getIdAsInt())) {
+ value = qv;
+ break;
+ }
+ }
+ return value;
+ }
+
protected static class IdPredicate<B extends TuttiEntity> implements Predicate<B> {
private final String id;
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -26,11 +26,9 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
import fr.ifremer.adagio.core.dao.administration.programStrategy.Program;
import fr.ifremer.adagio.core.dao.administration.user.DepartmentImpl;
import fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
-import fr.ifremer.adagio.core.dao.data.measure.SampleMeasurement;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperationDao;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperationImpl;
import fr.ifremer.adagio.core.dao.data.sample.Sample;
@@ -38,11 +36,6 @@
import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
import fr.ifremer.adagio.core.dao.referential.pmfm.Matrix;
import fr.ifremer.adagio.core.dao.referential.pmfm.MatrixImpl;
-import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm;
-import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmDao;
-import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
-import fr.ifremer.adagio.core.dao.referential.pmfm.Unit;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
@@ -51,11 +44,9 @@
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
-import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.hibernate.FlushMode;
import org.hibernate.type.IntegerType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataRetrievalFailureException;
@@ -66,8 +57,6 @@
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
/**
* @author tchemit <chemit(a)codelutin.com>
@@ -87,7 +76,7 @@
protected AttachmentPersistenceService attachmentPersistenceService;
@Autowired
- protected MeasurementPersistenceHelper measurementPersistenceHelper;
+ protected SampleMeasurementPersistenceHelper sampleMeasurementPersistenceHelper;
@Resource(name = "fishingOperationDao")
protected FishingOperationDao fishingOperationDao;
@@ -95,15 +84,12 @@
@Resource(name = "sampleDao")
protected SampleDao sampleDao;
- @Resource(name = "pmfmDao")
- protected PmfmDao pmfmDao;
-
@Override
public List<AccidentalBatch> getAllAccidentalBatch(String fishingOperationId) {
Preconditions.checkNotNull(fishingOperationId);
Iterator<Object[]> list = queryList(
- "allFishingOperationSamples",
+ "allFishingOperationSamplesWithoutBatch",
"fishingOperationId", IntegerType.INSTANCE, Integer.valueOf(fishingOperationId)
);
@@ -146,12 +132,10 @@
Preconditions.checkNotNull(bean.getFishingOperation());
Preconditions.checkState(!TuttiEntities.isNew(bean.getFishingOperation()));
- getCurrentSession().setFlushMode(FlushMode.COMMIT);
Sample sample = Sample.Factory.newInstance();
beanToEntity(bean, sample);
sampleDao.create(sample);
bean.setId(String.valueOf(sample.getId()));
- getCurrentSession().flush();
return bean;
}
@@ -163,14 +147,13 @@
Preconditions.checkNotNull(bean.getFishingOperation());
Preconditions.checkState(!TuttiEntities.isNew(bean.getFishingOperation()));
- getCurrentSession().setFlushMode(FlushMode.COMMIT);
Sample sample = sampleDao.load(bean.getIdAsInt());
if (sample == null) {
- throw new DataRetrievalFailureException("Could not retrieve sample id=" + bean.getId());
+ throw new DataRetrievalFailureException(
+ "Could not retrieve sample id=" + bean.getId());
}
beanToEntity(bean, sample);
sampleDao.update(sample);
- getCurrentSession().flush();
return bean;
}
@@ -178,17 +161,24 @@
public void deleteAccidentalBatch(String id) {
Preconditions.checkNotNull(id);
- Integer accidentalId = Integer.valueOf(id);
- sampleDao.remove(accidentalId);
- attachmentPersistenceService.deleteAllAttachment(accidentalId);
+ Integer batchId = Integer.valueOf(id);
+
+ if (log.isInfoEnabled()) {
+ log.info("Will delete accidental batch: " + batchId);
+ }
+ sampleDao.remove(batchId);
+ attachmentPersistenceService.deleteAllAttachment(batchId);
}
+ // ------------------------------------------------------------------------//
+ // -- Internal methods --//
+ // ------------------------------------------------------------------------//
+
protected void beanToEntity(AccidentalBatch source, Sample target) {
if (TuttiEntities.isNew(source)) {
// operation
-
fr.ifremer.adagio.core.dao.data.operation.FishingOperation fishingOperation;
fishingOperation = load(FishingOperationImpl.class, source.getFishingOperation().getIdAsInt());
@@ -235,36 +225,9 @@
// Id
target.setId(source.getIdAsInt());
+ // Always use a null batch (to differ with other samples)
+ target.setBatch(null);
- // Size
- // Size Unit
- if (source.getSize() == null) {
-
- // no size
- target.setSize(null);
- target.setSizeUnit(null);
- } else {
-
- target.setSize(source.getSize());
-
- Caracteristic lengthStepCaracteristic =
- source.getLengthStepCaracteristic();
-
- if (lengthStepCaracteristic != null) {
- Pmfm pmfm = pmfmDao.load(lengthStepCaracteristic.getIdAsInt());
-
- Unit unit = pmfm.getUnit();
- target.setSizeUnit(unit);
- } else {
-
- if (log.isWarnEnabled()) {
- log.warn("There is a size but no lengthStepCaracteristic, " +
- "will nullify the unit.");
- }
- target.setSizeUnit(null);
- }
- }
-
// Synchronization Status
target.setSynchronizationStatus(SynchronizationStatus.DIRTY.getValue());
@@ -280,251 +243,85 @@
// FishingAreas TODO
- // SampleMeasurement
+ // Prepare sample measurements
- Set<SampleMeasurement> notChangedSampleMeasurements = Sets.newHashSet();
- if (target.getSampleMeasurements() != null) {
- notChangedSampleMeasurements.addAll(target.getSampleMeasurements());
- }
+ CaracteristicMap caracteristics =
+ CaracteristicMap.copy(source.getCaracteristics());
- CaracteristicMap caracteristics = source.getCaracteristics();
- if (caracteristics != null && caracteristics.size() > 0) {
- for (Caracteristic caracteristic : caracteristics.keySet()) {
- SampleMeasurement vum = setSampleMeasurement(
- target,
- caracteristic,
- caracteristics.get(caracteristic));
- notChangedSampleMeasurements.remove(vum);
- }
- }
-
if (source.getDeadOrAlive() != null) {
- // add it as a measurement
-
Caracteristic caracteristic =
referentialService.getDeadOrAliveCaracteristic();
-
- SampleMeasurement vum = setSampleMeasurement(
- target,
- caracteristic,
- source.getDeadOrAlive());
- notChangedSampleMeasurements.remove(vum);
+ caracteristics.put(caracteristic, source.getDeadOrAlive());
}
if (source.getGender() != null) {
- // add it as a measurement
-
Caracteristic caracteristic =
referentialService.getSexCaracteristic();
-
- SampleMeasurement vum = setSampleMeasurement(
- target,
- caracteristic,
- source.getGender());
- notChangedSampleMeasurements.remove(vum);
+ caracteristics.put(caracteristic, source.getGender());
}
if (source.getWeight() != null) {
- // add it as a measurement
-
- Caracteristic caracteristic =
- referentialService.getCaracteristic(enumeration.PMFM_ID_WEIGHT_MEASURED);
-
- SampleMeasurement vum = setSampleMeasurement(
- target,
- caracteristic,
- source.getWeight());
- notChangedSampleMeasurements.remove(vum);
+ Caracteristic caracteristic = referentialService.getCaracteristic(
+ enumeration.PMFM_ID_WEIGHT_MEASURED);
+ caracteristics.put(caracteristic, source.getWeight());
}
if (source.getLengthStepCaracteristic() != null) {
- // add it as a measurement
+ Caracteristic caracteristic = referentialService.getCaracteristic(
+ enumeration.PMFM_ID_ID_PSFM);
+ caracteristics.put(caracteristic,
+ source.getLengthStepCaracteristic().getId());
- Caracteristic caracteristic =
- referentialService.getCaracteristic(enumeration.PMFM_ID_SAMPLE_LENGTH_STEP);
-
- SampleMeasurement vum = setSampleMeasurement(
- target,
- caracteristic,
- source.getLengthStepCaracteristic().getId());
- notChangedSampleMeasurements.remove(vum);
-
- caracteristic = source.getLengthStepCaracteristic();
- vum = setSampleMeasurement(
- target,
- caracteristic,
- source.getSize());
- notChangedSampleMeasurements.remove(vum);
-
+ caracteristics.put(source.getLengthStepCaracteristic(),
+ source.getSize());
}
- // ----------------------------------------------------------------
- // Removed unecessary *SampleMeasurement* ---
- // ----------------------------------------------------------------
+ sampleMeasurementPersistenceHelper.setSampleMeasurements(target,
+ caracteristics);
- if (target.getSampleMeasurements() != null &&
- notChangedSampleMeasurements.size() > 0) {
- target.getSampleMeasurements().removeAll(notChangedSampleMeasurements);
- }
}
- protected void fillSampleMeasurements(AccidentalBatch accidentalBatch) {
+ protected void fillSampleMeasurements(AccidentalBatch batch) {
Caracteristic deadOrAliveCaracteristic = referentialService.getDeadOrAliveCaracteristic();
- Map<String, CaracteristicQualitativeValue> deadOrAliveValues = TuttiEntities.splitById(deadOrAliveCaracteristic.getQualitativeValue());
Caracteristic genderCaracteristic = referentialService.getSexCaracteristic();
- Map<String, CaracteristicQualitativeValue> genderValues = TuttiEntities.splitById(genderCaracteristic.getQualitativeValue());
- Iterator<Object[]> list = queryList(
- "sampleMeasurements",
- "sampleId", IntegerType.INSTANCE, accidentalBatch.getIdAsInt());
+ CaracteristicMap result = batch.getCaracteristics();
- CaracteristicMap result = accidentalBatch.getCaracteristics();
- while (list.hasNext()) {
- int colIndex = 0;
- Object[] source = list.next();
- Integer pmfmId = (Integer) source[colIndex++];
- Float numericalValue = (Float) source[colIndex++];
- String alphanumericalValue = (String) source[colIndex++];
- Integer qualitativeValueId = (Integer) source[colIndex];
+ sampleMeasurementPersistenceHelper.fillSampleMeasurements(
+ result, batch.getIdAsInt());
- // dead or alive
- if (enumeration.PMFM_ID_DEAD_OR_ALIVE.equals(pmfmId)) {
-
- CaracteristicQualitativeValue caracteristicQualitativeValue = deadOrAliveValues.get(qualitativeValueId.toString());
- accidentalBatch.setDeadOrAlive(caracteristicQualitativeValue);
-
- continue;
- }
-
- // gender
- if (enumeration.PMFM_ID_SEX.equals(pmfmId)) {
-
- CaracteristicQualitativeValue caracteristicQualitativeValue = genderValues.get(qualitativeValueId.toString());
- accidentalBatch.setGender(caracteristicQualitativeValue);
- continue;
- }
-
- // weight
- if (enumeration.PMFM_ID_WEIGHT_MEASURED.equals(pmfmId)) {
-
- accidentalBatch.setWeight(numericalValue);
- continue;
- }
-
- // length step
- if (enumeration.PMFM_ID_SAMPLE_LENGTH_STEP.equals(pmfmId)) {
-
- Caracteristic lengthStepCaracteristic = referentialService.getCaracteristic(Integer.valueOf(alphanumericalValue));
- accidentalBatch.setLengthStepCaracteristic(lengthStepCaracteristic);
- continue;
- }
-
- // other sample measurements
-
- Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
- Serializable value = null;
- if (CaracteristicType.NUMBER == caracteristic.getCaracteristicType()) {
- value = numericalValue;
- } else if (CaracteristicType.TEXT == caracteristic.getCaracteristicType()) {
- value = alphanumericalValue;
- } else if (CaracteristicType.QUALITATIVE == caracteristic.getCaracteristicType()) {
- for (CaracteristicQualitativeValue qv : caracteristic.getQualitativeValue()) {
- if (qualitativeValueId.equals(qv.getIdAsInt())) {
- value = qv;
- break;
- }
- }
- }
- result.put(caracteristic, value);
+ CaracteristicQualitativeValue deadOrAliveValue =
+ (CaracteristicQualitativeValue) result.remove(deadOrAliveCaracteristic);
+ if (deadOrAliveValue != null) {
+ batch.setDeadOrAlive(deadOrAliveValue);
}
- Caracteristic lengthStepCaracteristic = accidentalBatch.getLengthStepCaracteristic();
- if (lengthStepCaracteristic != null) {
-
- // get size from result
- Serializable length = result.remove(lengthStepCaracteristic);
- accidentalBatch.setSize((Float) length);
+ CaracteristicQualitativeValue genderValue =
+ (CaracteristicQualitativeValue) result.remove(genderCaracteristic);
+ if (genderValue != null) {
+ batch.setGender(genderValue);
}
- }
- protected SampleMeasurement getSampleMeasurement(Sample sample,
- Integer pmfmId,
- boolean createIfNotExists) {
- SampleMeasurement result = null;
- if (sample.getSampleMeasurements() != null) {
- for (SampleMeasurement vum : sample.getSampleMeasurements()) {
- if (pmfmId.equals(vum.getPmfm().getId())) {
- result = vum;
- break;
- }
- }
+ Float weight = (Float) result.remove(referentialService.getCaracteristic(enumeration.PMFM_ID_WEIGHT_MEASURED));
+ if (weight != null) {
+ batch.setWeight(weight);
}
- if (result == null) {
- if (!createIfNotExists) {
- return null;
- }
- result = SampleMeasurement.Factory.newInstance();
- result.setSample(sample);
- if (sample.getSampleMeasurements() == null) {
- sample.setSampleMeasurements(Sets.newHashSet(result));
- } else {
- sample.getSampleMeasurements().add(result);
- }
- result.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
- result.setDepartment(sample.getRecorderDepartment());
- result.setPmfm(load(PmfmImpl.class, pmfmId));
- }
+ String lengthClassId = (String) result.remove(referentialService.getCaracteristic(enumeration.PMFM_ID_ID_PSFM));
+ if (lengthClassId != null) {
+ Caracteristic lengthStepCaracteristic = referentialService.getCaracteristic(Integer.valueOf(lengthClassId));
+ batch.setLengthStepCaracteristic(lengthStepCaracteristic);
- return result;
- }
-
- protected SampleMeasurement setSampleMeasurement(Sample sample,
- Integer pmfmId,
- Float numericalValue,
- String alphanumericalValue,
- Integer qualitativevalueId) {
- SampleMeasurement result = getSampleMeasurement(sample, pmfmId, true);
-
- if (alphanumericalValue != null) {
- result.setAlphanumericalValue(alphanumericalValue);
- } else if (numericalValue != null) {
- result.setNumericalValue(numericalValue);
- } else if (qualitativevalueId != null) {
- result.setQualitativeValue(load(QualitativeValueImpl.class, qualitativevalueId));
+ Serializable length = result.remove(lengthStepCaracteristic);
+ batch.setSize((Float) length);
}
-
- return result;
}
- protected SampleMeasurement setSampleMeasurement(Sample sample,
- Integer pmfmId,
- Serializable value) {
- SampleMeasurement result = getSampleMeasurement(sample, pmfmId, true);
- if (value instanceof String) {
- result.setAlphanumericalValue((String) value);
- } else if (value instanceof Float) {
- result.setNumericalValue((Float) value);
- } else if (value instanceof Integer) {
- result.setQualitativeValue(load(QualitativeValueImpl.class, value));
- }
-
- return result;
- }
-
- protected SampleMeasurement setSampleMeasurement(Sample sample,
- Caracteristic caracteristic,
- Serializable value) {
- SampleMeasurement result = getSampleMeasurement(sample, caracteristic.getIdAsInt(), true);
- measurementPersistenceHelper.setMeasurement(result, caracteristic, value);
- return result;
- }
-
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceImpl.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AttachmentPersistenceServiceImpl.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -30,7 +30,6 @@
import fr.ifremer.adagio.core.dao.data.measure.file.MeasurementFileDao;
import fr.ifremer.adagio.core.dao.referential.ObjectTypeImpl;
import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
-import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl;
import fr.ifremer.tutti.TuttiIOUtil;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceService.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -36,6 +36,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 1.4
*/
+@Transactional(readOnly = true)
public interface IndividualObservationBatchPersistenceService extends TuttiPersistenceServiceImplementor {
List<IndividualObservationBatch> getAllIndividualObservationBatch(String fishingOperationId);
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -26,15 +26,41 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
+import fr.ifremer.adagio.core.dao.administration.programStrategy.Program;
+import fr.ifremer.adagio.core.dao.administration.user.DepartmentImpl;
+import fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
+import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
+import fr.ifremer.adagio.core.dao.data.batch.CatchBatchExtendDao;
+import fr.ifremer.adagio.core.dao.data.batch.SortingBatch;
+import fr.ifremer.adagio.core.dao.data.operation.FishingOperationDao;
+import fr.ifremer.adagio.core.dao.data.operation.FishingOperationImpl;
+import fr.ifremer.adagio.core.dao.data.sample.Sample;
+import fr.ifremer.adagio.core.dao.data.sample.SampleDao;
+import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.Matrix;
+import fr.ifremer.adagio.core.dao.referential.pmfm.MatrixImpl;
+import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
+import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.persistence.service.batch.BatchPersistenceHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.hibernate.type.IntegerType;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataRetrievalFailureException;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
-import java.util.UUID;
/**
* @author tchemit <chemit(a)codelutin.com>
@@ -48,23 +74,90 @@
LogFactory.getLog(IndividualObservationBatchPersistenceServiceImpl.class);
@Autowired
+ protected ReferentialPersistenceService referentialService;
+
+ @Autowired
protected AttachmentPersistenceService attachmentPersistenceService;
+ @Autowired
+ protected SampleMeasurementPersistenceHelper sampleMeasurementPersistenceHelper;
+
+ @Resource(name = "fishingOperationDao")
+ protected FishingOperationDao fishingOperationDao;
+
+ @Resource(name = "catchBatchDao")
+ protected CatchBatchExtendDao catchBatchDao;
+
+ @Resource(name = "sampleDao")
+ protected SampleDao sampleDao;
+
@Override
public List<IndividualObservationBatch> getAllIndividualObservationBatch(String fishingOperationId) {
Preconditions.checkNotNull(fishingOperationId);
+
+ Integer operationId = Integer.valueOf(fishingOperationId);
+
+ // Get Vrac / Species Batch
+ SortingBatch vracSpeciesBatch = getBatch(operationId);
+
+ Iterator<Object[]> list = queryList(
+ "allFishingOperationSamplesWithBatch",
+ "fishingOperationId", IntegerType.INSTANCE, operationId,
+ "batchId", IntegerType.INSTANCE, vracSpeciesBatch.getId()
+ );
+
List<IndividualObservationBatch> result = Lists.newArrayList();
- // TODO
- return result;
+ while (list.hasNext()) {
+ Object[] source = list.next();
+
+ IndividualObservationBatch batch =
+ TuttiBeanFactory.newIndividualObservationBatch();
+
+ int colIndex = 0;
+
+ // Id
+ batch.setId((Integer) source[colIndex++]);
+
+ // TaxonId
+ Integer taxonId = (Integer) source[colIndex++];
+ Species species = referentialService.getSpeciesByReferenceTaxonId(taxonId);
+ batch.setSpecies(species);
+
+ // Comment
+ batch.setComment((String) source[colIndex]);
+
+ // Sample Measurements
+ batch.setCaracteristics(new CaracteristicMap());
+
+ // fill all measurements
+ fillSampleMeasurements(batch);
+
+ result.add(batch);
+ }
+ return Collections.unmodifiableList(result);
}
@Override
public IndividualObservationBatch createIndividualObservationBatch(IndividualObservationBatch bean) {
Preconditions.checkNotNull(bean);
Preconditions.checkState(TuttiEntities.isNew(bean));
- // TODO
- bean.setId(UUID.randomUUID().toString());
+ Preconditions.checkNotNull(bean.getSpecies());
+ Preconditions.checkNotNull(bean.getSize());
+ Preconditions.checkNotNull(bean.getLengthStepCaracteristic());
+
+ FishingOperation fishingOperation = bean.getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
+ Preconditions.checkState(!TuttiEntities.isNew(fishingOperation));
+
+ // Get Vrac / Species Batch
+ SortingBatch vracSpeciesBatch = getBatch(
+ fishingOperation.getIdAsInt());
+
+ Sample sample = Sample.Factory.newInstance();
+ beanToEntity(bean, sample, vracSpeciesBatch);
+ sampleDao.create(sample);
+ bean.setId(String.valueOf(sample.getId()));
return bean;
}
@@ -72,15 +165,213 @@
public IndividualObservationBatch saveIndividualObservationBatch(IndividualObservationBatch bean) {
Preconditions.checkNotNull(bean);
Preconditions.checkState(!TuttiEntities.isNew(bean));
- // TODO
+ Preconditions.checkNotNull(bean.getSpecies());
+ Preconditions.checkNotNull(bean.getSize());
+ Preconditions.checkNotNull(bean.getLengthStepCaracteristic());
+
+ FishingOperation fishingOperation = bean.getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
+ Preconditions.checkState(!TuttiEntities.isNew(fishingOperation));
+
+ // Get Vrac / Species Batch
+ SortingBatch vracSpeciesBatch = getBatch(fishingOperation.getIdAsInt());
+
+ Sample sample = sampleDao.load(bean.getIdAsInt());
+ if (sample == null) {
+ throw new DataRetrievalFailureException(
+ "Could not retrieve sample id: " + bean.getId());
+ }
+ beanToEntity(bean, sample, vracSpeciesBatch);
+ sampleDao.update(sample);
return bean;
}
@Override
public void deleteIndividualObservationBatch(String id) {
Preconditions.checkNotNull(id);
- // TODO
- attachmentPersistenceService.deleteAllAttachment(Integer.valueOf(id));
+
+ Integer batchId = Integer.valueOf(id);
+
+ if (log.isInfoEnabled()) {
+ log.info("Will delete individual observation batch: " +
+ batchId);
+ }
+ //FIXME See why this code does not work
+// sampleDao.remove(batchId);
+ Sample sample = sampleDao.load(batchId);
+ if (sample != null) {
+ sample.getSampleMeasurements().clear();
+ sampleDao.remove(sample);
+ attachmentPersistenceService.deleteAllAttachment(batchId);
+ }
}
+ // ------------------------------------------------------------------------//
+ // -- Internal methods --//
+ // ------------------------------------------------------------------------//
+
+ protected void beanToEntity(IndividualObservationBatch source, Sample target, SortingBatch vracSpeciesBatch) {
+
+ if (TuttiEntities.isNew(source)) {
+
+ // operation
+ fr.ifremer.adagio.core.dao.data.operation.FishingOperation fishingOperation;
+
+ fishingOperation = load(FishingOperationImpl.class, source.getFishingOperation().getIdAsInt());
+ fishingOperation.getSamples().add(target); // Inverse link
+
+ // Link to parent operation
+ target.setFishingOperation(fishingOperation);
+
+ // Label
+ String label = fishingOperation.getId() + "_" + source.getSpecies().getReferenceTaxonId();
+ target.setLabel(label);
+
+ // Matrix (product / batch)
+ Matrix matrix = load(MatrixImpl.class, enumeration.MATRIX_ID_PRODUCT_BATCH);
+ target.setMatrix(matrix);
+
+ // IndividualCount
+ target.setIndividualCount((short) 1);
+
+ // Quality Flag
+ target.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+
+ // Sample Date
+ if (target.getSampleDate() == null) {
+ target.setSampleDate(fishingOperation.getFishingStartDateTime());
+ }
+
+ // Create Date
+ target.setCreationDate(fishingOperation.getFishingStartDateTime());
+
+ // Recorder Departement
+ target.setRecorderDepartment(load(DepartmentImpl.class,
+ enumeration.DEPARTMENT_ID_UNKNOWN_RECORDER_DEPARTMENT));
+
+ // Recorder Person
+ target.setRecorderPerson(load(PersonImpl.class,
+ enumeration.PERSON_ID_UNKNOWN_RECORDER_PERSON));
+
+ // Program
+ Program program = fishingOperation.getFishingTrip().getProgram();
+ target.setProgram(program);
+ }
+
+ // Id
+ target.setId(source.getIdAsInt());
+
+ // Always attach to given vracSpecies batch
+ target.setBatch(vracSpeciesBatch);
+
+ // Synchronization Status
+ target.setSynchronizationStatus(SynchronizationStatus.DIRTY.getValue());
+
+ // Comment
+ target.setComments(source.getComment());
+
+ // ReferenceTaxon
+ Species species = source.getSpecies();
+ Integer referenceTaxonId = species.getReferenceTaxonId();
+ target.setReferenceTaxon(load(ReferenceTaxonImpl.class, referenceTaxonId));
+
+ // Taxongroup TODO
+
+ // FishingAreas TODO
+
+ // Prepare sample measurements
+
+ CaracteristicMap caracteristics =
+ CaracteristicMap.copy(source.getCaracteristics());
+
+ if (source.getSamplingCode() != null) {
+
+ Caracteristic caracteristic =
+ referentialService.getCaracteristic(enumeration.PMFM_ID_SAMPLE_ID);
+ caracteristics.put(caracteristic, source.getSamplingCode());
+ }
+
+ if (source.getCalcifiedPieceSamplingCode() != null) {
+
+ Caracteristic caracteristic =
+ referentialService.getCaracteristic(enumeration.PMFM_ID_OTOLITHE_ID);
+ caracteristics.put(caracteristic, source.getCalcifiedPieceSamplingCode());
+ }
+
+ if (source.getWeight() != null) {
+
+ Caracteristic caracteristic = referentialService.getCaracteristic(
+ enumeration.PMFM_ID_WEIGHT_MEASURED);
+ caracteristics.put(caracteristic, source.getWeight());
+ }
+
+ if (source.getLengthStepCaracteristic() != null) {
+
+ Caracteristic caracteristic = referentialService.getCaracteristic(
+ enumeration.PMFM_ID_ID_PSFM);
+ caracteristics.put(caracteristic,
+ source.getLengthStepCaracteristic().getId());
+
+ caracteristics.put(source.getLengthStepCaracteristic(),
+ source.getSize());
+ }
+
+ sampleMeasurementPersistenceHelper.setSampleMeasurements(target,
+ caracteristics);
+
+
+ }
+
+ protected SortingBatch getBatch(Integer operationId) {
+
+ // Load batch tree
+ Integer catchBatchId = catchBatchDao.getIdByFishingOperationId(operationId);
+ Preconditions.checkNotNull(catchBatchId);
+
+ CatchBatch catchBatch = catchBatchDao.loadFullTree(catchBatchId);
+ Preconditions.checkNotNull(catchBatch);
+
+ // Vrac / Species
+ SortingBatch vracSpeciesBatch = catchBatchDao.getSortingBatch(
+ catchBatch.getChildBatchs(),
+ BatchPersistenceHelper.BATCH_PMFM_ID, enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID,
+ BatchPersistenceHelper.BATCH_PMFM_ID, enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES,
+ BatchPersistenceHelper.BATCH_PMFM_ID, enumeration.PMFM_ID_SORTING_TYPE_2, enumeration.QUALITATIVE_ID_SORTING_TYPE_2_ALIVE_ITEMIZED
+ );
+ Preconditions.checkNotNull(vracSpeciesBatch);
+ return vracSpeciesBatch;
+ }
+
+ protected void fillSampleMeasurements(IndividualObservationBatch batch) {
+
+ CaracteristicMap result = batch.getCaracteristics();
+
+ sampleMeasurementPersistenceHelper.fillSampleMeasurements(
+ result, batch.getIdAsInt());
+
+ String sampleCode = (String) result.remove(referentialService.getCaracteristic(enumeration.PMFM_ID_SAMPLE_ID));
+ if (sampleCode != null) {
+ batch.setSamplingCode(sampleCode);
+ }
+
+ String calcifiedPieceSampleCode = (String) result.remove(referentialService.getCaracteristic(enumeration.PMFM_ID_OTOLITHE_ID));
+ if (sampleCode != null) {
+ batch.setCalcifiedPieceSamplingCode(calcifiedPieceSampleCode);
+ }
+
+ Float weight = (Float) result.remove(referentialService.getCaracteristic(enumeration.PMFM_ID_WEIGHT_MEASURED));
+ if (weight != null) {
+ batch.setWeight(weight);
+ }
+
+ String lengthClassId = (String) result.remove(referentialService.getCaracteristic(enumeration.PMFM_ID_ID_PSFM));
+ if (lengthClassId != null) {
+ Caracteristic lengthStepCaracteristic = referentialService.getCaracteristic(Integer.valueOf(lengthClassId));
+ batch.setLengthStepCaracteristic(lengthStepCaracteristic);
+
+ Serializable length = result.remove(lengthStepCaracteristic);
+ batch.setSize((Float) length);
+ }
+ }
+
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -29,7 +29,6 @@
import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
-import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import org.springframework.stereotype.Component;
import java.io.Serializable;
@@ -49,19 +48,24 @@
if (value == null) {
return;
}
- if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
- measurement.setAlphanumericalValue((String) value);
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
- measurement.setNumericalValue((Float) value);
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
- Integer qvId = null;
- if (value instanceof CaracteristicQualitativeValue) {
- qvId = Integer.valueOf(((CaracteristicQualitativeValue) value).getId());
- } else if (value instanceof Integer) {
- qvId = (Integer) value;
- }
- QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
- measurement.setQualitativeValue(qv);
+ switch (caracteristic.getCaracteristicType()) {
+
+ case NUMBER:
+ measurement.setNumericalValue((Float) value);
+ break;
+ case QUALITATIVE:
+ Integer qvId = null;
+ if (value instanceof CaracteristicQualitativeValue) {
+ qvId = Integer.valueOf(((CaracteristicQualitativeValue) value).getId());
+ } else if (value instanceof Integer) {
+ qvId = (Integer) value;
+ }
+ QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
+ measurement.setQualitativeValue(qv);
+ break;
+ case TEXT:
+ measurement.setAlphanumericalValue((String) value);
+ break;
}
}
}
Added: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SampleMeasurementPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SampleMeasurementPersistenceHelper.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SampleMeasurementPersistenceHelper.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -0,0 +1,145 @@
+package fr.ifremer.tutti.persistence.service;
+
+/*
+ * #%L
+ * Tutti :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Sets;
+import fr.ifremer.adagio.core.dao.data.measure.SampleMeasurement;
+import fr.ifremer.adagio.core.dao.data.sample.Sample;
+import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import org.hibernate.type.IntegerType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * Helper around {@link SampleMeasurement}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.6
+ */
+@Component("sampleMeasurementPersistenceHelper")
+public class SampleMeasurementPersistenceHelper extends AbstractPersistenceService {
+
+ @Autowired
+ protected ReferentialPersistenceService referentialService;
+
+ @Autowired
+ protected MeasurementPersistenceHelper measurementPersistenceHelper;
+
+ public void setSampleMeasurements(Sample target,
+ CaracteristicMap caracteristics) {
+
+ Set<SampleMeasurement> notChangedSampleMeasurements = Sets.newHashSet();
+ if (target.getSampleMeasurements() != null) {
+ notChangedSampleMeasurements.addAll(target.getSampleMeasurements());
+ }
+
+ for (Caracteristic caracteristic : caracteristics.keySet()) {
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ caracteristics.get(caracteristic));
+ notChangedSampleMeasurements.remove(vum);
+ }
+
+ if (target.getSampleMeasurements() != null &&
+ notChangedSampleMeasurements.size() > 0) {
+ target.getSampleMeasurements().removeAll(notChangedSampleMeasurements);
+ }
+ }
+
+ public void fillSampleMeasurements(CaracteristicMap result,
+ Integer sampleId) {
+ Iterator<Object[]> list = queryList(
+ "sampleMeasurements",
+ "sampleId", IntegerType.INSTANCE, sampleId);
+ while (list.hasNext()) {
+ int colIndex = 0;
+ Object[] source = list.next();
+ Integer pmfmId = (Integer) source[colIndex++];
+ Float numericalValue = (Float) source[colIndex++];
+ String alphanumericalValue = (String) source[colIndex++];
+ Integer qualitativeValueId = (Integer) source[colIndex];
+
+ Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
+ Serializable value = null;
+ switch (caracteristic.getCaracteristicType()) {
+
+ case NUMBER:
+ value = numericalValue;
+ break;
+ case QUALITATIVE:
+ value = TuttiEntities.getQualitativeValue(caracteristic,
+ qualitativeValueId);
+ break;
+ case TEXT:
+ value = alphanumericalValue;
+ break;
+ }
+ result.put(caracteristic, value);
+ }
+ }
+
+ protected SampleMeasurement setSampleMeasurement(Sample sample,
+ Caracteristic caracteristic,
+ Serializable value) {
+
+ Integer pmfmId = caracteristic.getIdAsInt();
+
+ SampleMeasurement result = null;
+ if (sample.getSampleMeasurements() != null) {
+ for (SampleMeasurement vum : sample.getSampleMeasurements()) {
+ if (pmfmId.equals(vum.getPmfm().getId())) {
+ result = vum;
+ break;
+ }
+ }
+ }
+ if (result == null) {
+
+ result = SampleMeasurement.Factory.newInstance();
+
+ result.setSample(sample);
+ if (sample.getSampleMeasurements() == null) {
+ sample.setSampleMeasurements(Sets.newHashSet(result));
+ } else {
+ sample.getSampleMeasurements().add(result);
+ }
+ result.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+ result.setDepartment(sample.getRecorderDepartment());
+ result.setPmfm(load(PmfmImpl.class, pmfmId));
+ }
+ measurementPersistenceHelper.setMeasurement(result, caracteristic, value);
+ return result;
+ }
+
+}
Property changes on: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SampleMeasurementPersistenceHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -279,11 +279,17 @@
public final Integer TRANSCRIBING_TYPE_ID_VERNACULAIRE = null;
@Value("${MatrixId.PRODUCT_BATCH}")
- public final Integer MATRIX_ID_PRODUCT_BATCH= null;
+ public final Integer MATRIX_ID_PRODUCT_BATCH = null;
- @Value("${PmfmId.SAMPLE_LENGTH_STEP}")
- public final Integer PMFM_ID_SAMPLE_LENGTH_STEP = null;
+ @Value("${PmfmId.ID_PSFM}")
+ public final Integer PMFM_ID_ID_PSFM = null;
+ @Value("${PmfmId.SAMPLE_ID}")
+ public final Integer PMFM_ID_SAMPLE_ID = null;
+
+ @Value("${PmfmId.OTOLITHE_ID}")
+ public final Integer PMFM_ID_OTOLITHE_ID = null;
+
/**
* Contract to place on enumeration that must be synched to field inside this class.
* <p/>
@@ -350,7 +356,8 @@
PMFM_ID_SIZE_CATEGORY,
PMFM_ID_MATURITY,
PMFM_ID_SEX,
- PMFM_ID_AGE
+ PMFM_ID_AGE,
+ PMFM_ID_ID_PSFM
);
pmfmIdToSampleCategory = Maps.newTreeMap();
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiPersistenceServiceLocator.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiPersistenceServiceLocator.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiPersistenceServiceLocator.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -110,6 +110,11 @@
AccidentalBatchPersistenceService.class);
}
+ public static IndividualObservationBatchPersistenceService getIndividualObservationBatchPersistenceService() {
+ return getPersistenceService("individualObservationBatchPersistenceService",
+ IndividualObservationBatchPersistenceService.class);
+ }
+
public static ProtocolPersistenceService getProtocolPersistenceService() {
return getPersistenceService("protocolPersistenceService",
ProtocolPersistenceService.class);
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImpl.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/synchro/ReferentialSynchronizeServiceImpl.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -27,7 +27,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.service.AbstractPersistenceService;
-import org.apache.commons.dbcp.BasicDataSource;
import org.hibernate.dialect.Dialect;
import org.hibernate.engine.SessionFactoryImplementor;
import org.springframework.beans.factory.annotation.Autowired;
Modified: trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-04-18 18:58:30 UTC (rev 825)
@@ -320,7 +320,7 @@
<query-param name="catchBatchId" type="java.lang.Integer"/>
</query>
- <query cacheable="true" name="allFishingOperationSamples">
+ <query cacheable="true" name="allFishingOperationSamplesWithoutBatch">
<![CDATA[
SELECT
s.id AS id,
@@ -336,6 +336,24 @@
<query-param name="fishingOperationId" type="java.lang.Integer"/>
</query>
+ <query cacheable="true" name="allFishingOperationSamplesWithBatch">
+ <![CDATA[
+ SELECT
+ s.id AS id,
+ s.referenceTaxon.id AS referenceTaxon,
+ s.comments AS comment
+ FROM
+ SampleImpl s
+ WHERE
+ s.fishingOperation.id= :fishingOperationId
+ AND s.batch.id = :batchId
+ ORDER BY
+ s.creationDate
+ ]]>
+ <query-param name="fishingOperationId" type="java.lang.Integer"/>
+ <query-param name="batchId" type="java.lang.Integer"/>
+ </query>
+
<query cacheable="true" name="sampleMeasurements">
<![CDATA[
SELECT
Modified: trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-18 18:58:30 UTC (rev 825)
@@ -385,10 +385,16 @@
#PSFM "Remis à l'eau mort ou vivant"
PmfmId.DEAD_OR_ALIVE=1393
-#TODO A creer (type alphanumeric)
-# PSFM "Classe de Taille dans captures accidentelles / données individuelles" (écran capture accidentelle / observation individuelle)
-PmfmId.SAMPLE_LENGTH_STEP=1432
+#TODO A creer (type alphanumeric) FIXME Change Id when in next db
+# PSFM "Pour référencer un autre id de pmfm"
+PmfmId.ID_PSFM=1243
+#TODO A creer (type alphanumeric) FIXME Change Id when in next db
+PmfmId.SAMPLE_ID=1424
+
+#TODO A creer (type alphanumeric) FIXME Change Id when in next db
+PmfmId.OTOLITHE_ID=1432
+
# (20=observateur volant, 95=Administrateur SIH) -> L'avantage du 20 est qu'il est inactif (=20), donc plus facilement detectable
PersonId.UNKNOWN_RECORDER_PERSON=20
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -28,8 +28,10 @@
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
@@ -37,8 +39,10 @@
import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.service.AccidentalBatchPersistenceService;
+import fr.ifremer.tutti.persistence.service.CatchBatchPersistenceService;
import fr.ifremer.tutti.persistence.service.CruisePersistenceService;
import fr.ifremer.tutti.persistence.service.FishingOperationPersistenceService;
+import fr.ifremer.tutti.persistence.service.IndividualObservationBatchPersistenceService;
import fr.ifremer.tutti.persistence.service.ProgramPersistenceService;
import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
@@ -198,17 +202,23 @@
protected FishingOperationPersistenceService fishingOperationService;
+ protected CatchBatchPersistenceService catchBatchService;
+
protected ReferentialPersistenceService referentialService;
protected AccidentalBatchPersistenceService accidentalBatchService;
+ protected IndividualObservationBatchPersistenceService individualObservationBatchService;
+
public void setUp() {
if (referentialService == null) {
referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
programService = TuttiPersistenceServiceLocator.getProgramPersistenceService();
cruiseService = TuttiPersistenceServiceLocator.getCruisePersistenceService();
fishingOperationService = TuttiPersistenceServiceLocator.getFishingOperationPersistenceService();
+ catchBatchService = TuttiPersistenceServiceLocator.getCatchBatchPersistenceService();
accidentalBatchService = TuttiPersistenceServiceLocator.getAccidentalBatchPersistenceService();
+ individualObservationBatchService = TuttiPersistenceServiceLocator.getIndividualObservationBatchPersistenceService();
}
}
@@ -355,6 +365,16 @@
return result;
}
+ public CatchBatch createCatchBatch(FishingOperation fishingOperation) {
+
+ setUp();
+
+ CatchBatch catchBatch = TuttiBeanFactory.newCatchBatch();
+ catchBatch.setFishingOperation(fishingOperation);
+ CatchBatch result = catchBatchService.createCatchBatch(catchBatch);
+ return result;
+ }
+
public AccidentalBatch createMinimalAccidentalBatch(FishingOperation fishingOperation) {
setUp();
@@ -367,4 +387,21 @@
accidentalBatchService.createAccidentalBatch(minimalAccidentalBatch);
return result;
}
+
+ public IndividualObservationBatch createMinimalIndividualObservationBatch(FishingOperation fishingOperation) {
+
+ setUp();
+
+ IndividualObservationBatch minimalAccidentalBatch = TuttiBeanFactory.newIndividualObservationBatch();
+ minimalAccidentalBatch.setFishingOperation(fishingOperation);
+ minimalAccidentalBatch.setSpecies(referentialService.getSpeciesByReferenceTaxonId(refSpeciesTaxonId()));
+ minimalAccidentalBatch.setCaracteristics(new CaracteristicMap());
+ minimalAccidentalBatch.setLengthStepCaracteristic(referentialService.getCaracteristic(refNumericalPmfmId()));
+ minimalAccidentalBatch.setSize(10.0f);
+ minimalAccidentalBatch.setWeight(5.f);
+
+ IndividualObservationBatch result =
+ individualObservationBatchService.createIndividualObservationBatch(minimalAccidentalBatch);
+ return result;
+ }
}
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -105,12 +105,13 @@
Caracteristic stringCaracteristic = referentialService.getCaracteristic(dbResource.getFixtures().refAlphanumericPmfmId());
caracteristicMap.put(stringCaracteristic, "Un texte!");
- fullAccidentalBatch.setSize(10.0f);
fullAccidentalBatch.setComment("AccidentalBatch-full");
fullAccidentalBatch.setDeadOrAlive(referentialService.getDeadOrAliveCaracteristic().getQualitativeValue(0));
fullAccidentalBatch.setGender(referentialService.getSexCaracteristic().getQualitativeValue(0));
fullAccidentalBatch.setLengthStepCaracteristic(referentialService.getCaracteristic(dbResource.getFixtures().refNumericalPmfmId()));
+ fullAccidentalBatch.setSize(10.0f);
+
fullAccidentalBatch.setWeight(5.f);
AccidentalBatch createdAccidentalBatch2 =
@@ -151,19 +152,6 @@
assertEqualsAccidentalBatch(savedAccidentalBatch, reloadedAccidentalBatch3);
}
- protected void assertEqualsAccidentalBatch(AccidentalBatch expected,
- AccidentalBatch actual) {
- Assert.assertEquals(expected, actual);
- Assert.assertEquals(expected.getSize(), actual.getSize());
- Assert.assertEquals(expected.getComment(), actual.getComment());
- Assert.assertEquals(expected.getDeadOrAlive(), actual.getDeadOrAlive());
- Assert.assertEquals(expected.getGender(), actual.getGender());
- Assert.assertEquals(expected.getLengthStepCaracteristic(), actual.getLengthStepCaracteristic());
- Assert.assertEquals(expected.getWeight(), actual.getWeight());
- Assert.assertEquals(expected.getCaracteristics(), actual.getCaracteristics());
- Assert.assertEquals(expected.getFishingOperation(), actual.getFishingOperation());
- }
-
@Test
public void deleteAccidentalBatch(/*String id*/) {
@@ -179,4 +167,18 @@
List<AccidentalBatch> allAccidentalBatch2 = service.getAllAccidentalBatch(fishingOperation.getId());
Assert.assertTrue(CollectionUtils.isEmpty(allAccidentalBatch2));
}
+
+ protected void assertEqualsAccidentalBatch(AccidentalBatch expected,
+ AccidentalBatch actual) {
+ Assert.assertEquals(expected, actual);
+ Assert.assertEquals(expected.getId(), actual.getId());
+ Assert.assertEquals(expected.getSize(), actual.getSize());
+ Assert.assertEquals(expected.getComment(), actual.getComment());
+ Assert.assertEquals(expected.getDeadOrAlive(), actual.getDeadOrAlive());
+ Assert.assertEquals(expected.getGender(), actual.getGender());
+ Assert.assertEquals(expected.getLengthStepCaracteristic(), actual.getLengthStepCaracteristic());
+ Assert.assertEquals(expected.getWeight(), actual.getWeight());
+ Assert.assertEquals(expected.getCaracteristics(), actual.getCaracteristics());
+ Assert.assertEquals(expected.getFishingOperation(), actual.getFishingOperation());
+ }
}
Added: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java (rev 0)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -0,0 +1,187 @@
+package fr.ifremer.tutti.persistence.service;
+
+/*
+ * #%L
+ * Tutti :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import org.apache.commons.collections.CollectionUtils;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+import java.util.List;
+
+/**
+ * To test {@link IndividualObservationBatchPersistenceService} for write
+ * operation.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class IndividualObservationBatchPersistenceServiceWriteTest {
+
+ @ClassRule
+ public static final DatabaseResource dbResource = DatabaseResource.writeDb();
+
+ protected IndividualObservationBatchPersistenceService service;
+
+ protected ReferentialPersistenceService referentialService;
+
+ protected FishingOperation fishingOperation;
+
+ @Before
+ public void setUp() throws Exception {
+ referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
+ service = TuttiPersistenceServiceLocator.getIndividualObservationBatchPersistenceService();
+ Cruise cruise = dbResource.getFixtures().createCruise();
+ fishingOperation = dbResource.getFixtures().createFishingOperation(cruise);
+ dbResource.getFixtures().createCatchBatch(fishingOperation);
+ }
+
+
+ @Test
+ public void createIndividualObservationBatch(/*IndividualObservationBatch bean*/) {
+
+ // -----------------------------------------------------------------------------
+ // 1. Create with only mandatory properties
+ // -----------------------------------------------------------------------------
+
+ IndividualObservationBatch createdIndividualObservationBatch = dbResource.getFixtures().createMinimalIndividualObservationBatch(fishingOperation);
+
+ Assert.assertNotNull(createdIndividualObservationBatch);
+ Assert.assertNotNull(createdIndividualObservationBatch.getId());
+
+ // reload it
+ List<IndividualObservationBatch> allIndividualObservationBatch = service.getAllIndividualObservationBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isNotEmpty(allIndividualObservationBatch));
+ IndividualObservationBatch reloadedIndividualObservationBatch = allIndividualObservationBatch.get(0);
+ reloadedIndividualObservationBatch.setFishingOperation(fishingOperation);
+ assertEqualsIndividualObservationBatch(createdIndividualObservationBatch, reloadedIndividualObservationBatch);
+
+ // -----------------------------------------------------------------------------
+ // 2. Create a full with all properties
+ // -----------------------------------------------------------------------------
+
+ IndividualObservationBatch fullIndividualObservationBatch = createdIndividualObservationBatch;
+ fullIndividualObservationBatch.setId((String) null);
+
+ CaracteristicMap caracteristicMap = new CaracteristicMap();
+ fullIndividualObservationBatch.setCaracteristics(caracteristicMap);
+
+ // add a qualitative caracteristic
+ Caracteristic maturityCaracteristic = referentialService.getMaturityCaracteristic();
+ caracteristicMap.put(maturityCaracteristic, maturityCaracteristic.getQualitativeValue(0));
+
+ // add a numeric caracteristic
+ Caracteristic ageCaracteristic = referentialService.getAgeCaracteristic();
+ caracteristicMap.put(ageCaracteristic, 10.f);
+
+ // add a string caracteristic
+ //FIXME Can't add it until we have correct pmfm id (with no collision here)
+// Caracteristic stringCaracteristic = referentialService.getCaracteristic(dbResource.getFixtures().refAlphanumericPmfmId());
+// caracteristicMap.put(stringCaracteristic, "Un texte!");
+
+ fullIndividualObservationBatch.setComment("IndividualObservationBatch-full");
+ fullIndividualObservationBatch.setSamplingCode("SamplingCode");
+ fullIndividualObservationBatch.setCalcifiedPieceSamplingCode("CalcifiedPieceSamplingCode");
+
+ fullIndividualObservationBatch.setLengthStepCaracteristic(referentialService.getCaracteristic(dbResource.getFixtures().refNumericalPmfmId()));
+ fullIndividualObservationBatch.setSize(10.0f);
+ fullIndividualObservationBatch.setWeight(5.f);
+
+ IndividualObservationBatch createdIndividualObservationBatch2 =
+ service.createIndividualObservationBatch(fullIndividualObservationBatch);
+
+ assertEqualsIndividualObservationBatch(fullIndividualObservationBatch, createdIndividualObservationBatch2);
+
+ Assert.assertNotNull(createdIndividualObservationBatch2);
+ Assert.assertNotNull(createdIndividualObservationBatch2.getId());
+ assertEqualsIndividualObservationBatch(fullIndividualObservationBatch, createdIndividualObservationBatch2);
+
+ // reload it
+ allIndividualObservationBatch = service.getAllIndividualObservationBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isNotEmpty(allIndividualObservationBatch));
+ Assert.assertEquals(2, allIndividualObservationBatch.size());
+ IndividualObservationBatch reloadedIndividualObservationBatch2 = TuttiEntities.splitById(allIndividualObservationBatch).get(createdIndividualObservationBatch2.getId());
+ reloadedIndividualObservationBatch2.setFishingOperation(fishingOperation);
+ assertEqualsIndividualObservationBatch(createdIndividualObservationBatch2, reloadedIndividualObservationBatch2);
+
+ // -----------------------------------------------------------------------------
+ // 2. Modify some properties and save
+ // -----------------------------------------------------------------------------
+ IndividualObservationBatch modifiedIndividualObservationBatch = reloadedIndividualObservationBatch2;
+ modifiedIndividualObservationBatch.setSize(15f);
+ modifiedIndividualObservationBatch.setWeight(35f);
+ fullIndividualObservationBatch.setComment("IndividualObservationBatch-modified");
+ fullIndividualObservationBatch.setSamplingCode("SamplingCode");
+ fullIndividualObservationBatch.setCalcifiedPieceSamplingCode("CalcifiedPieceSamplingCode");
+ modifiedIndividualObservationBatch.getCaracteristics().clear();
+
+ IndividualObservationBatch savedIndividualObservationBatch = service.saveIndividualObservationBatch(modifiedIndividualObservationBatch);
+ assertEqualsIndividualObservationBatch(modifiedIndividualObservationBatch, savedIndividualObservationBatch);
+
+ allIndividualObservationBatch = service.getAllIndividualObservationBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isNotEmpty(allIndividualObservationBatch));
+ IndividualObservationBatch reloadedIndividualObservationBatch3 = TuttiEntities.splitById(allIndividualObservationBatch).get(createdIndividualObservationBatch2.getId());
+ reloadedIndividualObservationBatch3.setFishingOperation(fishingOperation);
+ assertEqualsIndividualObservationBatch(savedIndividualObservationBatch, reloadedIndividualObservationBatch3);
+ }
+
+ @Test
+ public void deleteIndividualObservationBatch(/*String id*/) {
+
+ IndividualObservationBatch createdIndividualObservationBatch =
+ dbResource.getFixtures().createMinimalIndividualObservationBatch(
+ fishingOperation);
+
+ List<IndividualObservationBatch> allIndividualObservationBatch = service.getAllIndividualObservationBatch(fishingOperation.getId());
+ Assert.assertFalse(CollectionUtils.isEmpty(allIndividualObservationBatch));
+
+ service.deleteIndividualObservationBatch(createdIndividualObservationBatch.getId());
+
+ List<IndividualObservationBatch> allIndividualObservationBatch2 = service.getAllIndividualObservationBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isEmpty(allIndividualObservationBatch2));
+ }
+
+ protected void assertEqualsIndividualObservationBatch(IndividualObservationBatch expected,
+ IndividualObservationBatch actual) {
+ Assert.assertEquals(expected, actual);
+ Assert.assertEquals(expected.getId(), actual.getId());
+ Assert.assertEquals(expected.getSize(), actual.getSize());
+ Assert.assertEquals(expected.getComment(), actual.getComment());
+ Assert.assertEquals(expected.getSamplingCode(), actual.getSamplingCode());
+ Assert.assertEquals(expected.getCalcifiedPieceSamplingCode(), actual.getCalcifiedPieceSamplingCode());
+ Assert.assertEquals(expected.getLengthStepCaracteristic(), actual.getLengthStepCaracteristic());
+ Assert.assertEquals(expected.getWeight(), actual.getWeight());
+ Assert.assertEquals(expected.getCaracteristics(), actual.getCaracteristics());
+ Assert.assertEquals(expected.getFishingOperation(), actual.getFishingOperation());
+ }
+}
Property changes on: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceWriteTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceReadTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceReadTest.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceReadTest.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -32,7 +32,6 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
-import org.junit.Ignore;
import org.junit.Test;
import java.util.List;
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceWriteTest.java 2013-04-18 16:00:29 UTC (rev 824)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceWriteTest.java 2013-04-18 18:58:30 UTC (rev 825)
@@ -32,7 +32,6 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -203,7 +202,7 @@
bp2.setSizeEnabled(true);
bp2.setWeightEnabled(true);
protocol.addBenthos(bp2);
-
+
return protocol;
}
}
1
0
r824 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency
by kmorin@users.forge.codelutin.com 18 Apr '13
by kmorin@users.forge.codelutin.com 18 Apr '13
18 Apr '13
Author: kmorin
Date: 2013-04-18 18:00:29 +0200 (Thu, 18 Apr 2013)
New Revision: 824
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/824
Log:
fixes #2332 [CAPTURES] - Mensurations - d?\195?\169clenchement d'une erreur quand on ne met pas de classe de taille sur une ligne
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java 2013-04-18 15:47:15 UTC (rev 823)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java 2013-04-18 16:00:29 UTC (rev 824)
@@ -130,14 +130,13 @@
// add new row to cache
Float lengthStep = newValue.getLengthStep();
- Preconditions.checkNotNull(lengthStep,
- "can't add a null lengthStep row");
+ if (lengthStep != null) {
+ float roundLenghtValue = uiModel.getLengthStep(lengthStep);
- float roundLenghtValue = uiModel.getLengthStep(lengthStep);
+ if (!rowCache.containsKey(roundLenghtValue)) {
- if (!rowCache.containsKey(roundLenghtValue)) {
-
- rowCache.put(roundLenghtValue, newValue);
+ rowCache.put(roundLenghtValue, newValue);
+ }
}
}
}
\ No newline at end of file
1
0
r823 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content java/fr/ifremer/tutti/ui/swing/content/home java/fr/ifremer/tutti/ui/swing/content/referential resources/i18n
by kmorin@users.forge.codelutin.com 18 Apr '13
by kmorin@users.forge.codelutin.com 18 Apr '13
18 Apr '13
Author: kmorin
Date: 2013-04-18 17:47:15 +0200 (Thu, 18 Apr 2013)
New Revision: 823
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/823
Log:
replace strings by i18n keys
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.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-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -84,7 +84,7 @@
if (callback.isDbInstalled()) {
- progressionModel.setMessage("Ouverture de la base de données");
+ progressionModel.setMessage(_("tutti.dbManager.action.upgradeDb.opening"));
getContext().setDbExist(true);
@@ -93,13 +93,13 @@
} else if (callback.isDbUpdated()) {
- progressionModel.setMessage("Rechargement de la base de données");
+ progressionModel.setMessage(_("tutti.dbManager.action.upgradeDb.reloading"));
// open db
TuttiActionHelper.runInternalAction(getHandler(), OpenDbAction.class);
} else {
- sendMessage("Aucune mise à jour de base détectée.");
+ sendMessage(_("tutti.dbManager.action.upgradeDb.upToDate"));
}
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -102,8 +102,13 @@
getContext().getTuttiProtocolImportExportService();
service.exportProtocol(protocol, file);
- sendMessage(_("tutti.exportProtocol.action.success", protocol.getName(), file.getName()));
-
getHandler().resetEditProtolAction();
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ TuttiProtocol protocol = getModel().getProtocol();
+ sendMessage(_("tutti.exportProtocol.action.success", protocol.getName(), file.getName()));
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -86,6 +86,6 @@
@Override
public void postSuccessAction() {
super.postSuccessAction();
- sendMessage(_("tutti.sendCruiseReport.action.success", file.getName()));
+ sendMessage(_("tutti.sendCruiseReport.action.success", file));
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -103,7 +103,11 @@
getContext().getTuttiReferentialImportExportService();
service.exportTemporaryGearExample(file);
- sendMessage("Exemple de référentiel temporaire d'engins exporté " +
- "dans le fichier " + file + ".");
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialGearFile.export.success", file));
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -104,8 +104,11 @@
getContext().getTuttiReferentialImportExportService();
service.exportTemporaryPersonExample(file);
+ }
- sendMessage("Exemple de référentiel temporaire de personnes exporté " +
- "dans le fichier " + file + ".");
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.export.success", file));
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -103,8 +103,11 @@
getContext().getTuttiReferentialImportExportService();
service.exportTemporarySpeciesExample(file);
+ }
- sendMessage("Exemple de référentiel temporaire d'espèces exporté " +
- "dans le fichier " + file + ".");
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.export.success", file));
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -103,8 +103,11 @@
getContext().getTuttiReferentialImportExportService();
service.exportTemporaryVesselExample(file);
+ }
- sendMessage("Exemple de référentiel temporaire de navires exporté " +
- "dans le fichier " + file + ".");
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.export.success", file));
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -95,7 +95,12 @@
// reset ui cache
getDataContext().resetGears();
- sendMessage("Référentiel temporaire d'engins importé depuis le " +
- "fichier " + file + ".");
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialGearFile.import.success", file));
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -95,7 +95,11 @@
// reset ui cache
getDataContext().resetPersons();
- sendMessage("Référentiel temporaire de personnes importé depuis le " +
- "fichier " + file + ".");
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.import.success", file));
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -94,7 +94,11 @@
// reset ui cache
getDataContext().resetSpecies();
- sendMessage("Référentiel temporaire d'espèces importé depuis le " +
- "fichier " + file + ".");
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.import.success", file));
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java 2013-04-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java 2013-04-18 15:47:15 UTC (rev 823)
@@ -94,7 +94,11 @@
// reset ui cache
getDataContext().resetVessels();
- sendMessage("Référentiel temporaire de navires importé depuis le " +
- "fichier " + file + ".");
}
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import.success", file));
+ }
}
\ No newline at end of file
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-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-18 15:47:15 UTC (rev 823)
@@ -223,7 +223,10 @@
tutti.dbManager.action.openDb.tip=
tutti.dbManager.action.upgradeDb=
tutti.dbManager.action.upgradeDb.mnemonic=
+tutti.dbManager.action.upgradeDb.opening=
+tutti.dbManager.action.upgradeDb.reloading=
tutti.dbManager.action.upgradeDb.tip=
+tutti.dbManager.action.upgradeDb.upToDate=
tutti.dbManager.info.db.loaded=
tutti.dbManager.info.no.db.exist=
tutti.dbManager.info.no.db.loaded=
@@ -972,9 +975,21 @@
tutti.main.title.selectedProgram=
tutti.main.title.selectedProtocol=
tutti.manageTemporaryReferential.action.chooseReferentialGearFile=
+tutti.manageTemporaryReferential.action.chooseReferentialGearFile.export.success=
+tutti.manageTemporaryReferential.action.chooseReferentialGearFile.import.success=
+tutti.manageTemporaryReferential.action.chooseReferentialGearFile.success=
tutti.manageTemporaryReferential.action.chooseReferentialPersonFile=
+tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.export.success=
+tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.import.success=
+tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.success=
tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile=
+tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.export.success=
+tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.import.success=
+tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.success=
tutti.manageTemporaryReferential.action.chooseReferentialVesselFile=
+tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.export.success=
+tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import.success=
+tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.success=
tutti.manageTemporaryReferential.action.exportTemporaryGearExample=
tutti.manageTemporaryReferential.action.exportTemporaryGearExample.mnemonic=
tutti.manageTemporaryReferential.action.exportTemporaryGearExample.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-18 15:22:51 UTC (rev 822)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-18 15:47:15 UTC (rev 823)
@@ -1,4 +1,4 @@
-swing.error.cannot.mail=Aucun programme n'est défini pour envoyer des emails.
+swing.error.cannot.mail=Erreur lors de l'ouverture du client mail.
swing.error.cannot.open.file=Aucun programme n'est défini pour ouvrir ce type de fichier. Enregistrez le fichier et ouvrez le en dehors de Tutti.
swing.error.cannot.open.link=Impossible d'ouvrir le fichier %s.
swing.error.desktop.browse.not.supported=Le navigateur n'a pas pu être ouvert. Vérifiez que vous avez défini un navigateur par défaut dans votre système.
@@ -224,7 +224,10 @@
tutti.dbManager.action.openDb.tip=Ouvrir la base de données
tutti.dbManager.action.upgradeDb=Vérifier les mises à jour
tutti.dbManager.action.upgradeDb.mnemonic=V
+tutti.dbManager.action.upgradeDb.opening=Ouverture de la base de données
+tutti.dbManager.action.upgradeDb.reloading=Rechargement de la base de données
tutti.dbManager.action.upgradeDb.tip=Mettre à jour les référentiels si nécessaire
+tutti.dbManager.action.upgradeDb.upToDate=Aucune mise à jour de base détectée.
tutti.dbManager.info.db.loaded=<html>Tutti est connecté à une base de données<hr/>Url de connexion \: <strong>%s</strong></html>
tutti.dbManager.info.no.db.exist=Aucune base détectée, vous pouvez installer la dernière disponible sur le réseau ou bien en importer une.
tutti.dbManager.info.no.db.loaded=Tutti possède une base mais elle n'est pas actuellement ouverte.
@@ -970,9 +973,17 @@
tutti.main.title.selectedProgram=Série de campagne %s
tutti.main.title.selectedProtocol=Protocole %s
tutti.manageTemporaryReferential.action.chooseReferentialGearFile=Choisir le fichier de référentiel engin
+tutti.manageTemporaryReferential.action.chooseReferentialGearFile.export.success=Exemple de référentiel temporaire d'engins exporté dans le fichier %s
+tutti.manageTemporaryReferential.action.chooseReferentialGearFile.import.success=Référentiel temporaire d'engins importé depuis le fichier %s
tutti.manageTemporaryReferential.action.chooseReferentialPersonFile=Choisir le fichier de référentiel personne
+tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.export.success=Exemple de référentiel temporaire de personnes exporté dans le fichier %s
+tutti.manageTemporaryReferential.action.chooseReferentialPersonFile.import.success=Référentiel temporaire de personnes importé depuis le fichier %s
tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile=Choisir le fichier de référentiel espèce
+tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.export.success=Exemple de référentiel temporaire d'espèces exporté dans le fichier %s
+tutti.manageTemporaryReferential.action.chooseReferentialSpeciesFile.import.success=Référentiel temporaire d'espèces importé depuis le fichier %s
tutti.manageTemporaryReferential.action.chooseReferentialVesselFile=Choisir le fichier de référentiel navire
+tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.export.success=Exemple de référentiel temporaire de navires exporté dans le fichier %s
+tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import.success=Référentiel temporaire de navires importé depuis le fichier %s
tutti.manageTemporaryReferential.action.exportTemporaryGearExample=Exporter
tutti.manageTemporaryReferential.action.exportTemporaryGearExample.mnemonic=E
tutti.manageTemporaryReferential.action.exportTemporaryGearExample.tip=Exporter un exemple de référentiel Engin
1
0
r822 - in trunk/tutti-persistence/src: main/java/fr/ifremer/tutti/persistence/service main/java/fr/ifremer/tutti/persistence/service/batch main/java/fr/ifremer/tutti/persistence/service/measure main/resources test/java/fr/ifremer/tutti/persistence test/java/fr/ifremer/tutti/persistence/service
by tchemit@users.forge.codelutin.com 18 Apr '13
by tchemit@users.forge.codelutin.com 18 Apr '13
18 Apr '13
Author: tchemit
Date: 2013-04-18 17:22:51 +0200 (Thu, 18 Apr 2013)
New Revision: 822
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/822
Log:
refs #1866: [CAPTURE] - Captures accidentelles
Added:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java
trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -26,15 +26,48 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import fr.ifremer.adagio.core.dao.administration.programStrategy.Program;
+import fr.ifremer.adagio.core.dao.administration.user.DepartmentImpl;
+import fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
+import fr.ifremer.adagio.core.dao.data.measure.SampleMeasurement;
+import fr.ifremer.adagio.core.dao.data.operation.FishingOperationDao;
+import fr.ifremer.adagio.core.dao.data.operation.FishingOperationImpl;
+import fr.ifremer.adagio.core.dao.data.sample.Sample;
+import fr.ifremer.adagio.core.dao.data.sample.SampleDao;
+import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.Matrix;
+import fr.ifremer.adagio.core.dao.referential.pmfm.MatrixImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm;
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmDao;
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.Unit;
+import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
+import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.hibernate.FlushMode;
+import org.hibernate.type.IntegerType;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataRetrievalFailureException;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
-import java.util.UUID;
+import java.util.Map;
+import java.util.Set;
/**
* @author tchemit <chemit(a)codelutin.com>
@@ -48,23 +81,77 @@
LogFactory.getLog(AccidentalBatchPersistenceServiceImpl.class);
@Autowired
+ protected ReferentialPersistenceService referentialService;
+
+ @Autowired
protected AttachmentPersistenceService attachmentPersistenceService;
+ @Autowired
+ protected MeasurementPersistenceHelper measurementPersistenceHelper;
+
+ @Resource(name = "fishingOperationDao")
+ protected FishingOperationDao fishingOperationDao;
+
+ @Resource(name = "sampleDao")
+ protected SampleDao sampleDao;
+
+ @Resource(name = "pmfmDao")
+ protected PmfmDao pmfmDao;
+
@Override
public List<AccidentalBatch> getAllAccidentalBatch(String fishingOperationId) {
Preconditions.checkNotNull(fishingOperationId);
+
+ Iterator<Object[]> list = queryList(
+ "allFishingOperationSamples",
+ "fishingOperationId", IntegerType.INSTANCE, Integer.valueOf(fishingOperationId)
+ );
+
List<AccidentalBatch> result = Lists.newArrayList();
- // TODO
- return result;
+ while (list.hasNext()) {
+ Object[] source = list.next();
+
+ AccidentalBatch accidentalBatch = TuttiBeanFactory.newAccidentalBatch();
+
+ int colIndex = 0;
+
+ // Id
+ accidentalBatch.setId((Integer) source[colIndex++]);
+
+ // TaxonId
+ Integer taxonId = (Integer) source[colIndex++];
+ Species species = referentialService.getSpeciesByReferenceTaxonId(taxonId);
+ accidentalBatch.setSpecies(species);
+
+ // Comment
+ accidentalBatch.setComment((String) source[colIndex]);
+
+ // Sample Measurements
+ accidentalBatch.setCaracteristics(new CaracteristicMap());
+
+ // fill all measurements
+ fillSampleMeasurements(accidentalBatch);
+
+ result.add(accidentalBatch);
+ }
+ return Collections.unmodifiableList(result);
}
@Override
public AccidentalBatch createAccidentalBatch(AccidentalBatch bean) {
Preconditions.checkNotNull(bean);
Preconditions.checkState(TuttiEntities.isNew(bean));
- // TODO
- bean.setId(UUID.randomUUID().toString());
+ Preconditions.checkNotNull(bean.getSpecies());
+ Preconditions.checkNotNull(bean.getFishingOperation());
+ Preconditions.checkState(!TuttiEntities.isNew(bean.getFishingOperation()));
+
+ getCurrentSession().setFlushMode(FlushMode.COMMIT);
+ Sample sample = Sample.Factory.newInstance();
+ beanToEntity(bean, sample);
+ sampleDao.create(sample);
+ bean.setId(String.valueOf(sample.getId()));
+ getCurrentSession().flush();
return bean;
}
@@ -72,14 +159,372 @@
public AccidentalBatch saveAccidentalBatch(AccidentalBatch bean) {
Preconditions.checkNotNull(bean);
Preconditions.checkState(!TuttiEntities.isNew(bean));
- // TODO
+ Preconditions.checkNotNull(bean.getSpecies());
+ Preconditions.checkNotNull(bean.getFishingOperation());
+ Preconditions.checkState(!TuttiEntities.isNew(bean.getFishingOperation()));
+
+ getCurrentSession().setFlushMode(FlushMode.COMMIT);
+ Sample sample = sampleDao.load(bean.getIdAsInt());
+ if (sample == null) {
+ throw new DataRetrievalFailureException("Could not retrieve sample id=" + bean.getId());
+ }
+ beanToEntity(bean, sample);
+ sampleDao.update(sample);
+ getCurrentSession().flush();
return bean;
}
@Override
public void deleteAccidentalBatch(String id) {
Preconditions.checkNotNull(id);
- // TODO
- attachmentPersistenceService.deleteAllAttachment(Integer.valueOf(id));
+
+ Integer accidentalId = Integer.valueOf(id);
+ sampleDao.remove(accidentalId);
+ attachmentPersistenceService.deleteAllAttachment(accidentalId);
}
+
+ protected void beanToEntity(AccidentalBatch source, Sample target) {
+
+ if (TuttiEntities.isNew(source)) {
+
+ // operation
+
+ fr.ifremer.adagio.core.dao.data.operation.FishingOperation fishingOperation;
+
+ fishingOperation = load(FishingOperationImpl.class, source.getFishingOperation().getIdAsInt());
+ fishingOperation.getSamples().add(target); // Inverse link
+
+ // Link to parent operation
+ target.setFishingOperation(fishingOperation);
+
+ // Label
+ String label = fishingOperation.getId() + "_" + source.getSpecies().getReferenceTaxonId();
+ target.setLabel(label);
+
+ // Matrix (product / batch)
+ Matrix matrix = load(MatrixImpl.class, enumeration.MATRIX_ID_PRODUCT_BATCH);
+ target.setMatrix(matrix);
+
+ // IndividualCount
+ target.setIndividualCount((short) 1);
+
+ // Quality Flag
+ target.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+
+ // Sample Date
+ if (target.getSampleDate() == null) {
+ target.setSampleDate(fishingOperation.getFishingStartDateTime());
+ }
+
+ // Create Date
+ target.setCreationDate(fishingOperation.getFishingStartDateTime());
+
+ // Recorder Departement
+ target.setRecorderDepartment(load(DepartmentImpl.class,
+ enumeration.DEPARTMENT_ID_UNKNOWN_RECORDER_DEPARTMENT));
+
+ // Recorder Person
+ target.setRecorderPerson(load(PersonImpl.class,
+ enumeration.PERSON_ID_UNKNOWN_RECORDER_PERSON));
+
+ // Program
+ Program program = fishingOperation.getFishingTrip().getProgram();
+ target.setProgram(program);
+ }
+
+ // Id
+ target.setId(source.getIdAsInt());
+
+
+ // Size
+ // Size Unit
+ if (source.getSize() == null) {
+
+ // no size
+ target.setSize(null);
+ target.setSizeUnit(null);
+ } else {
+
+ target.setSize(source.getSize());
+
+ Caracteristic lengthStepCaracteristic =
+ source.getLengthStepCaracteristic();
+
+ if (lengthStepCaracteristic != null) {
+ Pmfm pmfm = pmfmDao.load(lengthStepCaracteristic.getIdAsInt());
+
+ Unit unit = pmfm.getUnit();
+ target.setSizeUnit(unit);
+ } else {
+
+ if (log.isWarnEnabled()) {
+ log.warn("There is a size but no lengthStepCaracteristic, " +
+ "will nullify the unit.");
+ }
+ target.setSizeUnit(null);
+ }
+ }
+
+ // Synchronization Status
+ target.setSynchronizationStatus(SynchronizationStatus.DIRTY.getValue());
+
+ // Comment
+ target.setComments(source.getComment());
+
+ // ReferenceTaxon
+ Species species = source.getSpecies();
+ Integer referenceTaxonId = species.getReferenceTaxonId();
+ target.setReferenceTaxon(load(ReferenceTaxonImpl.class, referenceTaxonId));
+
+ // Taxongroup TODO
+
+ // FishingAreas TODO
+
+ // SampleMeasurement
+
+ Set<SampleMeasurement> notChangedSampleMeasurements = Sets.newHashSet();
+ if (target.getSampleMeasurements() != null) {
+ notChangedSampleMeasurements.addAll(target.getSampleMeasurements());
+ }
+
+ CaracteristicMap caracteristics = source.getCaracteristics();
+ if (caracteristics != null && caracteristics.size() > 0) {
+ for (Caracteristic caracteristic : caracteristics.keySet()) {
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ caracteristics.get(caracteristic));
+ notChangedSampleMeasurements.remove(vum);
+ }
+ }
+
+ if (source.getDeadOrAlive() != null) {
+
+ // add it as a measurement
+
+ Caracteristic caracteristic =
+ referentialService.getDeadOrAliveCaracteristic();
+
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ source.getDeadOrAlive());
+ notChangedSampleMeasurements.remove(vum);
+ }
+
+ if (source.getGender() != null) {
+
+ // add it as a measurement
+
+ Caracteristic caracteristic =
+ referentialService.getSexCaracteristic();
+
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ source.getGender());
+ notChangedSampleMeasurements.remove(vum);
+ }
+
+ if (source.getWeight() != null) {
+
+ // add it as a measurement
+
+ Caracteristic caracteristic =
+ referentialService.getCaracteristic(enumeration.PMFM_ID_WEIGHT_MEASURED);
+
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ source.getWeight());
+ notChangedSampleMeasurements.remove(vum);
+ }
+
+ if (source.getLengthStepCaracteristic() != null) {
+
+ // add it as a measurement
+
+ Caracteristic caracteristic =
+ referentialService.getCaracteristic(enumeration.PMFM_ID_SAMPLE_LENGTH_STEP);
+
+ SampleMeasurement vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ source.getLengthStepCaracteristic().getId());
+ notChangedSampleMeasurements.remove(vum);
+
+ caracteristic = source.getLengthStepCaracteristic();
+ vum = setSampleMeasurement(
+ target,
+ caracteristic,
+ source.getSize());
+ notChangedSampleMeasurements.remove(vum);
+
+ }
+
+ // ----------------------------------------------------------------
+ // Removed unecessary *SampleMeasurement* ---
+ // ----------------------------------------------------------------
+
+ if (target.getSampleMeasurements() != null &&
+ notChangedSampleMeasurements.size() > 0) {
+ target.getSampleMeasurements().removeAll(notChangedSampleMeasurements);
+ }
+ }
+
+ protected void fillSampleMeasurements(AccidentalBatch accidentalBatch) {
+
+ Caracteristic deadOrAliveCaracteristic = referentialService.getDeadOrAliveCaracteristic();
+ Map<String, CaracteristicQualitativeValue> deadOrAliveValues = TuttiEntities.splitById(deadOrAliveCaracteristic.getQualitativeValue());
+
+ Caracteristic genderCaracteristic = referentialService.getSexCaracteristic();
+ Map<String, CaracteristicQualitativeValue> genderValues = TuttiEntities.splitById(genderCaracteristic.getQualitativeValue());
+
+ Iterator<Object[]> list = queryList(
+ "sampleMeasurements",
+ "sampleId", IntegerType.INSTANCE, accidentalBatch.getIdAsInt());
+
+ CaracteristicMap result = accidentalBatch.getCaracteristics();
+ while (list.hasNext()) {
+ int colIndex = 0;
+ Object[] source = list.next();
+ Integer pmfmId = (Integer) source[colIndex++];
+ Float numericalValue = (Float) source[colIndex++];
+ String alphanumericalValue = (String) source[colIndex++];
+ Integer qualitativeValueId = (Integer) source[colIndex];
+
+ // dead or alive
+ if (enumeration.PMFM_ID_DEAD_OR_ALIVE.equals(pmfmId)) {
+
+ CaracteristicQualitativeValue caracteristicQualitativeValue = deadOrAliveValues.get(qualitativeValueId.toString());
+ accidentalBatch.setDeadOrAlive(caracteristicQualitativeValue);
+
+ continue;
+ }
+
+ // gender
+ if (enumeration.PMFM_ID_SEX.equals(pmfmId)) {
+
+ CaracteristicQualitativeValue caracteristicQualitativeValue = genderValues.get(qualitativeValueId.toString());
+ accidentalBatch.setGender(caracteristicQualitativeValue);
+ continue;
+ }
+
+ // weight
+ if (enumeration.PMFM_ID_WEIGHT_MEASURED.equals(pmfmId)) {
+
+ accidentalBatch.setWeight(numericalValue);
+ continue;
+ }
+
+ // length step
+ if (enumeration.PMFM_ID_SAMPLE_LENGTH_STEP.equals(pmfmId)) {
+
+ Caracteristic lengthStepCaracteristic = referentialService.getCaracteristic(Integer.valueOf(alphanumericalValue));
+ accidentalBatch.setLengthStepCaracteristic(lengthStepCaracteristic);
+ continue;
+ }
+
+ // other sample measurements
+
+ Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
+ Serializable value = null;
+ if (CaracteristicType.NUMBER == caracteristic.getCaracteristicType()) {
+ value = numericalValue;
+ } else if (CaracteristicType.TEXT == caracteristic.getCaracteristicType()) {
+ value = alphanumericalValue;
+ } else if (CaracteristicType.QUALITATIVE == caracteristic.getCaracteristicType()) {
+ for (CaracteristicQualitativeValue qv : caracteristic.getQualitativeValue()) {
+ if (qualitativeValueId.equals(qv.getIdAsInt())) {
+ value = qv;
+ break;
+ }
+ }
+ }
+ result.put(caracteristic, value);
+ }
+
+ Caracteristic lengthStepCaracteristic = accidentalBatch.getLengthStepCaracteristic();
+ if (lengthStepCaracteristic != null) {
+
+ // get size from result
+ Serializable length = result.remove(lengthStepCaracteristic);
+ accidentalBatch.setSize((Float) length);
+ }
+ }
+
+ protected SampleMeasurement getSampleMeasurement(Sample sample,
+ Integer pmfmId,
+ boolean createIfNotExists) {
+ SampleMeasurement result = null;
+ if (sample.getSampleMeasurements() != null) {
+ for (SampleMeasurement vum : sample.getSampleMeasurements()) {
+ if (pmfmId.equals(vum.getPmfm().getId())) {
+ result = vum;
+ break;
+ }
+ }
+ }
+ if (result == null) {
+ if (!createIfNotExists) {
+ return null;
+ }
+ result = SampleMeasurement.Factory.newInstance();
+
+ result.setSample(sample);
+ if (sample.getSampleMeasurements() == null) {
+ sample.setSampleMeasurements(Sets.newHashSet(result));
+ } else {
+ sample.getSampleMeasurements().add(result);
+ }
+ result.setQualityFlag(load(QualityFlagImpl.class, enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+ result.setDepartment(sample.getRecorderDepartment());
+ result.setPmfm(load(PmfmImpl.class, pmfmId));
+ }
+
+ return result;
+ }
+
+ protected SampleMeasurement setSampleMeasurement(Sample sample,
+ Integer pmfmId,
+ Float numericalValue,
+ String alphanumericalValue,
+ Integer qualitativevalueId) {
+ SampleMeasurement result = getSampleMeasurement(sample, pmfmId, true);
+
+ if (alphanumericalValue != null) {
+ result.setAlphanumericalValue(alphanumericalValue);
+ } else if (numericalValue != null) {
+ result.setNumericalValue(numericalValue);
+ } else if (qualitativevalueId != null) {
+ result.setQualitativeValue(load(QualitativeValueImpl.class, qualitativevalueId));
+ }
+
+ return result;
+ }
+
+ protected SampleMeasurement setSampleMeasurement(Sample sample,
+ Integer pmfmId,
+ Serializable value) {
+ SampleMeasurement result = getSampleMeasurement(sample, pmfmId, true);
+
+ if (value instanceof String) {
+ result.setAlphanumericalValue((String) value);
+ } else if (value instanceof Float) {
+ result.setNumericalValue((Float) value);
+ } else if (value instanceof Integer) {
+ result.setQualitativeValue(load(QualitativeValueImpl.class, value));
+ }
+
+ return result;
+ }
+
+ protected SampleMeasurement setSampleMeasurement(Sample sample,
+ Caracteristic caracteristic,
+ Serializable value) {
+ SampleMeasurement result = getSampleMeasurement(sample, caracteristic.getIdAsInt(), true);
+ measurementPersistenceHelper.setMeasurement(result, caracteristic, value);
+ return result;
+ }
+
}
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-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -34,7 +34,6 @@
import fr.ifremer.adagio.core.dao.data.fishingArea.FishingArea2RegulationLocationPK;
import fr.ifremer.adagio.core.dao.data.measure.GearPhysicalMeasurement;
import fr.ifremer.adagio.core.dao.data.measure.GearUseMeasurement;
-import fr.ifremer.adagio.core.dao.data.measure.Measurement;
import fr.ifremer.adagio.core.dao.data.measure.VesselUseMeasurement;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperationDao;
import fr.ifremer.adagio.core.dao.data.operation.Operation;
@@ -114,6 +113,9 @@
@Autowired
protected VesselPersonFeaturesPersistenceHelper vesselPersonFeaturesPersistenceHelper;
+ @Autowired
+ protected MeasurementPersistenceHelper measurementPersistenceHelper;
+
@Resource(name = "scientificCruiseDao")
protected ScientificCruiseDao scientificCruiseDao;
@@ -1110,29 +1112,29 @@
protected VesselUseMeasurement setVesselUseMeasurement(ScientificCruise scientificCruise, VesselUseFeatures vesselUseFeatures,
Caracteristic caracteristic, Serializable value) {
VesselUseMeasurement vesselUseMeasurement = getVesselUseMeasurement(scientificCruise, vesselUseFeatures, Integer.valueOf(caracteristic.getId()), true);
- setMeasurement(vesselUseMeasurement, caracteristic, value);
+ measurementPersistenceHelper.setMeasurement(vesselUseMeasurement, caracteristic, value);
return vesselUseMeasurement;
}
- protected void setMeasurement(Measurement measurement, Caracteristic caracteristic, Serializable value) {
- if (value == null) {
- return;
- }
- if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
- measurement.setAlphanumericalValue((String) value);
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
- measurement.setNumericalValue((Float) value);
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
- Integer qvId = null;
- if (value instanceof CaracteristicQualitativeValue) {
- qvId = Integer.valueOf(((CaracteristicQualitativeValue) value).getId());
- } else if (value instanceof Integer) {
- qvId = (Integer) value;
- }
- QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
- measurement.setQualitativeValue(qv);
- }
- }
+// protected void setMeasurement(Measurement measurement, Caracteristic caracteristic, Serializable value) {
+// if (value == null) {
+// return;
+// }
+// if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+// measurement.setAlphanumericalValue((String) value);
+// } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+// measurement.setNumericalValue((Float) value);
+// } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
+// Integer qvId = null;
+// if (value instanceof CaracteristicQualitativeValue) {
+// qvId = Integer.valueOf(((CaracteristicQualitativeValue) value).getId());
+// } else if (value instanceof Integer) {
+// qvId = (Integer) value;
+// }
+// QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
+// measurement.setQualitativeValue(qv);
+// }
+// }
protected GearUseMeasurement setGearUseMeasurement(ScientificCruise scientificCruise, GearUseFeatures gearUseFeatures,
Integer pmfmId,
@@ -1156,7 +1158,7 @@
protected GearUseMeasurement setGearUseMeasurement(ScientificCruise scientificCruise, GearUseFeatures gearUseFeatures,
Caracteristic caracteristic, Serializable value) {
GearUseMeasurement gearUseMeasurement = getGearUseMeasurement(scientificCruise, gearUseFeatures, Integer.valueOf(caracteristic.getId()), true);
- setMeasurement(gearUseMeasurement, caracteristic, value);
+ measurementPersistenceHelper.setMeasurement(gearUseMeasurement, caracteristic, value);
return gearUseMeasurement;
}
Added: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -0,0 +1,67 @@
+package fr.ifremer.tutti.persistence.service;
+
+/*
+ * #%L
+ * Tutti :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.adagio.core.dao.data.measure.Measurement;
+import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValue;
+import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+
+/**
+ * Helper around {@link Measurement}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+@Component("measurementPersistenceHelper")
+public class MeasurementPersistenceHelper extends AbstractPersistenceService {
+
+ public void setMeasurement(Measurement measurement,
+ Caracteristic caracteristic,
+ Serializable value) {
+ if (value == null) {
+ return;
+ }
+ if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+ measurement.setAlphanumericalValue((String) value);
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+ measurement.setNumericalValue((Float) value);
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
+ Integer qvId = null;
+ if (value instanceof CaracteristicQualitativeValue) {
+ qvId = Integer.valueOf(((CaracteristicQualitativeValue) value).getId());
+ } else if (value instanceof Integer) {
+ qvId = (Integer) value;
+ }
+ QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
+ measurement.setQualitativeValue(qv);
+ }
+ }
+}
Property changes on: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/MeasurementPersistenceHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -278,6 +278,12 @@
@Value("${TranscribingTypeId.TAXINOMIE_COMMUN_NOM_VERNACULAIRE}")
public final Integer TRANSCRIBING_TYPE_ID_VERNACULAIRE = null;
+ @Value("${MatrixId.PRODUCT_BATCH}")
+ public final Integer MATRIX_ID_PRODUCT_BATCH= null;
+
+ @Value("${PmfmId.SAMPLE_LENGTH_STEP}")
+ public final Integer PMFM_ID_SAMPLE_LENGTH_STEP = null;
+
/**
* Contract to place on enumeration that must be synched to field inside this class.
* <p/>
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.persistence.service;
+/*
+ * #%L
+ * Tutti :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperation;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
Property changes on: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -30,17 +30,16 @@
import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatchExtendDao;
import fr.ifremer.adagio.core.dao.data.batch.SortingBatch;
-import fr.ifremer.adagio.core.dao.data.measure.Measurement;
import fr.ifremer.adagio.core.dao.data.measure.SortingMeasurement;
import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValue;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.service.AbstractPersistenceService;
+import fr.ifremer.tutti.persistence.service.MeasurementPersistenceHelper;
import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Component;
@@ -70,6 +69,9 @@
@Resource(name = "catchBatchDao")
protected CatchBatchExtendDao catchBatchDao;
+ @Autowired
+ protected MeasurementPersistenceHelper measurementPersistenceHelper;
+
public List<SortingBatch> getFrequencyChilds(SortingBatch sortingBatch) {
List<SortingBatch> result = Lists.newArrayList();
@@ -82,18 +84,6 @@
return result;
}
-// public List<SortingBatch> getNotFrequencyChilds(SortingBatch sortingBatch) {
-// List<SortingBatch> result = Lists.newArrayList();
-//
-// for (Batch batch : sortingBatch.getChildBatchs()) {
-// SortingBatch child = (SortingBatch) batch;
-// if (isFrequencyBatch(child)) {
-// result.add(child);
-// }
-// }
-// return result;
-// }
-
public List<SortingBatch> getFrequencies(String batchId) {
Preconditions.checkNotNull(batchId);
Integer sortingBatchId = Integer.valueOf(batchId);
@@ -216,28 +206,28 @@
return enumeration.DEPARTMENT_ID_UNKNOWN_RECORDER_DEPARTMENT;
}
- public void setMeasurement(Measurement measurement,
- Caracteristic caracteristic,
- Serializable value) {
- if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
- measurement.setAlphanumericalValue((String) value);
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
- measurement.setNumericalValue((Float) value);
- } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
- Integer qvId;
- if (value instanceof CaracteristicQualitativeValue) {
- qvId = ((CaracteristicQualitativeValue) value).getIdAsInt();
- } else if (value instanceof Integer) {
- qvId = (Integer) value;
- }
- // TODO BL : not used ? => to remove
- else {
- qvId = Integer.valueOf(value.toString());
- }
- QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
- measurement.setQualitativeValue(qv);
- }
- }
+// public void setMeasurement(Measurement measurement,
+// Caracteristic caracteristic,
+// Serializable value) {
+// if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+// measurement.setAlphanumericalValue((String) value);
+// } else if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+// measurement.setNumericalValue((Float) value);
+// } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
+// Integer qvId;
+// if (value instanceof CaracteristicQualitativeValue) {
+// qvId = ((CaracteristicQualitativeValue) value).getIdAsInt();
+// } else if (value instanceof Integer) {
+// qvId = (Integer) value;
+// }
+// // TODO BL : not used ? => to remove
+// else {
+// qvId = Integer.valueOf(value.toString());
+// }
+// QualitativeValue qv = load(QualitativeValueImpl.class, qvId);
+// measurement.setQualitativeValue(qv);
+// }
+// }
public SortingMeasurement setSortingMeasurement(
SortingBatch sortingBatch,
@@ -252,7 +242,7 @@
Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
SortingMeasurement sortingMeasurement = catchBatchDao.getSortingMeasurement(
sortingBatch, pmfmId, recorderDepartmentId, true);
- setMeasurement(sortingMeasurement, caracteristic, value);
+ measurementPersistenceHelper.setMeasurement(sortingMeasurement, caracteristic, value);
return sortingMeasurement;
}
@@ -267,7 +257,9 @@
Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
SortingMeasurement sortingMeasurement = catchBatchDao.getSortingMeasurement(
sortingBatch, pmfmId, recorderDepartmentId, true);
- setMeasurement(sortingMeasurement, caracteristic, value);
+ measurementPersistenceHelper.setMeasurement(sortingMeasurement,
+ caracteristic,
+ value);
return sortingMeasurement;
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -51,12 +51,11 @@
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.service.AbstractPersistenceService;
import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
-import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.Serializable;
-@Component("measurementPersistenceHelper")
+//@Component("measurementPersistenceHelper")
public class MeasurementPersistenceHelper extends AbstractPersistenceService {
@Resource(name = "referentialPersistenceService")
Modified: trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-04-18 15:22:51 UTC (rev 822)
@@ -192,18 +192,18 @@
<query cacheable="true" name="allFishingOperations">
<![CDATA[
- SELECT
- o.id AS id,
- o.name AS name,
- g.label AS gearLabel,
- o.startDateTime AS startDateTime,
- (select vum.alphanumericalValue from VesselUseMeasurementImpl vum where vum.vesselUseFeatures.id = vuf.id and vum.pmfm.id=:pmfmIdStationNumber) AS stationNumber,
- (select gum.alphanumericalValue from GearUseMeasurementImpl gum where gum.gearUseFeatures.id = guf.id and gum.pmfm.id=:pmfmIdMultirigAggregation) AS multirigAggregation
- FROM
+ SELECT
+ o.id AS id,
+ o.name AS name,
+ g.label AS gearLabel,
+ o.startDateTime AS startDateTime,
+ (select vum.alphanumericalValue from VesselUseMeasurementImpl vum where vum.vesselUseFeatures.id = vuf.id and vum.pmfm.id=:pmfmIdStationNumber) AS stationNumber,
+ (select gum.alphanumericalValue from GearUseMeasurementImpl gum where gum.gearUseFeatures.id = guf.id and gum.pmfm.id=:pmfmIdMultirigAggregation) AS multirigAggregation
+ FROM
FishingOperationImpl o
LEFT OUTER JOIN o.gearUseFeatures guf
LEFT OUTER JOIN guf.gear g
- LEFT OUTER JOIN o.vesselUseFeatures vuf
+ LEFT OUTER JOIN o.vesselUseFeatures vuf
WHERE
o.fishingTrip.scientificCruise.id=:cruiseId
ORDER BY
@@ -213,12 +213,12 @@
<query-param name="pmfmIdStationNumber" type="java.lang.Integer"/>
<query-param name="pmfmIdMultirigAggregation" type="java.lang.Integer"/>
</query>
-
+
<query cacheable="true" name="fishingOperation">
<![CDATA[
SELECT
- o.name AS name,
- max(g.label) AS gearLabel,
+ o.name AS name,
+ max(g.label) AS gearLabel,
max(o.startDateTime) AS startDateTime,
max(o.endDateTime) AS endDateTime,
max(o.comments) AS comments,
@@ -230,16 +230,16 @@
max(case when (rl.locationLevel.id = :locationLevelIdLocalite) then rl.id else null end) AS localiteId,
max(case when (va.isCatchOnOperationVessel = false) then va.id.vessel.code else o.vessel.code end) as vesselCode
FROM
- FishingOperationImpl o
- INNER JOIN o.gearUseFeatures guf
- LEFT OUTER JOIN guf.gear g
- LEFT OUTER JOIN guf.fishingAreas fa
- LEFT OUTER JOIN fa.regulationLocation fa2rl
- LEFT OUTER JOIN fa2rl.id.location rl
- LEFT OUTER JOIN o.operationVesselAssociations va
- WHERE
- o.id=:fishingOperationId
- GROUP BY o.name
+ FishingOperationImpl o
+ INNER JOIN o.gearUseFeatures guf
+ LEFT OUTER JOIN guf.gear g
+ LEFT OUTER JOIN guf.fishingAreas fa
+ LEFT OUTER JOIN fa.regulationLocation fa2rl
+ LEFT OUTER JOIN fa2rl.id.location rl
+ LEFT OUTER JOIN o.operationVesselAssociations va
+ WHERE
+ o.id=:fishingOperationId
+ GROUP BY o.name
]]>
<query-param name="fishingOperationId" type="java.lang.Integer"/>
<query-param name="locationLevelIdStrata" type="java.lang.Integer"/>
@@ -250,8 +250,8 @@
<query cacheable="true" name="fishingOperationRankOrder">
<![CDATA[
SELECT
- count(o1.id) + 1 as fishingOperationRankOrder
- FROM
+ count(o1.id) + 1 as fishingOperationRankOrder
+ FROM
FishingOperationImpl o1,
FishingOperationImpl o2
WHERE
@@ -319,7 +319,38 @@
<query-param name="fishingOperationId" type="java.lang.Integer"/>
<query-param name="catchBatchId" type="java.lang.Integer"/>
</query>
-
+
+ <query cacheable="true" name="allFishingOperationSamples">
+ <![CDATA[
+ SELECT
+ s.id AS id,
+ s.referenceTaxon.id AS referenceTaxon,
+ s.comments AS comment
+ FROM
+ SampleImpl s
+ WHERE
+ s.fishingOperation.id= :fishingOperationId
+ ORDER BY
+ s.creationDate
+ ]]>
+ <query-param name="fishingOperationId" type="java.lang.Integer"/>
+ </query>
+
+ <query cacheable="true" name="sampleMeasurements">
+ <![CDATA[
+ SELECT
+ sm.pmfm.id as pmfmId,
+ sm.numericalValue as numericalValue,
+ sm.alphanumericalValue as alphanumericalValue,
+ sm.qualitativeValue.id as qualitativeValueId
+ from
+ SampleMeasurementImpl sm
+ WHERE
+ sm.sample.id = :sampleId
+ ]]>
+ <query-param name="sampleId" type="java.lang.Integer"/>
+ </query>
+
<query cacheable="true" name="catchBatch">
<![CDATA[
SELECT
Modified: trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/main/resources/tutti-db-enumerations.properties 2013-04-18 15:22:51 UTC (rev 822)
@@ -385,6 +385,10 @@
#PSFM "Remis à l'eau mort ou vivant"
PmfmId.DEAD_OR_ALIVE=1393
+#TODO A creer (type alphanumeric)
+# PSFM "Classe de Taille dans captures accidentelles / données individuelles" (écran capture accidentelle / observation individuelle)
+PmfmId.SAMPLE_LENGTH_STEP=1432
+
# (20=observateur volant, 95=Administrateur SIH) -> L'avantage du 20 est qu'il est inactif (=20), donc plus facilement detectable
PersonId.UNKNOWN_RECORDER_PERSON=20
@@ -403,4 +407,6 @@
VesselPersonRoleId.RECORDER_PERSON=4
TranscribingTypeId.TAXINOMIE_REFTAX_MNEMONIQUE=101
-TranscribingTypeId.TAXINOMIE_COMMUN_NOM_VERNACULAIRE=102
\ No newline at end of file
+TranscribingTypeId.TAXINOMIE_COMMUN_NOM_VERNACULAIRE=102
+
+MatrixId.PRODUCT_BATCH=1
\ No newline at end of file
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -25,18 +25,28 @@
*/
import com.google.common.collect.Lists;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
+import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.Person;
import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.persistence.service.AccidentalBatchPersistenceService;
import fr.ifremer.tutti.persistence.service.CruisePersistenceService;
+import fr.ifremer.tutti.persistence.service.FishingOperationPersistenceService;
import fr.ifremer.tutti.persistence.service.ProgramPersistenceService;
import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
+import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator;
import org.junit.Assert;
+import java.io.Serializable;
import java.util.Calendar;
+import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
@@ -150,6 +160,14 @@
return 467;
}
+ public Integer refNumericalPmfmId() {
+ return 113;
+ }
+
+ public Integer refAlphanumericPmfmId() {
+ return 1424;
+ }
+
public String refSpeciesRefTaxCode() {
return "SEPIOFF";
}
@@ -174,10 +192,30 @@
return 114;
}
- public Cruise createCruise(ReferentialPersistenceService referentialService,
- ProgramPersistenceService programService,
- CruisePersistenceService service) {
+ protected CruisePersistenceService cruiseService;
+ protected ProgramPersistenceService programService;
+
+ protected FishingOperationPersistenceService fishingOperationService;
+
+ protected ReferentialPersistenceService referentialService;
+
+ protected AccidentalBatchPersistenceService accidentalBatchService;
+
+ public void setUp() {
+ if (referentialService == null) {
+ referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
+ programService = TuttiPersistenceServiceLocator.getProgramPersistenceService();
+ cruiseService = TuttiPersistenceServiceLocator.getCruisePersistenceService();
+ fishingOperationService = TuttiPersistenceServiceLocator.getFishingOperationPersistenceService();
+ accidentalBatchService = TuttiPersistenceServiceLocator.getAccidentalBatchPersistenceService();
+ }
+ }
+
+ public Cruise createCruise() {
+
+ setUp();
+
String programCode = programCode();
Cruise cruise = TuttiBeanFactory.newCruise();
@@ -218,7 +256,115 @@
cruise.setMultirigNumber(2);
- Cruise result = service.createCruise(cruise);
+ Cruise result = cruiseService.createCruise(cruise);
return result;
}
+
+ public FishingOperation createFishingOperation(Cruise cruise) {
+ setUp();
+
+ FishingOperation fishingOperation = TuttiBeanFactory.newFishingOperation();
+ fishingOperation.setCruise(cruise);
+ fishingOperation.setComment("newFishingOperation");
+ fishingOperation.setFishingOperationNumber(1);
+
+ // Retrieve some environment caracteristics
+ List<Caracteristic> allEnvironmentCaracteristics = referentialService.getAllCaracteristic();
+ CaracteristicMap environmentCaracteristics = new CaracteristicMap();
+ CaracteristicMap environmentValuesOneEntry = new CaracteristicMap();
+ for (Caracteristic caracteristic : allEnvironmentCaracteristics) {
+ Serializable value = null;
+ if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+ value = 1.0f;
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+ value = "some text";
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE
+ && caracteristic.getQualitativeValue(0) != null) {
+ // Choose the first qualitative value
+ value = caracteristic.getQualitativeValue(0);
+ }
+ if (value != null) {
+ environmentCaracteristics.put(caracteristic, value);
+ if (environmentValuesOneEntry.size() == 0) {
+ environmentValuesOneEntry.put(caracteristic, value);
+ }
+ }
+ }
+
+ // Retrieve some gear use caracteristics
+ List<Caracteristic> allGearShootingCaracteristics = referentialService.getAllCaracteristic();
+ CaracteristicMap gearShootingCaracteristics = new CaracteristicMap();
+ CaracteristicMap gearShootingCaracteristicsOneEntry = new CaracteristicMap();
+ for (Caracteristic caracteristic : allGearShootingCaracteristics) {
+ Serializable value = null;
+ if (caracteristic.getCaracteristicType() == CaracteristicType.NUMBER) {
+ value = 1.0f;
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.TEXT) {
+ value = "some text";
+ } else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE
+ && caracteristic.getQualitativeValue(0) != null) {
+ // Choose the first qualitative value
+ value = caracteristic.getQualitativeValue(0);
+ }
+ if (value != null) {
+ gearShootingCaracteristics.put(caracteristic, value);
+ if (gearShootingCaracteristicsOneEntry.size() == 0) {
+ gearShootingCaracteristicsOneEntry.put(caracteristic, value);
+ }
+ }
+ }
+
+ Calendar calendar = Calendar.getInstance();
+ fishingOperation.setId((String) null);
+ fishingOperation.setStationNumber("STA2");
+ fishingOperation.setFishingOperationNumber(2);
+ fishingOperation.setMultirigAggregation("1");
+ calendar.setTime(new Date());
+ calendar.set(Calendar.HOUR_OF_DAY, 1);
+ calendar.set(Calendar.MILLISECOND, 99);
+ fishingOperation.setGearShootingStartDate(calendar.getTime());
+ calendar.setTime(new Date());
+ calendar.set(Calendar.HOUR_OF_DAY, 10);
+ calendar.set(Calendar.MILLISECOND, 99);
+ fishingOperation.setGearShootingEndDate(calendar.getTime());
+ fishingOperation.setGearShootingStartLatitude(47.6f);
+ fishingOperation.setGearShootingStartLongitude(-5.05f);
+ fishingOperation.setGearShootingEndLatitude(47.9854f);
+ fishingOperation.setGearShootingEndLongitude(-5.597f);
+
+ fishingOperation.setTrawlDistance(100.12345f);
+ fishingOperation.setFishingOperationRectiligne(true);
+ fishingOperation.setFishingOperationValid(Boolean.TRUE);
+ fishingOperation.setComment("Unit test createFishingOperation() - Part n°2 : All properties set");
+ fishingOperation.setGear(cruise.getGear(0));
+ fishingOperation.setVessel(cruise.getVessel());
+ fishingOperation.setVesselUseFeatures(environmentCaracteristics);
+ fishingOperation.setGearUseFeatures(gearShootingCaracteristics);
+
+ TuttiLocation strata = TuttiBeanFactory.newTuttiLocation();
+ strata.setId(strataId());
+ fishingOperation.setStrata(strata);
+ TuttiLocation subStrata = TuttiBeanFactory.newTuttiLocation();
+ subStrata.setId(subStrataId());
+ fishingOperation.setSubStrata(subStrata);
+ TuttiLocation localite = TuttiBeanFactory.newTuttiLocation();
+ localite.setId(localite());
+ fishingOperation.setLocation(localite);
+
+ FishingOperation result = fishingOperationService.createFishingOperation(fishingOperation);
+ return result;
+ }
+
+ public AccidentalBatch createMinimalAccidentalBatch(FishingOperation fishingOperation) {
+
+ setUp();
+
+ AccidentalBatch minimalAccidentalBatch = TuttiBeanFactory.newAccidentalBatch();
+ minimalAccidentalBatch.setFishingOperation(fishingOperation);
+ minimalAccidentalBatch.setSpecies(referentialService.getSpeciesByReferenceTaxonId(refSpeciesTaxonId()));
+ minimalAccidentalBatch.setCaracteristics(new CaracteristicMap());
+ AccidentalBatch result =
+ accidentalBatchService.createAccidentalBatch(minimalAccidentalBatch);
+ return result;
+ }
}
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceWriteTest.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -25,18 +25,26 @@
*/
import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import org.apache.commons.collections.CollectionUtils;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
-import org.junit.Ignore;
import org.junit.Test;
+import java.util.List;
+
/**
* To test {@link AccidentalBatchPersistenceService} for write operation.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-@Ignore
public class AccidentalBatchPersistenceServiceWriteTest {
@ClassRule
@@ -44,22 +52,131 @@
protected AccidentalBatchPersistenceService service;
+ protected ReferentialPersistenceService referentialService;
+
+ protected FishingOperation fishingOperation;
+
@Before
public void setUp() throws Exception {
+ referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
service = TuttiPersistenceServiceLocator.getAccidentalBatchPersistenceService();
+ Cruise cruise = dbResource.getFixtures().createCruise();
+ fishingOperation = dbResource.getFixtures().createFishingOperation(cruise);
}
@Test
public void createAccidentalBatch(/*AccidentalBatch bean*/) {
- }
+ // -----------------------------------------------------------------------------
+ // 1. Create with only mandatory properties
+ // -----------------------------------------------------------------------------
- @Test
- public void saveAccidentalBatch(/*AccidentalBatch bean*/) {
+ AccidentalBatch createdAccidentalBatch = dbResource.getFixtures().createMinimalAccidentalBatch(fishingOperation);
+ Assert.assertNotNull(createdAccidentalBatch);
+ Assert.assertNotNull(createdAccidentalBatch.getId());
+
+ // reload it
+ List<AccidentalBatch> allAccidentalBatch = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isNotEmpty(allAccidentalBatch));
+ AccidentalBatch reloadedAccidentalBatch = allAccidentalBatch.get(0);
+ reloadedAccidentalBatch.setFishingOperation(fishingOperation);
+ assertEqualsAccidentalBatch(createdAccidentalBatch, reloadedAccidentalBatch);
+
+ // -----------------------------------------------------------------------------
+ // 2. Create a full with all properties
+ // -----------------------------------------------------------------------------
+
+ AccidentalBatch fullAccidentalBatch = createdAccidentalBatch;
+ fullAccidentalBatch.setId((String) null);
+
+ CaracteristicMap caracteristicMap = new CaracteristicMap();
+ fullAccidentalBatch.setCaracteristics(caracteristicMap);
+
+ // add a qualitative caracteristic
+ Caracteristic maturityCaracteristic = referentialService.getMaturityCaracteristic();
+ caracteristicMap.put(maturityCaracteristic, maturityCaracteristic.getQualitativeValue(0));
+
+ // add a numeric caracteristic
+ Caracteristic ageCaracteristic = referentialService.getAgeCaracteristic();
+ caracteristicMap.put(ageCaracteristic, 10.f);
+
+ // add a string caracteristic
+ Caracteristic stringCaracteristic = referentialService.getCaracteristic(dbResource.getFixtures().refAlphanumericPmfmId());
+ caracteristicMap.put(stringCaracteristic, "Un texte!");
+
+ fullAccidentalBatch.setSize(10.0f);
+ fullAccidentalBatch.setComment("AccidentalBatch-full");
+ fullAccidentalBatch.setDeadOrAlive(referentialService.getDeadOrAliveCaracteristic().getQualitativeValue(0));
+ fullAccidentalBatch.setGender(referentialService.getSexCaracteristic().getQualitativeValue(0));
+
+ fullAccidentalBatch.setLengthStepCaracteristic(referentialService.getCaracteristic(dbResource.getFixtures().refNumericalPmfmId()));
+ fullAccidentalBatch.setWeight(5.f);
+
+ AccidentalBatch createdAccidentalBatch2 =
+ service.createAccidentalBatch(fullAccidentalBatch);
+
+ assertEqualsAccidentalBatch(fullAccidentalBatch, createdAccidentalBatch2);
+
+ Assert.assertNotNull(createdAccidentalBatch2);
+ Assert.assertNotNull(createdAccidentalBatch2.getId());
+ assertEqualsAccidentalBatch(fullAccidentalBatch, createdAccidentalBatch2);
+
+ // reload it
+ allAccidentalBatch = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isNotEmpty(allAccidentalBatch));
+ Assert.assertEquals(2, allAccidentalBatch.size());
+ AccidentalBatch reloadedAccidentalBatch2 = TuttiEntities.splitById(allAccidentalBatch).get(createdAccidentalBatch2.getId());
+ reloadedAccidentalBatch2.setFishingOperation(fishingOperation);
+ assertEqualsAccidentalBatch(createdAccidentalBatch2, reloadedAccidentalBatch2);
+
+ // -----------------------------------------------------------------------------
+ // 2. Modify some properties and save
+ // -----------------------------------------------------------------------------
+ AccidentalBatch modifiedAccidentalBatch = reloadedAccidentalBatch2;
+ modifiedAccidentalBatch.setComment("Comment2");
+ modifiedAccidentalBatch.setSize(15f);
+ modifiedAccidentalBatch.setWeight(35f);
+ modifiedAccidentalBatch.setDeadOrAlive(referentialService.getDeadOrAliveCaracteristic().getQualitativeValue(1));
+ modifiedAccidentalBatch.setGender(referentialService.getSexCaracteristic().getQualitativeValue(1));
+ modifiedAccidentalBatch.getCaracteristics().clear();
+
+ AccidentalBatch savedAccidentalBatch = service.saveAccidentalBatch(modifiedAccidentalBatch);
+ assertEqualsAccidentalBatch(modifiedAccidentalBatch, savedAccidentalBatch);
+
+ allAccidentalBatch = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isNotEmpty(allAccidentalBatch));
+ AccidentalBatch reloadedAccidentalBatch3 = TuttiEntities.splitById(allAccidentalBatch).get(createdAccidentalBatch2.getId());
+ reloadedAccidentalBatch3.setFishingOperation(fishingOperation);
+ assertEqualsAccidentalBatch(savedAccidentalBatch, reloadedAccidentalBatch3);
}
+ protected void assertEqualsAccidentalBatch(AccidentalBatch expected,
+ AccidentalBatch actual) {
+ Assert.assertEquals(expected, actual);
+ Assert.assertEquals(expected.getSize(), actual.getSize());
+ Assert.assertEquals(expected.getComment(), actual.getComment());
+ Assert.assertEquals(expected.getDeadOrAlive(), actual.getDeadOrAlive());
+ Assert.assertEquals(expected.getGender(), actual.getGender());
+ Assert.assertEquals(expected.getLengthStepCaracteristic(), actual.getLengthStepCaracteristic());
+ Assert.assertEquals(expected.getWeight(), actual.getWeight());
+ Assert.assertEquals(expected.getCaracteristics(), actual.getCaracteristics());
+ Assert.assertEquals(expected.getFishingOperation(), actual.getFishingOperation());
+ }
+
@Test
public void deleteAccidentalBatch(/*String id*/) {
+
+ AccidentalBatch createdAccidentalBatch =
+ dbResource.getFixtures().createMinimalAccidentalBatch(
+ fishingOperation);
+
+ List<AccidentalBatch> allAccidentalBatch = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertFalse(CollectionUtils.isEmpty(allAccidentalBatch));
+
+ service.deleteAccidentalBatch(createdAccidentalBatch.getId());
+
+ List<AccidentalBatch> allAccidentalBatch2 = service.getAllAccidentalBatch(fishingOperation.getId());
+ Assert.assertTrue(CollectionUtils.isEmpty(allAccidentalBatch2));
}
}
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceWriteTest.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -82,7 +82,7 @@
fishingOperationService = TuttiPersistenceServiceLocator.getFishingOperationPersistenceService();
referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
- cruise = dbResource.getFixtures().createCruise(referentialService, programService, cruiseService);
+ cruise = dbResource.getFixtures().createCruise();
// cruiseService.getCruise(dbResource.getFixtures().cruiseId());
// cruise.setId((String) null);
Calendar calendar = new GregorianCalendar();
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-04-18 15:00:28 UTC (rev 821)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-04-18 15:22:51 UTC (rev 822)
@@ -46,7 +46,6 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
/**
* To test {@link CruisePersistenceService} for write operation.
@@ -214,7 +213,7 @@
// 1. Init a cruise (by copy)
// -----------------------------------------------------------------------------
// Cruise cruise = service.getCruise(dbResource.getFixtures().cruiseId());
- Cruise cruise = dbResource.getFixtures().createCruise(referentialService, programService, service);
+ Cruise cruise = dbResource.getFixtures().createCruise();
cruise.setId((String) null);
Calendar calendar = new GregorianCalendar();
1
0
See <http://ci.nuiton.org/jenkins/job/tutti/667/changes>
Changes:
[Kevin Morin] - fixes #2009 [RAPPORT] composition du trait
- perform release action after postSuccess or postError calls
- start replacing messages by i18n keys
- refs #1866 [CAPTURE] - Captures accidentelles (validation)
- refs #1867 [CAPTURE] - Observations individuelles (validation)
------------------------------------------
[...truncated 557 lines...]
2013-04-18 16:32:24,265 5366 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - New service fr.ifremer.tutti.service.ValidationService@2a389b17
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.DecoratorService@2a92d059
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.ValidationService@2a389b17
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.catches.TuttiWeightComputingService@cac98e5
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.PersistenceService@1769e8e3
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.PersistenceService - Close persistence Service
2013-04-18 16:32:24,287 5388 [main] INFO fr.ifremer.tutti.service.PersistenceService - Persistence driver *Mock persistence service implementation* closed.
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.536 sec
Results :
Tests run: 32, Failures: 0, Errors: 0, Skipped: 1
mojoSucceeded org.apache.maven.plugins:maven-surefire-plugin:2.14(default-test)
[JENKINS] Recording test results
mojoStarted org.apache.maven.plugins:maven-jar-plugin:2.4(default-jar)
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ tutti-service ---
[INFO] Building jar: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/tutti…>
mojoSucceeded org.apache.maven.plugins:maven-jar-plugin:2.4(default-jar)
mojoStarted org.apache.maven.plugins:maven-site-plugin:3.2(attach-descriptor)
[INFO]
[INFO] --- maven-site-plugin:3.2:attach-descriptor (attach-descriptor) @ tutti-service ---
mojoSucceeded org.apache.maven.plugins:maven-site-plugin:3.2(attach-descriptor)
mojoStarted org.apache.maven.plugins:maven-install-plugin:2.4(default-install)
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/tutti…> to /var/local/maven/data/repository/fr/ifremer/tutti/tutti-service/2.0-SNAPSHOT/tutti-service-2.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ tutti-service ---
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml> to /var/local/maven/data/repository/fr/ifremer/tutti/tutti-service/2.0-SNAPSHOT/tutti-service-2.0-SNAPSHOT.pom
mojoSucceeded org.apache.maven.plugins:maven-install-plugin:2.4(default-install)
projectSucceeded fr.ifremer.tutti:tutti-service:2.0-SNAPSHOT
projectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: UI 2.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target>
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-ui-swing ---
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
mojoStarted org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (check-project-files) @ tutti-ui-swing ---
mojoSucceeded org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
mojoStarted org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
[INFO]
[INFO] --- jaxx-maven-plugin:2.5.17:generate (default) @ tutti-ui-swing ---
[INFO] use project compile scope class-path
[INFO] Detects 40 modified jaxx file(s).
mojoSucceeded org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)[INFO] Generated 40 file(s) in 25.357s
mojoStarted org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
[INFO]
[INFO] --- jaxx-maven-plugin:2.5.17:generate-help-ids (default) @ tutti-ui-swing ---
[INFO] Store detected help ids to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
[INFO] Merge help ids to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
[INFO] Use input file: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/main/fi…>
[INFO] No keys to add.
[INFO] Use input file: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/main/fi…>
[INFO] No keys to add.
mojoSucceeded org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserJava (scan-sources) @ tutti-ui-swing ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserValidation (scan-sources) @ tutti-ui-swing ---
[INFO] Load rules file validation.rules
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(get)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:get (get) @ tutti-ui-swing ---
[INFO] Copying tutti-ui-swing.properties to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(get)[INFO] Copying tutti-ui-swing.properties to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
forkedProjectSucceeded fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:gen (scan-sources) @ tutti-ui-swing ---
[WARNING] bundle fr_FR contains 126/1216 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 1220/1220 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(collect-i18n-artifacts)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:collect-i18n-artifacts (collect-i18n-artifacts) @ tutti-ui-swing ---
[INFO] collected 11 i18n artifacts for locale fr_FR stored in <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/i18n…>
[INFO] collected 11 i18n artifacts for locale en_GB stored in <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/i18n…>
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(collect-i18n-artifacts)
forkedProjectSucceeded fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(make-bundle)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:bundle (make-bundle) @ tutti-ui-swing ---
[WARNING] bundle fr_FR contains 134/1473 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 1329/1489 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(make-bundle)
mojoStarted org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
[INFO]
[INFO] --- license-maven-plugin:1.4:update-project-license (attach-licenses) @ tutti-ui-swing ---
mojoSucceeded org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
mojoStarted org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
[INFO]
[INFO] --- license-maven-plugin:1.4:add-third-party (attach-licenses) @ tutti-ui-swing ---
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/andromda-c…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/andro…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/andromda-u…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/andro…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/metafacade…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/metaf…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/translatio…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/trans…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/translatio…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/trans…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
[WARNING] No license name defined for org.hibernate.javax.persistence--hibernate-jpa-2.0-api--1.0.1.Final
[INFO] Load missing file <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/license…>
[INFO] Missing file <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/license…> is up-to-date.
[INFO] Writing third-party file to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
[INFO] Writing bundled third-party file to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>
[INFO] Will attach third party file from <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/license…>
mojoSucceeded org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-ui-swing ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] Copying 89 resources
[INFO] Copying 4 resources
[INFO] Copying 4 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ tutti-ui-swing ---
[INFO] Compiling 292 source files to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/clas…>
mojoFailed org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>:[679,61] error: cannot find symbol
[INFO] 1 error
[INFO] -------------------------------------------------------------
projectFailed fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
sessionEnded
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Tutti ............................................. SUCCESS [7.806s]
[INFO] Tutti :: Persistence .............................. SUCCESS [28.899s]
[INFO] Tutti :: Service .................................. SUCCESS [11.788s]
[INFO] Tutti :: UI ....................................... FAILURE [44.836s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:35.168s
[INFO] Finished at: Thu Apr 18 16:33:09 CEST 2013
[INFO] Final Memory: 68M/178M
[INFO] ------------------------------------------------------------------------
Projects to build: [MavenProject: fr.ifremer:tutti:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-persistence:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-service:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml]>
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-service/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-service/2.0-SNAPSHOT/tutti-service-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/tutti…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-service/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-service/2.0-SNAPSHOT/tutti-service-2.0-SNAPSHOT.jar
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-ui-swing/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-ui-swing/2.0-SNAPSHOT/tutti-ui-swing-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/src/license…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-ui-swing/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-ui-swing/2.0-SNAPSHOT/tutti-ui-swing-2.0-SNAPSHOT-third-party.properties
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-04-18_16-31-29/archive/fr.ifremer/tutti/2.0-SNAPSHOT/tutti-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/target/tutti-2.0-SNAPSHOT-…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-04-18_16-31-29/archive/fr.ifremer/tutti/2.0-SNAPSHOT/tutti-2.0-SNAPSHOT-site_fr.xml
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-persistence/2.0-SNAPSHOT/tutti-persistence-2.0-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/t…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-04-18_16-31-29/archive/fr.ifremer.tutti/tutti-persistence/2.0-SNAPSHOT/tutti-persistence-2.0-SNAPSHOT.jar
Waiting for Jenkins to finish collecting data
mavenExecutionResult exceptions not empty
message : Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project tutti-ui-swing: Compilation failure
bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>:[679,61] error: cannot find symbol
cause : Compilation failure
bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>:[679,61] error: cannot find symbol
Stack trace :
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project tutti-ui-swing: Compilation failure
bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>:[679,61] error: cannot find symbol
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:158)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:100)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:66)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/target/gene…>:[679,61] error: cannot find symbol
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:729)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 27 more
Sending e-mails to: tutti-commits(a)list.forge.codelutin.com kmorin(a)codelutin.com
channel stopped
1
1
18 Apr '13
See <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/667/…>
Changes:
[Kevin Morin] - fixes #2009 [RAPPORT] composition du trait
- perform release action after postSuccess or postError calls
- start replacing messages by i18n keys
- refs #1866 [CAPTURE] - Captures accidentelles (validation)
- refs #1867 [CAPTURE] - Observations individuelles (validation)
------------------------------------------
projectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: UI 2.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-ui-swing ---
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
mojoStarted org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (check-project-files) @ tutti-ui-swing ---
mojoSucceeded org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
mojoStarted org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
[INFO]
[INFO] --- jaxx-maven-plugin:2.5.17:generate (default) @ tutti-ui-swing ---
[INFO] use project compile scope class-path
[INFO] Detects 40 modified jaxx file(s).
mojoSucceeded org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)[INFO] Generated 40 file(s) in 25.357s
mojoStarted org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
[INFO]
[INFO] --- jaxx-maven-plugin:2.5.17:generate-help-ids (default) @ tutti-ui-swing ---
[INFO] Store detected help ids to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO] Merge help ids to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO] Use input file: <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…>
[INFO] No keys to add.
[INFO] Use input file: <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…>
[INFO] No keys to add.
mojoSucceeded org.nuiton.jaxx:jaxx-maven-plugin:2.5.17(default)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserJava (scan-sources) @ tutti-ui-swing ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserValidation (scan-sources) @ tutti-ui-swing ---
[INFO] Load rules file validation.rules
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(get)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:get (get) @ tutti-ui-swing ---
[INFO] Copying tutti-ui-swing.properties to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(get)[INFO] Copying tutti-ui-swing.properties to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
forkedProjectSucceeded fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:gen (scan-sources) @ tutti-ui-swing ---
[WARNING] bundle fr_FR contains 126/1216 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 1220/1220 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(collect-i18n-artifacts)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:collect-i18n-artifacts (collect-i18n-artifacts) @ tutti-ui-swing ---
[INFO] collected 11 i18n artifacts for locale fr_FR stored in <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO] collected 11 i18n artifacts for locale en_GB stored in <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(collect-i18n-artifacts)
forkedProjectSucceeded fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(make-bundle)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:bundle (make-bundle) @ tutti-ui-swing ---
[WARNING] bundle fr_FR contains 134/1473 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 1329/1489 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(make-bundle)
mojoStarted org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
[INFO]
[INFO] --- license-maven-plugin:1.4:update-project-license (attach-licenses) @ tutti-ui-swing ---
mojoSucceeded org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
mojoStarted org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
[INFO]
[INFO] --- license-maven-plugin:1.4:add-third-party (attach-licenses) @ tutti-ui-swing ---
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/profiles/e…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/profi…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/andromda-c…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/andro…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/andromda-u…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/andro…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/metafacade…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/metaf…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/translatio…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/trans…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/translatio…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/trans…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
Downloading: http://nexus.nuiton.org/nexus/content/groups/public/org/andromda/cartridges…
Downloading: http://nexus.nuiton.org/nexus/content/groups/tutti-group/org/andromda/cartr…
[WARNING] No license name defined for org.hibernate.javax.persistence--hibernate-jpa-2.0-api--1.0.1.Final
[INFO] Load missing file <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…>
[INFO] Missing file <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…> is up-to-date.
[INFO] Writing third-party file to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO] Writing bundled third-party file to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO] Will attach third party file from <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…>
mojoSucceeded org.codehaus.mojo:license-maven-plugin:1.4(attach-licenses)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-ui-swing ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] Copying 89 resources
[INFO] Copying 4 resources
[INFO] Copying 4 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ tutti-ui-swing ---
[INFO] Compiling 292 source files to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
mojoFailed org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] bootstrap class path not set in conjunction with -source 1.6
<http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>:[679,61] error: cannot find symbol
[INFO] 1 error
[INFO] -------------------------------------------------------------
projectFailed fr.ifremer.tutti:tutti-ui-swing:2.0-SNAPSHOT
1
1
r821 - in trunk/tutti-ui-swing/src/main: filtered-resources java/fr/ifremer/tutti/ui/swing/content/home resources/i18n
by kmorin@users.forge.codelutin.com 18 Apr '13
by kmorin@users.forge.codelutin.com 18 Apr '13
18 Apr '13
Author: kmorin
Date: 2013-04-18 17:00:28 +0200 (Thu, 18 Apr 2013)
New Revision: 821
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/821
Log:
- fixes #2009 [RAPPORT] composition du trait
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java
Modified:
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
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/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.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-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-18 15:00:28 UTC (rev 821)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Tue Apr 16 17:33:03 CEST 2013
+#Thu Apr 18 16:32:55 CEST 2013
tutti.createAccidentalBatch.action.cancel.help=
tutti.createAccidentalBatch.action.save.help=
tutti.createAccidentalBatch.field.accidentalDeadOrAlive.help=
@@ -248,6 +248,7 @@
tutti.selectCruise.action.newCruise.help=selectCruise.html\#actions
tutti.selectCruise.action.newProgram.help=selectCruise.html\#actions
tutti.selectCruise.action.newProtocol.help=selectCruise.html\#actions
+tutti.selectCruise.action.sendCruiseReport.help=
tutti.selectCruise.action.validateCatches.help=selectCruise.html\#actions
tutti.selectCruise.action.validateCruise.help=
tutti.selectCruise.field.cruise.help=selectCruise.html\#fields
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 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-04-18 15:00:28 UTC (rev 821)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Tue Apr 16 17:33:03 CEST 2013
+#Thu Apr 18 16:32:55 CEST 2013
tutti.createAccidentalBatch.action.cancel.help=
tutti.createAccidentalBatch.action.save.help=
tutti.createAccidentalBatch.field.accidentalDeadOrAlive.help=
@@ -257,6 +257,7 @@
tutti.selectCruise.action.newCruise.help=selectCruise.html\#actions
tutti.selectCruise.action.newProgram.help=selectCruise.html\#actions
tutti.selectCruise.action.newProtocol.help=selectCruise.html\#actions
+tutti.selectCruise.action.sendCruiseReport.help=
tutti.selectCruise.action.validateCatches.help=selectCruise.html\#actions
tutti.selectCruise.action.validateCruise.help=
tutti.selectCruise.field.cruise.help=selectCruise.html\#fields
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-18 15:00:28 UTC (rev 821)
@@ -92,16 +92,30 @@
_validatorLabel: {_("tutti.selectCruise.field.cruise")};
}
+#editCruiseComboBox {
+ model: {handler.newComboModel(editCruiseButton, sendCruiseReportButton)};
+ enabled: {model.isProgramFound() && model.isCruiseFound()};
+ renderer: {new ActionListCellRenderer()};
+}
+
#editCruiseButton {
actionIcon: edit;
text: "tutti.selectCruise.action.editCruise";
i18nMnemonic: "tutti.selectCruise.action.editCruise.mnemonic";
- enabled: {model.isProgramFound() && model.isCruiseFound()};
_tuttiAction: {EditCruiseAction.class};
toolTipText: "tutti.selectCruise.action.editCruise.tip";
_help: {"tutti.selectCruise.action.editCruise.help"};
}
+#sendCruiseReportButton {
+ actionIcon: email;
+ text: "tutti.selectCruise.action.sendCruiseReport";
+ toolTipText: "tutti.selectCruise.action.sendCruiseReport.tip";
+ i18nMnemonic: "tutti.selectCruise.action.sendCruiseReport.mnemonic";
+ _tuttiAction: {SendCruiseReportAction.class};
+ _help: {"tutti.selectCruise.action.sendCruiseReport.help"};
+}
+
#newCruiseButton {
actionIcon: add;
text: "tutti.selectCruise.action.newCruise";
@@ -210,15 +224,4 @@
_tuttiAction: {ValidateCatchesAction.class};
enabled: {model.isValid() && uiContext.isCruiseFilled()};
_help: {"tutti.selectCruise.action.validateCatches.help"};
-}
-
-
-#exportCatchesButton {
- actionIcon: validate;
- text: "tutti.selectCruise.action.validateCatches";
- toolTipText: "tutti.selectCruise.action.validateCatches.tip";
- i18nMnemonic: "tutti.selectCruise.action.validateCatches.mnemonic";
- _tuttiAction: {ExportCatchesAction.class};
- enabled: {model.isValid() && uiContext.isCruiseFilled()};
- _help: {"tutti.selectCruise.action.validateCatches.help"};
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-04-18 15:00:28 UTC (rev 821)
@@ -73,6 +73,8 @@
<TuttiHelpBroker id='broker'
constructorParams='"tutti.selectCruise.help"'/>
+ <JButton id='editCruiseButton'/>
+ <JButton id='sendCruiseReportButton'/>
<JButton id='newProtocolButton'/>
<JButton id='importProtocolButton'/>
<JButton id='editProtocolButton'/>
@@ -113,7 +115,10 @@
</cell>
<cell>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='editCruiseButton'/>
+ <JComboBox id='editCruiseComboBox'
+ onMouseEntered='if (editCruiseComboBox.isEnabled()) { editCruiseComboBox.showPopup(); }'
+ onMouseClicked='if (editCruiseComboBox.isEnabled()) { handler.startEditCruiseAction(event); }'
+ onActionPerformed='handler.startEditCruiseAction(event)'/>
<JButton id='newCruiseButton'/>
</JPanel>
</cell>
@@ -144,7 +149,6 @@
<JPanel layout='{new GridLayout(1,0)}'>
<JButton id='editCatchesButton'/>
<JButton id='validateCatchesButton'/>
- <JButton id='exportCatchesButton'/>
</JPanel>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-04-18 15:00:28 UTC (rev 821)
@@ -152,6 +152,7 @@
model.getProtocols(),
model.getProtocol());
+ ui.getEditCruiseComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
ui.getEditProtocolComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
ui.getNewProtocolComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
@@ -225,7 +226,6 @@
ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_PROGRAM_BUTTON_ENABLED);
ui.applyDataBinding(SelectCruiseUI.BINDING_NEW_CRUISE_BUTTON_ENABLED);
- ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CRUISE_BUTTON_ENABLED);
ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CATCHES_BUTTON_ENABLED);
ui.applyDataBinding(SelectCruiseUI.BINDING_VALIDATE_CATCHES_BUTTON_ENABLED);
}
@@ -258,6 +258,23 @@
clearValidators();
}
+ public void startEditCruiseAction(MouseEvent event) {
+ JComboBox existingCruiseCombo = (JComboBox) event.getSource();
+ TuttiActionHelper.runAction((AbstractButton) existingCruiseCombo.getItemAt(0));
+ }
+
+ public void startEditCruiseAction(ActionEvent event) {
+ JComboBox existingCruiseCombo = (JComboBox) event.getSource();
+ JButton selectedAction = (JButton) existingCruiseCombo.getSelectedItem();
+ // hide popup before performing the action, otherwise, if the action
+ // opens a popup, the user must click a first time to hide the combobox
+ // popup to then interact with the popup opened by the action
+ // (see http://forge.codelutin.com/issues/2032)
+ existingCruiseCombo.setSelectedIndex(0);
+ existingCruiseCombo.hidePopup();
+ TuttiActionHelper.runAction(selectedAction);
+ }
+
public void startExistingProtocolAction(MouseEvent event) {
JComboBox existingProtocolCombo = (JComboBox) event.getSource();
TuttiActionHelper.runAction((AbstractButton) existingProtocolCombo.getItemAt(0));
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java 2013-04-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java 2013-04-18 15:00:28 UTC (rev 821)
@@ -1,91 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.tutti.TuttiIOUtil;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
-import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
-import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.File;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * Opens a file chooser and exports the protocol into the selected file.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class SendCatchesReportAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> {
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(SendCatchesReportAction.class);
-
- protected File file;
-
- public SendCatchesReportAction(SelectCruiseUIHandler handler) {
- super(handler, true);
- }
-
- @Override
- protected boolean prepareAction() throws Exception {
-
- boolean doAction = super.prepareAction();
-
- if (doAction) {
-
- // choose file to export
- file = TuttiUIUtil.chooseFile(
- getContext().getMainUI(),
- _("tutti.sendCatchesReport.title.choose.exportFile"),
- _("tutti.sendCatchesReport.action.chooseFile"),
- "^.+\\.pdf$", _("tutti.common.file.pdf")
- );
- doAction = file != null;
- if (doAction) {
- file = TuttiIOUtil.addExtensionIfMissing(file, ".pdf");
-
- // ask user to confirm overwrite.
- doAction = getHandler().askOverwriteFile(file);
- }
- }
- return doAction;
- }
-
- @Override
- protected void releaseAction() {
- file = null;
- super.releaseAction();
- }
-
- @Override
- protected void doAction() throws Exception {
- Cruise cruise = getModel().getCruise();
- Preconditions.checkNotNull(cruise);
- Preconditions.checkNotNull(file);
-
- if (log.isInfoEnabled()) {
- log.info("Will export cruise " + cruise.getId() +
- " to file: " + file);
- }
-
- // export catches
- ExportCatchesReportService service =
- getContext().getGeneratePDFService();
- service.generatePDFFile(file, cruise.getId(), getConfig().getI18nLocale());
-
- TuttiUIUtil.mail(_("tutti.sendCatchesReport.mail.subject", cruise.getName()),
- _("tutti.sendCatchesReport.mail.body", cruise.getName(), file.getAbsolutePath()));
-
- }
-
- @Override
- public void postSuccessAction() {
- super.postSuccessAction();
- sendMessage(_("tutti.sendCatchesReport.action.success", file.getName()));
- }
-}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java (from rev 820, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java 2013-04-18 15:00:28 UTC (rev 821)
@@ -0,0 +1,91 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.TuttiIOUtil;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Opens a file chooser, exports the cruise catches into the selected file and open the default email editor.
+ *
+ * @author kmorin <morin(a)codelutin.com>
+ * @since 1.0
+ */
+public class SendCruiseReportAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(SendCruiseReportAction.class);
+
+ protected File file;
+
+ public SendCruiseReportAction(SelectCruiseUIHandler handler) {
+ super(handler, true);
+ }
+
+ @Override
+ protected boolean prepareAction() throws Exception {
+
+ boolean doAction = super.prepareAction();
+
+ if (doAction) {
+
+ // choose file to export
+ file = TuttiUIUtil.chooseFile(
+ getContext().getMainUI(),
+ _("tutti.sendCruiseReport.title.choose.exportFile"),
+ _("tutti.sendCruiseReport.action.chooseFile"),
+ "^.+\\.pdf$", _("tutti.common.file.pdf")
+ );
+ doAction = file != null;
+ if (doAction) {
+ file = TuttiIOUtil.addExtensionIfMissing(file, ".pdf");
+
+ // ask user to confirm overwrite.
+ doAction = getHandler().askOverwriteFile(file);
+ }
+ }
+ return doAction;
+ }
+
+ @Override
+ protected void releaseAction() {
+ file = null;
+ super.releaseAction();
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ Cruise cruise = getModel().getCruise();
+ Preconditions.checkNotNull(cruise);
+ Preconditions.checkNotNull(file);
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export cruise " + cruise.getId() +
+ " to file: " + file);
+ }
+
+ // export catches
+ ExportCatchesReportService service =
+ getContext().getGeneratePDFService();
+ service.generatePDFFile(file, cruise.getId(), getConfig().getI18nLocale());
+
+ TuttiUIUtil.mail(_("tutti.sendCruiseReport.mail.subject", cruise.getName()),
+ _("tutti.sendCruiseReport.mail.body", cruise.getName(), file.getAbsolutePath()));
+
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.sendCruiseReport.action.success", file.getName()));
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCruiseReportAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-18 15:00:28 UTC (rev 821)
@@ -1063,6 +1063,9 @@
tutti.selectCruise.action.newProtocol=
tutti.selectCruise.action.newProtocol.mnemonic=
tutti.selectCruise.action.newProtocol.tip=
+tutti.selectCruise.action.sendCruiseReport=
+tutti.selectCruise.action.sendCruiseReport.mnemonic=
+tutti.selectCruise.action.sendCruiseReport.tip=
tutti.selectCruise.action.validateCatches=
tutti.selectCruise.action.validateCatches.mnemonic=
tutti.selectCruise.action.validateCatches.tip=
@@ -1092,6 +1095,11 @@
tutti.sendCatchesReport.mail.body=
tutti.sendCatchesReport.mail.subject=
tutti.sendCatchesReport.title.choose.exportFile=
+tutti.sendCruiseReport.action.chooseFile=
+tutti.sendCruiseReport.action.success=
+tutti.sendCruiseReport.mail.body=
+tutti.sendCruiseReport.mail.subject=
+tutti.sendCruiseReport.title.choose.exportFile=
tutti.splitBenthosBatch.action.cancel=
tutti.splitBenthosBatch.action.cancel.mnemonic=
tutti.splitBenthosBatch.action.cancel.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-18 14:20:46 UTC (rev 820)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-18 15:00:28 UTC (rev 821)
@@ -1061,6 +1061,9 @@
tutti.selectCruise.action.newProtocol=Nouveau
tutti.selectCruise.action.newProtocol.mnemonic=t
tutti.selectCruise.action.newProtocol.tip=Créer un nouveau protocole
+tutti.selectCruise.action.sendCruiseReport=Envoyer
+tutti.selectCruise.action.sendCruiseReport.mnemonic=E
+tutti.selectCruise.action.sendCruiseReport.tip=Envoyer le rapport de la campagne
tutti.selectCruise.action.validateCatches=Valider les captures
tutti.selectCruise.action.validateCatches.mnemonic=V
tutti.selectCruise.action.validateCatches.tip=Valider les captures
@@ -1084,11 +1087,11 @@
tutti.selectSpecies.action.validate.mnemonic=V
tutti.selectSpecies.action.validate.tip=Valider la sélection de l'espèce
tutti.selectSpecies.title=Choisissez une espèce
-tutti.sendCatchesReport.action.chooseFile=Choisir le fichier de rapport
-tutti.sendCatchesReport.action.success=Les captures ont correctement été exporté dans le fichier %s
-tutti.sendCatchesReport.mail.body=Bonjour,\n\nveuillez trouver ci-joint le rapport des captures de la campagne %1s.\n*Pensez à joindre le fichier %2s*\n\nCordialement,\n\n*Votre nom*
-tutti.sendCatchesReport.mail.subject=Captures de la campagne %s
-tutti.sendCatchesReport.title.choose.exportFile=Exporter les captures de la campagne
+tutti.sendCruiseReport.action.chooseFile=Choisir le fichier de rapport
+tutti.sendCruiseReport.action.success=Les captures ont correctement été exporté dans le fichier %s
+tutti.sendCruiseReport.mail.body=Bonjour,\n\nveuillez trouver ci-joint le rapport des captures de la campagne %1s.\n*Pensez à joindre le fichier %2s*\n\nCordialement,\n\n*Votre nom*
+tutti.sendCruiseReport.mail.subject=Captures de la campagne %s
+tutti.sendCruiseReport.title.choose.exportFile=Exporter les captures de la campagne
tutti.splitBenthosBatch.action.cancel=Annuler
tutti.splitBenthosBatch.action.cancel.mnemonic=A
tutti.splitBenthosBatch.action.cancel.tip=Annuler le sous-échantillonnage
1
0
18 Apr '13
Author: kmorin
Date: 2013-04-18 16:20:46 +0200 (Thu, 18 Apr 2013)
New Revision: 820
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/820
Log:
- fixes #2009 [RAPPORT] composition du trait
- perform release action after postSuccess or postError calls
- start replacing messages by i18n keys
- refs #1866 [CAPTURE] - Captures accidentelles (validation)
- refs #1867 [CAPTURE] - Observations individuelles (validation)
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java
trunk/tutti-service/src/main/resources/ftl/
trunk/tutti-service/src/main/resources/ftl/catchesReport_fr.ftl
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIModel-error-validation.xml
Modified:
trunk/pom.xml
trunk/tutti-service/pom.xml
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionSwingWorker.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml
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 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/pom.xml 2013-04-18 14:20:46 UTC (rev 820)
@@ -405,6 +405,27 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.itextpdf</groupId>
+ <artifactId>itextpdf</artifactId>
+ <version>5.4.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.xhtmlrenderer</groupId>
+ <artifactId>flying-saucer-pdf-itext5</artifactId>
+ <version>9.0.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ <version>2.3.19</version>
+ <scope>compile</scope>
+ </dependency>
+
</dependencies>
</dependencyManagement>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-service/pom.xml 2013-04-18 14:20:46 UTC (rev 820)
@@ -143,6 +143,21 @@
<artifactId>mockito-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.itextpdf</groupId>
+ <artifactId>itextpdf</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.xhtmlrenderer</groupId>
+ <artifactId>flying-saucer-pdf-itext5</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ </dependency>
+
</dependencies>
<build>
Added: 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 (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/ExportCatchesReportService.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -0,0 +1,231 @@
+package fr.ifremer.tutti.service.catches;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.itextpdf.text.DocumentException;
+import fr.ifremer.tutti.TuttiBusinessException;
+import fr.ifremer.tutti.persistence.entities.data.*;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import freemarker.cache.ClassTemplateLoader;
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.io.IOUtils;
+import org.xhtmlrenderer.pdf.ITextRenderer;
+
+import java.io.*;
+import java.util.*;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.0
+ */
+public class ExportCatchesReportService extends AbstractTuttiService {
+
+ protected Configuration freemarkerConfiguration;
+
+ protected PersistenceService persistenceService;
+
+ protected TuttiWeightComputingService tuttiWeightComputingService;
+
+ public ExportCatchesReportService() {
+ super();
+
+ freemarkerConfiguration = new Configuration();
+
+ // needed to overwrite "Defaults to default system encoding."
+ // fix encoding issue on some systems
+ freemarkerConfiguration.setEncoding(Locale.getDefault(), "UTF-8");
+
+ // specific template loader to get template from jars (classpath)
+ ClassTemplateLoader templateLoader = new ClassTemplateLoader(ExportCatchesReportService.class, "/ftl");
+ freemarkerConfiguration.setTemplateLoader(templateLoader);
+
+ // pour les maps dans les template (entre autre)
+ freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
+ }
+
+ @Override
+ public void setServiceContext(TuttiServiceContext context) {
+ super.setServiceContext(context);
+ persistenceService = getService(PersistenceService.class);
+ tuttiWeightComputingService = getService(TuttiWeightComputingService.class);
+ }
+
+ /**
+ * Generate the PDF report
+ *
+ * @param targetFile pdf file to generate
+ * @param locale generated pdf locale
+ * @return the generated file
+ * @throws TuttiBusinessException
+ */
+ public File generatePDFFile(File targetFile, String cruiseId, Locale locale) throws TuttiBusinessException {
+
+ File result = null;
+
+ OutputStream os = null;
+
+ Map<String, Object> data = Maps.newHashMap();
+
+ List<FishingOperation> allFishingOperation =
+ persistenceService.getAllFishingOperation(cruiseId);
+
+ List<Map<String, Object>> operations = Lists.newArrayList();
+ for (FishingOperation fishingOperation : allFishingOperation) {
+
+ // get operation and catch data
+ String fishingOperationId = fishingOperation.getId();
+ CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
+
+ BatchContainer<SpeciesBatch> rootSpeciesBatch;
+ rootSpeciesBatch = tuttiWeightComputingService.getComputedSpeciesBatches(fishingOperation);
+
+ BatchContainer<BenthosBatch> rootBenthosBatch;
+ rootBenthosBatch = tuttiWeightComputingService.getComputedBenthosBatches(fishingOperation);
+
+ tuttiWeightComputingService.computeCatchBatchWeights(catchBatch, rootSpeciesBatch, rootBenthosBatch, null);
+
+ // create operation data model
+ Map<String, Object> op = createOperation(fishingOperation);
+
+ Float totalWeight = catchBatch.getCatchTotalWeight();
+ if (totalWeight == null) {
+ totalWeight = catchBatch.getCatchTotalComputedWeight();
+ }
+ op.put("totalWeight", totalWeight);
+
+ Float totalSortedWeight = catchBatch.getCatchTotalSortedComputedWeight();
+ op.put("totalSortedWeight", totalSortedWeight);
+
+ // create catches data model
+
+ Map<Species, Map<String, Object>> catches = Maps.newHashMap();
+ Float ratio = totalWeight / totalSortedWeight;
+
+ // create catches rows
+ List<SpeciesBatch> speciesBatches = rootSpeciesBatch.getChildren();
+ for (SpeciesBatch batch : speciesBatches) {
+ createSpeciesCatch(batch, catches, ratio, totalWeight);
+ }
+ List<Map<String, Object>> catchList = Lists.newArrayList(catches.values());
+
+ // add the benthos row
+ if (!CollectionUtils.isEmpty(rootBenthosBatch.getChildren())) {
+ Map<String, Object> benthosCatch =
+ createBenthosCatch(rootBenthosBatch, catchBatch.getBenthosTotalComputedWeight(), totalWeight);
+ catchList.add(benthosCatch);
+ }
+
+ op.put("catches", catchList);
+ operations.add(op);
+ }
+ data.put("operations", operations);
+
+ // generate the report
+ try {
+
+ // render freemarker template
+ Template mapTemplate = freemarkerConfiguration.getTemplate("catchesReport.ftl", locale);
+
+ Writer out = new StringWriter();
+ mapTemplate.process(data, out);
+ out.flush();
+
+ // render template output as pdf
+ os = new FileOutputStream(targetFile);
+
+ ITextRenderer renderer = new ITextRenderer();
+ renderer.setDocumentFromString(out.toString());
+ renderer.layout();
+ renderer.createPDF(os);
+
+ os.close();
+
+ } catch (Exception ex) {
+ throw new TuttiBusinessException(_("tutti.service.operations.exportCatchesReport.error"), ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+ }
+
+ return result;
+ }
+
+ protected Map<String, Object> createOperation(FishingOperation fishingOperation) {
+ Map<String, Object> op = Maps.newHashMap();
+ op.put("number", fishingOperation.getFishingOperationNumber());
+ op.put("station", fishingOperation.getStationNumber());
+ op.put("rigNumber", fishingOperation.getMultirigAggregation());
+ op.put("startDate", fishingOperation.getGearShootingStartDate());
+ op.put("endDate", fishingOperation.getGearShootingEndDate());
+
+ return op;
+ }
+
+ protected void createSpeciesCatch(SpeciesBatch batch,
+ Map<Species, Map<String, Object>> catches,
+ float ratio,
+ float totalWeight) {
+
+ Species species = batch.getSpecies();
+
+ Float existingWeight;
+ Map<String, Object> ktch = catches.get(species);
+ if (ktch == null) {
+ ktch = Maps.newHashMap();
+ ktch.put("code", species.getRefTaxCode());
+ ktch.put("scientificName", species.getName());
+
+ Species speciesWithVerncularCode = persistenceService.getSpeciesByReferenceTaxonIdWithVernacularCode(species.getReferenceTaxonId());
+ ktch.put("commonName", speciesWithVerncularCode.getVernacularCode());
+
+ existingWeight = 0f;
+
+ } else {
+ existingWeight = (Float) ktch.get("sortedWeight");
+ }
+
+ Float weight = batch.getSampleCategoryWeight();
+ if (weight == null) {
+ weight = batch.getSampleCategoryComputedWeight();
+ }
+ weight += existingWeight;
+
+ ktch.put("sortedWeight", weight);
+ Float totalBatchWeight = weight * ratio;
+ ktch.put("totalWeight", totalBatchWeight);
+ ktch.put("percentage", 100 * totalBatchWeight / totalWeight);
+ catches.put(species, ktch);
+ }
+
+ protected Map<String, Object> createBenthosCatch(BatchContainer<BenthosBatch> rootBenthosBatch,
+ float benthosTotalWeight,
+ float totalWeight) {
+ Map<String, Object> ktch = Maps.newHashMap();
+ ktch.put("code", "BENTHOS");
+ ktch.put("scientificName", "");
+ ktch.put("commonName", "Benthos");
+
+ Float weight = 0f;
+ List<BenthosBatch> benthosBatches = rootBenthosBatch.getChildren();
+ for (BenthosBatch batch : benthosBatches) {
+ Float batchWeight = batch.getSampleCategoryWeight();
+ if (batchWeight == null) {
+ batchWeight = batch.getSampleCategoryComputedWeight();
+ }
+ weight += batchWeight;
+ }
+ ktch.put("sortedWeight", weight);
+ ktch.put("totalWeight", benthosTotalWeight);
+ ktch.put("percentage", 100 * benthosTotalWeight / totalWeight);
+
+ return ktch;
+ }
+}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -209,21 +209,23 @@
Float speciesTotalComputedSortedWeight = 0f;
Float speciesTotalComputedUnsortedWeight = 0f;
- for (int i = 0; i < rootSpeciesBatch.getChildren().size(); i++) {
- SpeciesBatch row = rootSpeciesBatch.getChildren().get(i);
- Float weight = row.getSampleCategoryWeight();
- if (weight == null) {
- weight = row.getSampleCategoryComputedWeight();
- }
- if (weight == null) {
- return;
- }
+ if (rootSpeciesBatch != null) {
+ for (int i = 0; i < rootSpeciesBatch.getChildren().size(); i++) {
+ SpeciesBatch row = rootSpeciesBatch.getChildren().get(i);
+ Float weight = row.getSampleCategoryWeight();
+ if (weight == null) {
+ weight = row.getSampleCategoryComputedWeight();
+ }
+ if (weight == null) {
+ return;
+ }
- CaracteristicQualitativeValue value = (CaracteristicQualitativeValue) row.getSampleCategoryValue();
- if (SortedUnsortedEnum.SORTED.matchValue(value)) {
- speciesTotalComputedSortedWeight += weight;
- } else {
- speciesTotalComputedUnsortedWeight += weight;
+ CaracteristicQualitativeValue value = (CaracteristicQualitativeValue) row.getSampleCategoryValue();
+ if (SortedUnsortedEnum.SORTED.matchValue(value)) {
+ speciesTotalComputedSortedWeight += weight;
+ } else {
+ speciesTotalComputedUnsortedWeight += weight;
+ }
}
}
@@ -263,21 +265,23 @@
Float benthosTotalComputedSortedWeight = 0f;
Float benthosTotalComputedUnsortedWeight = 0f;
- for (int i = 0; i < rootBenthosBatch.getChildren().size(); i++) {
- BenthosBatch row = rootBenthosBatch.getChildren().get(i);
- Float weight = row.getSampleCategoryWeight();
- if (weight == null) {
- weight = row.getSampleCategoryComputedWeight();
- }
- if (weight == null) {
- return;
- }
+ if (rootBenthosBatch != null) {
+ for (int i = 0; i < rootBenthosBatch.getChildren().size(); i++) {
+ BenthosBatch row = rootBenthosBatch.getChildren().get(i);
+ Float weight = row.getSampleCategoryWeight();
+ if (weight == null) {
+ weight = row.getSampleCategoryComputedWeight();
+ }
+ if (weight == null) {
+ return;
+ }
- CaracteristicQualitativeValue value = (CaracteristicQualitativeValue) row.getSampleCategoryValue();
- if (SortedUnsortedEnum.SORTED.matchValue(value)) {
- benthosTotalComputedSortedWeight += weight;
- } else {
- benthosTotalComputedUnsortedWeight += weight;
+ CaracteristicQualitativeValue value = (CaracteristicQualitativeValue) row.getSampleCategoryValue();
+ if (SortedUnsortedEnum.SORTED.matchValue(value)) {
+ benthosTotalComputedSortedWeight += weight;
+ } else {
+ benthosTotalComputedUnsortedWeight += weight;
+ }
}
}
@@ -316,14 +320,16 @@
// Marine litter
Float marineLitterTotalComputedWeight = 0f;
- for (int i = 0; i < rootMarineLitterBatch.getChildren().size(); i++) {
- MarineLitterBatch row = rootMarineLitterBatch.getChildren().get(i);
- Float rowWeight = row.getWeight();
- if (rowWeight == null) {
- marineLitterTotalComputedWeight = null;
- break;
+ if (rootMarineLitterBatch != null) {
+ for (int i = 0; i < rootMarineLitterBatch.getChildren().size(); i++) {
+ MarineLitterBatch row = rootMarineLitterBatch.getChildren().get(i);
+ Float rowWeight = row.getWeight();
+ if (rowWeight == null) {
+ marineLitterTotalComputedWeight = null;
+ break;
+ }
+ marineLitterTotalComputedWeight += rowWeight;
}
- marineLitterTotalComputedWeight += rowWeight;
}
catchBatch.setMarineLitterTotalComputedWeight(marineLitterTotalComputedWeight);
Added: trunk/tutti-service/src/main/resources/ftl/catchesReport_fr.ftl
===================================================================
--- trunk/tutti-service/src/main/resources/ftl/catchesReport_fr.ftl (rev 0)
+++ trunk/tutti-service/src/main/resources/ftl/catchesReport_fr.ftl 2013-04-18 14:20:46 UTC (rev 820)
@@ -0,0 +1,91 @@
+<html>
+ <head>
+ <style type="text/css">
+
+ <#assign blueColor="#000080">
+
+ h1, h4 {
+ color: ${blueColor};
+ font-weight: bold;
+ font-style: italic;
+ }
+
+ th {
+ color: ${blueColor};
+ font-weight: bold;
+ }
+
+ td, th {
+ padding-right: 10pt;
+ }
+
+ td.number {
+ text-align: right;
+ }
+
+ .operationInfo {
+ font-weight: bold;
+ }
+
+ .label {
+ color: ${blueColor};
+ }
+
+ .value {
+ margin-right: 50pt;
+ }
+
+ </style>
+ </head>
+ <body>
+
+ <h1>Rapport des traits validés</h1>
+
+ <#assign orderedOperations = operations?sort_by("startDate")?reverse>
+ <#list orderedOperations as operation>
+
+ <p class='operationInfo'>
+ <span class="label">Station :</span> <span class="value">${operation.station} - ${operation.number}</span>
+ <span class="label">Poche :</span> <span class="value">${operation.rigNumber}</span>
+ <span class="label">
+ du ${operation.startDate?date?string.full} ${operation.startDate?time?string.short}
+ <#if operation.endDate??>au ${operation.endDate?date?string.full} ${operation.endDate?time?string.short}</#if>
+ </span>
+ </p>
+
+ <p class='operationInfo'>
+ <span class="label">Poids total :</span> <span class="value"><#if operation.totalWeight??>${operation.totalWeight?string("0.00")}</#if></span>
+ <span class="label">Poids total trié :</span> <#if operation.totalSortedWeight??>${operation.totalSortedWeight?string("0.00")}</#if>
+ </p>
+
+ <h4>Composition du trait par espèce :</h4>
+ <table>
+ <tr>
+ <th>Espèce</th>
+ <th>Nom scientifique</th>
+ <th>Nom commun</th>
+ <th>Trié (kg)</th>
+ <th>Total (kg)</th>
+ <th>%</th>
+ </tr>
+
+ <#list operation.catches?sort_by("sortedWeight")?reverse as catch>
+ <tr>
+ <td><#if catch.code??>${catch.code}</#if></td>
+ <td><em>${catch.scientificName}</em></td>
+ <td><#if catch.commonName??>${catch.commonName}</#if></td>
+ <td class="number">${catch.sortedWeight?string("0.00")}</td>
+ <td class="number">${catch.totalWeight?string("0.00")}</td>
+ <td class="number">${catch.percentage?string("0.0")}</td>
+ </tr>
+ </#list>
+ </table>
+
+ <#if operation != orderedOperations?last>
+ <h2 style="page-break-after:always"/>
+ </#if>
+
+ </#list>
+
+ </body>
+</html>
\ No newline at end of file
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-04-18 14:20:46 UTC (rev 820)
@@ -81,6 +81,7 @@
tutti.service.operations.computeWeights.species.error.incoherentRowWeightFrequency=
tutti.service.operations.computeWeights.species.error.incoherentTotalSorted=
tutti.service.operations.computeWeights.species.error.noWeight=
+tutti.service.operations.exportCatchesReport.error=
tutti.validator.error.comment.too.long=
tutti.validator.error.cruise.beginDate.required=
tutti.validator.error.cruise.dates.endBeforeStart=
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-18 14:20:46 UTC (rev 820)
@@ -65,6 +65,7 @@
tutti.service.operations.computeWeights.species.error.incoherentSampleWeight=Le poids de sous-échantillonage d'un lot des espèces est supérieur au poids de la catégorie
tutti.service.operations.computeWeights.species.error.incoherentTotalSorted=Le poids total Vrac des espèces est inférieur à la somme des poids Vrac triés, inerte trié et vivant non détaillé trié
tutti.service.operations.computeWeights.species.error.noWeight=Un lot des espèces n'a pas de poids
+tutti.service.operations.exportCatchesReport.error=Erreur lors de la génération du rapport des captures
tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
tutti.validator.error.cruise.beginDate.required=La date de début est obligatoire
tutti.validator.error.cruise.dates.endBeforeStart=La date de fin doit être après la date de début
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -31,6 +31,7 @@
import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.RessourceClassLoader;
import fr.ifremer.tutti.service.*;
+import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
import fr.ifremer.tutti.service.catches.ValidateCruiseOperationsService;
import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService;
@@ -527,6 +528,10 @@
return serviceContext.getService(ValidationService.class);
}
+ public ExportCatchesReportService getGeneratePDFService() {
+ return serviceContext.getService(ExportCatchesReportService.class);
+ }
+
public boolean useRealPersistenceService() {
return isDbExist() && isDbLoaded();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -121,7 +121,7 @@
} else {
- sendMessage("Aucune mise à jour de l'application détectée.");
+ sendMessage(_("tutti.updateApplication.noUpdate"));
}
}
}
@@ -146,10 +146,8 @@
// tell user restart will be done
- getHandler().showSuccessMessage(
- "Redémarrage de Tutti nécessaire...",
- "La mise à jour nécessite le rédémarrage du Tutti.\nL'application va se fermer puis se réouvrir automatiquement."
- );
+ getHandler().showSuccessMessage(_("tutti.updateApplication.title.success"),
+ _("tutti.updateApplication.message.success"));
CloseApplicationAction action = TuttiActionHelper.createLogicAction(
getHandler(), CloseApplicationAction.class);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -102,8 +102,7 @@
getContext().getTuttiProtocolImportExportService();
service.exportProtocol(protocol, file);
- sendMessage("Protocole [" + protocol.getName() +
- "] exporté dans le fichier " + file.getName() + ".");
+ sendMessage(_("tutti.exportProtocol.action.success", protocol.getName(), file.getName()));
getHandler().resetEditProtolAction();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -97,7 +97,7 @@
getContext().getTuttiProtocolImportExportService();
TuttiProtocol protocol = service.importProtocol(file);
- sendMessage("Protocole [" + protocol.getName() + "] lu depuis le fichier.");
+ sendMessage(_("tutti.importProtocol.action.success", protocol.getName()));
// store protocol in context
IMPORT_PROTOCOL_ENTRY.setContextValue(getContext().getMainUI(), protocol);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-04-18 14:20:46 UTC (rev 820)
@@ -210,4 +210,15 @@
_tuttiAction: {ValidateCatchesAction.class};
enabled: {model.isValid() && uiContext.isCruiseFilled()};
_help: {"tutti.selectCruise.action.validateCatches.help"};
+}
+
+
+#exportCatchesButton {
+ actionIcon: validate;
+ text: "tutti.selectCruise.action.validateCatches";
+ toolTipText: "tutti.selectCruise.action.validateCatches.tip";
+ i18nMnemonic: "tutti.selectCruise.action.validateCatches.mnemonic";
+ _tuttiAction: {ExportCatchesAction.class};
+ enabled: {model.isValid() && uiContext.isCruiseFilled()};
+ _help: {"tutti.selectCruise.action.validateCatches.help"};
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-04-18 14:20:46 UTC (rev 820)
@@ -144,6 +144,7 @@
<JPanel layout='{new GridLayout(1,0)}'>
<JButton id='editCatchesButton'/>
<JButton id='validateCatchesButton'/>
+ <JButton id='exportCatchesButton'/>
</JPanel>
</cell>
</row>
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java (from rev 810, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -0,0 +1,91 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.TuttiIOUtil;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.service.catches.ExportCatchesReportService;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Opens a file chooser and exports the protocol into the selected file.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class SendCatchesReportAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(SendCatchesReportAction.class);
+
+ protected File file;
+
+ public SendCatchesReportAction(SelectCruiseUIHandler handler) {
+ super(handler, true);
+ }
+
+ @Override
+ protected boolean prepareAction() throws Exception {
+
+ boolean doAction = super.prepareAction();
+
+ if (doAction) {
+
+ // choose file to export
+ file = TuttiUIUtil.chooseFile(
+ getContext().getMainUI(),
+ _("tutti.sendCatchesReport.title.choose.exportFile"),
+ _("tutti.sendCatchesReport.action.chooseFile"),
+ "^.+\\.pdf$", _("tutti.common.file.pdf")
+ );
+ doAction = file != null;
+ if (doAction) {
+ file = TuttiIOUtil.addExtensionIfMissing(file, ".pdf");
+
+ // ask user to confirm overwrite.
+ doAction = getHandler().askOverwriteFile(file);
+ }
+ }
+ return doAction;
+ }
+
+ @Override
+ protected void releaseAction() {
+ file = null;
+ super.releaseAction();
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ Cruise cruise = getModel().getCruise();
+ Preconditions.checkNotNull(cruise);
+ Preconditions.checkNotNull(file);
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export cruise " + cruise.getId() +
+ " to file: " + file);
+ }
+
+ // export catches
+ ExportCatchesReportService service =
+ getContext().getGeneratePDFService();
+ service.generatePDFFile(file, cruise.getId(), getConfig().getI18nLocale());
+
+ TuttiUIUtil.mail(_("tutti.sendCatchesReport.mail.subject", cruise.getName()),
+ _("tutti.sendCatchesReport.mail.body", cruise.getName(), file.getAbsolutePath()));
+
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+ sendMessage(_("tutti.sendCatchesReport.action.success", file.getName()));
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SendCatchesReportAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -48,6 +48,7 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
+import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
@@ -280,6 +281,20 @@
public static void openLink(URI uri) {
+ Desktop desktop = getDesktopForBrowse();
+
+ try {
+
+ desktop.browse(uri);
+ } catch (Exception e) {
+
+ throw new TuttiTechnicalException(
+ _("swing.error.cannot.open.link", uri), e);
+ }
+ }
+
+ public static Desktop getDesktopForMail() {
+
if (!Desktop.isDesktopSupported()) {
throw new TuttiTechnicalException(
_("swing.error.desktop.not.supported"));
@@ -287,19 +302,27 @@
Desktop desktop = Desktop.getDesktop();
- if (!desktop.isSupported(Desktop.Action.BROWSE)) {
+ if (!desktop.isSupported(Desktop.Action.MAIL)) {
throw new TuttiTechnicalException(
- _("swing.error.desktop.browse.not.supported"));
+ _("swing.error.desktop.mail.not.supported"));
}
+ return desktop;
+ }
+
+ public static void mail(String subject, String body) {
+
+ Desktop desktop = getDesktopForMail();
+
try {
+ URI mailtoURI = new URI("mailto", null, null, "subject=" + subject + "&body=" + body, null);
+ desktop.mail(mailtoURI);
- desktop.browse(uri);
} catch (Exception e) {
throw new TuttiTechnicalException(
- _("swing.error.cannot.open.link", uri), e);
+ _("swing.error.cannot.mail"), e);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionSwingWorker.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionSwingWorker.java 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionSwingWorker.java 2013-04-18 14:20:46 UTC (rev 820)
@@ -97,8 +97,6 @@
if (log.isInfoEnabled()) {
log.info("Task [" + this + "] done");
}
-
- action.releaseAction();
}
}
return null;
@@ -122,6 +120,8 @@
action.postFailedAction(error);
}
+ action.releaseAction();
+
if (timer != null) {
timer.cancel();
Added: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIModel-error-validation.xml (rev 0)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIModel-error-validation.xml 2013-04-18 14:20:46 UTC (rev 820)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="species">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createAccidentalBatch.species.required
+ </message>
+ </field-validator>
+ </field>
+
+</validators>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml 2013-04-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml 2013-04-18 14:20:46 UTC (rev 820)
@@ -29,9 +29,33 @@
<field name="species">
<field-validator type="required" short-circuit="true">
<message>
- tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required
+ tutti.validator.error.createIndividualObservationBatch.species.required
</message>
</field-validator>
</field>
+ <field name="weight">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createIndividualObservationBatch.weight.required
+ </message>
+ </field-validator>
+ </field>
+
+ <field name="size">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createIndividualObservationBatch.size.required
+ </message>
+ </field-validator>
+ </field>
+
+ <field name="lengthStepCaracteristic">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createIndividualObservationBatch.lengthStepCaracteristic.required
+ </message>
+ </field-validator>
+ </field>
+
</validators>
\ No newline at end of file
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-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-18 14:20:46 UTC (rev 820)
@@ -1,3 +1,4 @@
+swing.error.cannot.mail=
swing.error.cannot.open.file=
swing.error.cannot.open.link=
swing.error.desktop.browse.not.supported=
@@ -2,2 +3,3 @@
swing.error.desktop.extension.not.supported=
+swing.error.desktop.mail.not.supported=
swing.error.desktop.not.supported=
@@ -59,6 +61,7 @@
tutti.common.cancel.mnemonic=
tutti.common.file.csv=
tutti.common.file.ibts=
+tutti.common.file.pdf=
tutti.common.file.protocol=
tutti.common.file.zip=
tutti.common.validate=
@@ -823,6 +826,7 @@
tutti.error.errorpane.htmlmessage=
tutti.error.ui.business.error=
tutti.error.ui.other.error=
+tutti.exportProtocol.action.success=
tutti.fishingOperations.action.newFishingOperation.mnemonic=
tutti.fishingOperations.action.newFishingOperation.tip=
tutti.fishingOperations.info.no.fishingOperation.selected=
@@ -864,6 +868,7 @@
tutti.gearUseFeatureTable.table.header.key=
tutti.gearUseFeatureTable.table.header.value=
tutti.gearUseFeatureTable.title=
+tutti.importProtocol.action.success=
tutti.importPupitri.carrouselFile.extension=
tutti.importPupitri.carrouselFile.extension.description=
tutti.importPupitri.error.fileMissing.message=
@@ -1081,6 +1086,12 @@
tutti.selectSpecies.action.validate.mnemonic=
tutti.selectSpecies.action.validate.tip=
tutti.selectSpecies.title=
+tutti.sendCatchesReport.action.chooseFile=
+tutti.sendCatchesReport.action.chooseProtocolFile=
+tutti.sendCatchesReport.action.success=
+tutti.sendCatchesReport.mail.body=
+tutti.sendCatchesReport.mail.subject=
+tutti.sendCatchesReport.title.choose.exportFile=
tutti.splitBenthosBatch.action.cancel=
tutti.splitBenthosBatch.action.cancel.mnemonic=
tutti.splitBenthosBatch.action.cancel.tip=
@@ -1124,8 +1135,16 @@
tutti.update.i18n=
tutti.update.jre=
tutti.update.tutti=
+tutti.updateApplication.message.success=
+tutti.updateApplication.noUpdate=
+tutti.updateApplication.title.success=
tutti.validator.error.comment.too.long=
+tutti.validator.error.createAccidentalBatch.species.required=
tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required=
+tutti.validator.error.createIndividualObservationBatch.lengthStepCaracteristic.required=
+tutti.validator.error.createIndividualObservationBatch.size.required=
+tutti.validator.error.createIndividualObservationBatch.species.required=
+tutti.validator.error.createIndividualObservationBatch.weight.required=
tutti.validator.error.createMarineLitterBatch.categoryAndSizeCategory.notAvailable=
tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required=
tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required=
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-18 06:34:25 UTC (rev 819)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-18 14:20:46 UTC (rev 820)
@@ -1,6 +1,8 @@
+swing.error.cannot.mail=Aucun programme n'est défini pour envoyer des emails.
swing.error.cannot.open.file=Aucun programme n'est défini pour ouvrir ce type de fichier. Enregistrez le fichier et ouvrez le en dehors de Tutti.
swing.error.cannot.open.link=Impossible d'ouvrir le fichier %s.
swing.error.desktop.browse.not.supported=Le navigateur n'a pas pu être ouvert. Vérifiez que vous avez défini un navigateur par défaut dans votre système.
+swing.error.desktop.mail.not.supported=Le client mail n'a pas pu être ouvert. Vérifiez que vous avez défini un client mail par défaut dans votre système.
swing.error.desktop.not.supported=Votre système ne permet pas d'ouvrir des liens ou fichiers en dehors de Tutti.
tutti.about.bottomText=Copyright %s - %s - version %s
tutti.about.message=<h3>Tutti</h3><p><strong>Outil de saisie de données d'opérations et de captures au cours des campagnes halieutiques.</strong></p><br/><p>Ce logiciel permettra la saisie en mer des données d'opération de pêche (positions, environnement, engin, etc) et des captures associées (composition de la capture en espèces scientifiques avec poids, nombres, tailles etc) pour l'ensemble des campagnes halieutiques réalisées par l'Ifremer.</p><p>Ce projet a été initiée en 2012 par l'<a href\="http\://www.ifremer.fr">Ifremer</a> et réalisé par la société <a href\="http\://codelutin.com">Codelutin</a>.</p><hr/><br/><p>Pour plus d'informations, vous pouvez visiter le <a href\="http\://maven-site.forge.codelutin.com/tutti">site du projet</a>.</p><p>Projet hébergé sur la forge <a href\="http\://forge.codelutin.com/projects/tutti">Forge.codelutin.com</a>.</p>
@@ -56,6 +58,7 @@
tutti.common.cancel=Annuler
tutti.common.cancel.mnemonic=A
tutti.common.file.csv=Extension d'un fichier csv
+tutti.common.file.pdf=Extension d'un fichier pdf
tutti.common.file.protocol=Extension d'un fichier de protocole Tutti
tutti.common.file.zip=Extension d'une archive zip
tutti.common.validate=Valider
@@ -824,6 +827,7 @@
tutti.error.errorpane.htmlmessage=<html><body><b>Une erreur s'est produite</b>\:<br/>%s</body></html>
tutti.error.ui.business.error=Erreur
tutti.error.ui.other.error=Erreur
+tutti.exportProtocol.action.success=Protocole [%1s] exporté dans le fichier %2s.
tutti.fishingOperations.action.newFishingOperation.mnemonic=N
tutti.fishingOperations.action.newFishingOperation.tip=Créer une nouvelle opération de pêche
tutti.fishingOperations.info.no.fishingOperation.selected=< Aucun trait sélectionné >
@@ -864,6 +868,7 @@
tutti.gearUseFeatureTable.table.header.key=Caractéristique
tutti.gearUseFeatureTable.table.header.value=Valeur
tutti.gearUseFeatureTable.title=Mise en oeuvre de l'engin
+tutti.importProtocol.action.success=Protocole [%s] lu depuis le fichier.
tutti.importPupitri.carrouselFile.extension=car
tutti.importPupitri.carrouselFile.extension.description=Fichier du carrousel (.car)
tutti.importPupitri.error.fileMissing.message=Vous devez sélectionner un fichier pour le trémie et un fichier pour le carrousel pour pouvoir continuer l'import.
@@ -1079,6 +1084,11 @@
tutti.selectSpecies.action.validate.mnemonic=V
tutti.selectSpecies.action.validate.tip=Valider la sélection de l'espèce
tutti.selectSpecies.title=Choisissez une espèce
+tutti.sendCatchesReport.action.chooseFile=Choisir le fichier de rapport
+tutti.sendCatchesReport.action.success=Les captures ont correctement été exporté dans le fichier %s
+tutti.sendCatchesReport.mail.body=Bonjour,\n\nveuillez trouver ci-joint le rapport des captures de la campagne %1s.\n*Pensez à joindre le fichier %2s*\n\nCordialement,\n\n*Votre nom*
+tutti.sendCatchesReport.mail.subject=Captures de la campagne %s
+tutti.sendCatchesReport.title.choose.exportFile=Exporter les captures de la campagne
tutti.splitBenthosBatch.action.cancel=Annuler
tutti.splitBenthosBatch.action.cancel.mnemonic=A
tutti.splitBenthosBatch.action.cancel.tip=Annuler le sous-échantillonnage
@@ -1122,8 +1132,15 @@
tutti.update.i18n=Traductions
tutti.update.jre=Java
tutti.update.tutti=Tutti
+tutti.updateApplication.message.success=La mise à jour nécessite le rédémarrage du Tutti.\nL'application va se fermer puis se réouvrir automatiquement.
+tutti.updateApplication.noUpdate=Aucune mise à jour de l'application détectée.
+tutti.updateApplication.title.success=Redémarrage de Tutti nécessaire...
tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
-tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required=L'espèce est obligatoire
+tutti.validator.error.createAccidentalBatch.species.required=L'espèce est obligatoire
+tutti.validator.error.createIndividualObservationBatch.lengthStepCaracteristic.required=La classe de taille est obligatoire
+tutti.validator.error.createIndividualObservationBatch.size.required=La taille est obligatoire
+tutti.validator.error.createIndividualObservationBatch.species.required=L'espèce est obligatoire
+tutti.validator.error.createIndividualObservationBatch.weight.required=Le poids est obligatoire
tutti.validator.error.createMarineLitterBatch.categoryAndSizeCategory.notAvailable=Couple (catégorie de déchet - catégorie de taille) déjà utilisée
tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required=La catégorie de déchet est obligatoire
tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required=La catégorie de taille est obligatoire
1
0