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
r783 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/util java/fr/ifremer/tutti/ui/swing/util/attachment resources/i18n
by tchemit@users.forge.codelutin.com 15 Apr '13
by tchemit@users.forge.codelutin.com 15 Apr '13
15 Apr '13
Author: tchemit
Date: 2013-04-15 22:27:37 +0200 (Mon, 15 Apr 2013)
New Revision: 783
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/783
Log:
fixes #2292: [TECH] Probl?\195?\168me lors de la visualisation d'une pi?\195?\168ce-jointe
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiErrorHelper.java
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/attachment/AttachmentEditorUIHandler.java
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/util/TuttiErrorHelper.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiErrorHelper.java 2013-04-15 16:37:54 UTC (rev 782)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiErrorHelper.java 2013-04-15 20:27:37 UTC (rev 783)
@@ -56,7 +56,11 @@
*/
public void showErrorDialog(String message, Throwable cause) {
- if (cause instanceof TuttiBusinessException) {
+ if (cause == null) {
+ JOptionPane.showMessageDialog(context.getMainUI(), message,
+ _("tutti.error.ui.business.error"),
+ JOptionPane.ERROR_MESSAGE);
+ } else if (cause instanceof TuttiBusinessException) {
JOptionPane.showMessageDialog(context.getMainUI(), cause.getMessage(),
_("tutti.error.ui.business.error"),
JOptionPane.ERROR_MESSAGE);
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-15 16:37:54 UTC (rev 782)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-04-15 20:27:37 UTC (rev 783)
@@ -260,52 +260,46 @@
}
}
- public static void openLink(URI uri) {
+ public static Desktop getDesktopForBrowse() {
- try {
- if (!Desktop.isDesktopSupported()) {
- throw new TuttiTechnicalException(
- _("swing.error.desktop.not.supported"));
- }
+ if (!Desktop.isDesktopSupported()) {
+ throw new TuttiTechnicalException(
+ _("swing.error.desktop.not.supported"));
+ }
+ Desktop desktop = Desktop.getDesktop();
- Desktop desktop = Desktop.getDesktop();
+ if (!desktop.isSupported(Desktop.Action.BROWSE)) {
- if (!desktop.isSupported(Desktop.Action.BROWSE)) {
+ throw new TuttiTechnicalException(
+ _("swing.error.desktop.browse.not.supported"));
+ }
- throw new TuttiTechnicalException(
- _("swing.error.desktop.browse.not.supported"));
- }
+ return desktop;
+ }
- desktop.browse(uri);
- throw new RuntimeException(_("swing.error.cannot.open.link"));
- } catch (Exception e) {
+ public static void openLink(URI uri) {
- throw new TuttiTechnicalException(_("swing.error.cannot.open.link"), e);
+ if (!Desktop.isDesktopSupported()) {
+ throw new TuttiTechnicalException(
+ _("swing.error.desktop.not.supported"));
}
- }
- public static void editLink(File uri) {
+ Desktop desktop = Desktop.getDesktop();
- try {
- if (!Desktop.isDesktopSupported()) {
- throw new TuttiTechnicalException(
- _("swing.error.desktop.not.supported"));
- }
+ if (!desktop.isSupported(Desktop.Action.BROWSE)) {
+ throw new TuttiTechnicalException(
+ _("swing.error.desktop.browse.not.supported"));
+ }
- Desktop desktop = Desktop.getDesktop();
+ try {
- if (!desktop.isSupported(Desktop.Action.EDIT)) {
-
- throw new TuttiTechnicalException(
- _("swing.error.desktop.browse.not.supported"));
- }
-
- desktop.edit(uri);
+ desktop.browse(uri);
} catch (Exception e) {
- throw new TuttiTechnicalException("Could not open link: " + uri, e);
+ throw new TuttiTechnicalException(
+ _("swing.error.cannot.open.link", uri), e);
}
}
@@ -323,7 +317,6 @@
}
bean.removePropertyChangeListener(listener);
}
-
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2013-04-15 16:37:54 UTC (rev 782)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2013-04-15 20:27:37 UTC (rev 783)
@@ -50,9 +50,11 @@
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import java.awt.Component;
+import java.awt.Desktop;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.File;
+import java.io.IOException;
import java.util.List;
import static org.nuiton.i18n.I18n._;
@@ -261,17 +263,17 @@
public void openAttachment(Attachment attachment) {
File file = persistenceService.getAttachmentFile(attachment.getId());
+
+ if (!file.exists()) {
+ throw new TuttiTechnicalException("File " + file.getAbsolutePath() + " does not exists.");
+ }
+
+ Desktop desktop = TuttiUIUtil.getDesktopForBrowse();
try {
- TuttiUIUtil.openLink(file.toURI());
+ desktop.browse(file.toURI());
- } catch (TuttiTechnicalException e) {
- String message;
- if (e.getCause() instanceof TuttiTechnicalException) {
- message = e.getCause().getMessage();
- } else {
- message = _("swing.error.cannot.open.file");
- }
- TuttiUIContext.getErrorHelper().showErrorDialog(message, e);
+ } catch (IOException e) {
+ TuttiUIContext.getErrorHelper().showErrorDialog(_("swing.error.cannot.open.file"), null);
}
}
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-15 16:37:54 UTC (rev 782)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-15 20:27:37 UTC (rev 783)
@@ -1,5 +1,5 @@
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=La cible du lien n'existe pas.
+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.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
1
0
r782 - in trunk: tutti-service/src/main/java/fr/ifremer/tutti/service tutti-service/src/main/java/fr/ifremer/tutti/service/config tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor
by tchemit@users.forge.codelutin.com 15 Apr '13
by tchemit@users.forge.codelutin.com 15 Apr '13
15 Apr '13
Author: tchemit
Date: 2013-04-15 18:37:54 +0200 (Mon, 15 Apr 2013)
New Revision: 782
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/782
Log:
fixes #2290: [PROTOCOLE] Le protocole n'est plus s?\195?\169lectionn?\195?\169 au d?\195?\169marrage de l'application
fixes #2291: [PROTOCOLE] Un protocole est s?\195?\169lectionn?\195?\169 mais dans le titre on ne le voit pas
refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique (ajout dans la configuration du pays de l'export)
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiLocationTableCell.java
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/VesselTableCell.java
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java 2013-04-15 16:12:04 UTC (rev 781)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java 2013-04-15 16:37:54 UTC (rev 782)
@@ -186,8 +186,7 @@
public void clearContext() {
program = null;
cruise = null;
- protocolId = null;
- fishingOperationId = null;
+ fishingOperation = null;
resetProtocol();
resetVessels();
resetGears();
@@ -209,6 +208,12 @@
}
setProtocolId(null);
+ } else {
+ if (log.isInfoEnabled()) {
+ log.info("protocolId valid: " + getProtocolId());
+ }
+
+ setProtocolId(getProtocolId());
}
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-04-15 16:12:04 UTC (rev 781)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-04-15 16:37:54 UTC (rev 782)
@@ -71,7 +71,7 @@
"tutti.export.countryId",
n_("tutti.config.option.export.countryId.description"),
"12",
- char.class),
+ String.class),
// TRANSIENT CONFIG
VERSION(
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-04-15 16:12:04 UTC (rev 781)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-04-15 16:37:54 UTC (rev 782)
@@ -512,8 +512,7 @@
if (context.isCruiseFilled()) {
// selected cruise
- Cruise cruise;
- cruise = getDataContext().getCruise();
+ Cruise cruise = getDataContext().getCruise();
if (cruise != null) {
title += _("tutti.main.title.selectedCruise", cruise.getName());
@@ -525,29 +524,27 @@
title += _("tutti.main.title.noSelectedCruise");
}
- title += " / ";
+ } else {
- if (context.isProtocolFilled()) {
+ // no program selected (so neither cruise)
- // selected protocol
- TuttiProtocol protocol = getDataContext().getProtocol();
+ title = _("tutti.main.title.noSelectedProgram");
- log.fatal(protocol.getId() + " " + protocol.getName());
+ }
- title += _("tutti.main.title.selectedProtocol", protocol.getName());
- } else {
+ title += " / ";
- // no selected protocol
+ if (context.isProtocolFilled()) {
- title += _("tutti.main.title.noSelectedProtocol");
- }
+ // selected protocol
+ TuttiProtocol protocol = getDataContext().getProtocol();
+ title += _("tutti.main.title.selectedProtocol", protocol.getName());
} else {
- // no program selected (so neither cruise)
+ // no selected protocol
- title = _("tutti.main.title.noSelectedProgram");
-
+ title += _("tutti.main.title.noSelectedProtocol");
}
} else {
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-15 16:12:04 UTC (rev 781)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-04-15 16:37:54 UTC (rev 782)
@@ -34,6 +34,7 @@
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.editor.TuttiLocationTableCell;
import fr.ifremer.tutti.ui.swing.util.editor.VesselTableCell;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.config.ConfigUI;
@@ -137,6 +138,11 @@
.setOptionEditor(vesselTableCellComponent.getNewTableCellEditor())
.setOptionRenderer(vesselTableCellComponent.getNewTableCellRenderer());
+ TuttiLocationTableCell tuttiLocationTableCellComponent = new TuttiLocationTableCell(context);
+ helper.addOption(TuttiServiceConfigOption.EXPORT_COUNTRY_ID)
+ .setOptionEditor(tuttiLocationTableCellComponent.getNewTableCellEditor())
+ .setOptionRenderer(tuttiLocationTableCellComponent.getNewTableCellRenderer());
+
SampleOrderIdsTableCell comp = new SampleOrderIdsTableCell(context);
TableCellEditor sampleOrderEditor = comp.getNewTableCellEditor();
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiLocationTableCell.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiLocationTableCell.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiLocationTableCell.java 2013-04-15 16:37:54 UTC (rev 782)
@@ -0,0 +1,166 @@
+package fr.ifremer.tutti.ui.swing.util.editor;
+
+/*
+ * #%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.Lists;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
+import org.nuiton.util.decorator.Decorator;
+import org.nuiton.util.decorator.JXPathDecorator;
+
+import javax.swing.DefaultCellEditor;
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.MouseEvent;
+import java.util.EventObject;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * To edit a {@link TuttiLocation}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.4
+ */
+public class TuttiLocationTableCell {
+
+ protected Decorator<TuttiLocation> decorator;
+
+ protected List<TuttiLocation> entities;
+
+ protected Map<String, TuttiLocation> entityMap;
+
+ public TuttiLocationTableCell(TuttiUIContext context) {
+ DecoratorService decoratorService = context.getDecoratorService();
+ decorator = decoratorService.getDecoratorByType(TuttiLocation.class);
+
+ entities = Lists.newArrayList(context.getPersistenceService().getAllCountry());
+ entityMap = TuttiEntities.splitById(entities);
+ }
+
+ public TableCellEditor getNewTableCellEditor() {
+ return new TuttiLocationTableCellEditor();
+ }
+
+ public TableCellRenderer getNewTableCellRenderer() {
+ return new TuttiLocationTableCellRenderer();
+ }
+
+ protected class TuttiLocationTableCellEditor extends DefaultCellEditor {
+
+ private static final long serialVersionUID = 1L;
+
+ protected TuttiLocationTableCellEditor() {
+ super(new JComboBox());
+
+ final BeanFilterableComboBox<TuttiLocation> component = new BeanFilterableComboBox<TuttiLocation>();
+ component.setI18nPrefix("tutti.property.");
+ component.setShowReset(true);
+ setClickCountToStart(1);
+
+ editorComponent = component;
+ delegate = new DefaultCellEditor.EditorDelegate() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void setValue(Object value) {
+ if (value != null && String.class.isInstance(value)) {
+ value = entityMap.get(value);
+ }
+ component.setSelectedItem(value);
+ }
+
+ @Override
+ public Object getCellEditorValue() {
+ String result = null;
+ Object selectedItem = component.getSelectedItem();
+ if (TuttiLocation.class.isInstance(selectedItem)) {
+ TuttiLocation entity = (TuttiLocation) component.getSelectedItem();
+ if (entity != null) {
+ result = entity.getId();
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public boolean shouldSelectCell(EventObject anEvent) {
+ if (anEvent instanceof MouseEvent) {
+ MouseEvent e = (MouseEvent) anEvent;
+ return e.getID() != MouseEvent.MOUSE_DRAGGED;
+ }
+ return true;
+ }
+
+ @Override
+ public boolean stopCellEditing() {
+ if (component.isEditable()) {
+ // Commit edited value.
+ component.getCombobox().actionPerformed(
+ new ActionEvent(TuttiLocationTableCellEditor.this, 0, ""));
+ }
+ return super.stopCellEditing();
+ }
+ };
+
+ component.init((JXPathDecorator<TuttiLocation>) decorator, entities);
+ }
+
+ class TuttiLocationListCellRenderer extends DefaultListCellRenderer {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+ return super.getListCellRendererComponent(list, decorator.toString(value), index, isSelected, cellHasFocus);
+ }
+ }
+ }
+
+ protected class TuttiLocationTableCellRenderer extends DefaultTableCellRenderer {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value,
+ boolean isSelected, boolean hasFocus,
+ int row, int column) {
+
+ String entityId = String.valueOf(value);
+ TuttiLocation entity = entityMap.get(entityId);
+ return super.getTableCellRendererComponent(table, decorator.toString(entity), isSelected, hasFocus, row, column);
+ }
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiLocationTableCell.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/editor/VesselTableCell.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/VesselTableCell.java 2013-04-15 16:12:04 UTC (rev 781)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/VesselTableCell.java 2013-04-15 16:37:54 UTC (rev 782)
@@ -56,17 +56,17 @@
protected Decorator<Vessel> decorator;
- protected List<Vessel> vessels;
+ protected List<Vessel> entities;
- protected Map<String, Vessel> vesselMap;
+ protected Map<String, Vessel> entityMap;
public VesselTableCell(TuttiUIContext context) {
DecoratorService decoratorService = context.getDecoratorService();
decorator = decoratorService.getDecoratorByType(Vessel.class);
- vessels = Lists.newArrayList(context.getDataContext().getFishingVessels());
- vessels.addAll(context.getDataContext().getScientificVessels());
- vesselMap = TuttiEntities.splitById(vessels);
+ entities = Lists.newArrayList(context.getDataContext().getFishingVessels());
+ entities.addAll(context.getDataContext().getScientificVessels());
+ entityMap = TuttiEntities.splitById(entities);
}
public TableCellEditor getNewTableCellEditor() {
@@ -96,7 +96,7 @@
@Override
public void setValue(Object value) {
if (value != null && String.class.isInstance(value)) {
- value = vesselMap.get(value);
+ value = entityMap.get(value);
}
component.setSelectedItem(value);
}
@@ -134,7 +134,7 @@
}
};
- component.init((JXPathDecorator<Vessel>) decorator, vessels);
+ component.init((JXPathDecorator<Vessel>) decorator, entities);
}
class VesselListCellRenderer extends DefaultListCellRenderer {
@@ -158,7 +158,7 @@
int row, int column) {
String vesselId = String.valueOf(value);
- Vessel vessel = vesselMap.get(vesselId);
+ Vessel vessel = entityMap.get(vesselId);
return super.getTableCellRendererComponent(table, decorator.toString(vessel), isSelected, hasFocus, row, column);
}
}
1
0
r781 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/operation/catches resources/i18n
by kmorin@users.forge.codelutin.com 15 Apr '13
by kmorin@users.forge.codelutin.com 15 Apr '13
15 Apr '13
Author: kmorin
Date: 2013-04-15 18:12:04 +0200 (Mon, 15 Apr 2013)
New Revision: 781
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/781
Log:
refs #1866 [CAPTURE] - Captures accidentelles
refs #1867 [CAPTURE] - Observations individuelles
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/EditCatchesUIHandler.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/operation/catches/EditCatchesUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-15 15:54:09 UTC (rev 780)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-15 16:12:04 UTC (rev 781)
@@ -378,7 +378,7 @@
</JXTitledPanel-->
</tab>
- <tab id='accidentalTab' title='tutti.label.tab.accidentel'>
+ <tab id='accidentalTab'>
<JPanel id='accidentalTabPanel'>
<JXTitledPanel id='accidentalTabFishingOperationReminderLabel'
constraints='EditCatchesUIHandler.MAIN_CARD'>
@@ -392,8 +392,7 @@
</JXTitledPanel>
</JPanel>
</tab>
- <tab id='individualObservationTab'
- title='tutti.label.tab.individualObservation'>
+ <tab id='individualObservationTab'>
<JPanel id='individualObservationTabPanel'>
<JXTitledPanel
id='individualObservationTabFishingOperationReminderLabel'
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-04-15 15:54:09 UTC (rev 780)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-04-15 16:12:04 UTC (rev 781)
@@ -121,6 +121,8 @@
setCustomTab(1, ui.getSpeciesTabContent().getModel());
setCustomTab(2, ui.getBenthosTabContent().getModel());
setCustomTab(3, ui.getMarineLitterTabContent().getModel());
+ setCustomTab(4, ui.getAccidentalTabContent().getModel());
+ setCustomTab(5, ui.getIndividualObservationTabContent().getModel());
}
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-15 15:54:09 UTC (rev 780)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-15 16:12:04 UTC (rev 781)
@@ -1053,6 +1053,9 @@
tutti.selectCruise.action.validateCatches=
tutti.selectCruise.action.validateCatches.mnemonic=
tutti.selectCruise.action.validateCatches.tip=
+tutti.selectCruise.action.validateCruise=
+tutti.selectCruise.action.validateCruise.mnemonic=
+tutti.selectCruise.action.validateCruise.tip=
tutti.selectCruise.field.cruise=
tutti.selectCruise.field.cruise.tip=
tutti.selectCruise.field.program=
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-15 15:54:09 UTC (rev 780)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-15 16:12:04 UTC (rev 781)
@@ -870,12 +870,12 @@
tutti.importPupitri.trunkFile.extension.description=Fichier du trémie (.tnk)
tutti.label.catches.planktonTotalSampleWeight=Poids total échantillonné
tutti.label.catches.planktonTotalWeight=Poids total
-tutti.label.tab.accidentel=Captures accidentelles
+tutti.label.tab.accidental=Captures accidentelles
tutti.label.tab.benthos=Benthos
tutti.label.tab.catches=Captures
tutti.label.tab.catchesCaracteristics=Résumé
tutti.label.tab.fishingOperation=Trait
-tutti.label.tab.individualObservation=Observations individuelles
+tutti.label.tab.individualObservations=Observations individuelles
tutti.label.tab.marineLitter=Macro déchets
tutti.label.tab.plancton=Plancton
tutti.label.tab.species=Espèces
@@ -1051,6 +1051,9 @@
tutti.selectCruise.action.validateCatches=Valider les captures
tutti.selectCruise.action.validateCatches.mnemonic=V
tutti.selectCruise.action.validateCatches.tip=Valider les captures
+tutti.selectCruise.action.validateCruise=Valider la campagne
+tutti.selectCruise.action.validateCruise.mnemonic=d
+tutti.selectCruise.action.validateCruise.tip=Valider la campagne
tutti.selectCruise.field.cruise=Campagne
tutti.selectCruise.field.cruise.tip=
tutti.selectCruise.field.program=Série de campagne
1
0
Author: tchemit
Date: 2013-04-15 17:54:09 +0200 (Mon, 15 Apr 2013)
New Revision: 780
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/780
Log:
use last jaxx version
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-04-15 15:39:32 UTC (rev 779)
+++ trunk/pom.xml 2013-04-15 15:54:09 UTC (rev 780)
@@ -132,7 +132,7 @@
<eugenePluginVersion>2.6.2</eugenePluginVersion>
<hibernateVersion>3.6.10.Final</hibernateVersion>
- <jaxxVersion>2.5.17-SNAPSHOT</jaxxVersion>
+ <jaxxVersion>2.5.17</jaxxVersion>
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.7</xworkVersion>
1
0
r779 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing: content/operation/catches/accidental content/operation/catches/benthos content/operation/catches/individualobservation content/operation/catches/individualobservation/caracteristics content/operation/catches/marinelitter content/operation/catches/species content/operation/fishing content/protocol util
by kmorin@users.forge.codelutin.com 15 Apr '13
by kmorin@users.forge.codelutin.com 15 Apr '13
15 Apr '13
Author: kmorin
Date: 2013-04-15 17:39:32 +0200 (Mon, 15 Apr 2013)
New Revision: 779
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/779
Log:
refs #1848 [ERGO] - Touches de raccourcis
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx
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/caracteristics/CaracteristicMapEditorUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/GearUseFeatureTabUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/VesselUseFeatureTabUI.jaxx
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
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-04-15 15:38:46 UTC (rev 778)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-04-15 15:39:32 UTC (rev 779)
@@ -95,7 +95,8 @@
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
<JXTable id='table'
- onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
+ onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-04-15 15:38:46 UTC (rev 778)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-04-15 15:39:32 UTC (rev 779)
@@ -163,7 +163,8 @@
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
<JXTable id='table'
- onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
+ onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
</JPanel>
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-15 15:38:46 UTC (rev 778)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx 2013-04-15 15:39:32 UTC (rev 779)
@@ -94,7 +94,8 @@
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
<JXTable id='table'
- onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
+ onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx 2013-04-15 15:38:46 UTC (rev 778)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx 2013-04-15 15:39:32 UTC (rev 779)
@@ -56,7 +56,8 @@
<cell fill='both' columns='2'>
<JScrollPane>
<JXTable id='caracteristicMapEditorTable'
- onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
+ onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-15 15:38:46 UTC (rev 778)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-15 15:39:32 UTC (rev 779)
@@ -106,7 +106,8 @@
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
<JXTable id='table'
- onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
+ onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-04-15 15:38:46 UTC (rev 778)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-04-15 15:39:32 UTC (rev 779)
@@ -163,7 +163,8 @@
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
<JXTable id='table'
- onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
+ onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/GearUseFeatureTabUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/GearUseFeatureTabUI.jaxx 2013-04-15 15:38:46 UTC (rev 778)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/GearUseFeatureTabUI.jaxx 2013-04-15 15:39:32 UTC (rev 779)
@@ -58,7 +58,8 @@
<cell fill='both' columns='2'>
<JScrollPane>
<JXTable id='gearUseFeatureTable'
- onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
+ onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/VesselUseFeatureTabUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/VesselUseFeatureTabUI.jaxx 2013-04-15 15:38:46 UTC (rev 778)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/VesselUseFeatureTabUI.jaxx 2013-04-15 15:39:32 UTC (rev 779)
@@ -60,7 +60,8 @@
<cell fill='both' columns='2'>
<JScrollPane>
<JXTable id='vesselUseFeatureTable'
- onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
+ onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
</JScrollPane>
</cell>
</row>
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-15 15:38:46 UTC (rev 778)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-04-15 15:39:32 UTC (rev 779)
@@ -164,7 +164,8 @@
<cell fill='both' columns='3'>
<JScrollPane>
<JXTable id='speciesTable'
- onMouseClicked='handler.autoSelectRowInTable(event, speciesTablePopup)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, speciesTablePopup)'
+ onKeyPressed='handler.openRowMenu(event, speciesTablePopup)'/>
</JScrollPane>
</cell>
</row>
@@ -198,7 +199,8 @@
<cell fill='both' columns='3'>
<JScrollPane>
<JXTable id='benthosTable'
- onMouseClicked='handler.autoSelectRowInTable(event, benthosTablePopup)'/>
+ onMouseClicked='handler.autoSelectRowInTable(event, benthosTablePopup)'
+ onKeyPressed='handler.openRowMenu(event, benthosTablePopup)'/>
</JScrollPane>
</cell>
</row>
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-15 15:38:46 UTC (rev 778)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-04-15 15:39:32 UTC (rev 779)
@@ -86,22 +86,12 @@
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
-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.event.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
import javax.swing.text.JTextComponent;
-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.*;
import java.awt.event.ActionEvent;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
@@ -998,4 +988,46 @@
}
}
+ public void openRowMenu(KeyEvent e, JPopupMenu popup) {
+
+ if (e.getKeyCode() == KeyEvent.VK_CONTEXT_MENU) {
+
+ JXTable source = (JXTable) e.getSource();
+
+ // get the lowest selected row
+ int[] selectedRows = source.getSelectedRows();
+ int lowestRow = -1;
+ for (int row : selectedRows) {
+ lowestRow = Math.max(lowestRow, row);
+ }
+ // get the selected column
+ 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);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Row " + lowestRow +" found t point [" + p + "]");
+ }
+
+ boolean canContinue = true;
+
+ if (source.isEditing()) {
+
+ // stop editing
+ boolean stopEdit = source.getCellEditor().stopCellEditing();
+ if (!stopEdit) {
+ if (log.isWarnEnabled()) {
+ log.warn("Could not stop edit cell...");
+ }
+ canContinue = false;
+ }
+ }
+
+ if (canContinue) {
+ popup.show(source, p.x, p.y);
+ }
+ }
+ }
+
}
1
0
r778 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service tutti-service/src/main/java/fr/ifremer/tutti/service/protocol tutti-service/src/main/resources/i18n tutti-service/src/test/java/fr/ifremer/tutti/service/protocol tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol tutti-ui-swing/src/main/resources/i18n
by tchemit@users.forge.codelutin.com 15 Apr '13
by tchemit@users.forge.codelutin.com 15 Apr '13
15 Apr '13
Author: tchemit
Date: 2013-04-15 17:38:46 +0200 (Mon, 15 Apr 2013)
New Revision: 778
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/778
Log:
fixes #2283: [PROTOCOLE] - A la cr?\195?\169ation d'un nouveau protocole le logiciel d?\195?\169place les esp?\195?\168ces benthos dans esp?\195?\168ces
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.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
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportServiceTest.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java 2013-04-15 14:48:55 UTC (rev 777)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceImpl.java 2013-04-15 15:38:46 UTC (rev 778)
@@ -140,7 +140,7 @@
SpeciesProtocol s = TuttiBeanFactory.newSpeciesProtocol();
speciesProtocolBinder.copy(speciesProtocol, s);
s.setId(UUID.randomUUID().toString());
- species.add(s);
+ benthos.add(s);
}
}
result.setBenthos(benthos);
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-15 14:48:55 UTC (rev 777)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceReadTest.java 2013-04-15 15:38:46 UTC (rev 778)
@@ -38,12 +38,11 @@
import java.util.List;
/**
- * To test {@link ProtocolPersistenceService} for read operation.
+ * To test {@link ProtocolPersistenceService} for read operations.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-@Ignore
public class ProtocolPersistenceServiceReadTest {
@ClassRule
@@ -111,6 +110,30 @@
sp2.setSizeEnabled(true);
sp2.setWeightEnabled(true);
protocol.addSpecies(sp2);
+
+ protocol.setBenthos(Lists.<SpeciesProtocol>newArrayList());
+ SpeciesProtocol bp1 = TuttiBeanFactory.newSpeciesProtocol();
+ bp1.setId("21");
+ bp1.setSpeciesReferenceTaxonId(11242);
+ bp1.setLengthStepPmfmId("1394");
+ bp1.setCalcifySampleEnabled(true);
+ bp1.setMaturityEnabled(true);
+ bp1.setSexEnabled(true);
+ bp1.setWeightEnabled(true);
+ protocol.addBenthos(bp1);
+
+ SpeciesProtocol bp2 = TuttiBeanFactory.newSpeciesProtocol();
+ bp2.setId("22");
+ bp2.setSpeciesReferenceTaxonId(3835);
+ bp2.setLengthStepPmfmId("323");
+ bp2.setAgeEnabled(true);
+ bp2.setCalcifySampleEnabled(true);
+ bp2.setCountIfNoFrequencyEnabled(true);
+ bp2.setMaturityEnabled(true);
+ bp2.setSexEnabled(true);
+ bp2.setSizeEnabled(true);
+ bp2.setWeightEnabled(true);
+ protocol.addBenthos(bp2);
return protocol;
}
}
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-15 14:48:55 UTC (rev 777)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProtocolPersistenceServiceWriteTest.java 2013-04-15 15:38:46 UTC (rev 778)
@@ -36,12 +36,11 @@
import org.junit.Test;
/**
- * To test {@link ProtocolPersistenceService} for write operation.
+ * To test {@link ProtocolPersistenceService} for write operations.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-@Ignore
public class ProtocolPersistenceServiceWriteTest {
@ClassRule
@@ -50,6 +49,26 @@
protected ProtocolPersistenceService service;
public static final String PROTOCOL_FILE_CONTENT =
+ "benthos: \n" +
+ "- !SpeciesProtocol\n" +
+ " id: 21\n" +
+ " calcifySampleEnabled: true\n" +
+ " lengthStepPmfmId: 1394\n" +
+ " maturityEnabled: true\n" +
+ " sexEnabled: true\n" +
+ " speciesReferenceTaxonId: 11242\n" +
+ " weightEnabled: true\n" +
+ "- !SpeciesProtocol\n" +
+ " id: 22\n" +
+ " ageEnabled: true\n" +
+ " calcifySampleEnabled: true\n" +
+ " countIfNoFrequencyEnabled: true\n" +
+ " lengthStepPmfmId: 323\n" +
+ " maturityEnabled: true\n" +
+ " sexEnabled: true\n" +
+ " sizeEnabled: true\n" +
+ " speciesReferenceTaxonId: 3835\n" +
+ " weightEnabled: true\n" +
"id: 1\n" +
"name: protocolName\n" +
"comment: Commentaire\n" +
@@ -160,6 +179,31 @@
sp2.setSizeEnabled(true);
sp2.setWeightEnabled(true);
protocol.addSpecies(sp2);
+
+ protocol.setBenthos(Lists.<SpeciesProtocol>newArrayList());
+ SpeciesProtocol bp1 = TuttiBeanFactory.newSpeciesProtocol();
+ bp1.setId("21");
+ bp1.setSpeciesReferenceTaxonId(11242);
+ bp1.setLengthStepPmfmId("1394");
+ bp1.setCalcifySampleEnabled(true);
+ bp1.setMaturityEnabled(true);
+ bp1.setSexEnabled(true);
+ bp1.setWeightEnabled(true);
+ protocol.addBenthos(bp1);
+
+ SpeciesProtocol bp2 = TuttiBeanFactory.newSpeciesProtocol();
+ bp2.setId("22");
+ bp2.setSpeciesReferenceTaxonId(3835);
+ bp2.setLengthStepPmfmId("323");
+ bp2.setAgeEnabled(true);
+ bp2.setCalcifySampleEnabled(true);
+ bp2.setCountIfNoFrequencyEnabled(true);
+ bp2.setMaturityEnabled(true);
+ bp2.setSexEnabled(true);
+ bp2.setSizeEnabled(true);
+ bp2.setWeightEnabled(true);
+ protocol.addBenthos(bp2);
+
return protocol;
}
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java 2013-04-15 14:48:55 UTC (rev 777)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java 2013-04-15 15:38:46 UTC (rev 778)
@@ -226,4 +226,12 @@
public void setMadeFromAReferentTaxon(boolean referent) {
delegate.setMadeFromAReferentTaxon(referent);
}
+
+ public void setId(String id) {
+ delegate.setId(id);
+ }
+
+ public String getId() {
+ return delegate.getId();
+ }
}
\ 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-15 14:48:55 UTC (rev 777)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-04-15 15:38:46 UTC (rev 778)
@@ -1,6 +1,7 @@
tutti.config.option.basedir.description=
tutti.config.option.csv.separator.description=
tutti.config.option.data.directory.description=
+tutti.config.option.export.countryId.description=
tutti.config.option.inceptionYear.description=
tutti.config.option.organizationName.description=
tutti.config.option.site.url.description=
@@ -56,6 +57,8 @@
tutti.service.catches.computeWeights.error.incoherentSampleWeight=
tutti.service.catches.computeWeights.error.incoherentSpeciesTotalSorted=
tutti.service.catches.computeWeights.error.incoherentTotal=
+tutti.service.export.invalid.cruise=
+tutti.service.export.invalid.fishingOperation=
tutti.validator.error.comment.too.long=
tutti.validator.error.cruise.beginDate.required=
tutti.validator.error.cruise.dates.endBeforeStart=
Modified: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportServiceTest.java 2013-04-15 14:48:55 UTC (rev 777)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportServiceTest.java 2013-04-15 15:38:46 UTC (rev 778)
@@ -57,6 +57,7 @@
"name: protocolName\n" +
"benthos: \n" +
"- !SpeciesProtocol\n" +
+ " id: 21\n" +
" calcifySampleEnabled: true\n" +
" lengthStepPmfmId: 1394\n" +
" maturityEnabled: true\n" +
@@ -65,6 +66,7 @@
" speciesSurveyCode: cruiseCode1\n" +
" weightEnabled: true\n" +
"- !SpeciesProtocol\n" +
+ " id: 22\n" +
" ageEnabled: true\n" +
" calcifySampleEnabled: true\n" +
" countIfNoFrequencyEnabled: true\n" +
@@ -83,6 +85,7 @@
"- 18\n" +
"species: \n" +
"- !SpeciesProtocol\n" +
+ " id: 1\n" +
" calcifySampleEnabled: true\n" +
" lengthStepPmfmId: 1394\n" +
" maturityEnabled: true\n" +
@@ -91,6 +94,7 @@
" speciesSurveyCode: cruiseCode1\n" +
" weightEnabled: true\n" +
"- !SpeciesProtocol\n" +
+ " id: 2\n" +
" ageEnabled: true\n" +
" calcifySampleEnabled: true\n" +
" countIfNoFrequencyEnabled: true\n" +
@@ -163,6 +167,7 @@
protocol.setSpecies(Lists.<SpeciesProtocol>newArrayList());
SpeciesProtocol sp1 = TuttiBeanFactory.newSpeciesProtocol();
+ sp1.setId(1);
sp1.setSpeciesReferenceTaxonId(11242);
sp1.setSpeciesSurveyCode("cruiseCode1");
sp1.setLengthStepPmfmId("1394");
@@ -173,6 +178,7 @@
protocol.addSpecies(sp1);
SpeciesProtocol sp2 = TuttiBeanFactory.newSpeciesProtocol();
+ sp2.setId(2);
sp2.setSpeciesReferenceTaxonId(3835);
sp2.setLengthStepPmfmId("323");
sp2.setAgeEnabled(true);
@@ -185,27 +191,29 @@
protocol.addSpecies(sp2);
protocol.setBenthos(Lists.<SpeciesProtocol>newArrayList());
- SpeciesProtocol b1 = TuttiBeanFactory.newSpeciesProtocol();
- b1.setSpeciesReferenceTaxonId(11242);
- b1.setSpeciesSurveyCode("cruiseCode1");
- b1.setLengthStepPmfmId("1394");
- b1.setCalcifySampleEnabled(true);
- b1.setMaturityEnabled(true);
- b1.setSexEnabled(true);
- b1.setWeightEnabled(true);
- protocol.addBenthos(b1);
+ SpeciesProtocol bp1 = TuttiBeanFactory.newSpeciesProtocol();
+ bp1.setId(21);
+ bp1.setSpeciesSurveyCode("cruiseCode1");
+ bp1.setSpeciesReferenceTaxonId(11242);
+ bp1.setLengthStepPmfmId("1394");
+ bp1.setCalcifySampleEnabled(true);
+ bp1.setMaturityEnabled(true);
+ bp1.setSexEnabled(true);
+ bp1.setWeightEnabled(true);
+ protocol.addBenthos(bp1);
- SpeciesProtocol b2 = TuttiBeanFactory.newSpeciesProtocol();
- b2.setSpeciesReferenceTaxonId(3835);
- b2.setLengthStepPmfmId("323");
- b2.setAgeEnabled(true);
- b2.setCalcifySampleEnabled(true);
- b2.setCountIfNoFrequencyEnabled(true);
- b2.setMaturityEnabled(true);
- b2.setSexEnabled(true);
- b2.setSizeEnabled(true);
- b2.setWeightEnabled(true);
- protocol.addBenthos(b2);
+ SpeciesProtocol bp2 = TuttiBeanFactory.newSpeciesProtocol();
+ bp2.setId(22);
+ bp2.setSpeciesReferenceTaxonId(3835);
+ bp2.setLengthStepPmfmId("323");
+ bp2.setAgeEnabled(true);
+ bp2.setCalcifySampleEnabled(true);
+ bp2.setCountIfNoFrequencyEnabled(true);
+ bp2.setMaturityEnabled(true);
+ bp2.setSexEnabled(true);
+ bp2.setSizeEnabled(true);
+ bp2.setWeightEnabled(true);
+ protocol.addBenthos(bp2);
service.exportProtocol(protocol, exportFile);
Assert.assertTrue(exportFile.exists());
@@ -237,6 +245,7 @@
Assert.assertEquals(2, protocol.sizeSpecies());
SpeciesProtocol sp1 = protocol.getSpecies(0);
Assert.assertNotNull(sp1);
+ Assert.assertEquals(1, sp1.getIdAsInt(), 0);
Assert.assertEquals(11242, sp1.getSpeciesReferenceTaxonId(), 0);
Assert.assertEquals("cruiseCode1", sp1.getSpeciesSurveyCode());
Assert.assertEquals("1394", sp1.getLengthStepPmfmId());
@@ -250,6 +259,7 @@
SpeciesProtocol sp2 = protocol.getSpecies(1);
Assert.assertNotNull(sp2);
+ Assert.assertEquals(2, sp2.getIdAsInt(), 0);
Assert.assertEquals(3835, sp2.getSpeciesReferenceTaxonId(), 0);
Assert.assertEquals("323", sp2.getLengthStepPmfmId());
Assert.assertTrue(sp2.isAgeEnabled());
@@ -264,6 +274,7 @@
Assert.assertEquals(2, protocol.sizeBenthos());
SpeciesProtocol b1 = protocol.getBenthos(0);
Assert.assertNotNull(b1);
+ Assert.assertEquals(21, b1.getIdAsInt(), 0);
Assert.assertEquals(11242, b1.getSpeciesReferenceTaxonId(), 0);
Assert.assertEquals("cruiseCode1", b1.getSpeciesSurveyCode());
Assert.assertEquals("1394", b1.getLengthStepPmfmId());
@@ -277,6 +288,7 @@
SpeciesProtocol b2 = protocol.getBenthos(1);
Assert.assertNotNull(b2);
+ Assert.assertEquals(22, b2.getIdAsInt(), 0);
Assert.assertEquals(3835, b2.getSpeciesReferenceTaxonId(), 0);
Assert.assertEquals("323", b2.getLengthStepPmfmId());
Assert.assertTrue(b2.isAgeEnabled());
@@ -513,6 +525,7 @@
protocol.setBenthos(Lists.<SpeciesProtocol>newArrayList());
SpeciesProtocol sp1 = TuttiBeanFactory.newSpeciesProtocol();
+ sp1.setId(21);
sp1.setSpeciesReferenceTaxonId(1);
sp1.setSpeciesSurveyCode("cruiseCode1");
sp1.setAgeEnabled(true);
@@ -527,10 +540,11 @@
protocol.addBenthos(sp1);
SpeciesProtocol sp2 = TuttiBeanFactory.newSpeciesProtocol();
+ sp2.setId(22);
sp2.setSpeciesReferenceTaxonId(2);
sp2.setAgeEnabled(true);
- sp1.setSizeEnabled(true);
- sp1.setMaturityEnabled(true);
+ sp2.setSizeEnabled(false);
+ sp2.setMaturityEnabled(false);
sp2.setSexEnabled(true);
sp2.setWeightEnabled(true);
sp2.setCalcifySampleEnabled(true);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-04-15 14:48:55 UTC (rev 777)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-04-15 15:38:46 UTC (rev 778)
@@ -133,48 +133,6 @@
return (EditProtocolSpeciesTableModel) getBenthosTable().getModel();
}
-//
-// @Override
-// public EditProtocolSpeciesTableModel getTableModel() {
-// return (EditProtocolSpeciesTableModel) getTable().getModel();
-// }
-//
-// @Override
-// public JXTable getTable() {
-// return ui.getSpeciesTable();
-// }
-//
-// @Override
-// protected boolean isRowValid(EditProtocolSpeciesRowModel row) {
-// return true;
-// }
-
-// @Override
-// protected void onRowModified(int rowIndex,
-// EditProtocolSpeciesRowModel row,
-// String propertyName,
-// Object oldValue,
-// Object newValue) {
-//
-// recomputeRowValidState(row);
-// }
-//
-//
-// @Override
-// protected void onRowValidStateChanged(int rowIndex,
-// EditProtocolSpeciesRowModel row,
-// Boolean oldValue,
-// Boolean newValue) {
-// super.onRowValidStateChanged(rowIndex, row, oldValue, newValue);
-//
-// if (row != null && row.isModify() && newValue != null && newValue) {
-// // row was modified and is valid, we can save protocol
-// // even if after the row becomes again not valid, this is not a
-// // problem since we will only save valid data!
-// getModel().setModify(true);
-// }
-// }
-
//------------------------------------------------------------------------//
//-- AbstractTuttiUIHandler methods --//
//------------------------------------------------------------------------//
@@ -204,9 +162,6 @@
getDataContext().getReferentSpecies());
model.setAllReferentSpeciesByTaxonId(allReferentSpeciesByTaxonId);
-// List<TuttiProtocol> protocols = Lists.newArrayList(persistenceService.getAllProtocol());
-// model.setExistingProtocols(protocols);
-
List<Caracteristic> caracteristics = Lists.newArrayList(getDataContext().getCaracteristics());
model.setCaracteristics(caracteristics);
@@ -300,7 +255,7 @@
}
}
- // set to model ( will propagate to tableModel)
+ // set to model (will propagate to tableModel)
model.setSpeciesRow(speciesRows);
model.setBenthosRow(benthosRows);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java 2013-04-15 14:48:55 UTC (rev 777)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java 2013-04-15 15:38:46 UTC (rev 778)
@@ -115,6 +115,4 @@
EditProtocolUIHandler.getTitle(true));
}
-
-
}
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-15 14:48:55 UTC (rev 777)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-15 15:38:46 UTC (rev 778)
@@ -651,9 +651,9 @@
tutti.editProtocol.action.exportProtocolSpecies=Exporter les espèces
tutti.editProtocol.action.exportProtocolSpecies.mnemonic=è
tutti.editProtocol.action.exportProtocolSpecies.tip=Exporter les espèces du protocole
-tutti.editProtocol.action.exportPupitri=
-tutti.editProtocol.action.exportPupitri.mnemonic=
-tutti.editProtocol.action.exportPupitri.tip=
+tutti.editProtocol.action.exportPupitri=Export pupitri
+tutti.editProtocol.action.exportPupitri.mnemonic=p
+tutti.editProtocol.action.exportPupitri.tip=Exporter les espèces au format Pupitri
tutti.editProtocol.action.importProtocolBenthos=Importer les benthos
tutti.editProtocol.action.importProtocolBenthos.mnemonic=i
tutti.editProtocol.action.importProtocolBenthos.tip=Importer les benthos dans le protocole
1
0
r777 - in trunk/tutti-service/src: main/java/fr/ifremer/tutti/service main/java/fr/ifremer/tutti/service/catches main/java/fr/ifremer/tutti/service/config main/java/fr/ifremer/tutti/service/export main/resources/i18n test/java/fr/ifremer/tutti/service/export
by tchemit@users.forge.codelutin.com 15 Apr '13
by tchemit@users.forge.codelutin.com 15 Apr '13
15 Apr '13
Author: tchemit
Date: 2013-04-15 16:48:55 +0200 (Mon, 15 Apr 2013)
New Revision: 777
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/777
Log:
refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-15 14:48:55 UTC (rev 777)
@@ -24,9 +24,11 @@
* #L%
*/
+import com.google.common.base.Joiner;
import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.entities.TuttiEntity;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.Person;
import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.util.csv.Common;
@@ -44,6 +46,7 @@
import java.text.ParseException;
import java.util.Collections;
import java.util.Date;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -243,15 +246,12 @@
public static final ValueParserFormatter<Date> YEAR =
new DateValue("yyyy");
- public static final ValueParserFormatter<Date> DAY_EMPTY_TIME =
- new DateValue("dd/MM/yyyy 00:00:00");
-
- public static final ValueParserFormatter<Date> TIME =
- new DateValue("HH:mm:ss");
-
public static final ValueFormatter<Serializable> CARACTERISTIC_VALUE_FORMATTER =
new CaracteristicValueFormatter();
+ public static final ValueFormatter<List<Person>> LIST_PERSON_FORMATTER =
+ new ListPersonValueFormatter();
+
public static <E> BeanPropertyFormatter<E> newBeanFormatter(String propertyName,
String defaultNullValue) {
return new BeanPropertyFormatter<E>(propertyName, defaultNullValue);
@@ -351,6 +351,14 @@
}
}
+ protected static class ListPersonValueFormatter implements ValueFormatter<List<Person>> {
+
+ @Override
+ public String format(List<Person> value) {
+ return Joiner.on('|').join(value);
+ }
+ }
+
protected TuttiCsvUtil() {
// no instance
}
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-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-15 14:48:55 UTC (rev 777)
@@ -24,6 +24,7 @@
* #L%
*/
+import com.google.common.collect.Maps;
import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
@@ -45,6 +46,7 @@
import org.nuiton.validator.NuitonValidatorResult;
import java.util.List;
+import java.util.Map;
import static org.nuiton.i18n.I18n._;
@@ -68,6 +70,52 @@
validationService = getService(ValidationService.class);
}
+ /**
+ * To check if can compute for any fishing operation of the cruise given
+ * by his id.
+ * <p/>
+ * If no error found, then return is a empty map, otherwise the first error
+ * found for any bad fishing operation.
+ * <p/>
+ * Result keys are fishing operation id, values the first error for
+ * the fishing operation.
+ *
+ * @param cruiseId id of the cruise to check.
+ * @return map of errors, or empty map if no error found.
+ * @since 1.4
+ */
+ public Map<String, String> checkCruise(String cruiseId) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Will check cruise: " + cruiseId);
+ }
+ Map<String, String> result = Maps.newTreeMap();
+
+ List<FishingOperation> allFishingOperation =
+ persistenceService.getAllFishingOperation(cruiseId);
+
+ for (FishingOperation fishingOperation : allFishingOperation) {
+
+ String fishingOperationId = fishingOperation.getId();
+ CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(fishingOperationId);
+ BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(fishingOperationId);
+ BatchContainer<BenthosBatch> rootBenthosBatch = persistenceService.getRootBenthosBatch(fishingOperationId);
+ BatchContainer<MarineLitterBatch> rootMarineLitterBatch = persistenceService.getRootMarineLitterBatch(fishingOperationId);
+
+ try {
+ if (catchBatch != null) {
+ computeCatchBatchWeights(catchBatch,
+ rootSpeciesBatch,
+ rootBenthosBatch,
+ rootMarineLitterBatch);
+ }
+ } catch (TuttiBusinessException e) {
+ result.put(fishingOperationId, e.getMessage());
+ }
+ }
+ return result;
+ }
+
public void computeCatchBatchWeights(CatchBatch catchBatch,
BatchContainer<SpeciesBatch> rootSpeciesBatch,
BatchContainer<BenthosBatch> rootBenthosBatch,
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-04-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfig.java 2013-04-15 14:48:55 UTC (rev 777)
@@ -106,6 +106,11 @@
TuttiServiceConfigOption.CSV_SEPARATOR.getKey()).charAt(0);
}
+ public String getExportCountryId() {
+ return applicationConfig.getOption(
+ TuttiServiceConfigOption.EXPORT_COUNTRY_ID.getKey());
+ }
+
public void prepareDirectories() {
File dataDirectory = getDataDirectory();
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-04-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/config/TuttiServiceConfigOption.java 2013-04-15 14:48:55 UTC (rev 777)
@@ -67,6 +67,12 @@
n_("tutti.config.option.csv.separator.description"),
";",
char.class),
+ EXPORT_COUNTRY_ID(
+ "tutti.export.countryId",
+ n_("tutti.config.option.export.countryId.description"),
+ "12",
+ char.class),
+
// TRANSIENT CONFIG
VERSION(
"tutti.version",
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-04-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-04-15 14:48:55 UTC (rev 777)
@@ -25,6 +25,7 @@
*/
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
@@ -52,16 +53,12 @@
newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER, TuttiCsvUtil.INTEGER);
newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
-//FIXME newColumnForExport("Pays", Cruise.PROPERTY_VESSEL);
newColumnForExport("Zone_Etude", "programeZoneName");
newColumnForExport("Id_Sismer", Cruise.PROPERTY_NAME);
- newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
- newColumnForExport("Heure_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION);
- newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
- newColumnForExport("Heure_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION);
-//FIXME newColumnForExport("Responsable_Serie", Cruise.PROPERTY_HEAD_OF_MISSION);
newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION);
newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT);
@@ -70,10 +67,13 @@
public void prepareRows(List<CatchExportRow> rows,
Cruise cruise,
FishingOperation operation,
- BatchContainer<SpeciesBatch> rootSpeciesBatch) {
+ BatchContainer<SpeciesBatch> rootSpeciesBatch,
+ BatchContainer<BenthosBatch> rootBenthosBatch) {
CatchExportRow row = new CatchExportRow();
row.setCruise(cruise);
row.setFishingOperation(operation);
+// row.setRootSpeciesBatch(rootSpeciesBatch);
+// row.setRootBenthosBatch(rootBenthosBatch);
rows.add(row);
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-04-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-04-15 14:48:55 UTC (rev 777)
@@ -66,19 +66,16 @@
newColumnForExport("Engin", Cruise.PROPERTY_GEAR, Gear.PROPERTY_NAME);
newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
- newColumnForExport("DateDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
- newColumnForExport("HeureDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("DateDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
newColumnForExport("LatDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LATITUDE, TuttiCsvUtil.FLOAT);
newColumnForExport("LongDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE, TuttiCsvUtil.FLOAT);
- newColumnForExport("DateFin_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
- newColumnForExport("HeureFin_OP", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("DateFin_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
newColumnForExport("LatFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LATITUDE, TuttiCsvUtil.FLOAT);
newColumnForExport("LongFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE, TuttiCsvUtil.FLOAT);
newColumnForExport("Duree", OperationExportRow.PROPERTY_DURATION);
newColumnForExport("Strate", FishingOperation.PROPERTY_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
newColumnForExport("Sous-Strate", FishingOperation.PROPERTY_SUB_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
newColumnForExport("Localite", FishingOperation.PROPERTY_LOCATION, TuttiLocation.PROPERTY_NAME, "NA");
-//FIXME newColumnForExport("Rectangle_CIEM",); // Carré statistique
newColumnForExport("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID, TuttiCsvUtil.BOOLEAN);
newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE, TuttiCsvUtil.BOOLEAN);
newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE, TuttiCsvUtil.FLOAT);
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java 2013-04-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java 2013-04-15 14:48:55 UTC (rev 777)
@@ -47,24 +47,24 @@
newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
-//FIXME newColumnForExport("Pays", Cruise.PROPERTY_VESSEL);
+ newColumnForExport("Pays", SurveyExportRow.PROPERTY_COUNTRY);
newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiLocation.PROPERTY_NAME);
newColumnForExport("Id_Sismer", Cruise.PROPERTY_NAME);
- newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
- newColumnForExport("Heure_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiLocation.PROPERTY_NAME);
- newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
- newColumnForExport("Heure_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_TIME_SECOND);
newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION, TuttiLocation.PROPERTY_NAME);
-//FIXME newColumnForExport("Responsable_Serie", Cruise.PROPERTY_HEAD_OF_MISSION);
-// newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION);
-// newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
+ newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION, TuttiCsvUtil.LIST_PERSON_FORMATTER);
+ newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM, TuttiCsvUtil.LIST_PERSON_FORMATTER);
newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT);
}
- public void prepareRows(List<SurveyExportRow> rows, Cruise cruise) {
+ public void prepareRows(List<SurveyExportRow> rows,
+ Cruise cruise,
+ TuttiLocation country) {
SurveyExportRow row = new SurveyExportRow();
row.setCruise(cruise);
+ row.setCountry(country);
rows.add(row);
}
}
\ No newline at end of file
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-04-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-04-15 14:48:55 UTC (rev 777)
@@ -44,12 +44,20 @@
private static final long serialVersionUID = 1L;
+ public static final String PROPERTY_COUNTRY = "country";
+
protected Cruise cruise;
+ protected TuttiLocation country;
+
public void setCruise(Cruise cruise) {
this.cruise = cruise;
}
+ public void setCountry(TuttiLocation country) {
+ this.country = country;
+ }
+
public Date getBeginDate() {
return cruise.getBeginDate();
}
@@ -71,8 +79,7 @@
}
public String getCountry() {
- //FIXME
- return null;
+ return country.getLabel();
}
public String getName() {
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-15 14:48:55 UTC (rev 777)
@@ -28,27 +28,40 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.io.Files;
+import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.TuttiIOUtil;
import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
import fr.ifremer.tutti.service.AbstractTuttiService;
import fr.ifremer.tutti.service.DecoratorService;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.TuttiCsvUtil;
import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
+import org.apache.commons.collections.MapUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.csv.Export;
+import org.nuiton.util.decorator.Decorator;
import java.io.BufferedWriter;
+import java.io.Closeable;
import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
import java.util.List;
+import java.util.Map;
+import static org.nuiton.i18n.I18n._;
+
/**
* To export data in the generic format.
* <p/>
@@ -66,6 +79,8 @@
protected DecoratorService decoratorService;
+ protected TuttiWeightComputingService tuttiWeightComputingService;
+
protected char csvSeparator;
private Caracteristic verticalOpeningCaracteristic;
@@ -74,17 +89,57 @@
private Caracteristic horizontalOpeningDoorCaracteristic;
+ private TuttiLocation country;
+
@Override
public void setServiceContext(TuttiServiceContext context) {
super.setServiceContext(context);
persistenceService = getService(PersistenceService.class);
decoratorService = getService(DecoratorService.class);
+ tuttiWeightComputingService = getService(TuttiWeightComputingService.class);
+
csvSeparator = context.getConfig().getCsvSeparator();
verticalOpeningCaracteristic = persistenceService.getVerticalOpeningCaracteristic();
horizontalOpeningWingCaracteristic = persistenceService.getHorizontalOpeningWingCaracteristic();
horizontalOpeningDoorCaracteristic = persistenceService.getHorizontalOpeningDoorCaracteristic();
+ List<TuttiLocation> allCountry = persistenceService.getAllCountry();
+ String countryId = context.getConfig().getExportCountryId();
+ country = TuttiEntities.splitById(allCountry).get(countryId);
}
+ public void exportProgram(String programId, File exportFile) {
+ Preconditions.checkNotNull(programId);
+ Preconditions.checkNotNull(exportFile);
+
+ Program program = persistenceService.getProgram(programId);
+ Preconditions.checkNotNull(program);
+
+ List<Cruise> allCruise = persistenceService.getAllCruise(programId);
+ for (Cruise cruise : allCruise) {
+ checkCruise(cruise);
+ }
+
+ File basedir = new File(context.getConfig().newTempFile(
+ "exportProgram"), "exportProgram-" + programId);
+
+ TuttiIOUtil.forceMkdir(basedir, "Could not create directory");
+
+ ExportContext exportContext = createExportContext(basedir);
+
+ try {
+ for (Cruise cruise : allCruise) {
+ // load full cruise
+ cruise = persistenceService.getCruise(cruise.getId());
+ exportCruise(cruise, exportContext);
+ }
+ TuttiIOUtil.close(exportContext, "Could not close export context");
+
+ TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip");
+ } finally {
+ IOUtils.closeQuietly(exportContext);
+ }
+ }
+
public void exportCruise(String cruiseId, File exportFile) {
Preconditions.checkNotNull(cruiseId);
@@ -93,155 +148,249 @@
Cruise cruise = persistenceService.getCruise(cruiseId);
Preconditions.checkNotNull(cruise);
- List<FishingOperation> operations =
- persistenceService.getAllFishingOperation(cruiseId);
+ // check cruise fishing operations
+ checkCruise(cruise);
File basedir = new File(context.getConfig().newTempFile(
"exportCruise"), "exportCruise-" + cruiseId);
TuttiIOUtil.forceMkdir(basedir, "Could not create directory");
- File surveyFile = new File(basedir, "survey.csv");
- exportSurvey(surveyFile, cruise);
- File operationFile = new File(basedir, "operation.csv");
- exportOperations(operationFile, cruise, operations);
+ ExportContext exportContext = createExportContext(basedir);
- File parameterFile = new File(basedir, "parameter.csv");
- exportParameters(parameterFile, cruise, operations);
+ try {
+ exportCruise(cruise, exportContext);
+ TuttiIOUtil.close(exportContext, "Could not close export context");
-// File catchesFile = new File(basedir, "catch.csv");
-// exportCatches(catchesFile, cruise, operations);
+ TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip");
+ } finally {
+ IOUtils.closeQuietly(exportContext);
+ }
+ }
- TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip");
+ protected ExportContext createExportContext(File basedir) {
+ return new ExportContext(
+ basedir,
+ csvSeparator,
+ decoratorService,
+ verticalOpeningCaracteristic,
+ horizontalOpeningWingCaracteristic,
+ horizontalOpeningDoorCaracteristic);
}
- public void exportSurvey(File file, Cruise cruise) {
+ protected void checkCruise(Cruise cruise) {
+ Preconditions.checkNotNull(cruise);
- if (log.isInfoEnabled()) {
- log.info("Will export survey to file: " + file);
+ // check cruise fishing operations
+ Map<String, String> errors =
+ tuttiWeightComputingService.checkCruise(cruise.getId());
+
+ if (MapUtils.isNotEmpty(errors)) {
+
+ // there is some fishing operations with some errors
+
+ Decorator<Cruise> cruiseDecorator =
+ decoratorService.getDecoratorByType(Cruise.class);
+
+ Decorator<FishingOperation> fishingOperationDecorator =
+ decoratorService.getDecoratorByType(FishingOperation.class);
+ StringBuilder sb = new StringBuilder();
+ for (Map.Entry<String, String> entry : errors.entrySet()) {
+ String fishingOperationId = entry.getKey();
+ FishingOperation fishingOperation = persistenceService.getFishingOperation(fishingOperationId);
+ String fishingOperationStr = fishingOperationDecorator.toString(fishingOperation);
+ sb.append(_("tutti.service.export.invalid.fishingOperation", fishingOperationStr, entry.getValue()));
+ }
+ String cruiseStr = cruiseDecorator.toString(cruise);
+ throw new TuttiBusinessException(
+ _("tutti.service.export.invalid.cruise", cruiseStr, sb.toString()));
}
+ }
- BufferedWriter writer = null;
+ protected void exportCruise(Cruise cruise,
+ ExportContext exportContext) {
+
+ List<FishingOperation> operations =
+ persistenceService.getAllFishingOperation(cruise.getId());
+
+ exportSurvey(exportContext, cruise);
+
+ exportOperations(exportContext, cruise, operations);
+
+ exportParameters(exportContext, cruise, operations);
+
+ exportCatches(exportContext, cruise, operations);
+ }
+
+ protected void exportSurvey(ExportContext exportContext,
+ Cruise cruise) {
try {
- writer = Files.newWriter(file, Charsets.UTF_8);
- SurveyExportModel model = new SurveyExportModel(csvSeparator);
-
List<SurveyExportRow> rows = Lists.newArrayList();
- model.prepareRows(rows, cruise);
+ exportContext.surveyModel.prepareRows(rows, cruise, country);
- Export export = Export.newExport(model, rows);
- export.write(writer);
- writer.close();
+ exportContext.surveyExport.write(rows, exportContext.surveyWriter);
} catch (Exception e) {
throw new TuttiTechnicalException(
- "Could not export survey to file: " + file, e);
- } finally {
- IOUtils.closeQuietly(writer);
+ "Could not export survey.", e);
}
}
- public void exportOperations(File file,
- Cruise cruise,
- List<FishingOperation> operations) {
+ protected void exportOperations(ExportContext exportContext,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+ try {
- if (log.isInfoEnabled()) {
- log.info("Will export operations to file: " + file);
+ List<OperationExportRow> rows = Lists.newArrayList();
+ exportContext.operationModel.prepareRows(rows, cruise, operations);
+ exportContext.operationExport.write(rows, exportContext.operationWriter);
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export operations.", e);
}
+ }
- BufferedWriter writer = null;
+ protected void exportParameters(ExportContext exportContext,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+
try {
- writer = Files.newWriter(file, Charsets.UTF_8);
- OperationExportModel model =
- new OperationExportModel(
- csvSeparator,
- verticalOpeningCaracteristic,
- horizontalOpeningWingCaracteristic,
- horizontalOpeningDoorCaracteristic);
+ for (FishingOperation operation : operations) {
+ List<ParameterExportRow> rows = Lists.newArrayList();
+ exportContext.parameterModel.prepareRows(rows, cruise, operation);
+ exportContext.parameterExport.write(rows, exportContext.parameterWriter);
+ }
- List<OperationExportRow> rows = Lists.newArrayList();
- model.prepareRows(rows, cruise, operations);
-
- Export export = Export.newExport(model, rows);
- export.write(writer);
- writer.close();
} catch (Exception e) {
throw new TuttiTechnicalException(
- "Could not export operations to file: " + file, e);
- } finally {
- IOUtils.closeQuietly(writer);
+ "Could not export parameters.", e);
}
}
- public void exportParameters(File file,
+ protected void exportCatches(ExportContext exportContext,
Cruise cruise,
List<FishingOperation> operations) {
- if (log.isInfoEnabled()) {
- log.info("Will export parameters to file: " + file);
- }
-
- BufferedWriter writer = null;
try {
- writer = Files.newWriter(file, Charsets.UTF_8);
- ParameterExportModel model =
- new ParameterExportModel(csvSeparator,
- decoratorService);
+ for (FishingOperation operation : operations) {
- TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> export =
- TuttiCsvUtil.newRepeatableExport(model);
+ BatchContainer<SpeciesBatch> rootSpeciesBatch =
+ persistenceService.getRootSpeciesBatch(operation.getId());
- for (FishingOperation operation : operations) {
- List<ParameterExportRow> rows = Lists.newArrayList();
- model.prepareRows(rows, cruise, operation);
- export.write(rows, writer);
+ BatchContainer<BenthosBatch> rootBenthosBatch =
+ persistenceService.getRootBenthosBatch(operation.getId());
+
+ List<CatchExportRow> rows = Lists.newArrayList();
+ exportContext.catchModel.prepareRows(rows,
+ cruise,
+ operation,
+ rootSpeciesBatch,
+ rootBenthosBatch);
+// exportContext.catchExport.write(rows, exportContext.catchWriter);
}
- writer.close();
} catch (Exception e) {
throw new TuttiTechnicalException(
- "Could not export parameters to file: " + file, e);
- } finally {
- IOUtils.closeQuietly(writer);
+ "Could not export catches.", e);
}
}
- public void exportCatches(File file,
- Cruise cruise,
- List<FishingOperation> operations) {
+ protected static class ExportContext implements Closeable {
- if (log.isInfoEnabled()) {
- log.info("Will export catches to file: " + file);
- }
+ File surveyFile;
- BufferedWriter writer = null;
- try {
- writer = Files.newWriter(file, Charsets.UTF_8);
+ File operationFile;
- CatchExportModel model = new CatchExportModel(csvSeparator);
+ File parameterFile;
- TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> export =
- TuttiCsvUtil.newRepeatableExport(model);
+ File catchFile;
- for (FishingOperation operation : operations) {
+ BufferedWriter surveyWriter;
- BatchContainer<SpeciesBatch> rootSpeciesBatch =
- persistenceService.getRootSpeciesBatch(operation.getId());
+ BufferedWriter operationWriter;
- List<CatchExportRow> rows = Lists.newArrayList();
- model.prepareRows(rows, cruise, operation, rootSpeciesBatch);
- export.write(rows, writer);
+ BufferedWriter parameterWriter;
+
+ BufferedWriter catchWriter;
+
+ SurveyExportModel surveyModel;
+
+ OperationExportModel operationModel;
+
+ ParameterExportModel parameterModel;
+
+ CatchExportModel catchModel;
+
+ TuttiCsvUtil.TuttiRepeatableExport<SurveyExportRow> surveyExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<OperationExportRow> operationExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> parameterExport;
+
+ TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> catchExport;
+
+ ExportContext(File basedir,
+ char csvSeparator,
+ DecoratorService decoratorService,
+ Caracteristic verticalOpeningCaracteristic,
+ Caracteristic horizontalOpeningWingCaracteristic,
+ Caracteristic horizontalOpeningDoorCaracteristic) {
+
+ try {
+
+ surveyFile = new File(basedir, "survey.csv");
+ surveyWriter = Files.newWriter(surveyFile, Charsets.UTF_8);
+
+ operationFile = new File(basedir, "operation.csv");
+ operationWriter = Files.newWriter(operationFile, Charsets.UTF_8);
+
+ parameterFile = new File(basedir, "parameter.csv");
+ parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8);
+
+ catchFile = new File(basedir, "catch.csv");
+ catchWriter = Files.newWriter(catchFile, Charsets.UTF_8);
+
+ } catch (FileNotFoundException e) {
+
+ // should never happen
+ throw new TuttiTechnicalException(
+ "Could not create writer for export", e);
}
- writer.close();
- } catch (Exception e) {
- throw new TuttiTechnicalException(
- "Could not export catches to file: " + file, e);
- } finally {
- IOUtils.closeQuietly(writer);
+ surveyModel = new SurveyExportModel(csvSeparator);
+
+ operationModel =
+ new OperationExportModel(
+ csvSeparator,
+ verticalOpeningCaracteristic,
+ horizontalOpeningWingCaracteristic,
+ horizontalOpeningDoorCaracteristic);
+
+ parameterModel = new ParameterExportModel(
+ csvSeparator, decoratorService);
+ catchModel = new CatchExportModel(csvSeparator);
+
+ surveyExport = TuttiCsvUtil.newRepeatableExport(
+ surveyModel);
+
+ operationExport = TuttiCsvUtil.newRepeatableExport(
+ operationModel);
+
+ parameterExport = TuttiCsvUtil.newRepeatableExport(
+ parameterModel);
+
+ catchExport = TuttiCsvUtil.newRepeatableExport(catchModel);
}
+
+ @Override
+ public void close() throws IOException {
+ IOUtils.closeQuietly(surveyWriter);
+ IOUtils.closeQuietly(operationWriter);
+ IOUtils.closeQuietly(parameterWriter);
+ IOUtils.closeQuietly(catchWriter);
+ }
}
}
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-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-15 14:48:55 UTC (rev 777)
@@ -1,6 +1,7 @@
tutti.config.option.basedir.description=Répertoire principale
tutti.config.option.csv.separator.description=Caractère séparateur pour les import / export de fichier au format csv.
tutti.config.option.data.directory.description=Répertoire de données de l'application. Vous pouvez utiliser l'expression ${tutti.data.directory} pour le référence dans d'autres propriétés de configuration (ex\: ${tutti.data.directory}/tmp).
+tutti.config.option.export.countryId.description=L'id du pays à utiliser pour les exports (il s'agit de la valeur LOCATION.ID).
tutti.config.option.inceptionYear.description=Année de démarrage du projet.
tutti.config.option.organizationName.description=Nom de l'organisation dans la licence
tutti.config.option.site.url.description=Url du site internet de l'application
@@ -43,7 +44,7 @@
tutti.propety.no.vessel.name=Nom inconnu
tutti.propety.no.zone=Pas de zone
tutti.propety.vessel.nation.registrationCode=%s (nat.)
-tutti.service.catches.computeWeights.error.incoherentBenthosTotalSorted=
+tutti.service.catches.computeWeights.error.incoherentBenthosTotalSorted=Le poids total Vrac du benthos est inférieur à la somme des poids Vrac triés, inerte trié et vivant non détaillé trié
tutti.service.catches.computeWeights.error.incoherentCategoryWeight=Le poids total des mensurations est supérieur au poids de la catégorie
tutti.service.catches.computeWeights.error.incoherentMarineLitterTotal=Le poids total des macro-déchets est inférieur à la somme des poids des macro-déchets saisis
tutti.service.catches.computeWeights.error.incoherentParentCategoryWeight=Le poids de la catégorie est différent de la somme des poids de ses sous-catégories
@@ -52,6 +53,8 @@
tutti.service.catches.computeWeights.error.incoherentSampleWeight=Le poids de sous-échantillonage est supérieur au poids de la catégorie
tutti.service.catches.computeWeights.error.incoherentSpeciesTotalSorted=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.catches.computeWeights.error.incoherentTotal=Le poids total de la capture ne correspond pas à la somme des poids totaux Vrac, Hors Vrac et non triés
+tutti.service.export.invalid.cruise=L'export de la campagne %s ne peut pas être réalisé suite aux erreurs rencontrées sur ses traits lors de l'élévation des poids \:\n%s
+tutti.service.export.invalid.fishingOperation=L'élévation des poids ne peut pas être réalisé sur le trait %s, pour la raison suivante %s
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-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-04-15 10:40:39 UTC (rev 776)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/export/TuttiExportServiceTest.java 2013-04-15 14:48:55 UTC (rev 777)
@@ -42,6 +42,7 @@
import fr.ifremer.tutti.service.AbstractServiceTest;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
import fr.ifremer.tutti.service.config.TuttiServiceConfig;
import org.apache.commons.io.Charsets;
import org.apache.commons.lang3.time.DateUtils;
@@ -68,6 +69,10 @@
protected TuttiExportService service;
+ protected List<TuttiLocation> countries;
+
+ protected Program program;
+
protected Cruise cruise;
protected List<FishingOperation> operations;
@@ -84,6 +89,10 @@
createCaracteristics();
+ countries = createCountries();
+
+ program = createProgram();
+
cruise = createCruise();
operations = createOperations(cruise);
@@ -95,7 +104,10 @@
Mockito.when(persistenceService.getVerticalOpeningCaracteristic()).thenReturn(caracteristicVerticalOpening);
Mockito.when(persistenceService.getHorizontalOpeningDoorCaracteristic()).thenReturn(caracteristicHorizontalOpeningDoor);
Mockito.when(persistenceService.getHorizontalOpeningWingCaracteristic()).thenReturn(caracteristicHorizontalOpeningWing);
+ Mockito.when(persistenceService.getProgram(Mockito.<String>any())).thenReturn(program);
Mockito.when(persistenceService.getCruise(Mockito.<String>any())).thenReturn(cruise);
+ Mockito.when(persistenceService.getAllCruise(Mockito.<String>any())).thenReturn(Lists.newArrayList(cruise));
+ Mockito.when(persistenceService.getAllCountry()).thenReturn(countries);
Mockito.when(persistenceService.getAllFishingOperation(Mockito.<String>any())).thenReturn(operations);
TuttiServiceContext serviceContextSpy = Mockito.spy(serviceContext);
@@ -104,91 +116,132 @@
service = Mockito.mock(TuttiExportService.class, Mockito.withSettings().defaultAnswer(Mockito.CALLS_REAL_METHODS));
service.setServiceContext(serviceContextSpy);
+
+ TuttiWeightComputingService tuttiWeightComputingService = Mockito.mock(
+ TuttiWeightComputingService.class,
+ Mockito.withSettings().defaultAnswer(Mockito.CALLS_REAL_METHODS));
+ tuttiWeightComputingService.setServiceContext(serviceContextSpy);
+ service.tuttiWeightComputingService = tuttiWeightComputingService;
+
+
}
@Test
- public void exportCruise() throws Exception {
+ public void exportProgram() throws Exception {
- File exportFile = new File(datadirectory, "exportCruise.zip");
+ File exportFile = new File(datadirectory, "exportProgram.zip");
Files.createParentDirs(exportFile);
Assert.assertFalse(exportFile.exists());
- service.exportCruise(cruise.getId(), exportFile);
+ service.exportProgram(cruise.getId(), exportFile);
Assert.assertTrue(exportFile.exists());
}
@Test
- public void exportSurvey() throws Exception {
+ public void exportCruise() throws Exception {
- File exportFile = new File(datadirectory, "exportSurvey.csv");
+ File exportFile = new File(datadirectory, "exportCruise.zip");
Files.createParentDirs(exportFile);
Assert.assertFalse(exportFile.exists());
- service.exportSurvey(exportFile, cruise);
+ service.exportCruise(cruise.getId(), exportFile);
Assert.assertTrue(exportFile.exists());
+ }
+ @Test
+ public void exportSurvey() throws Exception {
+
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(datadirectory);
+
+ try {
+ service.exportSurvey(exportContext, cruise);
+ } finally {
+ exportContext.close();
+ }
+ Assert.assertTrue(exportContext.surveyFile.exists());
+ Assert.assertEquals(Files.readLines(exportContext.surveyFile, Charsets.UTF_8).size(), 1 + 1);
+
if (log.isInfoEnabled()) {
log.info("Survey export:\n" +
- Files.toString(exportFile, Charsets.UTF_8));
+ Files.toString(exportContext.surveyFile, Charsets.UTF_8));
}
}
@Test
public void exportOperations() throws Exception {
- File exportFile = new File(datadirectory, "exportOperations.csv");
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(datadirectory);
- Files.createParentDirs(exportFile);
+ try {
+ service.exportOperations(exportContext, cruise, operations);
+ } finally {
+ exportContext.close();
+ }
+ Assert.assertTrue(exportContext.operationFile.exists());
+ Assert.assertEquals(Files.readLines(exportContext.operationFile, Charsets.UTF_8).size(), operations.size() + 1);
- Assert.assertFalse(exportFile.exists());
-
- service.exportOperations(exportFile, cruise, operations);
- Assert.assertTrue(exportFile.exists());
-
if (log.isInfoEnabled()) {
log.info("Operation export:\n" +
- Files.toString(exportFile, Charsets.UTF_8));
+ Files.toString(exportContext.operationFile, Charsets.UTF_8));
}
}
@Test
public void exportParameters() throws Exception {
- File exportFile = new File(datadirectory, "exportParameters.csv");
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(datadirectory);
- Files.createParentDirs(exportFile);
+ try {
+ service.exportParameters(exportContext, cruise, operations);
+ } finally {
+ exportContext.close();
+ }
+ Assert.assertTrue(exportContext.parameterFile.exists());
+ Assert.assertEquals(Files.readLines(exportContext.parameterFile, Charsets.UTF_8).size(), 1 + operations.size() * 7);
- Assert.assertFalse(exportFile.exists());
-
- service.exportParameters(exportFile, cruise, operations);
- Assert.assertTrue(exportFile.exists());
-
if (log.isInfoEnabled()) {
log.info("Parameter export:\n" +
- Files.toString(exportFile, Charsets.UTF_8));
+ Files.toString(exportContext.parameterFile, Charsets.UTF_8));
}
}
//TODO
public void exportCatches() throws Exception {
- File exportFile = new File(datadirectory, "exportCatches.csv");
+ TuttiExportService.ExportContext exportContext =
+ service.createExportContext(datadirectory);
- Files.createParentDirs(exportFile);
-
- Assert.assertFalse(exportFile.exists());
-
+ try {
+ service.exportCatches(exportContext, cruise, operations);
+ } finally {
+ exportContext.close();
+ }
+ Assert.assertTrue(exportContext.catchFile.exists());
+ Assert.assertEquals(Files.readLines(exportContext.catchFile, Charsets.UTF_8).size(), 2);
if (log.isInfoEnabled()) {
log.info("Catch export:\n" +
- Files.toString(exportFile, Charsets.UTF_8));
+ Files.toString(exportContext.catchFile, Charsets.UTF_8));
}
}
- private Cruise createCruise() {
+ private List<TuttiLocation> createCountries() {
+ List<TuttiLocation> result = Lists.newArrayList();
+ TuttiLocation country = TuttiBeanFactory.newTuttiLocation();
+ country.setId(serviceContext.getConfig().getExportCountryId());
+ country.setName("CountryName");
+ country.setLabel("CountryLabel");
+ result.add(country);
+ return result;
+ }
+
+ private Program createProgram() {
TuttiLocation programZone = TuttiBeanFactory.newTuttiLocation();
programZone.setId(0);
programZone.setName("ProgramZoneName");
@@ -208,7 +261,21 @@
program.setId(1);
program.setName("ProgramName");
program.setZone(programZone);
+ return program;
+ }
+ private Cruise createCruise() {
+
+ TuttiLocation departureLocation = TuttiBeanFactory.newTuttiLocation();
+ departureLocation.setId(1);
+ departureLocation.setName("DepartureLocationName");
+ departureLocation.setLabel("DepartureLocationLabel");
+
+ TuttiLocation returnLocation = TuttiBeanFactory.newTuttiLocation();
+ returnLocation.setId(2);
+ returnLocation.setName("ReturnLocationName");
+ returnLocation.setLabel("ReturnLocationLabel");
+
Cruise cruise = TuttiBeanFactory.newCruise();
cruise.setId(2);
cruise.setName("CruiseName");
1
0
Author: cbonnet
Date: 2013-04-15 12:40:39 +0200 (Mon, 15 Apr 2013)
New Revision: 776
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/776
Log:
Pr?\195?\169cision sur le lien pour obtenir les ports
Modified:
trunk/src/site/rst/mapping.rst
Modified: trunk/src/site/rst/mapping.rst
===================================================================
--- trunk/src/site/rst/mapping.rst 2013-04-15 10:29:12 UTC (rev 775)
+++ trunk/src/site/rst/mapping.rst 2013-04-15 10:40:39 UTC (rev 776)
@@ -64,10 +64,10 @@
En écriture : valeur dupliquée pour chaque engin (voir "Engin(s)" ci-dessous) dans ScientificCruise.fishingTrip.gearPhysicalFeatures.gearPhysicalMeasurement.numericalvalue (GEAR_PHYSICAL_MEASURMENT.NUMERICAL_VALUE avec PMFM_FK=<PMFM_ID_MULTIRIG_NUMBER>)
Port de départ
- ScientificCruise.fishingTrip.departureLocation (FISHING_TRIP.DEPARTURE_LOCATION_FK)
+ ScientificCruise.fishingTrip.departureLocation (FISHING_TRIP.DEPARTURE_LOCATION_FK) avec le lien avec la campagne via SCIENTIFIC_CRUISE_FK)
Port d'arrivée
- ScientificCruise.fishingTrip.returnLocation (FISHING_TRIP.RETURN_LOCATION_FK)
+ ScientificCruise.fishingTrip.returnLocation (FISHING_TRIP.RETURN_LOCATION_FK) avec le lien avec la campagne via SCIENTIFIC_CRUISE_FK)
Date de début
ScientificCruise.departureDateTime (SCIENTIFIC_CRUISE.DEPARTURE_DATE_TIME)
1
0
Author: cbonnet
Date: 2013-04-15 12:29:12 +0200 (Mon, 15 Apr 2013)
New Revision: 775
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/775
Log:
MAJ pour tenir compte des ?\195?\169volutions du mod?\195?\168le (taxon) et de l'utilisation des ports
Modified:
trunk/src/site/rst/referential.rst
Modified: trunk/src/site/rst/referential.rst
===================================================================
--- trunk/src/site/rst/referential.rst 2013-04-13 20:11:56 UTC (rev 774)
+++ trunk/src/site/rst/referential.rst 2013-04-15 10:29:12 UTC (rev 775)
@@ -61,6 +61,12 @@
+-----------------------------------------------------+-------+-----------------------------------------------------+
| [REF-11] Catégorie Maturité | OK | |
+-----------------------------------------------------+-------+-----------------------------------------------------+
+| [REF-12] Liste des espèces | OK | A vérifier |
++-----------------------------------------------------+-------+-----------------------------------------------------+
+| [REF-13] Liste des espèces vernaculaires | OK | A vérifier |
++-----------------------------------------------------+-------+-----------------------------------------------------+
+| [REF-14] Liste des ports | OK | A vérifier |
++-----------------------------------------------------+-------+-----------------------------------------------------+
[REF-01] Liste des strates / sous-strates / localités
-----------------------------------------------------
@@ -226,6 +232,78 @@
*État:* Valide.
+
+[REF-12] Liste des espèces
+--------------------------
+
+::
+
+ SELECT
+ t.id,
+ t.reference_taxon_fk,
+ t.complete_name,
+ ti.external_code as "code rubin",
+ t.is_referent
+ FROM
+ taxon_name t
+ LEFT JOIN transcribing_item ti on t.reference_taxon_fk = ti.object_id
+ LEFT JOIN transcribing_item_type tt on ti.transcribing_item_type_fk = tt.id
+ and tt.name = 'TAXINOMIE-REFTAX.MNEMONIQUE'
+
+NB :
+- mettre tt.name en paramètre car ça pourrait changer
+- il faut partir du modèle mis à jour pour la V2 (les tables transcribing ont évolué)
+
+*État:* A valider (transformer les requêtes SQL).
+
+
+[REF-13] Liste des espèces vernaculaires
+-------------------------------------------
+
+::
+
+ SELECT
+ t.id,
+ t.reference_taxon_fk,
+ t.complete_name,
+ ti.external_code as "nom vernaculaire",
+ t.is_referent
+ FROM
+ taxon_name t
+ LEFT JOIN transcribing_item ti on t.reference_taxon_fk = ti.object_id
+ LEFT JOIN transcribing_item_type tt on ti.transcribing_item_type_fk = tt.id
+ and tt.name = 'TAXINOMIE-COMMUN.NOM_VERNACULAIRE'
+
+NB :
+- mettre tt.name en paramètre car ça pourrait changer
+- il faut partir du modèle mis à jour pour la V2 (les tables transcribing ont évolué)
+
+*État:* A valider (transformer les requêtes SQL).
+
+
+[REF-14] Liste des ports
+------------------------------------------------
+
+::
+
+ SELECT
+ l.id,
+ l.label,
+ l.name,
+ l.status
+ FROM location l
+ WHERE l.location_level_fk = :locationLevelId)
+ AND l.status.code IN (:statusValidCode, :statusTemporaryCode)
+
+Paramètres :
+
+- :locationLevelId = *LocationLevelId.PORT*
+- :statusValidCode = *StatusCode.ENABLE*
+- :statusTemporaryCode = *StatusCode.TEMPORARY*
+
+*État:* À Valider et définir la variable LocationLevelId.PORT.
+
+
Les requètes techniques
~~~~~~~~~~~~~~~~~~~~~~~
1
0
r774 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-service/src/main/java/fr/ifremer/tutti/service
by tchemit@users.forge.codelutin.com 13 Apr '13
by tchemit@users.forge.codelutin.com 13 Apr '13
13 Apr '13
Author: tchemit
Date: 2013-04-13 22:11:56 +0200 (Sat, 13 Apr 2013)
New Revision: 774
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/774
Log:
add dummy id on created bean + fix import)
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/IndividualObservationBatchPersistenceServiceImpl.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.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-13 20:09:01 UTC (rev 773)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-04-13 20:11:56 UTC (rev 774)
@@ -34,6 +34,7 @@
import org.springframework.stereotype.Service;
import java.util.List;
+import java.util.UUID;
/**
* @author tchemit <chemit(a)codelutin.com>
@@ -63,6 +64,7 @@
Preconditions.checkNotNull(bean);
Preconditions.checkState(TuttiEntities.isNew(bean));
// TODO
+ bean.setId(UUID.randomUUID().toString());
return bean;
}
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-13 20:09:01 UTC (rev 773)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-04-13 20:11:56 UTC (rev 774)
@@ -34,6 +34,7 @@
import org.springframework.stereotype.Service;
import java.util.List;
+import java.util.UUID;
/**
* @author tchemit <chemit(a)codelutin.com>
@@ -63,6 +64,7 @@
Preconditions.checkNotNull(bean);
Preconditions.checkState(TuttiEntities.isNew(bean));
// TODO
+ bean.setId(UUID.randomUUID().toString());
return bean;
}
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-13 20:09:01 UTC (rev 773)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-04-13 20:11:56 UTC (rev 774)
@@ -61,7 +61,6 @@
import org.apache.commons.logging.LogFactory;
import org.apache.commons.vfs2.AllFileSelector;
import org.apache.commons.vfs2.FileObject;
-import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.IOException;
@@ -825,19 +824,16 @@
}
@Override
- @Transactional(readOnly = false)
public IndividualObservationBatch createIndividualObservationBatch(IndividualObservationBatch bean) {
return driver.createIndividualObservationBatch(bean);
}
@Override
- @Transactional(readOnly = false)
public IndividualObservationBatch saveIndividualObservationBatch(IndividualObservationBatch bean) {
return driver.saveIndividualObservationBatch(bean);
}
@Override
- @Transactional(readOnly = false)
public void deleteIndividualObservationBatch(String id) {
driver.deleteIndividualObservationBatch(id);
}
1
0