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
- 4130 discussions
r201 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/home java/fr/ifremer/tutti/ui/swing/content/operation java/fr/ifremer/tutti/ui/swing/content/operation/catches java/fr/ifremer/tutti/ui/swing/content/protocol java/fr/ifremer/tutti/ui/swing/util resources/i18n
by kmorin@users.forge.codelutin.com 15 Jan '13
by kmorin@users.forge.codelutin.com 15 Jan '13
15 Jan '13
Author: kmorin
Date: 2013-01-15 12:07:25 +0100 (Tue, 15 Jan 2013)
New Revision: 201
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/201
Log:
debug reset in fishing operation + start replacing the new protocol button by a combo box
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.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/util/AbstractTuttiTabContainerUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.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/content/home/SelectCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-15 11:07:25 UTC (rev 201)
@@ -105,8 +105,10 @@
<JPanel layout='{new GridLayout(1,0)}'>
<JButton id='editProtocolButton'
onActionPerformed='handler.showSelectedProtocol()'/>
- <JButton id='newProtocolButton'
- onActionPerformed='handler.showNewProtocol()'/>
+<!-- <JButton id='newProtocolButton'
+ onActionPerformed='handler.showNewProtocol()'/>-->
+ <JComboBox id='newProtocolCombo' onActionPerformed='handler.showNewProtocol(event)'/>
+
</JPanel>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -33,6 +33,7 @@
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import java.awt.event.ActionEvent;
import jaxx.runtime.swing.editor.bean.BeanComboBox;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
@@ -41,7 +42,13 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
+import javax.swing.ComboBoxModel;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+import static org.nuiton.i18n.I18n._;
/**
* Main ui content to select cruise.
*
@@ -53,6 +60,12 @@
/** Logger. */
private static final Log log =
LogFactory.getLog(SelectCruiseUIHandler.class);
+
+ protected final static String PROTOCOL_ACTION_NEW = "tutti.action.new";
+
+ protected final static String PROTOCOL_ACTION_CLONE = "tutti.action.clone";
+
+ protected final static String PROTOCOL_ACTION_IMPORT = "tutti.action.import";
protected final PersistenceService persistenceService;
@@ -173,6 +186,11 @@
initBeanComboBox(ui.getProtocolCombobox(),
model.getProtocols(),
model.getProtocol());
+
+ ComboBoxModel<String> protocolActions = new DefaultComboBoxModel<String>(
+ new String[]{ _(PROTOCOL_ACTION_NEW), _(PROTOCOL_ACTION_CLONE), _(PROTOCOL_ACTION_IMPORT) });
+ JComboBox newProtocolCombo = ui.getNewProtocolCombo();
+ newProtocolCombo.setModel(protocolActions);
model.addPropertyChangeListener(SelectCruiseUIModel.PROPERTY_PROGRAM, new PropertyChangeListener() {
@Override
@@ -271,7 +289,8 @@
context.setScreen(TuttiScreen.EDIT_PROTOCOL);
}
- public void showNewProtocol() {
+ public void showNewProtocol(ActionEvent event) {
+ log.info(event.getSource());
context.setProtocolId(null);
context.setScreen(TuttiScreen.EDIT_PROTOCOL);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-15 11:07:25 UTC (rev 201)
@@ -400,18 +400,3 @@
actionIcon: casino-import;
text: "tutti.action.casino-import";
}
-
-#messagePanel {
- border: {BorderFactory.createTitledBorder("Messages")};
- height: 200;
- width: 500;
-}
-
-#errorTable {
- rowSelectionAllowed: true;
- autoCreateRowSorter: true;
- autoResizeMode: {JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS};
- cellSelectionEnabled: false;
- selectionMode: {ListSelectionModel.SINGLE_SELECTION};
- model: {errorTableModel};
-}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -233,26 +233,25 @@
changeValidatorContext(model.getValidationContext(), ui.getValidator());
listenValidatorValid(ui.getValidator(), model);
- final JTabbedPane tabPanel = ui.getFishingOperationTabPane();
- tabPanel.setTabComponentAt(0, new CustomTab(model));
+ setCustomTab(0, model);
listModelIsModify(model);
//init gear shooting
GearShootingTabUIModel gearShootingModel =
ui.getGearShootingTabContent().getModel();
gearShootingModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationGearCaracteristic());
- tabPanel.setTabComponentAt(1, new CustomTab(gearShootingModel));
+ setCustomTab(1, gearShootingModel);
//init environment
EnvironmentTabUIModel environmentModel =
ui.getEnvironmentTabContent().getModel();
environmentModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationEnvironmentCaracteristic());
- tabPanel.setTabComponentAt(2, new CustomTab(environmentModel));
+ setCustomTab(2, environmentModel);
//init hydrology
HydrologyTabUIModel hydrologyModel = ui.getHydrologyTabContent().getModel();
hydrologyModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationHydrologicCaracteristic());
- tabPanel.setTabComponentAt(3, new CustomTab(hydrologyModel));
+ setCustomTab(3, hydrologyModel);
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
@@ -286,8 +285,7 @@
if (result && currentIndex != newIndex && currentIndex >= 0) {
CustomTab currentTab = (CustomTab) getTabPanel().getTabComponentAt(currentIndex);
AbstractTuttiBeanUIModel model = currentTab.getModel();
- result = TuttiUIContext.VALIDATION_CONTEXT_EDIT.equals(getModel().getValidationContext())
- || model.isValid();
+ result = model.isValid();
if (result && !model.isCreate() && model.isModify()) {
save();
@@ -299,8 +297,7 @@
@Override
public boolean onHideTab() {
AbstractTuttiBeanUIModel model = getModel();
- boolean result = TuttiUIContext.VALIDATION_CONTEXT_EDIT.equals(getModel().getValidationContext())
- || model.isValid();
+ boolean result = model.isValid();
if (result && !model.isCreate() && model.isModify()) {
save();
}
@@ -321,6 +318,21 @@
//-- Public methods --//
//------------------------------------------------------------------------//
+ public void clearFishingOperation() {
+ if (fishingOperationMonitor.wasModified()) {
+ save();
+ }
+
+ EditFishingOperationUIModel model = getModel();
+ model.fromBean(new FishingOperation());
+
+ model.setModify(false);
+ fishingOperationMonitor.clearModified();
+
+ model.setEmpty(true);
+
+ }
+
public void selectFishingOperation(FishingOperation bean) {
if (fishingOperationMonitor.wasModified()) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -380,10 +380,15 @@
public void setGearShootingStartDate(Date gearShootingStartDate) {
Object oldValue = getGearShootingStartDate();
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(gearShootingStartDate);
- calendar.set(Calendar.SECOND, 0);
- this.gearShootingStartDate = calendar.getTime();
+ if (gearShootingStartDate != null) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(gearShootingStartDate);
+ calendar.set(Calendar.SECOND, 0);
+ this.gearShootingStartDate = calendar.getTime();
+
+ } else {
+ this.gearShootingStartDate = null;
+ }
firePropertyChange(PROPERTY_GEAR_SHOOTING_START_DATE, oldValue, this.gearShootingStartDate);
}
@@ -493,10 +498,15 @@
public void setGearShootingEndDate(Date gearShootingEndDate) {
Object oldValue = getGearShootingEndDate();
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(gearShootingEndDate);
- calendar.set(Calendar.SECOND, 0);
- this.gearShootingEndDate = calendar.getTime();
+ if (gearShootingEndDate != null) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(gearShootingEndDate);
+ calendar.set(Calendar.SECOND, 0);
+ this.gearShootingEndDate = calendar.getTime();
+
+ } else {
+ this.gearShootingEndDate = null;
+ }
firePropertyChange(PROPERTY_GEAR_SHOOTING_END_DATE, oldValue, this.gearShootingEndDate);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -210,13 +210,11 @@
// back to general tab of fishingOperation tabs
ui.getFishingOperationTabContent().getFishingOperationTabPane().setSelectedIndex(0);
- String fishingOperationText;
-
if (fishingOperation != null) {
Decorator<FishingOperation> decorator =
getDecorator(FishingOperation.class, null);
- fishingOperationText =
+ String fishingOperationText =
_("tutti.label.traitReminder",
decorator.toString(fishingOperation));
@@ -228,6 +226,9 @@
// repaint tabs
ui.getTabPane().repaint();
+
+ } else {
+ ui.getFishingOperationTabContent().getHandler().clearFishingOperation();
}
}
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-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-01-15 11:07:25 UTC (rev 201)
@@ -93,8 +93,7 @@
</BeanValidator>
<JTabbedPane id='tabPane' constraints='BorderLayout.CENTER'>
- <tab id='catchesCaracteristicsTab'
- title='tutti.label.tab.catchesCaracteristics'>
+ <tab id='catchesCaracteristicsTab'>
<JXTitledPanel id='catchesCaracteristicsTabPane'>
<JScrollPane id='catchesCaracteristicsTabScrollPane'>
<JPanel layout='{new BorderLayout()}'>
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-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -26,9 +26,14 @@
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler;
+import fr.ifremer.tutti.ui.swing.util.TabHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
+import javax.swing.JTabbedPane;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -36,7 +41,8 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-public class EditCatchesUIHandler extends AbstractTuttiUIHandler<EditCatchesUIModel> {
+public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<EditCatchesUIModel>
+ implements TabHandler {
/** Logger. */
private static final Log log =
@@ -95,8 +101,14 @@
@Override
public void afterInitUI() {
-
+
initUI(ui);
+
+ EditCatchesUIModel model = getModel();
+
+ listenValidatorValid(ui.getValidator(), model);
+
+ setCustomTab(0, model);
}
@Override
@@ -118,7 +130,27 @@
protected EditCatchesUIModel getModel() {
return ui.getModel();
}
+
+ @Override
+ protected JTabbedPane getTabPanel() {
+ return ui.getTabPane();
+ }
+ @Override
+ public boolean onHideTab() {
+ AbstractTuttiBeanUIModel model = getModel();
+ boolean result = model.isValid();
+ if (result && model.isModify()) {
+ save();
+ }
+ return result;
+ }
+
+ @Override
+ public void onShowTab() {
+
+ }
+
//------------------------------------------------------------------------//
//-- Public methods --//
//------------------------------------------------------------------------//
@@ -129,23 +161,7 @@
// 1) Save any modification of the current fishingOperation
if (fishingOperationMonitor.wasModified()) {
-
- // previous fishingOperation was modified, let's save it
- EditCatchesUIModel beanToSave = fishingOperationMonitor.getBean();
-
- FishingOperation fishingOperation = beanToSave.toBean();
-
- if (log.isInfoEnabled()) {
- log.info("FishingOperation " + fishingOperation.getId() +
- " was modified, will save it.");
- }
-
- showInformationMessage(
- "[ Captures - Caractéristiques générales ] " +
- "Sauvegarde des modifications de " + decorate(fishingOperation) +
- ".");
-
- persistenceService.saveFishingOperation(fishingOperation);
+ save();
}
ui.getSpeciesTabContent().getHandler().clearTableSelection();
@@ -174,7 +190,8 @@
}
model.fromBean(bean);
-
+
+ model.setModify(false);
fishingOperationMonitor.clearModified();
// 3) Propagate title to others tabs
@@ -197,6 +214,25 @@
ui.getTabPane().repaint();
}
+ protected void save() {
+ // previous fishingOperation was modified, let's save it
+ EditCatchesUIModel beanToSave = fishingOperationMonitor.getBean();
+
+ FishingOperation fishingOperation = beanToSave.toBean();
+
+ if (log.isInfoEnabled()) {
+ log.info("FishingOperation " + fishingOperation.getId() +
+ " was modified, will save it.");
+ }
+
+ showInformationMessage(
+ "[ Captures - Caractéristiques générales ] " +
+ "Sauvegarde des modifications de " + decorate(fishingOperation) +
+ ".");
+
+ persistenceService.saveFishingOperation(fishingOperation);
+ }
+
public void importPupitri() {
//TODO
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -139,6 +139,11 @@
super(FishingOperation.class, fromBeanBinder, toBeanBinder);
}
+ @Override
+ public String getTitle() {
+ return "tutti.label.tab.catchesCaracteristics";
+ }
+
public FishingOperation getFishingOperation() {
return fishingOperation;
}
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-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -433,12 +433,20 @@
}
public void addRow() {
+ log.info("addRow 1");
Species species = (Species) ui.getSpeciesComboBox().getSelectedItem();
+ log.info("addRow 2");
EditProtocolSpeciesRowModel protocol = getTableModel().createNewRow();
+ log.info("addRow 3");
protocol.setSpecies(species);
+ log.info("addRow 4");
getTableModel().addNewRow(protocol);
+ log.info("addRow 5");
ui.getSpeciesComboBox().removeItem(species);
+ log.info("addRow 6");
selectFirstInCombo(ui.getSpeciesComboBox());
+ log.info("addRow 7");
+
// getModel().setModify(true);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -1,6 +1,7 @@
package fr.ifremer.tutti.ui.swing.util;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.TuttiUI;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
@@ -9,7 +10,9 @@
import javax.swing.JTabbedPane;
/**
- *
+ * UI containing a tab panel.
+ *
+ * @param <M> type of the ui model
* @author kmorin <kmorin(a)codelutin.com>
* @since 0.3
*/
@@ -19,8 +22,17 @@
super(context);
}
+ /** @return the tab panel of the UI */
protected abstract JTabbedPane getTabPanel();
+ /**
+ * Method called when the user selects a tab
+ *
+ * @param currentIndex
+ * @param newIndex
+ * @return <code>false</code> if you want to prevent the tab change,
+ * <code>true</code> otherwise
+ */
protected boolean onTabChanged(int currentIndex, int newIndex) {
boolean result = true;
if (currentIndex != newIndex) {
@@ -37,6 +49,14 @@
return result;
}
+ /**
+ * Returns the tab handler of the tab i.
+ *
+ * @param index the index of the tab
+ * @return the tab handler of the index i if the handler implements
+ * the {@link TabHandler} interface,
+ * <code>null</code> otherwise
+ */
protected TabHandler getTabHandler(int index) {
TabHandler tabHandler = null;
JTabbedPane tabPanel = getTabPanel();
@@ -53,6 +73,7 @@
return tabHandler;
}
+ @Override
protected void initUI(TuttiUI ui) {
super.initUI(ui);
@@ -71,4 +92,14 @@
});
}
+
+ /**
+ * Sets a {@link CustomTab} as tab component.
+ *
+ * @param index
+ * @param model
+ */
+ protected void setCustomTab(int index, AbstractTuttiBeanUIModel model) {
+ getTabPanel().setTabComponentAt(index, new CustomTab(model));
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -36,9 +36,13 @@
import org.apache.commons.logging.LogFactory;
import static org.nuiton.i18n.I18n._;
+
/**
- *
+ * Custom tab component which adds a * in the end of the title
+ * when the content is modified.
+ *
* @author kmorin <kmorin(a)codelutin.com>
+ * @since 0.3
*/
public class CustomTab extends JPanel {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -121,11 +121,17 @@
});
}
+ /**
+ * Registers a validator.
+ *
+ * @param validator
+ */
public void registerValidator(SwingValidator validator) {
errorTableModel.registerValidator(validator);
validator.reloadBean();
}
+ /** Clears all the validators. */
public void clearValidators() {
errorTableModel.clearValidators();
errorTableModel.clear();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java 2013-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java 2013-01-15 11:07:25 UTC (rev 201)
@@ -2,13 +2,21 @@
package fr.ifremer.tutti.ui.swing.util;
/**
+ * Interface describing UI contained in a tab.
*
* @author kmorin <kmorin(a)codelutin.com>
* @since 0.3
*/
public interface TabHandler {
+ /**
+ * Method called when the tab is hidden
+ *
+ * @return <code>false</code> to prevent the tab to be hidden,
+ * <code>true</code> otherwise.
+ */
boolean onHideTab();
+ /** Method called when the tab is shown */
void onShowTab();
}
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-01-15 09:39:18 UTC (rev 200)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-15 11:07:25 UTC (rev 201)
@@ -4,6 +4,7 @@
tutti.action.about.tip=À Propos
tutti.action.cancel=Annuler
tutti.action.casino-import=Import Casino
+tutti.action.clone=Cloner
tutti.action.close=Fermer
tutti.action.configuration=Configuration
tutti.action.configuration.tip=Configurer Tutti
@@ -15,6 +16,7 @@
tutti.action.fillCatches.tip=Saisir des captures
tutti.action.generate=Générer
tutti.action.generateCampaignName=Générer le nom
+tutti.action.import=Importer
tutti.action.manageProtocol=Protocole
tutti.action.manageProtocol.tip=Gérer les protocoles
tutti.action.new=Nouveau
1
0
r200 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species: . frequency split
by tchemit@users.forge.codelutin.com 15 Jan '13
by tchemit@users.forge.codelutin.com 15 Jan '13
15 Jan '13
Author: tchemit
Date: 2013-01-15 10:39:18 +0100 (Tue, 15 Jan 2013)
New Revision: 200
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/200
Log:
refs #1805: [Onglet Poisson] Assistance ?\195?\160 la saisie des lots de poissons
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-15 07:18:44 UTC (rev 199)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-15 09:39:18 UTC (rev 200)
@@ -25,7 +25,6 @@
*/
import com.google.common.base.Preconditions;
-import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
@@ -58,6 +57,9 @@
import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent;
import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
+import jaxx.runtime.JAXXUtil;
+import jaxx.runtime.context.JAXXContextEntryDef;
+import jaxx.runtime.swing.ErrorDialogUI;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -84,6 +86,9 @@
private static final Log log =
LogFactory.getLog(SpeciesBatchUIHandler.class);
+ public static JAXXContextEntryDef<List<Caracteristic>> FREQUENCY_LENGTH_CONTEXT_ENTRY =
+ JAXXUtil.newListContextEntryDef("frequencyLength");
+
public static final Set<String> SAMPLING_PROPERTIES = Sets.newHashSet(
SpeciesBatchRowModel.PROPERTY_SAMPLE_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SPECIES,
@@ -145,9 +150,6 @@
SpeciesBatchUIModel model = getModel();
- Multimap<CaracteristicQualitativeValue, Species> speciesUsed =
- ArrayListMultimap.create();
-
List<SpeciesBatchRowModel> rows;
if (empty) {
@@ -176,12 +178,16 @@
SpeciesBatchRowModel rootRow =
loadSpeciesBatch(aBatch, null, rows);
- speciesUsed.put(rootRow.getSortedUnsortedCategoryValue(), rootRow.getSpecies());
+
+ if (log.isInfoEnabled()) {
+ log.info("Loaded root batch " +
+ decorate(rootRow.getSpecies()) + " - " +
+ decorate(rootRow.getSortedUnsortedCategoryValue()));
+ }
}
}
}
- model.setSpeciesUsed(speciesUsed);
model.setRows(rows);
recomputeBatchActionEnable();
}
@@ -283,8 +289,18 @@
@Override
protected void onModelRowsChanged(List<SpeciesBatchRowModel> rows) {
super.onModelRowsChanged(rows);
- // build the new sampling tree from the new rows to edit
-// getModel().getSamplingTreeModel().populate(rows);
+
+ // clear speciesUsed
+ getModel().getSpeciesUsed().clear();
+
+ for (SpeciesBatchRowModel row : rows) {
+ updateTotalFromFrequencies(row);
+ if (row.isBatchRoot()) {
+
+ // update speciesUsed
+ addToSpeciesUsed(row);
+ }
+ }
}
@Override
@@ -313,9 +329,6 @@
//-- AbstractTuttiUIHandler methods --//
//------------------------------------------------------------------------//
- public static final String SPECIES_FREQUENCY_LENGHTS =
- "SPECIES_FREQUENCY_LENGHTS";
-
@Override
protected SpeciesBatchUIModel getModel() {
return ui.getModel();
@@ -339,7 +352,7 @@
context.getService(PersistenceService.class);
List<Caracteristic> lengthCaracterics =
service.getAllSpeciesLengthStepCaracteristic();
- ui.setContextValue(lengthCaracterics, SPECIES_FREQUENCY_LENGHTS);
+ FREQUENCY_LENGTH_CONTEXT_ENTRY.setContextValue(ui, lengthCaracterics);
}
@Override
@@ -599,8 +612,8 @@
saveRow(newRow);
- // update species used map
- getModel().getSpeciesUsed().put(sortedUnsortedCategory, species);
+ // update speciesUsed
+ addToSpeciesUsed(newRow);
}
// reset create ui
@@ -706,7 +719,6 @@
if (!selectedBatch.isBatchRoot()) {
// remove all sub batches of his parent
-
SpeciesBatchRowModel parentBatch = selectedBatch.getBatchParent();
// get parent row index
@@ -722,37 +734,43 @@
// remove selected batch and all his children
- // collect of rows to remove from model
- Set<SpeciesBatchRowModel> rowToRemove =
- Sets.newHashSet(selectedBatch);
+ try {
- collectChilds(selectedBatch, rowToRemove);
+ // remove parent batch (will destroy all his childs from db)
+ persistenceService.deleteSpeciesBatch(selectedBatch.getId());
- // remove all rows from the model
- getModel().getRows().removeAll(rowToRemove);
+ // update speciesUsed
+ removeFromSpeciesUsed(selectedBatch);
- // remove childs from parent batch
- selectedBatch.setBatchChilds(null);
+ // collect of rows to remove from model
+ Set<SpeciesBatchRowModel> rowToRemove =
+ Sets.newHashSet(selectedBatch);
- // save parent batch (will destroy all his childs from db)
- persistenceService.deleteSpeciesBatch(selectedBatch.getId());
+ collectChilds(selectedBatch, rowToRemove);
- // refresh table from parent batch row index to the end
- tableModel.fireTableDataChanged();
+ // remove all rows from the model
+ getModel().getRows().removeAll(rowToRemove);
- if (tableModel.getRowCount() > 0) {
+ // refresh table from parent batch row index to the end
+ tableModel.fireTableDataChanged();
- // select first row
- AbstractSelectTableAction.doSelectCell(table, 0, 0);
- } else {
+ if (tableModel.getRowCount() > 0) {
- table.clearSelection();
- }
+ // select first row
+ AbstractSelectTableAction.doSelectCell(table, 0, 0);
+ } else {
- if (table.isEditing()) {
+ table.clearSelection();
+ }
- // but no edit it
- table.getCellEditor().stopCellEditing();
+ if (table.isEditing()) {
+
+ // but no edit it
+ table.getCellEditor().stopCellEditing();
+ }
+ } catch (Exception e) {
+
+ ErrorDialogUI.showError(e);
}
}
}
@@ -771,31 +789,44 @@
Preconditions.checkState(!TuttiEntities.isNew(parentBatch),
"Can't remove sub batch if batch is not persisted");
- // collect of rows to remove from model
- Set<SpeciesBatchRowModel> rowToRemove = Sets.newHashSet();
+ try {
- collectChilds(parentBatch, rowToRemove);
+ // save parent batch (will destroy all his childs from db)
+ persistenceService.deleteSpeciesSubBatch(parentBatch.getId());
- // remove all rows from the model
- getModel().getRows().removeAll(rowToRemove);
+ if (parentBatch.isBatchRoot()) {
- // remove childs from parent batch
- parentBatch.setBatchChilds(null);
+ // update speciesUsed
+ removeFromSpeciesUsed(parentBatch);
+ }
- // save parent batch (will destroy all his childs from db)
- persistenceService.deleteSpeciesSubBatch(parentBatch.getId());
+ // collect of rows to remove from model
+ Set<SpeciesBatchRowModel> rowToRemove = Sets.newHashSet();
- // refresh table from parent batch row index to the end
- getTableModel().fireTableDataChanged();
+ collectChilds(parentBatch, rowToRemove);
- // select parent batch row
- AbstractSelectTableAction.doSelectCell(table, rowIndex, 0);
+ // remove all rows from the model
+ getModel().getRows().removeAll(rowToRemove);
- if (table.isEditing()) {
+ // remove childs from parent batch
+ parentBatch.setBatchChilds(null);
- // but no edit it
- table.getCellEditor().stopCellEditing();
+ // refresh table from parent batch row index to the end
+ getTableModel().fireTableDataChanged();
+
+ // select parent batch row
+ AbstractSelectTableAction.doSelectCell(table, rowIndex, 0);
+
+ if (table.isEditing()) {
+
+ // but no edit it
+ table.getCellEditor().stopCellEditing();
+ }
+ } catch (Exception e) {
+
+ ErrorDialogUI.showError(e);
}
+
}
public SplitSpeciesBatchUI getSplitSpeciesBatchEditor() {
@@ -952,7 +983,6 @@
// getModel().setTotalVracWeight(totalVrac);
}
-
protected void recomputeBatchActionEnable() {
int rowIndex = getTable().getSelectedRow();
@@ -1118,4 +1148,26 @@
columnIdentifier);
}
+ protected void removeFromSpeciesUsed(SpeciesBatchRowModel row) {
+ Preconditions.checkNotNull(row);
+ Preconditions.checkNotNull(row.getSpecies());
+ Preconditions.checkNotNull(row.getSortedUnsortedCategoryValue());
+ if (log.isInfoEnabled()) {
+ log.info("Remove from speciesUsed: " + decorate(row.getSortedUnsortedCategoryValue()) + " - " + decorate(row.getSpecies()));
+ }
+ getModel().getSpeciesUsed().remove(row.getSortedUnsortedCategoryValue(),
+ row.getSpecies());
+ }
+
+ protected void addToSpeciesUsed(SpeciesBatchRowModel row) {
+ Preconditions.checkNotNull(row);
+ Preconditions.checkNotNull(row.getSpecies());
+ Preconditions.checkNotNull(row.getSortedUnsortedCategoryValue());
+ if (log.isInfoEnabled()) {
+ log.info("Add to speciesUsed: " + decorate(row.getSortedUnsortedCategoryValue()) + " - " + decorate(row.getSpecies()));
+ }
+ getModel().getSpeciesUsed().put(row.getSortedUnsortedCategoryValue(),
+ row.getSpecies());
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-01-15 07:18:44 UTC (rev 199)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-01-15 09:39:18 UTC (rev 200)
@@ -24,6 +24,7 @@
* #L%
*/
+import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
@@ -40,11 +41,8 @@
private static final long serialVersionUID = 1L;
-
public static final String PROPERTY_TABLE_VIEW_MODE = "tableViewMode";
- public static final String PROPERTY_SPECIES_USED = "speciesUsed";
-
public static final String PROPERTY_ALL_SPECIES = "allSpecies";
public static final String PROPERTY_CREATE_SPECIES_BATCH_ENABLED = "createSpeciesBatchEnabled";
@@ -80,7 +78,8 @@
*
* @since 0.3
*/
- protected Multimap<CaracteristicQualitativeValue, Species> speciesUsed;
+ protected final Multimap<CaracteristicQualitativeValue, Species>
+ speciesUsed = ArrayListMultimap.create();
/**
* What to show in the table.
@@ -204,12 +203,6 @@
return speciesUsed;
}
- public void setSpeciesUsed(Multimap<CaracteristicQualitativeValue, Species> speciesUsed) {
- this.speciesUsed = speciesUsed;
- firePropertyChange(PROPERTY_SPECIES_USED, null, speciesUsed);
- }
-
-
public boolean isCreateSpeciesBatchEnabled() {
return createSpeciesBatchEnabled;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java 2013-01-15 07:18:44 UTC (rev 199)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java 2013-01-15 09:39:18 UTC (rev 200)
@@ -235,16 +235,16 @@
return result;
}
- @Override
- public boolean stopCellEditing() {
- boolean b = super.stopCellEditing();
- if (b) {
- rowIndex = null;
- editRow = null;
- columnIndex = null;
- }
- return b;
- }
+// @Override
+// public boolean stopCellEditing() {
+// boolean b = super.stopCellEditing();
+// if (b) {
+// rowIndex = null;
+// editRow = null;
+// columnIndex = null;
+// }
+// return b;
+// }
@Override
public void cancelCellEditing() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-01-15 07:18:44 UTC (rev 199)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-01-15 09:39:18 UTC (rev 200)
@@ -151,9 +151,7 @@
initUI(ui);
List<Caracteristic> lengthStepCaracterics =
- ui.getContextValue(
- List.class,
- SpeciesBatchUIHandler.SPECIES_FREQUENCY_LENGHTS);
+ SpeciesBatchUIHandler.FREQUENCY_LENGTH_CONTEXT_ENTRY.getContextValue(ui);
Preconditions.checkNotNull(lengthStepCaracterics);
SpeciesFrequencyUIModel model = getModel();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.css 2013-01-15 07:18:44 UTC (rev 199)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.css 2013-01-15 09:39:18 UTC (rev 200)
@@ -77,12 +77,14 @@
#saveButton {
actionIcon: save;
+ mnemonic: E;
text: "tutti.action.save";
enabled: {model.isValid()};
}
#cancelButton {
actionIcon: cancel;
+ mnemonic: A;
text: "tutti.action.cancel";
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-01-15 07:18:44 UTC (rev 199)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-01-15 09:39:18 UTC (rev 200)
@@ -24,7 +24,6 @@
* #L%
*/
-import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import fr.ifremer.tutti.persistence.TuttiPersistence;
@@ -124,7 +123,7 @@
Species newValue = (Species) evt.getNewValue();
if (log.isInfoEnabled()) {
- log.info("New Selected species "+(newValue==null?null:newValue.getCodeMemo()));
+ log.info("New Selected species " + (newValue == null ? null : newValue.getCodeMemo()));
}
if (newValue == null || source.getSpeciesUsed() == null) {
@@ -212,17 +211,13 @@
List<Species> speciesToUse = Lists.newArrayList();
- Multimap<CaracteristicQualitativeValue, Species> speciesUsed;
- boolean reset = batchModel == null;
- if (reset) {
- speciesUsed = ArrayListMultimap.create();
- } else {
- speciesUsed = batchModel.getSpeciesUsed();
- }
+ Multimap<CaracteristicQualitativeValue, Species> speciesUsed =
+ model.getSpeciesUsed();
+ speciesUsed.clear();
- model.setSpeciesUsed(speciesUsed);
+ if (batchModel != null) {
- if (!reset) {
+ speciesUsed.putAll(batchModel.getSpeciesUsed());
// compute which species can still be used
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java 2013-01-15 07:18:44 UTC (rev 199)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java 2013-01-15 09:39:18 UTC (rev 200)
@@ -24,6 +24,7 @@
* #L%
*/
+import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
@@ -82,7 +83,7 @@
*
* @since 0.3
*/
- protected Multimap<CaracteristicQualitativeValue, Species> speciesUsed;
+ protected final Multimap<CaracteristicQualitativeValue, Species> speciesUsed = ArrayListMultimap.create();
public CreateSpeciesBatchUIModel() {
super(CreateSpeciesBatchUIModel.class, null, null);
@@ -128,10 +129,6 @@
firePropertyChange(PROPERTY_BATCH_WEIGHT, oldValue, batchWeight);
}
- public void setSpeciesUsed(Multimap<CaracteristicQualitativeValue, Species> speciesUsed) {
- this.speciesUsed = speciesUsed;
- }
-
public Multimap<CaracteristicQualitativeValue, Species> getSpeciesUsed() {
return speciesUsed;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 2013-01-15 07:18:44 UTC (rev 199)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 2013-01-15 09:39:18 UTC (rev 200)
@@ -94,13 +94,13 @@
#cancelButton {
actionIcon: cancel;
- mnemonic: C;
+ mnemonic: A;
text: "tutti.action.cancel";
}
#saveButton {
actionIcon: save;
- mnemonic: S;
+ mnemonic: E;
text: "tutti.action.save";
enabled: {model.isValid()};
}
1
0
r199 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/protocol resources/i18n
by tchemit@users.forge.codelutin.com 15 Jan '13
by tchemit@users.forge.codelutin.com 15 Jan '13
15 Jan '13
Author: tchemit
Date: 2013-01-15 08:18:44 +0100 (Tue, 15 Jan 2013)
New Revision: 199
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/199
Log:
add new tabs to protocol
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
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/protocol/EditProtocolUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-14 22:19:32 UTC (rev 198)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-15 07:18:44 UTC (rev 199)
@@ -80,7 +80,7 @@
<JMenuItem id='removeSpeciesMenu'
onActionPerformed='handler.removeSpecies()'/>
</JPopupMenu>
-
+
<JTabbedPane constraints='BorderLayout.CENTER'>
<tab title='tutti.label.tab.protocol.info'>
<Table id='protocolInfoForm' fill='both'>
@@ -92,7 +92,7 @@
</cell>
<cell weightx='1.0'>
<JTextField id='nameField'
- onKeyReleased='handler.setText(event, "name")'/>
+ onKeyReleased='handler.setText(event, "name")'/>
</cell>
</row>
@@ -100,21 +100,41 @@
<row weighty='0.8'>
<cell columns='2'>
<JScrollPane id='commentPane'
- onFocusGained='commentField.requestFocus()'>
+ onFocusGained='commentField.requestFocus()'>
<JTextArea id='commentField'
- onKeyReleased='handler.setText(event, "comment")'/>
+ onKeyReleased='handler.setText(event, "comment")'/>
</JScrollPane>
</cell>
</row>
</Table>
</tab>
+ <tab title='tutti.label.tab.protocol.fishingOperation'>
+ <Table fill='both' weightx='1'>
+ <row fill='both' weighty='1'>
+ <cell fill='both'>
+ <BeanDoubleList id='gearList' genericType='Caracteristic'/>
+ </cell>
+ </row>
+ <row fill='both' weighty='1'>
+ <cell fill='both'>
+ <BeanDoubleList id='environmentList' genericType='Caracteristic'/>
+ </cell>
+ </row>
+ <row fill='both' weighty='1'>
+ <cell fill='both'>
+ <BeanDoubleList id='hydrologyList' genericType='Caracteristic'/>
+ </cell>
+ </row>
+ </Table>
+ </tab>
+
<tab title='tutti.label.tab.protocol.species'>
<Table fill='both'>
<row fill='both'>
<cell fill='both' weightx='1'>
<BeanComboBox id='speciesComboBox' constructorParams='this'
- genericType='Species'/>
+ genericType='Species'/>
</cell>
<cell fill='both'>
<JButton id='addRow' onActionPerformed='handler.addRow()'/>
@@ -123,33 +143,27 @@
<row fill='both' weighty='1'>
<cell fill='both' columns='2'>
<JScrollPane>
- <JXTable id='speciesTable' onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ <JXTable id='speciesTable'
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
</cell>
</row>
</Table>
</tab>
+ <tab title='tutti.label.tab.protocol.benthos'>
+ <JLabel text='tutti.to.be.done' enabled='false'
+ horizontalAlignment="{JLabel.CENTER}"/>
+ </tab>
+ <tab title='tutti.label.tab.protocol.plankton'>
+ <JLabel text='tutti.to.be.done' enabled='false'
+ horizontalAlignment="{JLabel.CENTER}"/>
+ </tab>
+ <tab title='tutti.label.tab.protocol.accidental'>
+ <JLabel text='tutti.to.be.done' enabled='false'
+ horizontalAlignment="{JLabel.CENTER}"/>
+ </tab>
- <tab title='tutti.label.tab.protocol.pmfm'>
- <Table fill='both' weightx='1'>
- <row fill='both' weighty='1'>
- <cell fill='both'>
- <BeanDoubleList id='gearList' genericType='Caracteristic'/>
- </cell>
- </row>
- <row fill='both' weighty='1'>
- <cell fill='both'>
- <BeanDoubleList id='environmentList'
- genericType='Caracteristic'/>
- </cell>
- </row>
- <row fill='both' weighty='1'>
- <cell fill='both'>
- <BeanDoubleList id='hydrologyList' genericType='Caracteristic'/>
- </cell>
- </row>
- </Table>
- </tab>
+
</JTabbedPane>
<JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
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-01-14 22:19:32 UTC (rev 198)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-15 07:18:44 UTC (rev 199)
@@ -158,8 +158,11 @@
tutti.label.tab.macroDechet=Macro déchets
tutti.label.tab.observationIndividuel=Observations individuelles
tutti.label.tab.plancton=Plancton
+tutti.label.tab.protocol.accidental=Accidental
+tutti.label.tab.protocol.benthos=Benthos
+tutti.label.tab.protocol.fishingOperation=Trait
tutti.label.tab.protocol.info=Informations générales
-tutti.label.tab.protocol.pmfm=PMFM
+tutti.label.tab.protocol.plankton=Plancton
tutti.label.tab.protocol.species=Espèces
tutti.label.tab.species=Espèces
tutti.label.traitReminder=Trait \: %s
1
0
r198 - in trunk: tutti-persistence/src/main/xmi tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split
by tchemit@users.forge.codelutin.com 14 Jan '13
by tchemit@users.forge.codelutin.com 14 Jan '13
14 Jan '13
Author: tchemit
Date: 2013-01-14 23:19:32 +0100 (Mon, 14 Jan 2013)
New Revision: 198
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/198
Log:
refs #1805: [Onglet Poisson] Assistance ?\195?\160 la saisie des lots de poissons
Modified:
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-14 21:43:11 UTC (rev 197)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-14 22:19:32 UTC (rev 198)
@@ -145,7 +145,7 @@
SpeciesBatchUIModel model = getModel();
- Multimap<CaracteristicQualitativeValue, Species> availableSpecies =
+ Multimap<CaracteristicQualitativeValue, Species> speciesUsed =
ArrayListMultimap.create();
List<SpeciesBatchRowModel> rows;
@@ -162,8 +162,6 @@
if (!TuttiEntities.isNew(bean)) {
- Set<Species> speciesUsed = Sets.newHashSet();
-
// get all batch species root (says the one with only a species sample category)
List<SpeciesBatch> catches =
persistenceService.getAllRootSpeciesBatch(bean.getId());
@@ -173,18 +171,17 @@
// root batch sample categroy is species
Preconditions.checkState(
aBatch.getSampleCategoryType() == SampleCategoryEnum.sortedUnsorted,
- "Root species batch must be a species sample " +
+ "Root species batch must be a sortedUnsorted sample " +
"category but was:" + aBatch.getSampleCategoryType());
SpeciesBatchRowModel rootRow =
loadSpeciesBatch(aBatch, null, rows);
- speciesUsed.add(rootRow.getSpecies());
+ speciesUsed.put(rootRow.getSortedUnsortedCategoryValue(), rootRow.getSpecies());
}
- availableSpecies.removeAll(speciesUsed);
}
}
- model.setSpeciesUsed(availableSpecies);
+ model.setSpeciesUsed(speciesUsed);
model.setRows(rows);
recomputeBatchActionEnable();
}
@@ -604,7 +601,6 @@
// update species used map
getModel().getSpeciesUsed().put(sortedUnsortedCategory, species);
-
}
// reset create ui
@@ -759,8 +755,6 @@
table.getCellEditor().stopCellEditing();
}
}
-
-
}
public void removeSpeciesSubBatch() {
@@ -867,6 +861,7 @@
FishingOperation fishingOperation = getModel().getFishingOperation();
Preconditions.checkNotNull(fishingOperation);
+ Preconditions.checkNotNull(row.getSpecies());
SampleCategory<?> sampleCategory = row.getSampleCategory();
Preconditions.checkNotNull(sampleCategory);
Preconditions.checkNotNull(sampleCategory.getCategoryType());
@@ -1090,6 +1085,7 @@
// copy back parent data (mainly other sample categories)
+ newRow.setSpecies(parentRow.getSpecies());
newRow.setSpeciesToConfirm(parentRow.getSpeciesToConfirm());
newRow.setBatchParent(parentRow);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java 2013-01-14 21:43:11 UTC (rev 197)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java 2013-01-14 22:19:32 UTC (rev 198)
@@ -30,7 +30,6 @@
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import java.util.List;
-import java.util.Set;
/**
* Model of {@link CreateSpeciesBatchUI}.
@@ -146,24 +145,6 @@
public boolean isSpeciesAndCategoryAvailable(Species species,
CaracteristicQualitativeValue sortedUnsortedCategory) {
boolean result = !speciesUsed.containsEntry(sortedUnsortedCategory, species);
-
- if (result) {
-
- // species - category still no used
-
- Set<CaracteristicQualitativeValue> categories = speciesUsed.keySet();
- result = categories.isEmpty();
- for (CaracteristicQualitativeValue category : categories) {
-
- if (!speciesUsed.containsEntry(category, species)) {
-
- // ok found a category available
- result = true;
- break;
- }
- }
-
- }
return result;
}
}
\ No newline at end of file
1
0
14 Jan '13
Author: tchemit
Date: 2013-01-14 22:43:11 +0100 (Mon, 14 Jan 2013)
New Revision: 197
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/197
Log:
refs #1805: [Onglet Poisson] Assistance ?\195?\160 la saisie des lots de poissons
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceDevImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategory.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel-error-validation.xml
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/TuttiPersistence.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -35,6 +35,7 @@
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
@@ -143,6 +144,8 @@
Vessel getVessel(String vesselCode);
+ boolean isSortedQualitativeValue(CaracteristicQualitativeValue value);
+
//------------------------------------------------------------------------//
//-- Program methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -27,6 +27,7 @@
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
@@ -126,4 +127,6 @@
Person getPerson(Integer personId);
Gear getGear(Integer gearId);
+
+ boolean isSortedQualitativeValue(CaracteristicQualitativeValue value);
}
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -116,15 +116,18 @@
@Value("${LocationLevelId.RECTANGLE_STATISTIQUE_MED}")
public final Integer RECTANGLE_STATISTIQUE_MED = null;
+ @Value("${QualitativeValueId.VRAC}")
+ public final Integer QUALITATIVE_VRAC_ID = null;
+
@Value("${StatusCode.ENABLE}")
public final String STATUS_VALID_CODE = null;
@Value("${StatusCode.TEMPORARY}")
public final String STATUS_TEMPORARY_CODE = null;
-
+
@Value("${PersonId.UNKNOWN_RECORDER_PERSON}")
public final Integer PERSON_ID_UNKNOWN_RECORDER_PERSON = null;
-
+
@Value("${QualityFlagCode.NOTQUALIFIED}")
public final String QUALITY_FLAG_CODE_NOT_QUALIFIED = null;
@@ -160,5 +163,6 @@
Preconditions.checkNotNull(RECTANGLE_STATISTIQUE_MED, "LocationLevelId.RECTANGLE_STATISTIQUE_MED constant not found");
Preconditions.checkNotNull(STATUS_VALID_CODE, "StatusCode.ENABLE constant not found");
Preconditions.checkNotNull(STATUS_TEMPORARY_CODE, "StatusCode.TEMPORARY constant not found");
+ Preconditions.checkNotNull(QUALITATIVE_VRAC_ID, "QualitativeValueId.VRAC constant not found");
}
}
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -35,6 +35,7 @@
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
@@ -73,7 +74,7 @@
LogFactory.getLog(TuttiPersistenceAdagioImpl.class);
@Autowired(required = true)
- protected ReferentialPersistenceService referentielService;
+ protected ReferentialPersistenceService referentialService;
@Autowired(required = true)
protected ProgramPersistenceService programService;
@@ -130,132 +131,137 @@
@Override
public List<Zone> getAllProgramZone() {
- return referentielService.getAllProgramZone();
+ return referentialService.getAllProgramZone();
}
@Override
public List<Country> getAllCountry() {
- return referentielService.getAllCountry();
+ return referentialService.getAllCountry();
}
@Override
public List<Vessel> getAllScientificVessel() {
- return referentielService.getAllScientificVessel();
+ return referentialService.getAllScientificVessel();
}
@Override
public List<Vessel> getAllFishingVessel() {
- return referentielService.getAllFishingVessel();
+ return referentialService.getAllFishingVessel();
}
@Override
public List<Species> getAllSpecies() {
- return referentielService.getAllSpecies();
+ return referentialService.getAllSpecies();
}
@Override
public List<Species> getAllBenthosSpecies() {
- return referentielService.getAllBenthosSpecies();
+ return referentialService.getAllBenthosSpecies();
}
@Override
public List<Species> getAllPlanktonSpecies() {
- return referentielService.getAllPlanktonSpecies();
+ return referentialService.getAllPlanktonSpecies();
}
@Override
public Species getSpecies(String speciesId) {
- return referentielService.getSpecies(speciesId);
+ return referentialService.getSpecies(speciesId);
}
@Override
public List<FishingOperationLocation> getAllFishingOperationStrata(String zoneId) {
- return referentielService.getAllFishingOperationStrata(zoneId);
+ return referentialService.getAllFishingOperationStrata(zoneId);
}
@Override
public List<FishingOperationLocation> getAllFishingOperationSubStrata(String locationId) {
- return referentielService.getAllFishingOperationSubStrata(locationId);
+ return referentialService.getAllFishingOperationSubStrata(locationId);
}
@Override
public List<FishingOperationLocation> getAllFishingOperationLocation(String locationId) {
- return referentielService.getAllFishingOperationLocation(locationId);
+ return referentialService.getAllFishingOperationLocation(locationId);
}
@Override
public List<Caracteristic> getAllFishingOperationEnvironmentCaracteristic() {
- return referentielService.getAllFishingOperationEnvironmentCaracteristic();
+ return referentialService.getAllFishingOperationEnvironmentCaracteristic();
}
@Override
public List<Caracteristic> getAllFishingOperationGearCaracteristic() {
- return referentielService.getAllFishingOperationGearCaracteristic();
+ return referentialService.getAllFishingOperationGearCaracteristic();
}
@Override
public List<Caracteristic> getAllFishingOperationHydrologicCaracteristic() {
- return referentielService.getAllFishingOperationHydrologicCaracteristic();
+ return referentialService.getAllFishingOperationHydrologicCaracteristic();
}
@Override
public List<Caracteristic> getAllSpeciesLengthStepCaracteristic() {
- return referentielService.getAllSpeciesLengthStepCaracteristic();
+ return referentialService.getAllSpeciesLengthStepCaracteristic();
}
@Override
public Caracteristic getSizeCategoryCaracteristic() {
- return referentielService.getSizeCategoryCaracteristic();
+ return referentialService.getSizeCategoryCaracteristic();
}
@Override
public Caracteristic getSexCaracteristic() {
- return referentielService.getSexCaracteristic();
+ return referentialService.getSexCaracteristic();
}
@Override
public Caracteristic getSortedUnsortedCaracteristic() {
- return referentielService.getSortedUnsortedCaracteristic();
+ return referentialService.getSortedUnsortedCaracteristic();
}
@Override
public Caracteristic getMaturityCaracteristic() {
- return referentielService.getMaturityCaracteristic();
+ return referentialService.getMaturityCaracteristic();
}
@Override
public Caracteristic getMacroWasteCategoryCaracteristic() {
- return referentielService.getMacroWasteCategoryCaracteristic();
+ return referentialService.getMacroWasteCategoryCaracteristic();
}
@Override
public Caracteristic getMacroWasteSizeCategoryCaracteristic() {
- return referentielService.getMacroWasteSizeCategoryCaracteristic();
+ return referentialService.getMacroWasteSizeCategoryCaracteristic();
}
@Override
public List<Gear> getAllScientificGear() {
- return referentielService.getAllScientificGear();
+ return referentialService.getAllScientificGear();
}
@Override
public List<Gear> getAllFishingGear() {
- return referentielService.getAllFishingGear();
+ return referentialService.getAllFishingGear();
}
@Override
public List<Person> getAllPerson() {
- return referentielService.getAllPerson();
+ return referentialService.getAllPerson();
}
@Override
public Vessel getVessel(String vesselCode) {
- return referentielService.getVessel(vesselCode);
+ return referentialService.getVessel(vesselCode);
}
@Override
+ public boolean isSortedQualitativeValue(CaracteristicQualitativeValue value) {
+ return referentialService.isSortedQualitativeValue(value);
+ }
+
+ @Override
public Person getPerson(Integer personId) {
- return referentielService.getPerson(personId);
+ return referentialService.getPerson(personId);
}
//------------------------------------------------------------------------//
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -157,7 +157,7 @@
"refDate", DateType.INSTANCE, new Date(),
"statusValidCode", StringType.INSTANCE, enumeration.STATUS_VALID_CODE,
"statusTemporaryCode", StringType.INSTANCE, enumeration.STATUS_TEMPORARY_CODE
- );
+ );
Vessel result = loadVessel(source);
return result;
}
@@ -227,6 +227,12 @@
}
@Override
+ public boolean isSortedQualitativeValue(CaracteristicQualitativeValue value) {
+ return value != null &&
+ enumeration.QUALITATIVE_VRAC_ID.toString().equals(value.getId());
+ }
+
+ @Override
public List<Species> getAllSpecies() {
TaxonRefTaxVO[] sources = taxonNameDao.getAllTaxonRefTax();
Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
===================================================================
--- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -49,6 +49,7 @@
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
@@ -244,6 +245,11 @@
}
@Override
+ public boolean isSortedQualitativeValue(CaracteristicQualitativeValue value) {
+ return referentialPersistenceService.isSortedQualitativeValue(value);
+ }
+
+ @Override
public List<Species> getAllSpecies() {
return referentialPersistenceService.getAllSpecies();
}
Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceDevImpl.java
===================================================================
--- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceDevImpl.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceDevImpl.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -29,6 +29,7 @@
import fr.ifremer.tutti.persistence.entities.IdAware;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
@@ -224,7 +225,12 @@
return getBean(Gear.class.getName(), gearCode.toString());
}
+ @Override
+ public boolean isSortedQualitativeValue(CaracteristicQualitativeValue value) {
+ return value !=null && value.getId().equals("311");
+ }
+
protected <B extends IdAware> List<B> getData(String entityType) {
List<B> result = (List<B>) cache.get(entityType);
return result;
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-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -39,6 +39,7 @@
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
@@ -280,6 +281,11 @@
}
@Override
+ public boolean isSortedQualitativeValue(CaracteristicQualitativeValue value) {
+ return devDriver.isSortedQualitativeValue(value);
+ }
+
+ @Override
public Person getPerson(Integer personId) {
return devDriver.getPerson(personId);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategory.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategory.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategory.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -25,7 +25,6 @@
*/
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringBuilder;
import java.io.Serializable;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -184,7 +184,7 @@
Multimap<Species, SampleCategoryType> speciesSampleCategories) {
super(columnModel, false, false);
this.speciesSampleCategories = speciesSampleCategories;
- setNoneEditableCols();
+ setNoneEditableCols(SPECIES);
frequencyCols = Sets.newHashSet();
frequencyCols.add(COMPUTED_NUMBER);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -25,6 +25,7 @@
*/
import com.google.common.base.Preconditions;
+import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
@@ -144,8 +145,8 @@
SpeciesBatchUIModel model = getModel();
- List<Species> availableSpecies =
- Lists.newArrayList(model.getAllSpecies());
+ Multimap<CaracteristicQualitativeValue, Species> availableSpecies =
+ ArrayListMultimap.create();
List<SpeciesBatchRowModel> rows;
@@ -183,7 +184,7 @@
}
}
- model.setAvailableSpecies(availableSpecies);
+ model.setSpeciesUsed(availableSpecies);
model.setRows(rows);
recomputeBatchActionEnable();
}
@@ -589,7 +590,11 @@
Species species = createModel.getSpecies();
newRow.setSpecies(species);
- //TODO Add sortedUnosrtedCategory
+ CaracteristicQualitativeValue sortedUnsortedCategory = createModel.getSortedUnsortedCategory();
+ SampleCategory<CaracteristicQualitativeValue> category = newRow.getSortedUnsortedCategory();
+ category.setCategoryValue(sortedUnsortedCategory);
+ category.setCategoryWeight(createModel.getBatchWeight());
+ newRow.setSampleCategory(category);
recomputeRowValidState(newRow);
@@ -597,8 +602,8 @@
saveRow(newRow);
- // update available species list
- getModel().getAvailableSpecies().remove(species);
+ // update species used map
+ getModel().getSpeciesUsed().put(sortedUnsortedCategory, species);
}
@@ -957,8 +962,9 @@
int rowIndex = getTable().getSelectedRow();
- boolean enableAdd =
- CollectionUtils.isNotEmpty(getModel().getAvailableSpecies());
+ //TODO Improve this test
+ boolean enableAdd = true;
+// CollectionUtils.isNotEmpty(getModel().getAvailableSpecies());
boolean enableSplit = false;
boolean enableRemove = false;
@@ -992,8 +998,8 @@
if (enableRemove) {
- // can remove batch if selected batch is not a leaf
- enableRemove = !row.isBatchLeaf();
+ // can always remove the batch
+ enableRemove = true;
}
if (enableRemoveSub) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -24,6 +24,8 @@
* #L%
*/
+import com.google.common.collect.Multimap;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
@@ -41,7 +43,7 @@
public static final String PROPERTY_TABLE_VIEW_MODE = "tableViewMode";
- public static final String PROPERTY_AVAILABLE_SPECIES = "availableSpecies";
+ public static final String PROPERTY_SPECIES_USED = "speciesUsed";
public static final String PROPERTY_ALL_SPECIES = "allSpecies";
@@ -50,8 +52,15 @@
public static final String PROPERTY_SPLIT_SPECIES_BATCH_ENABLED = "splitSpeciesBatchEnabled";
public static final String PROPERTY_REMOVE_SPECIES_SUB_BATCH_ENABLED = "removeSpeciesSubBatchEnabled";
+
public static final String PROPERTY_REMOVE_SPECIES_BATCH_ENABLED = "removeSpeciesBatchEnabled";
+ public static final String PROPERTY_TABLE_VIEW_MODE_ALL = "tableViewModeAll";
+
+ public static final String PROPERTY_TABLE_VIEW_MODE_LEAF = "tableViewModeLeaf";
+
+ public static final String PROPERTY_TABLE_VIEW_MODE_ROOT = "tableViewModeRoot";
+
/**
* Sampling order (sets by protocol).
*
@@ -67,11 +76,11 @@
protected List<Species> allSpecies;
/**
- * All available species (says available species that are not used in any batch).
+ * Species already used in some batches.
*
* @since 0.3
*/
- protected List<Species> availableSpecies;
+ protected Multimap<CaracteristicQualitativeValue, Species> speciesUsed;
/**
* What to show in the table.
@@ -164,9 +173,9 @@
Object oldValue = getTableViewMode();
this.tableViewMode = tableViewMode;
firePropertyChange(PROPERTY_TABLE_VIEW_MODE, oldValue, tableViewMode);
- firePropertyChange("tableViewModeAll", null, isTableViewModeAll());
- firePropertyChange("tableViewModeLeaf", null, isTableViewModeLeaf());
- firePropertyChange("tableViewModeRoot", null, isTableViewModeRoot());
+ firePropertyChange(PROPERTY_TABLE_VIEW_MODE_ALL, null, isTableViewModeAll());
+ firePropertyChange(PROPERTY_TABLE_VIEW_MODE_LEAF, null, isTableViewModeLeaf());
+ firePropertyChange(PROPERTY_TABLE_VIEW_MODE_ROOT, null, isTableViewModeRoot());
}
public boolean isTableViewModeAll() {
@@ -191,16 +200,16 @@
firePropertyChange(PROPERTY_ALL_SPECIES, oldValue, allSpecies);
}
- public List<Species> getAvailableSpecies() {
- return availableSpecies;
+ public Multimap<CaracteristicQualitativeValue, Species> getSpeciesUsed() {
+ return speciesUsed;
}
- public void setAvailableSpecies(List<Species> availableSpecies) {
- Object oldValue = getAvailableSpecies();
- this.availableSpecies = availableSpecies;
- firePropertyChange(PROPERTY_AVAILABLE_SPECIES, oldValue, availableSpecies);
+ public void setSpeciesUsed(Multimap<CaracteristicQualitativeValue, Species> speciesUsed) {
+ this.speciesUsed = speciesUsed;
+ firePropertyChange(PROPERTY_SPECIES_USED, null, speciesUsed);
}
+
public boolean isCreateSpeciesBatchEnabled() {
return createSpeciesBatchEnabled;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.css 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.css 2013-01-14 21:43:11 UTC (rev 197)
@@ -52,6 +52,16 @@
data: {model.getAvailableSpecies()};
}
+#sortedUnsortedCategoryLabel {
+ text: "tutti.label.createSpeciesBatch.sortedUnsortedCategory";
+ labelFor: {sortedUnsortedCategoryComboBox};
+}
+
+#sortedUnsortedCategoryComboBox {
+ property: sortedUnsortedCategory;
+ selectedItem: {model.getSortedUnsortedCategory()};
+}
+
#batchWeightLabel {
text: "tutti.label.createSpeciesBatch.batchWeight";
labelFor: {batchWeightField};
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.jaxx 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.jaxx 2013-01-14 21:43:11 UTC (rev 197)
@@ -26,6 +26,7 @@
<import>
fr.ifremer.tutti.persistence.entities.referential.Species
+ fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue
fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategoryType
fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI
@@ -72,6 +73,8 @@
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
<field name='species' component='speciesComboBox'/>
+ <field name='sortedUnsortedCategory'
+ component='sortedUnsortedCategoryComboBox'/>
<field name='batchWeight' component='batchWeightField'/>
</BeanValidator>
@@ -90,6 +93,18 @@
</cell>
</row>
+ <!-- Sorted / Unsorted Category -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='sortedUnsortedCategoryLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <BeanComboBox id='sortedUnsortedCategoryComboBox'
+ constructorParams='this'
+ genericType='CaracteristicQualitativeValue'/>
+ </cell>
+ </row>
+
<!-- Species batch weight -->
<row>
<cell anchor='west'>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -24,8 +24,14 @@
* #L%
*/
+import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists;
+import com.google.common.collect.Multimap;
+import fr.ifremer.tutti.persistence.TuttiPersistence;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel;
@@ -35,6 +41,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.util.List;
/**
@@ -56,9 +64,27 @@
*/
private final CreateSpeciesBatchUI ui;
- public CreateSpeciesBatchUIHandler(SpeciesBatchUI parentUi, CreateSpeciesBatchUI ui) {
+ private final TuttiPersistence persistenceService;
+
+ private final CaracteristicQualitativeValue sortedValue;
+
+ public CreateSpeciesBatchUIHandler(SpeciesBatchUI parentUi,
+ CreateSpeciesBatchUI ui) {
super(parentUi.getHandler().getContext());
this.ui = ui;
+ persistenceService = context.getService(PersistenceService.class);
+
+ Caracteristic caracteristic =
+ persistenceService.getSortedUnsortedCaracteristic();
+
+ CaracteristicQualitativeValue v = null;
+ for (CaracteristicQualitativeValue value : caracteristic.getQualitativeValue()) {
+ if (persistenceService.isSortedQualitativeValue(value)) {
+ v = value;
+ break;
+ }
+ }
+ sortedValue = v;
}
//------------------------------------------------------------------------//
@@ -82,6 +108,52 @@
Lists.<Species>newArrayList(),
null);
+ Caracteristic caracteristic =
+ persistenceService.getSortedUnsortedCaracteristic();
+
+ initBeanComboBox(ui.getSortedUnsortedCategoryComboBox(),
+ caracteristic.getQualitativeValue(),
+ null);
+
+ getModel().addPropertyChangeListener(CreateSpeciesBatchUIModel.PROPERTY_SPECIES, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
+ CreateSpeciesBatchUIModel source =
+ (CreateSpeciesBatchUIModel) evt.getSource();
+ Species newValue = (Species) evt.getNewValue();
+
+ if (log.isInfoEnabled()) {
+ log.info("New Selected species "+(newValue==null?null:newValue.getCodeMemo()));
+ }
+
+ if (newValue == null || source.getSpeciesUsed() == null) {
+
+ source.setSortedUnsortedCategory(null);
+
+ } else {
+
+ // look for best value : if sorted is available then use it
+
+ List<CaracteristicQualitativeValue> qualitativeValues =
+ ui.getSortedUnsortedCategoryComboBox().getData();
+
+ CaracteristicQualitativeValue newCategory = null;
+
+ for (CaracteristicQualitativeValue qualitativeValue : qualitativeValues) {
+ if (source.isSpeciesAndCategoryAvailable(newValue, qualitativeValue)) {
+ newCategory = qualitativeValue;
+
+ if (newCategory.equals(sortedValue)) {
+ break;
+ }
+ }
+ }
+ source.setSortedUnsortedCategory(newCategory);
+ }
+ }
+ });
+
SwingValidatorUtil.installUI(ui.getErrorTable(),
new SwingValidatorMessageTableRenderer());
@@ -135,13 +207,28 @@
ui.getValidator().setBean(model);
model.setSpecies(null);
+ model.setSortedUnsortedCategory(null);
model.setBatchWeight(null);
List<Species> speciesToUse = Lists.newArrayList();
- if (batchModel != null) {
+ Multimap<CaracteristicQualitativeValue, Species> speciesUsed;
+ boolean reset = batchModel == null;
+ if (reset) {
+ speciesUsed = ArrayListMultimap.create();
+ } else {
+ speciesUsed = batchModel.getSpeciesUsed();
+ }
- speciesToUse.addAll(batchModel.getAvailableSpecies());
+ model.setSpeciesUsed(speciesUsed);
+
+ if (!reset) {
+
+ // compute which species can still be used
+
+ List<Species> allSpecies = batchModel.getAllSpecies();
+
+ speciesToUse.addAll(allSpecies);
}
ui.getSpeciesComboBox().setData(speciesToUse);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java 2013-01-14 21:43:11 UTC (rev 197)
@@ -24,10 +24,13 @@
* #L%
*/
+import com.google.common.collect.Multimap;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import java.util.List;
+import java.util.Set;
/**
* Model of {@link CreateSpeciesBatchUI}.
@@ -43,6 +46,8 @@
public static final String PROPERTY_SPECIES = "species";
+ public static final String PROPERTY_SORTED_UNSORTED_CATEGORY = "sortedUnsortedCategory";
+
public static final String PROPERTY_BATCH_WEIGHT = "batchWeight";
/**
@@ -60,12 +65,26 @@
protected Species species;
/**
+ * Sorted Unsorted category.
+ *
+ * @since 0.3
+ */
+ protected CaracteristicQualitativeValue sortedUnsortedCategory;
+
+ /**
* Incoming batch weight to split.
*
* @since 0.3
*/
protected Float batchWeight;
+ /**
+ * Already used species by sortedUnsorted category.
+ *
+ * @since 0.3
+ */
+ protected Multimap<CaracteristicQualitativeValue, Species> speciesUsed;
+
public CreateSpeciesBatchUIModel() {
super(CreateSpeciesBatchUIModel.class, null, null);
}
@@ -90,6 +109,16 @@
firePropertyChange(PROPERTY_SPECIES, oldSpecies, getSpecies());
}
+ public CaracteristicQualitativeValue getSortedUnsortedCategory() {
+ return sortedUnsortedCategory;
+ }
+
+ public void setSortedUnsortedCategory(CaracteristicQualitativeValue sortedUnsortedCategory) {
+ Object oldSpecies = getSortedUnsortedCategory();
+ this.sortedUnsortedCategory = sortedUnsortedCategory;
+ firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY, oldSpecies, sortedUnsortedCategory);
+ }
+
public Float getBatchWeight() {
return batchWeight;
}
@@ -100,4 +129,41 @@
firePropertyChange(PROPERTY_BATCH_WEIGHT, oldValue, batchWeight);
}
+ public void setSpeciesUsed(Multimap<CaracteristicQualitativeValue, Species> speciesUsed) {
+ this.speciesUsed = speciesUsed;
+ }
+
+ public Multimap<CaracteristicQualitativeValue, Species> getSpeciesUsed() {
+ return speciesUsed;
+ }
+
+ public boolean isSpeciesAndCategoryAvailable() {
+ boolean result = species != null && sortedUnsortedCategory != null &&
+ isSpeciesAndCategoryAvailable(species, sortedUnsortedCategory);
+ return result;
+ }
+
+ public boolean isSpeciesAndCategoryAvailable(Species species,
+ CaracteristicQualitativeValue sortedUnsortedCategory) {
+ boolean result = !speciesUsed.containsEntry(sortedUnsortedCategory, species);
+
+ if (result) {
+
+ // species - category still no used
+
+ Set<CaracteristicQualitativeValue> categories = speciesUsed.keySet();
+ result = categories.isEmpty();
+ for (CaracteristicQualitativeValue category : categories) {
+
+ if (!speciesUsed.containsEntry(category, species)) {
+
+ // ok found a category available
+ result = true;
+ break;
+ }
+ }
+
+ }
+ return result;
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel-error-validation.xml 2013-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel-error-validation.xml 2013-01-14 21:43:11 UTC (rev 197)
@@ -31,8 +31,31 @@
<message>tutti.validator.error.createSpeciesBatch.species.required
</message>
</field-validator>
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ sortedUnsortedCategory == null || speciesAndCategoryAvailable ]]>
+ </param>
+ <message>
+ tutti.validator.error.createSpeciesBatch.speciesAndCategory.notAvailable
+ </message>
+ </field-validator>
</field>
+ <field name="sortedUnsortedCategory">
+ <field-validator type="required" short-circuit="true">
+ <message>tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required
+ </message>
+ </field-validator>
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ species == null || speciesAndCategoryAvailable ]]>
+ </param>
+ <message>
+ tutti.validator.error.createSpeciesBatch.speciesAndCategory.notAvailable
+ </message>
+ </field-validator>
+ </field>
+
<field name="batchWeight">
<field-validator type="required" short-circuit="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-01-14 18:25:01 UTC (rev 196)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-14 21:43:11 UTC (rev 197)
@@ -79,6 +79,7 @@
tutti.label.catches.speciesTotalWeight=Poids TOTAL (kg)
tutti.label.comment=Commentaire
tutti.label.createSpeciesBatch.batchWeight=Poids du lot
+tutti.label.createSpeciesBatch.sortedUnsortedCategory=V / HV
tutti.label.createSpeciesBatch.species=Espèce du lot
tutti.label.cruise=Campagne
tutti.label.cruise.beginDate=Date de début
@@ -277,7 +278,9 @@
tutti.tooltip.comment.none=Pas de commentaire
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif
tutti.validator.error.createSpeciesBatch.batchWeight.required=Le poids du lot est obligatoire
+tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=LA catégorie Vrac / Hors Vrac est obligatoire
tutti.validator.error.createSpeciesBatch.species.required=L'espèce est obligatoire
+tutti.validator.error.createSpeciesBatch.speciesAndCategory.notAvailable=Couple (espèce - Vrac/Hors Vrac) déjà utilisée
tutti.validator.error.cruise.beginDate.required=La date de début est obligatoire
tutti.validator.error.cruise.country.required=Le pays est obligatoire
tutti.validator.error.cruise.endDate.required=La date de fin est obligatoire
1
0
Author: tchemit
Date: 2013-01-14 19:25:01 +0100 (Mon, 14 Jan 2013)
New Revision: 196
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/196
Log:
updates to stable adagio version
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-01-14 17:46:19 UTC (rev 195)
+++ trunk/pom.xml 2013-01-14 18:25:01 UTC (rev 196)
@@ -136,7 +136,7 @@
<slf4jVersion>1.7.2</slf4jVersion>
- <adagioVersion>3.3.1-SNAPSHOT</adagioVersion>
+ <adagioVersion>3.3.1-rev-401</adagioVersion>
<msaccessImporterVersion>1.4.1</msaccessImporterVersion>
1
0
r195 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing: environment gearshooting hydrology
by kmorin@users.forge.codelutin.com 14 Jan '13
by kmorin@users.forge.codelutin.com 14 Jan '13
14 Jan '13
Author: kmorin
Date: 2013-01-14 18:46:19 +0100 (Mon, 14 Jan 2013)
New Revision: 195
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/195
Log:
debug NPE
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-14 17:40:34 UTC (rev 194)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-14 17:46:19 UTC (rev 195)
@@ -230,9 +230,11 @@
TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class);
List<String> environmentPmfmIds = Lists.newArrayList();
- List<String> protocolEnvironmentPmfmId = protocol.getEnvironmentPmfmId();
- if (protocol != null && protocolEnvironmentPmfmId != null) {
- environmentPmfmIds.addAll(protocolEnvironmentPmfmId);
+ if (protocol != null) {
+ List<String> protocolEnvironmentPmfmId = protocol.getEnvironmentPmfmId();
+ if (protocolEnvironmentPmfmId != null) {
+ environmentPmfmIds.addAll(protocolEnvironmentPmfmId);
+ }
}
List<EnvironmentRowModel> rows = Lists.newArrayList();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-14 17:40:34 UTC (rev 194)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-14 17:46:19 UTC (rev 195)
@@ -233,9 +233,11 @@
TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class);
List<String> gearPmfmIds = Lists.newArrayList();
- List<String> protocolGearPmfmId = protocol.getGearPmfmId();
- if (protocol != null && protocolGearPmfmId != null) {
- gearPmfmIds.addAll(protocolGearPmfmId);
+ if (protocol != null) {
+ List<String> protocolGearPmfmId = protocol.getGearPmfmId();
+ if (protocolGearPmfmId != null) {
+ gearPmfmIds.addAll(protocolGearPmfmId);
+ }
}
List<GearShootingRowModel> rows = Lists.newArrayList();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-14 17:40:34 UTC (rev 194)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-14 17:46:19 UTC (rev 195)
@@ -286,7 +286,10 @@
TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class);
List<String> gearPmfmIds = Lists.newArrayList();
if (protocol != null) {
- gearPmfmIds.addAll(protocol.getHydrologyPmfmId());
+ List<String> protocolHydrologyPmfmId = protocol.getHydrologyPmfmId();
+ if (protocolHydrologyPmfmId != null) {
+ gearPmfmIds.addAll(protocolHydrologyPmfmId);
+ }
}
List<HydrologyRowModel> rows = Lists.newArrayList();
1
0
r194 - in trunk: tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service tutti-persistence-adagio/src/main/resources tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service tutti-service/src/main/java/fr/ifremer/tutti/service tutti-service/src/main/resources/i18n
by tchemit@users.forge.codelutin.com 14 Jan '13
by tchemit@users.forge.codelutin.com 14 Jan '13
14 Jan '13
Author: tchemit
Date: 2013-01-14 18:40:34 +0100 (Mon, 14 Jan 2013)
New Revision: 194
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/194
Log:
fix decorator of referentiel
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-01-14 16:35:12 UTC (rev 193)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-01-14 17:40:34 UTC (rev 194)
@@ -24,7 +24,6 @@
* #L%
*/
-import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import fr.ifremer.adagio.core.dao.referential.StatusDao;
import fr.ifremer.adagio.core.dao.referential.taxon.TaxonNameExtendDao;
@@ -90,8 +89,8 @@
Object[] source = list.next();
Zone target = new Zone();
target.setId(String.valueOf(source[0]));
- target.setName((String) source[1]);
- target.setDescription((String) source[2]);
+ target.setLabel((String) source[1]);
+ target.setName((String) source[2]);
setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[3], target);
result.add(target);
}
@@ -423,29 +422,6 @@
//-- Internal methods --//
//------------------------------------------------------------------------//
- protected void loadCaracteristicQualitativeValues(Caracteristic caracteristic,
- Integer pmfmId) {
- Preconditions.checkNotNull(caracteristic, "Caracteristic can not be null");
- Preconditions.checkNotNull(pmfmId, "pmfmId can not be null");
- Preconditions.checkArgument(caracteristic.isQualitativeType(),
- "Caracteristic must be a qualitativeValue type");
-
- Iterator<Object[]> sources = queryListWithStatus(
- "pmfmQualitativeValues",
- "pmfmId", IntegerType.INSTANCE, pmfmId);
-
- List<CaracteristicQualitativeValue> values = Lists.newArrayList();
- while (sources.hasNext()) {
- Object[] source = sources.next();
- CaracteristicQualitativeValue target = new CaracteristicQualitativeValue();
- target.setId(String.valueOf(source[0]));
- target.setName(String.valueOf(source[1]));
- setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[2], target);
- values.add(target);
- }
- caracteristic.setQualitativeValue(values);
- }
-
protected Caracteristic loadCaracteristic(Integer pmfmId) {
Object[] source = queryUniqueWithStatus("pmfmById",
@@ -453,38 +429,52 @@
"unitIdNone", IntegerType.INSTANCE, enumeration.UNIT_ID_NONE);
Caracteristic target = loadCaracteristic(source);
-
- if (target.isQualitativeType()) {
-
- // load qualititative values
- loadCaracteristicQualitativeValues(target, pmfmId);
- }
return target;
}
protected Caracteristic loadCaracteristic(Object[] source) {
- Caracteristic target = new Caracteristic();
- target.setId(String.valueOf(source[0]));
- target.setParameterName((String) source[1]);
- target.setMatrixName((String) source[2]);
- target.setFractionName((String) source[3]);
- target.setMethodName((String) source[4]);
- target.setNumberType((Boolean) source[5]);
- target.setQualitativeType((Boolean) source[6]);
- target.setSignifFiguresNumber((Integer) source[7]);
- target.setMaximumNumberDecimals((Integer) source[8]);
- target.setPrecision((Float) source[9]);
- target.setUnit((String) source[10]);
- setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[11], target);
- return target;
+ Integer pmfmId = (Integer) source[0];
+
+ Caracteristic result = new Caracteristic();
+ result.setId(pmfmId.toString());
+ result.setParameterName((String) source[1]);
+ result.setMatrixName((String) source[2]);
+ result.setFractionName((String) source[3]);
+ result.setMethodName((String) source[4]);
+ result.setNumberType((Boolean) source[5]);
+ result.setQualitativeType((Boolean) source[6]);
+ result.setSignifFiguresNumber((Integer) source[7]);
+ result.setMaximumNumberDecimals((Integer) source[8]);
+ result.setPrecision((Float) source[9]);
+ result.setUnit((String) source[10]);
+ setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[11], result);
+
+ if (result.isQualitativeType()) {
+
+ Iterator<Object[]> sources = queryListWithStatus(
+ "pmfmQualitativeValues",
+ "pmfmId", IntegerType.INSTANCE, pmfmId);
+
+ List<CaracteristicQualitativeValue> values = Lists.newArrayList();
+ while (sources.hasNext()) {
+ Object[] source2 = sources.next();
+ CaracteristicQualitativeValue target2 = new CaracteristicQualitativeValue();
+ target2.setId(String.valueOf(source2[0]));
+ target2.setName(String.valueOf(source2[1]));
+ setStatus((fr.ifremer.adagio.core.dao.referential.Status) source2[2], target2);
+ values.add(target2);
+ }
+ result.setQualitativeValue(values);
+ }
+ return result;
}
protected FishingOperationLocation loadFishingOperationLocation(Object[] source) {
FishingOperationLocation target = new FishingOperationLocation();
target.setId(String.valueOf(source[0]));
- target.setName((String) source[1]);
- target.setLabel((String) source[2]);
+ target.setLabel((String) source[1]);
+ target.setName((String) source[2]);
// target.setDescription((String)source[3]);
target.setLocationLevel((Integer) source[3]);
@@ -525,8 +515,8 @@
protected Gear loadGear(Object[] source) {
Gear result = new Gear();
result.setId(String.valueOf(source[0]));
- result.setName((String) source[1]);
- result.setLabel((String) source[2]);
+ result.setLabel((String) source[1]);
+ result.setName((String) source[2]);
setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[3], result);
return result;
}
@@ -534,8 +524,8 @@
protected Iterator<Object[]> queryListWithStatus(String queryName,
Object... params) {
Query query = createQuery(queryName, params);
- query.setString("statusValidCode", enumeration.STATUS_VALID_CODE.toString());
- query.setString("statusTemporaryCode", enumeration.STATUS_TEMPORARY_CODE.toString());
+ query.setString("statusValidCode", enumeration.STATUS_VALID_CODE);
+ query.setString("statusTemporaryCode", enumeration.STATUS_TEMPORARY_CODE);
Iterator result = query.iterate();
return result;
@@ -544,8 +534,8 @@
protected Object[] queryUniqueWithStatus(String queryName, Object... params) {
Query query = createQuery(queryName, params);
- query.setString("statusValidCode", enumeration.STATUS_VALID_CODE.toString());
- query.setString("statusTemporaryCode", enumeration.STATUS_TEMPORARY_CODE.toString());
+ query.setString("statusValidCode", enumeration.STATUS_VALID_CODE);
+ query.setString("statusTemporaryCode", enumeration.STATUS_TEMPORARY_CODE);
Object result = query.uniqueResult();
return (Object[]) result;
Modified: trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-01-14 16:35:12 UTC (rev 193)
+++ trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-01-14 17:40:34 UTC (rev 194)
@@ -279,6 +279,8 @@
AND l.status.code IN (:statusValidCode, :statusTemporaryCode)
]]>
<query-param name="locationLevelId" type="java.lang.Integer"/>
+ <query-param name="statusValidCode" type="java.lang.String"/>
+ <query-param name="statusTemporaryCode" type="java.lang.String"/>
</query>
<!-- [REF-02] Get all countries -->
@@ -295,6 +297,8 @@
AND l.status.code IN (:statusValidCode, :statusTemporaryCode)
]]>
<query-param name="locationLevelId" type="java.lang.Integer"/>
+ <query-param name="statusValidCode" type="java.lang.String"/>
+ <query-param name="statusTemporaryCode" type="java.lang.String"/>
</query>
<!-- [REF-03] et [REF-04] Get all vessel for a given vesselType -->
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java 2013-01-14 16:35:12 UTC (rev 193)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java 2013-01-14 17:40:34 UTC (rev 194)
@@ -89,6 +89,7 @@
Assert.assertNotNull(result);
}
+ @Ignore
@Test
public void createCruise(/*Cruise bean*/) {
String programCode = dbResource.getFixtures().programCode();
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2013-01-14 16:35:12 UTC (rev 193)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2013-01-14 17:40:34 UTC (rev 194)
@@ -103,18 +103,18 @@
registerMultiJXPathDecorator(Cruise.class, "${name}$s", SEPARATOR, " - ");
registerMultiJXPathDecorator(TuttiProtocol.class, "${name}$s", SEPARATOR, " - ");
registerMultiJXPathDecorator(FishingOperation.class, "${stationNumber}$s#${fishingOperationNumber}$s#${date}$td/%3$tm/%3$tY", SEPARATOR, " - ");
- registerMultiJXPathDecorator(Zone.class, "${name}$s", SEPARATOR, " - ");
- registerMultiJXPathDecorator(Vessel.class, "${name}$s", SEPARATOR, " - ");
- registerMultiJXPathDecorator(Country.class, "${name}$s", SEPARATOR, " - ");
- registerMultiJXPathDecorator(Gear.class, "${name}$s", SEPARATOR, " - ");
- registerMultiJXPathDecorator(Person.class, "${firstName}$s#${lastName}$s", SEPARATOR, " ");
- registerMultiJXPathDecorator(FishingOperationLocation.class, "${name}$s", SEPARATOR, " - ");
- registerMultiJXPathDecorator(Caracteristic.class, "${name}$s", SEPARATOR, " - ");
- registerMultiJXPathDecorator(Caracteristic.class, CARACTERISTIC_WITH_UNIT, "${name}$s (${unit}$s)", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Zone.class, "${label}$s#${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Vessel.class, "${name}$s#${internalRegistrationCode}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Country.class, "${label}$s#${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Gear.class, "${label}$s#${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Person.class, "${firstName}$s#${lastName}$s#${department}$s", SEPARATOR, " ");
+ registerMultiJXPathDecorator(FishingOperationLocation.class, "${label}$s#${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Caracteristic.class, "${parameterName}$s#${matrixName}$s#${fractionName}$s#${methodName}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Caracteristic.class, CARACTERISTIC_WITH_UNIT, "${parameterName}$s#${matrixName}$s#${fractionName}$s#${methodName}$s (${unit}$s)", SEPARATOR, " - ");
registerMultiJXPathDecorator(CaracteristicQualitativeValue.class, "${name}$s", SEPARATOR, " - ");
- registerMultiJXPathDecorator(Species.class, "${codeMemo}$s#${genusSpecies}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Species.class, "${codeMemo}$s#${name}$s", SEPARATOR, " - ");
registerMultiJXPathDecorator(Species.class, SPECIES_BY_CODE, "${codeMemo}$s", SEPARATOR, " - ");
- registerMultiJXPathDecorator(Species.class, SPECIES_BY_GENUS, "${genusSpecies}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Species.class, SPECIES_BY_GENUS, "${name}$s", SEPARATOR, " - ");
registerMultiJXPathDecorator(SpeciesProtocol.class, "${speciesId}", SEPARATOR, " - ");
registerMultiJXPathDecorator(Attachment.class, "${name}$s", SEPARATOR, " - ");
registerMultiJXPathDecorator(LabelAware.class, "${label}$s", SEPARATOR, " - ");
@@ -132,12 +132,19 @@
static {
n_("tutti.property.protocol");
+ n_("tutti.property.label");
n_("tutti.property.name");
n_("tutti.property.firstName");
n_("tutti.property.lastName");
+ n_("tutti.property.department");
n_("tutti.property.stationNumber");
+ n_("tutti.property.internalRegistrationCode");
n_("tutti.property.date");
n_("tutti.property.program");
+ n_("tutti.property.parameterName");
+ n_("tutti.property.matrixName");
+ n_("tutti.property.fractionName");
+ n_("tutti.property.methodName");
n_("tutti.property.cruise");
n_("tutti.property.fishingOperation");
n_("tutti.property.zone");
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-01-14 16:35:12 UTC (rev 193)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-01-14 17:40:34 UTC (rev 194)
@@ -8,13 +8,20 @@
tutti.property.country=Pays
tutti.property.cruise=Campagne
tutti.property.date=Date
+tutti.property.department=Département
tutti.property.firstName=Prénom
tutti.property.fishingOperation=Trait
+tutti.property.fractionName=Fraction
tutti.property.gear=Engin
tutti.property.genusSpecies=Nom scientifique
+tutti.property.internalRegistrationCode=Immatriculation internationale
+tutti.property.label=Code
tutti.property.lastName=Nom de Famille
tutti.property.macroWasteCategory=Type de macro déchet
+tutti.property.matrixName=Support
+tutti.property.methodName=Méthode
tutti.property.name=Nom
+tutti.property.parameterName=Paramètre
tutti.property.program=Série de campagne
tutti.property.protocol=Protocol de saisie
tutti.property.sortedUnsortedCategory=Vrac / Hors Vrac
1
0
r193 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/operation java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting java/fr/ifremer/tutti/ui/swing/content/protocol java/fr/ifremer/tutti/ui/swing/util resources/i18n
by kmorin@users.forge.codelutin.com 14 Jan '13
by kmorin@users.forge.codelutin.com 14 Jan '13
14 Jan '13
Author: kmorin
Date: 2013-01-14 17:35:12 +0100 (Mon, 14 Jan 2013)
New Revision: 193
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/193
Log:
* [PROTOCOL] add columns to species
* [FISHING OPERATION] check model validity before saving on operation change
* [FISHING OPERATION] save on tab change (not only edit fishing operation tab change)
* [FISHING OPERATION] update combo when data change
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.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/EditProtocolUIModel.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/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-14 16:21:51 UTC (rev 192)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -41,7 +41,9 @@
import fr.ifremer.tutti.ui.swing.content.operation.fishing.gearshooting.GearShootingTabUIModel;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.hydrology.HydrologyTabUI;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.hydrology.HydrologyTabUIModel;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler;
import fr.ifremer.tutti.ui.swing.util.CustomTab;
+import fr.ifremer.tutti.ui.swing.util.TabHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import java.awt.BorderLayout;
import java.beans.PropertyChangeEvent;
@@ -63,7 +65,8 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
*/
-public class EditFishingOperationUIHandler extends AbstractTuttiUIHandler<EditFishingOperationUIModel> {
+public class EditFishingOperationUIHandler extends AbstractTuttiTabContainerUIHandler<EditFishingOperationUIModel>
+ implements TabHandler {
/** Logger. */
private static final Log log =
@@ -251,36 +254,6 @@
hydrologyModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationHydrologicCaracteristic());
tabPanel.setTabComponentAt(3, new CustomTab(hydrologyModel));
- tabPanel.setModel(new DefaultSingleSelectionModel() {
-
- @Override
- public void setSelectedIndex(int index) {
- int currentIndex = tabPanel.getSelectedIndex();
- boolean mustSelectIndex = true;
-
- if (currentIndex >= 0) {
- CustomTab currentTab = (CustomTab) tabPanel.getTabComponentAt(currentIndex);
- AbstractTuttiBeanUIModel model = currentTab.getModel();
-
- if (TuttiUIContext.VALIDATION_CONTEXT_EDIT.equals(getModel().getValidationContext())
- || model.isValid()) {
- if (!model.isCreate() && model.isModify()) {
- save();
- }
- super.setSelectedIndex(index);
-
- } else {
- mustSelectIndex = false;
- }
- }
-
- if (mustSelectIndex) {
- super.setSelectedIndex(index);
- }
- }
-
- });
-
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
main.registerValidator(ui.getValidator());
@@ -303,6 +276,43 @@
}
@Override
+ protected JTabbedPane getTabPanel() {
+ return ui.getFishingOperationTabPane();
+ }
+
+ @Override
+ protected boolean onTabChanged(int currentIndex, int newIndex) {
+ boolean result = super.onTabChanged(currentIndex, newIndex);
+ if (result && currentIndex != newIndex && currentIndex >= 0) {
+ CustomTab currentTab = (CustomTab) getTabPanel().getTabComponentAt(currentIndex);
+ AbstractTuttiBeanUIModel model = currentTab.getModel();
+ result = TuttiUIContext.VALIDATION_CONTEXT_EDIT.equals(getModel().getValidationContext())
+ || model.isValid();
+
+ if (result && !model.isCreate() && model.isModify()) {
+ save();
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public boolean onHideTab() {
+ AbstractTuttiBeanUIModel model = getModel();
+ boolean result = TuttiUIContext.VALIDATION_CONTEXT_EDIT.equals(getModel().getValidationContext())
+ || model.isValid();
+ if (result && !model.isCreate() && model.isModify()) {
+ save();
+ }
+ return result;
+ }
+
+ @Override
+ public void onShowTab() {
+ log.info("show tab");
+ }
+
+ @Override
protected EditFishingOperationUIModel getModel() {
return ui.getModel();
}
@@ -399,7 +409,7 @@
if (log.isWarnEnabled()) {
log.warn("Won't save new fishing operation, use explicit save button instead...");
}
- } else {
+ } else if (beanToSave.isValid()) {
if (beanToSave.isUseSexagecimalFormat()) {
beanToSave.convertGearShootingCoordinatesDMSToDD();
}
@@ -525,4 +535,5 @@
ui.getLocationComboBox().setData(location);
}
}
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-14 16:21:51 UTC (rev 192)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -33,6 +33,8 @@
import fr.ifremer.tutti.ui.swing.MainUI;
import fr.ifremer.tutti.ui.swing.TuttiUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler;
+import fr.ifremer.tutti.ui.swing.util.TabHandler;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -42,6 +44,8 @@
import java.beans.PropertyChangeListener;
import java.util.Date;
import java.util.List;
+import javax.swing.DefaultSingleSelectionModel;
+import javax.swing.JTabbedPane;
import static org.nuiton.i18n.I18n._;
@@ -51,7 +55,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
*/
-public class FishingOperationsUIHandler extends AbstractTuttiUIHandler<FishingOperationsUIModel> {
+public class FishingOperationsUIHandler extends AbstractTuttiTabContainerUIHandler<FishingOperationsUIModel> {
/** Logger. */
private static final Log log =
@@ -166,6 +170,11 @@
protected FishingOperationsUIModel getModel() {
return ui.getModel();
}
+
+ @Override
+ protected JTabbedPane getTabPanel() {
+ return ui.getTabPane();
+ }
public void createNewFishingOperation() {
@@ -238,6 +247,7 @@
if (create) {
savedFishingOperation = persistenceService.createFishingOperation(toSave);
model.addFishingOperation(savedFishingOperation);
+ model.setSelectedFishingOperation(savedFishingOperation);
} else {
savedFishingOperation = persistenceService.saveFishingOperation(toSave);
@@ -247,16 +257,7 @@
FishingOperation existingFishingOperation =
TuttiEntities.findById(data, savedFishingOperation.getId());
- if (existingFishingOperation != null) {
- data.remove(existingFishingOperation);
- }
- data.add(savedFishingOperation);
-
- // update model fishingOperation list
- model.setFishingOperation(data);
+ model.updateFishingOperation(existingFishingOperation, savedFishingOperation);
}
-
- // update model selected fishingOperation
- model.setSelectedFishingOperation(savedFishingOperation);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-01-14 16:21:51 UTC (rev 192)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -72,6 +72,24 @@
firePropertyChange(PROPERTY_FISHING_OPERATION, oldValue, this.fishingOperation);
}
+ public void removeFishingOperation(FishingOperation fishingOperation) {
+ Object oldValue = Lists.newArrayList(getFishingOperation());
+ this.fishingOperation.remove(fishingOperation);
+ firePropertyChange(PROPERTY_FISHING_OPERATION, oldValue, this.fishingOperation);
+ }
+
+ public void updateFishingOperation(FishingOperation oldFishingOperation,
+ FishingOperation newFishingOperation) {
+ int oldFishingOperationIndex = fishingOperation.indexOf(oldFishingOperation);
+ fishingOperation.remove(oldFishingOperation);
+ if (oldFishingOperationIndex >= 0) {
+ fishingOperation.add(oldFishingOperationIndex, newFishingOperation);
+ } else {
+ fishingOperation.add(newFishingOperation);
+ }
+ firePropertyChange(PROPERTY_FISHING_OPERATION, null, fishingOperation);
+ }
+
public FishingOperation getSelectedFishingOperation() {
return selectedFishingOperation;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-14 16:21:51 UTC (rev 192)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -230,8 +230,9 @@
TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class);
List<String> environmentPmfmIds = Lists.newArrayList();
- if (protocol != null) {
- environmentPmfmIds.addAll(protocol.getEnvironmentPmfmId());
+ List<String> protocolEnvironmentPmfmId = protocol.getEnvironmentPmfmId();
+ if (protocol != null && protocolEnvironmentPmfmId != null) {
+ environmentPmfmIds.addAll(protocolEnvironmentPmfmId);
}
List<EnvironmentRowModel> rows = Lists.newArrayList();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-14 16:21:51 UTC (rev 192)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -233,8 +233,9 @@
TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class);
List<String> gearPmfmIds = Lists.newArrayList();
- if (protocol != null) {
- gearPmfmIds.addAll(protocol.getGearPmfmId());
+ List<String> protocolGearPmfmId = protocol.getGearPmfmId();
+ if (protocol != null && protocolGearPmfmId != null) {
+ gearPmfmIds.addAll(protocolGearPmfmId);
}
List<GearShootingRowModel> rows = Lists.newArrayList();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java 2013-01-14 16:21:51 UTC (rev 192)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -38,7 +38,7 @@
public class EditProtocolSpeciesRowModel extends AbstractTuttiBeanUIModel<SpeciesProtocol, EditProtocolSpeciesRowModel> {
private static final long serialVersionUID = 1L;
-
+
public static final String PROPERTY_SPECIES = "species";
public static final String PROPERTY_SIZE_ENABLED = "sizeEnabled";
@@ -51,8 +51,12 @@
public static final String PROPERTY_LENGTH_STEP_PMFM = "lengthStepPmfm";
- public static final String PROPERTY_SORTED_UNSORTED = "sortedUnsorted";
+ public static final String PROPERTY_WEIGHT_ENABLED = "weightEnabled";
+ public static final String PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED = "countIfNoFrequencyEnabled";
+
+ public static final String PROPERTY_CALCIFY_SAMPLE_ENABLED = "calcifySampleEnabled";
+
protected Species species;
protected boolean sizeEnabled;
@@ -63,10 +67,14 @@
protected boolean ageEnabled;
- protected boolean sortedUnsorted;
-
protected Caracteristic lengthStepPmfm;
+ protected boolean weightEnabled;
+
+ protected boolean countIfNoFrequencyEnabled;
+
+ protected boolean calcifySampleEnabled;
+
protected static final Binder<SpeciesProtocol, EditProtocolSpeciesRowModel> fromBeanBinder =
BinderFactory.newBinder(SpeciesProtocol.class,
EditProtocolSpeciesRowModel.class);
@@ -133,16 +141,6 @@
firePropertyChange(PROPERTY_AGE_ENABLED, oldValue, ageEnabled);
}
- public boolean isSortedUnsorted() {
- return sortedUnsorted;
- }
-
- public void setSortedUnsorted(boolean sortedUnsorted) {
- Object oldValue = isSortedUnsorted();
- this.sortedUnsorted = sortedUnsorted;
- firePropertyChange(PROPERTY_SORTED_UNSORTED, oldValue, sortedUnsorted);
- }
-
public String getLengthStepPmfmId() {
return lengthStepPmfm != null ? lengthStepPmfm.getId() : null;
}
@@ -156,4 +154,35 @@
this.lengthStepPmfm = lengthStepPmfm;
firePropertyChange(PROPERTY_LENGTH_STEP_PMFM, oldValue, lengthStepPmfm);
}
+
+ public boolean isWeightEnabled() {
+ return weightEnabled;
+ }
+
+ public void setWeightEnabled(boolean weightEnabled) {
+ Object oldValue = isWeightEnabled();
+ this.weightEnabled = weightEnabled;
+ firePropertyChange(PROPERTY_WEIGHT_ENABLED, oldValue, weightEnabled);
+ }
+
+ public boolean isCountIfNoFrequencyEnabled() {
+ return countIfNoFrequencyEnabled;
+ }
+
+ public void setCountIfNoFrequencyEnabled(boolean countIfNoFrequencyEnabled) {
+ Object oldValue = isCountIfNoFrequencyEnabled();
+ this.countIfNoFrequencyEnabled = countIfNoFrequencyEnabled;
+ firePropertyChange(PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, oldValue, countIfNoFrequencyEnabled);
+ }
+
+ public boolean isCalcifySampleEnabled() {
+ return calcifySampleEnabled;
+ }
+
+ public void setCalcifySampleEnabled(boolean calcifySampleEnabled) {
+ Object oldValue = isCalcifySampleEnabled();
+ this.calcifySampleEnabled = calcifySampleEnabled;
+ firePropertyChange(PROPERTY_CALCIFY_SAMPLE_ENABLED, oldValue, calcifySampleEnabled);
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-01-14 16:21:51 UTC (rev 192)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -67,10 +67,21 @@
n_("tutti.table.protocol.species.header.lengthStep"),
n_("tutti.table.protocol.species.header.lengthStep"));
- public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SORTED_UNSORTED = ColumnIdentifier.newId(
- EditProtocolSpeciesRowModel.PROPERTY_SORTED_UNSORTED,
- n_("tutti.table.protocol.species.header.sortedUnsorted"),
- n_("tutti.table.protocol.species.header.sortedUnsorted"));
+ public static final ColumnIdentifier<EditProtocolSpeciesRowModel> WEIGHT_ENABLED = ColumnIdentifier.newId(
+ EditProtocolSpeciesRowModel.PROPERTY_WEIGHT_ENABLED,
+ n_("tutti.table.protocol.species.header.weight"),
+ n_("tutti.table.protocol.species.header.weight"));
+
+ public static final ColumnIdentifier<EditProtocolSpeciesRowModel> COUNT_IF_NO_FREQUENCY_ENABLED = ColumnIdentifier.newId(
+ EditProtocolSpeciesRowModel.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED,
+ n_("tutti.table.protocol.species.header.countIfNoFrequency"),
+ n_("tutti.table.protocol.species.header.countIfNoFrequency"));
+
+ public static final ColumnIdentifier<EditProtocolSpeciesRowModel> CALCIFY_SAMPLE_ENABLED = ColumnIdentifier.newId(
+ EditProtocolSpeciesRowModel.PROPERTY_CALCIFY_SAMPLE_ENABLED,
+ n_("tutti.table.protocol.species.header.calcifySample"),
+ n_("tutti.table.protocol.species.header.calcifySample"));
+
private static final long serialVersionUID = 1L;
@@ -87,6 +98,9 @@
result.setSizeEnabled(true);
result.setSexEnabled(true);
result.setAgeEnabled(true);
+ result.setWeightEnabled(true);
+ result.setCountIfNoFrequencyEnabled(true);
+ result.setCalcifySampleEnabled(true);
result.setValid(false);
return result;
}
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-01-14 16:21:51 UTC (rev 192)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -54,8 +54,6 @@
import javax.swing.table.TableColumnModel;
import jaxx.runtime.swing.editor.bean.BeanDoubleList;
import jaxx.runtime.validator.swing.SwingValidator;
-import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
-import jaxx.runtime.validator.swing.SwingValidatorUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -104,7 +102,9 @@
columToSampleCategory.put(EditProtocolSpeciesTableModel.SEX_ENABLED, SampleCategoryEnum.sex);
columToSampleCategory.put(EditProtocolSpeciesTableModel.MATURITY_ENABLED, SampleCategoryEnum.maturity);
columToSampleCategory.put(EditProtocolSpeciesTableModel.AGE_ENABLED, SampleCategoryEnum.age);
- columToSampleCategory.put(EditProtocolSpeciesTableModel.SORTED_UNSORTED, SampleCategoryEnum.sortedUnsorted);
+ columToSampleCategory.put(EditProtocolSpeciesTableModel.WEIGHT_ENABLED, SampleCategoryEnum.weight);
+ columToSampleCategory.put(EditProtocolSpeciesTableModel.COUNT_IF_NO_FREQUENCY_ENABLED, SampleCategoryEnum.countIfNoFrequency);
+ columToSampleCategory.put(EditProtocolSpeciesTableModel.CALCIFY_SAMPLE_ENABLED, SampleCategoryEnum.calcifySample);
}
//------------------------------------------------------------------------//
@@ -248,7 +248,9 @@
for (SampleCategoryEnum sampleOrder : model.getSampleCategoryOrder()) {
ColumnIdentifier<EditProtocolSpeciesRowModel> columnIdentifier = sampleCategoryToColumn.get(sampleOrder);
- addBooleanColumnToModel(columnModel, columnIdentifier, table);
+ if (columnIdentifier != null) {
+ addBooleanColumnToModel(columnModel, columnIdentifier, table);
+ }
}
columnModel.addColumnModelListener(new TableColumnModelListener() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-01-14 16:21:51 UTC (rev 192)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -72,7 +72,10 @@
SampleCategoryEnum.size,
SampleCategoryEnum.sex,
SampleCategoryEnum.maturity,
- SampleCategoryEnum.age);
+ SampleCategoryEnum.age,
+ SampleCategoryEnum.weight,
+ SampleCategoryEnum.countIfNoFrequency,
+ SampleCategoryEnum.calcifySample);
/**
* Can user remove a selected species?
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -0,0 +1,74 @@
+
+package fr.ifremer.tutti.ui.swing.util;
+
+import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
+import fr.ifremer.tutti.ui.swing.TuttiUI;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import java.awt.Component;
+import javax.swing.DefaultSingleSelectionModel;
+import javax.swing.JTabbedPane;
+
+/**
+ *
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 0.3
+ */
+public abstract class AbstractTuttiTabContainerUIHandler<M> extends AbstractTuttiUIHandler<M> {
+
+ protected AbstractTuttiTabContainerUIHandler(TuttiUIContext context) {
+ super(context);
+ }
+
+ protected abstract JTabbedPane getTabPanel();
+
+ protected boolean onTabChanged(int currentIndex, int newIndex) {
+ boolean result = true;
+ if (currentIndex != newIndex) {
+ TabHandler handler = getTabHandler(currentIndex);
+ if (handler != null) {
+ result = handler.onHideTab();
+ }
+
+ handler = getTabHandler(newIndex);
+ if (handler != null) {
+ handler.onShowTab();
+ }
+ }
+ return result;
+ }
+
+ protected TabHandler getTabHandler(int index) {
+ TabHandler tabHandler = null;
+ JTabbedPane tabPanel = getTabPanel();
+ if (index >= 0 && index < tabPanel.getTabCount()) {
+ Component tab = tabPanel.getComponentAt(index);
+ if (TuttiUI.class.isInstance(tab)) {
+ TuttiUI tuttiTab = (TuttiUI) tabPanel.getComponentAt(index);
+ AbstractTuttiUIHandler handler = tuttiTab.getHandler();
+ if (TabHandler.class.isInstance(handler)) {
+ tabHandler = (TabHandler) handler;
+ }
+ }
+ }
+ return tabHandler;
+ }
+
+ protected void initUI(TuttiUI ui) {
+ super.initUI(ui);
+
+ final JTabbedPane tabPanel = getTabPanel();
+ tabPanel.setModel(new DefaultSingleSelectionModel() {
+
+ @Override
+ public void setSelectedIndex(int index) {
+ int currentIndex = tabPanel.getSelectedIndex();
+ boolean mustChangeTab = onTabChanged(currentIndex, index);
+
+ if (mustChangeTab) {
+ super.setSelectedIndex(index);
+ }
+ }
+
+ });
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java 2013-01-14 16:35:12 UTC (rev 193)
@@ -0,0 +1,14 @@
+
+package fr.ifremer.tutti.ui.swing.util;
+
+/**
+ *
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 0.3
+ */
+public interface TabHandler {
+
+ boolean onHideTab();
+
+ void onShowTab();
+}
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-01-14 16:21:51 UTC (rev 192)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-14 16:35:12 UTC (rev 193)
@@ -224,12 +224,14 @@
tutti.table.plankton.batch.header.toConfirm=A Confirmer
tutti.table.plankton.batch.header.weight=Poids
tutti.table.protocol.species.header.age=Age
-tutti.table.protocol.species.header.lengthStep=Classe de Taille
+tutti.table.protocol.species.header.calcifySample=Prélèvement de pièces calcifiées
+tutti.table.protocol.species.header.countIfNoFrequency=Dénombrement
+tutti.table.protocol.species.header.lengthStep=Classe de Taille
tutti.table.protocol.species.header.maturity=Maturité
tutti.table.protocol.species.header.sex=Sexe
tutti.table.protocol.species.header.size=Catégorie Tri
-tutti.table.protocol.species.header.sortedUnsorted=Vrac / Hors Vrac
tutti.table.protocol.species.header.speciesId=Espèce
+tutti.table.protocol.species.header.weight=Pesée
tutti.table.species.batch.header.ageCategory=Age
tutti.table.species.batch.header.comment=Commentaire
tutti.table.species.batch.header.computedNumber=Nombre
1
0
14 Jan '13
Author: kmorin
Date: 2013-01-14 17:21:51 +0100 (Mon, 14 Jan 2013)
New Revision: 192
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/192
Log:
add SampleCategories
Modified:
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
1
0