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
September 2013
- 4 participants
- 100 discussions
r1194 - in trunk/tutti-ui-swing/src/main: filtered-resources java/fr/ifremer/tutti/ui/swing/content/operation/catches java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency java/fr/ifremer/tutti/ui/swing/content/operation/catches/species java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency resources/i18n
by tchemit@users.forge.codelutin.com 19 Sep '13
by tchemit@users.forge.codelutin.com 19 Sep '13
19 Sep '13
Author: tchemit
Date: 2013-09-19 23:16:52 +0200 (Thu, 19 Sep 2013)
New Revision: 1194
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1194
Log:
fixes #3271: [MENSURATION] ajout bouton "enregistrer et passer ?\195?\160 l'esp?\195?\168ce suivante" dans ?\195?\169cran mensurations
Modified:
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.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/frequency/SpeciesFrequencyCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx
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/SpeciesFrequencyUIModel.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-19 21:16:52 UTC (rev 1194)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Thu Sep 19 11:22:41 CEST 2013
+#Thu Sep 19 23:07:37 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions
tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions
@@ -90,6 +90,8 @@
tutti.editBenthosFrequencies.action.cancel.help=editFishingOperation.html\#captureBenthosActions
tutti.editBenthosFrequencies.action.generate.help=editFishingOperation.html\#captureBenthosActions
tutti.editBenthosFrequencies.action.save.help=editFishingOperation.html\#captureBenthosActions
+tutti.editBenthosFrequencies.action.saveAndClose.help=
+tutti.editBenthosFrequencies.action.saveAndContinue.help=
tutti.editBenthosFrequencies.field.lengthStepCaracteristic.help=editFishingOperation.html\#captureBenthosFields
tutti.editBenthosFrequencies.field.maxStep.help=editFishingOperation.html\#captureBenthosFields
tutti.editBenthosFrequencies.field.minStep.help=editFishingOperation.html\#captureBenthosFields
@@ -245,6 +247,8 @@
tutti.editSpeciesFrequencies.action.cancel.help=editFishingOperation.html\#captureEspecesMensurationActions
tutti.editSpeciesFrequencies.action.generate.help=editFishingOperation.html\#captureEspecesMensurationActions
tutti.editSpeciesFrequencies.action.save.help=editFishingOperation.html\#captureEspecesMensurationActions
+tutti.editSpeciesFrequencies.action.saveAndClose.help=
+tutti.editSpeciesFrequencies.action.saveAndContinue.help=
tutti.editSpeciesFrequencies.field.lengthStepCaracteristic.help=editFishingOperation.html\#captureEspecesMensurationFields
tutti.editSpeciesFrequencies.field.maxStep.help=editFishingOperation.html\#captureEspecesMensurationFields
tutti.editSpeciesFrequencies.field.minStep.help=editFishingOperation.html\#captureEspecesMensurationFields
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-19 21:16:52 UTC (rev 1194)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Thu Sep 19 11:22:41 CEST 2013
+#Thu Sep 19 22:01:50 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions
tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions
@@ -89,7 +89,8 @@
tutti.editBenthosBatch.help=editFishingOperation.html\#captureBenthos
tutti.editBenthosFrequencies.action.cancel.help=editFishingOperation.html\#captureBenthosActions
tutti.editBenthosFrequencies.action.generate.help=editFishingOperation.html\#captureBenthosActions
-tutti.editBenthosFrequencies.action.save.help=editFishingOperation.html\#captureBenthosActions
+tutti.editBenthosFrequencies.action.saveAndContinue.help=editFishingOperation.html\#captureBenthosActions
+tutti.editBenthosFrequencies.action.saveAndClose.help=editFishingOperation.html\#captureBenthosActions
tutti.editBenthosFrequencies.field.lengthStepCaracteristic.help=editFishingOperation.html\#captureBenthosFields
tutti.editBenthosFrequencies.field.maxStep.help=editFishingOperation.html\#captureBenthosFields
tutti.editBenthosFrequencies.field.minStep.help=editFishingOperation.html\#captureBenthosFields
@@ -244,7 +245,8 @@
tutti.editSpeciesBatch.help=editFishingOperation.html\#captureEspeces
tutti.editSpeciesFrequencies.action.cancel.help=editFishingOperation.html\#captureEspecesMensurationActions
tutti.editSpeciesFrequencies.action.generate.help=editFishingOperation.html\#captureEspecesMensurationActions
-tutti.editSpeciesFrequencies.action.save.help=editFishingOperation.html\#captureEspecesMensurationActions
+tutti.editSpeciesFrequencies.action.saveAndClose.help=editFishingOperation.html\#captureEspecesMensurationActions
+tutti.editSpeciesFrequencies.action.saveAndContinue.help=editFishingOperation.html\#captureEspecesMensurationActions
tutti.editSpeciesFrequencies.field.lengthStepCaracteristic.help=editFishingOperation.html\#captureEspecesMensurationFields
tutti.editSpeciesFrequencies.field.maxStep.help=editFishingOperation.html\#captureEspecesMensurationFields
tutti.editSpeciesFrequencies.field.minStep.help=editFishingOperation.html\#captureEspecesMensurationFields
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-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-09-19 21:16:52 UTC (rev 1194)
@@ -289,17 +289,17 @@
);
}
- public void editSpeciesFrequencies(SpeciesBatchRowModel editRow,
- SpeciesFrequencyCellComponent.FrequencyCellEditor editor) {
+ public void editSpeciesFrequencies(SpeciesFrequencyCellComponent.FrequencyCellEditor editor) {
SpeciesFrequencyUI frequencyEditor = ui.getSpeciesTabFrequencyEditor();
- frequencyEditor.getHandler().editBatch(editRow, editor);
+ frequencyEditor.getHandler().editBatch(editor);
// open frequency editor
setSpeciesSelectedCard(EditCatchesUIHandler.EDIT_FREQUENCY_CARD);
// update title
+ SpeciesBatchRowModel editRow = editor.getEditRow();
String title = buildReminderLabelTitle(editRow.getSpecies(),
editRow,
ui.getSpeciesTabFishingOperationReminderLabel().getTitle(),
@@ -362,17 +362,17 @@
}
}
- public void editBenthosFrequencies(BenthosBatchRowModel editRow,
- BenthosFrequencyCellComponent.FrequencyCellEditor editor) {
+ public void editBenthosFrequencies(BenthosFrequencyCellComponent.FrequencyCellEditor editor) {
BenthosFrequencyUI frequencyEditor = ui.getBenthosTabFrequencyEditor();
- frequencyEditor.getHandler().editBatch(editRow, editor);
+ frequencyEditor.getHandler().editBatch(editor);
// open frequency editor
setBenthosSelectedCard(EditCatchesUIHandler.EDIT_FREQUENCY_CARD);
// update title
+ BenthosBatchRowModel editRow = editor.getEditRow();
String title = buildReminderLabelTitle(editRow.getSpecies(),
editRow,
ui.getBenthosTabFishingOperationReminderLabel().getTitle(),
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-09-19 21:16:52 UTC (rev 1194)
@@ -216,4 +216,25 @@
}
return result;
}
+
+ /**
+ * Return the next editable row index for frequency from the given
+ * {@code rowIndex}, or {@code null} if none found.
+ *
+ * @param rowIndex the starting index where to look
+ * @return the next editable row index for frequency from the given {@code rowIndex}, or {@code null} if none found.
+ * @since 2.5
+ */
+ public Integer getNextEditableFrequencyRow(Integer rowIndex) {
+ Integer result = null;
+
+ for (int i = rowIndex, max = getRowCount(); i < max; i++) {
+ BenthosBatchRowModel entry = getEntry(i);
+ if (entry.isBatchLeaf()) {
+ result = i;
+ break;
+ }
+ }
+ return result;
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyCellComponent.java 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyCellComponent.java 2013-09-19 21:16:52 UTC (rev 1194)
@@ -119,6 +119,8 @@
protected Integer rowIndex;
+ protected Integer nextEditableRowIndex;
+
protected Integer columnIndex;
public FrequencyCellEditor(BenthosBatchUI ui, Color computedDataColor) {
@@ -145,22 +147,35 @@
});
}
+ public BenthosBatchRowModel getEditRow() {
+ return editRow;
+ }
+
+ public Integer getNextEditableRowIndex() {
+ return nextEditableRowIndex;
+ }
+
public void startEdit() {
Preconditions.checkNotNull(tableModel, "No table model assigned.");
Preconditions.checkNotNull(editRow, "No editRow found.");
+ // compute the next editable row
+ nextEditableRowIndex =
+ tableModel.getNextEditableFrequencyRow(rowIndex + 1);
+
if (log.isDebugEnabled()) {
- log.debug("Will edit frequencies for row: " + rowIndex);
+ log.debug("Will edit frequencies for row: " + rowIndex +
+ ", nextEditableRow: " + nextEditableRowIndex);
}
EditCatchesUI parent =
SwingUtil.getParentContainer(ui, EditCatchesUI.class);
- parent.getHandler().editBenthosFrequencies(editRow, this);
+ parent.getHandler().editBenthosFrequencies(this);
}
- public void validateEdition(BenthosFrequencyUIModel frequencyModel) {
+ public void save(BenthosFrequencyUIModel frequencyModel, boolean quit) {
if (frequencyModel.isValid()) {
// at close, synch back frequencies
@@ -198,15 +213,31 @@
ui.getHandler().updateTotalFromFrequencies(editRow);
}
- int r = rowIndex;
- int c = columnIndex;
+ if (quit) {
+ int r = rowIndex;
+ int c = columnIndex;
- // stop edition
- stopCellEditing();
+ // stop edition
+ stopCellEditing();
- // reselect this cell
- AbstractSelectTableAction.doSelectCell(table, r, c);
- table.requestFocus();
+ // reselect this cell
+ AbstractSelectTableAction.doSelectCell(table, r, c);
+ table.requestFocus();
+
+ } else {
+
+ // use now the next row data
+ rowIndex = nextEditableRowIndex;
+
+ // load the row
+ editRow = tableModel.getEntry(rowIndex);
+
+ // will save the row in the species row
+ AbstractSelectTableAction.doSelectCell(table, rowIndex, columnIndex);
+
+ // start edit
+ startEdit();
+ }
}
@Override
@@ -252,6 +283,7 @@
public void cancelCellEditing() {
super.cancelCellEditing();
rowIndex = null;
+ nextEditableRowIndex = null;
columnIndex = null;
editRow = null;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.css 2013-09-19 21:16:52 UTC (rev 1194)
@@ -33,7 +33,7 @@
showPopupButton: {handler.getConfig().isShowNumberEditorButton()};
}
-#editSpeciesFrequenciesTopPanel {
+#editBenthosFrequenciesTopPanel {
_help: {"tutti.editBenthosFrequencies.help"};
}
@@ -266,13 +266,22 @@
_help: {"tutti.editBenthosFrequencies.action.cancel.help"};
}
-#saveButton {
+#saveAndContinueButton {
actionIcon: save;
- text: "tutti.editBenthosFrequencies.action.save";
- toolTipText: "tutti.editBenthosFrequencies.action.save.tip";
- i18nMnemonic: "tutti.editBenthosFrequencies.action.save.mnemonic";
+ text: "tutti.editBenthosFrequencies.action.saveAndContinue";
+ toolTipText: "tutti.editBenthosFrequencies.action.saveAndContinue.tip";
+ i18nMnemonic: "tutti.editBenthosFrequencies.action.saveAndContinue.mnemonic";
+ enabled: {model.getNextEditableRowIndex() != null && model.isValid()};
+ _help: {"tutti.editBenthosFrequencies.action.saveAndContinue.help"};
+}
+
+#saveAndCloseButton {
+ actionIcon: save;
+ text: "tutti.editBenthosFrequencies.action.saveAndClose";
+ toolTipText: "tutti.editBenthosFrequencies.action.saveAndClose.tip";
+ i18nMnemonic: "tutti.editBenthosFrequencies.action.saveAndClose.mnemonic";
enabled: {model.isValid()};
- _help: {"tutti.editBenthosFrequencies.action.save.help"};
+ _help: {"tutti.editBenthosFrequencies.action.saveAndClose.help"};
}
#dataInFrequenciesWarningContainer {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.jaxx 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUI.jaxx 2013-09-19 21:16:52 UTC (rev 1194)
@@ -233,7 +233,8 @@
<JPanel id='actionPanel' layout='{new GridLayout(1, 0)}'
constraints='BorderLayout.SOUTH'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
- <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ <JButton id='saveAndContinueButton' onActionPerformed='handler.saveAndContinue()'/>
+ <JButton id='saveAndCloseButton' onActionPerformed='handler.saveAndClose()'/>
</JPanel>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-09-19 21:16:52 UTC (rev 1194)
@@ -476,12 +476,16 @@
getTable().scrollRowToVisible(rowIndex);
}
- public void editBatch(BenthosBatchRowModel speciesBatch, BenthosFrequencyCellComponent.FrequencyCellEditor editor) {
+ public void editBatch(BenthosFrequencyCellComponent.FrequencyCellEditor editor) {
withWeightRows.clear();
+ BenthosBatchRowModel speciesBatch = editor.getEditRow();
+
BenthosFrequencyUIModel model = getModel();
+ model.setNextEditableRowIndex(editor.getNextEditableRowIndex());
model.setTotalNumber(null);
model.setTotalWeight(null);
+ model.setSimpleCount(null);
frequencyEditor = editor;
@@ -598,10 +602,10 @@
model.setBatch(speciesBatch);
}
- public void save() {
+ public void saveAndClose() {
if (log.isDebugEnabled()) {
- log.debug("Save UI " + ui);
+ log.debug("Save And Close UI " + ui);
}
// check that we do not have doublon in length
@@ -634,11 +638,50 @@
return;
}
- frequencyEditor.validateEdition(getModel());
+ frequencyEditor.save(getModel(), true);
closeUI(ui);
}
+ public void saveAndContinue() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Save And Continue UI " + ui);
+ }
+
+ // check that we do not have doublon in length
+ // see http://forge.codelutin.com/issues/2499
+ Set<Float> lengths = Sets.newHashSet();
+
+ Float doublon = null;
+ int index = 0;
+ for (BenthosFrequencyRowModel row : getModel().getRows()) {
+ Float lengthStep = row.getLengthStep();
+ if (!lengths.add(lengthStep)) {
+
+ // already exist
+ doublon = lengthStep;
+ break;
+ }
+ index++;
+ }
+ if (doublon != null) {
+
+ // can't save mensurations (found doublon)
+ String message =
+ _("tutti.editBenthosFrequencies.error.length.doublon",
+ doublon, index + 1);
+ TuttiUIContext.getErrorHelper().showErrorDialog(
+ message);
+
+ // focus to first error row
+ AbstractSelectTableAction.doSelectCell(getTable(), index, 0);
+ return;
+ }
+
+ frequencyEditor.save(getModel(), false);
+ }
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel.java 2013-09-19 21:16:52 UTC (rev 1194)
@@ -71,6 +71,8 @@
public static final String PROPERTY_EMPTY_ROWS = "emptyRows";
+ public static final String PROPERTY_NEXT_EDITABLE_ROW_INDEX = "nextEditableRowIndex";
+
public static enum ConfigurationMode {
SIMPLE,
AUTO_GEN,
@@ -141,6 +143,13 @@
*/
protected Float totalWeight;
+ /**
+ * The index of the next editable row (null if none).
+ *
+ * @since 2.5
+ */
+ protected Integer nextEditableRowIndex;
+
protected Set<BenthosFrequencyRowModel> emptyRows;
protected SampleCategoryModel sampleCategoryModel;
@@ -223,6 +232,16 @@
firePropertyChange(PROPERTY_SIMPLE_COUNT, oldValue, simpleCount);
}
+ public Integer getNextEditableRowIndex() {
+ return nextEditableRowIndex;
+ }
+
+ public void setNextEditableRowIndex(Integer nextEditableRowIndex) {
+ Object oldValue = getNextEditableRowIndex();
+ this.nextEditableRowIndex = nextEditableRowIndex;
+ firePropertyChange(PROPERTY_NEXT_EDITABLE_ROW_INDEX, oldValue, nextEditableRowIndex);
+ }
+
public boolean isSimpleMode() {
return ConfigurationMode.SIMPLE == configurationMode;
}
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-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-09-19 21:16:52 UTC (rev 1194)
@@ -215,4 +215,25 @@
}
return result;
}
+
+ /**
+ * Return the next editable row index for frequency from the given
+ * {@code rowIndex}, or {@code null} if none found.
+ *
+ * @param rowIndex the starting index where to look
+ * @return the next editable row index for frequency from the given {@code rowIndex}, or {@code null} if none found.
+ * @since 2.5
+ */
+ public Integer getNextEditableFrequencyRow(Integer rowIndex) {
+ Integer result = null;
+
+ for (int i = rowIndex, max = getRowCount(); i < max; i++) {
+ SpeciesBatchRowModel entry = getEntry(i);
+ if (entry.isBatchLeaf()) {
+ result = i;
+ break;
+ }
+ }
+ return result;
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java 2013-09-19 21:16:52 UTC (rev 1194)
@@ -119,6 +119,8 @@
protected Integer rowIndex;
+ protected Integer nextEditableRowIndex;
+
protected Integer columnIndex;
public FrequencyCellEditor(SpeciesBatchUI ui, Color computedDataColor) {
@@ -145,22 +147,35 @@
});
}
+ public SpeciesBatchRowModel getEditRow() {
+ return editRow;
+ }
+
+ public Integer getNextEditableRowIndex() {
+ return nextEditableRowIndex;
+ }
+
public void startEdit() {
Preconditions.checkNotNull(tableModel, "No table model assigned.");
Preconditions.checkNotNull(editRow, "No editRow found.");
+ // compute the next editable row
+ nextEditableRowIndex =
+ tableModel.getNextEditableFrequencyRow(rowIndex + 1);
+
if (log.isDebugEnabled()) {
- log.debug("Will edit frequencies for row: " + rowIndex);
+ log.debug("Will edit frequencies for row: " + rowIndex +
+ ", nextEditableRow: " + nextEditableRowIndex);
}
EditCatchesUI parent =
SwingUtil.getParentContainer(ui, EditCatchesUI.class);
- parent.getHandler().editSpeciesFrequencies(editRow, this);
+ parent.getHandler().editSpeciesFrequencies(this);
}
- public void validateEdition(SpeciesFrequencyUIModel frequencyModel) {
+ public void save(SpeciesFrequencyUIModel frequencyModel, boolean quit) {
if (frequencyModel.isValid()) {
// at close, synch back frequencies
@@ -198,15 +213,31 @@
ui.getHandler().updateTotalFromFrequencies(editRow);
}
- int r = rowIndex;
- int c = columnIndex;
+ if (quit) {
+ int r = rowIndex;
+ int c = columnIndex;
- // stop edition
- stopCellEditing();
+ // stop edition
+ stopCellEditing();
- // reselect this cell
- AbstractSelectTableAction.doSelectCell(table, r, c);
- table.requestFocus();
+ // reselect this cell
+ AbstractSelectTableAction.doSelectCell(table, r, c);
+ table.requestFocus();
+
+ } else {
+
+ // use now the next row data
+ rowIndex = nextEditableRowIndex;
+
+ // load the row
+ editRow = tableModel.getEntry(rowIndex);
+
+ // will save the row in the species row
+ AbstractSelectTableAction.doSelectCell(table, rowIndex, columnIndex);
+
+ // start edit
+ startEdit();
+ }
}
@Override
@@ -252,6 +283,7 @@
public void cancelCellEditing() {
super.cancelCellEditing();
rowIndex = null;
+ nextEditableRowIndex = null;
columnIndex = null;
editRow = null;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.css 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.css 2013-09-19 21:16:52 UTC (rev 1194)
@@ -266,13 +266,22 @@
_help: {"tutti.editSpeciesFrequencies.action.cancel.help"};
}
-#saveButton {
+#saveAndContinueButton {
actionIcon: save;
- text: "tutti.editSpeciesFrequencies.action.save";
- toolTipText: "tutti.editSpeciesFrequencies.action.save.tip";
- i18nMnemonic: "tutti.editSpeciesFrequencies.action.save.mnemonic";
+ text: "tutti.editSpeciesFrequencies.action.saveAndContinue";
+ toolTipText: "tutti.editSpeciesFrequencies.action.saveAndContinue.tip";
+ i18nMnemonic: "tutti.editSpeciesFrequencies.action.saveAndContinue.mnemonic";
+ enabled: {model.getNextEditableRowIndex() != null && model.isValid()};
+ _help: {"tutti.editSpeciesFrequencies.action.saveAndContinue.help"};
+}
+
+#saveAndCloseButton {
+ actionIcon: save;
+ text: "tutti.editSpeciesFrequencies.action.saveAndClose";
+ toolTipText: "tutti.editSpeciesFrequencies.action.saveAndClose.tip";
+ i18nMnemonic: "tutti.editSpeciesFrequencies.action.saveAndClose.mnemonic";
enabled: {model.isValid()};
- _help: {"tutti.editSpeciesFrequencies.action.save.help"};
+ _help: {"tutti.editSpeciesFrequencies.action.saveAndClose.help"};
}
#dataInFrequenciesWarningContainer {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx 2013-09-19 21:16:52 UTC (rev 1194)
@@ -233,7 +233,8 @@
<JPanel id='actionPanel' layout='{new GridLayout(1, 0)}'
constraints='BorderLayout.SOUTH'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
- <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ <JButton id='saveAndContinueButton' onActionPerformed='handler.saveAndContinue()'/>
+ <JButton id='saveAndCloseButton' onActionPerformed='handler.saveAndClose()'/>
</JPanel>
</JPanel>
\ No newline at end of file
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-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-09-19 21:16:52 UTC (rev 1194)
@@ -474,12 +474,16 @@
getTable().scrollRowToVisible(rowIndex);
}
- public void editBatch(SpeciesBatchRowModel speciesBatch, FrequencyCellEditor editor) {
+ public void editBatch(FrequencyCellEditor editor) {
withWeightRows.clear();
+ SpeciesBatchRowModel speciesBatch = editor.getEditRow();
+
SpeciesFrequencyUIModel model = getModel();
+ model.setNextEditableRowIndex(editor.getNextEditableRowIndex());
model.setTotalNumber(null);
model.setTotalWeight(null);
+ model.setSimpleCount(null);
frequencyEditor = editor;
@@ -597,10 +601,10 @@
model.setBatch(speciesBatch);
}
- public void save() {
+ public void saveAndClose() {
if (log.isDebugEnabled()) {
- log.debug("Save UI " + ui);
+ log.debug("Save And Close UI " + ui);
}
// check that we do not have doublon in length
@@ -633,11 +637,50 @@
return;
}
- frequencyEditor.validateEdition(getModel());
+ frequencyEditor.save(getModel(), true);
closeUI(ui);
}
+ public void saveAndContinue() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Save And Continue UI " + ui);
+ }
+
+ // check that we do not have doublon in length
+ // see http://forge.codelutin.com/issues/2499
+ Set<Float> lengths = Sets.newHashSet();
+
+ Float doublon = null;
+ int index = 0;
+ for (SpeciesFrequencyRowModel row : getModel().getRows()) {
+ Float lengthStep = row.getLengthStep();
+ if (!lengths.add(lengthStep)) {
+
+ // already exist
+ doublon = lengthStep;
+ break;
+ }
+ index++;
+ }
+ if (doublon != null) {
+
+ // can't save mensurations (found doublon)
+ String message =
+ _("tutti.editSpeciesFrequencies.error.length.doublon",
+ doublon, index + 1);
+ TuttiUIContext.getErrorHelper().showErrorDialog(
+ message);
+
+ // focus to first error row
+ AbstractSelectTableAction.doSelectCell(getTable(), index, 0);
+ return;
+ }
+
+ frequencyEditor.save(getModel(), false);
+ }
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java 2013-09-19 21:16:52 UTC (rev 1194)
@@ -71,6 +71,8 @@
public static final String PROPERTY_EMPTY_ROWS = "emptyRows";
+ public static final String PROPERTY_NEXT_EDITABLE_ROW_INDEX = "nextEditableRowIndex";
+
public static enum ConfigurationMode {
SIMPLE,
AUTO_GEN,
@@ -141,6 +143,13 @@
*/
protected Integer simpleCount;
+ /**
+ * The index of the next editable row (null if none).
+ *
+ * @since 2.5
+ */
+ protected Integer nextEditableRowIndex;
+
protected Set<SpeciesFrequencyRowModel> emptyRows;
protected SampleCategoryModel sampleCategoryModel;
@@ -223,6 +232,16 @@
firePropertyChange(PROPERTY_SIMPLE_COUNT, oldValue, simpleCount);
}
+ public Integer getNextEditableRowIndex() {
+ return nextEditableRowIndex;
+ }
+
+ public void setNextEditableRowIndex(Integer nextEditableRowIndex) {
+ Object oldValue = getNextEditableRowIndex();
+ this.nextEditableRowIndex = nextEditableRowIndex;
+ firePropertyChange(PROPERTY_NEXT_EDITABLE_ROW_INDEX, oldValue, nextEditableRowIndex);
+ }
+
public boolean isSimpleMode() {
return ConfigurationMode.SIMPLE == configurationMode;
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-19 21:16:52 UTC (rev 1194)
@@ -453,6 +453,12 @@
tutti.editBenthosFrequencies.action.save=
tutti.editBenthosFrequencies.action.save.mnemonic=
tutti.editBenthosFrequencies.action.save.tip=
+tutti.editBenthosFrequencies.action.saveAndClose=
+tutti.editBenthosFrequencies.action.saveAndClose.mnemonic=
+tutti.editBenthosFrequencies.action.saveAndClose.tip=
+tutti.editBenthosFrequencies.action.saveAndContinue=
+tutti.editBenthosFrequencies.action.saveAndContinue.mnemonic=
+tutti.editBenthosFrequencies.action.saveAndContinue.tip=
tutti.editBenthosFrequencies.batchCategory=
tutti.editBenthosFrequencies.batchSpecies=
tutti.editBenthosFrequencies.error.length.doublon=
@@ -977,6 +983,12 @@
tutti.editSpeciesFrequencies.action.save=
tutti.editSpeciesFrequencies.action.save.mnemonic=
tutti.editSpeciesFrequencies.action.save.tip=
+tutti.editSpeciesFrequencies.action.saveAndClose=
+tutti.editSpeciesFrequencies.action.saveAndClose.mnemonic=
+tutti.editSpeciesFrequencies.action.saveAndClose.tip=
+tutti.editSpeciesFrequencies.action.saveAndContinue=
+tutti.editSpeciesFrequencies.action.saveAndContinue.mnemonic=
+tutti.editSpeciesFrequencies.action.saveAndContinue.tip=
tutti.editSpeciesFrequencies.batchCategory=
tutti.editSpeciesFrequencies.batchSpecies=
tutti.editSpeciesFrequencies.error.length.doublon=
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-09-19 14:31:48 UTC (rev 1193)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-09-19 21:16:52 UTC (rev 1194)
@@ -428,9 +428,12 @@
tutti.editBenthosFrequencies.action.generate=Générer
tutti.editBenthosFrequencies.action.generate.mnemonic=G
tutti.editBenthosFrequencies.action.generate.tip=Générer les mensurations
-tutti.editBenthosFrequencies.action.save=Enregistrer
-tutti.editBenthosFrequencies.action.save.mnemonic=E
-tutti.editBenthosFrequencies.action.save.tip=Enregistrer les mensurations
+tutti.editBenthosFrequencies.action.saveAndClose=Enregistrer et Fermer
+tutti.editBenthosFrequencies.action.saveAndClose.mnemonic=F
+tutti.editBenthosFrequencies.action.saveAndClose.tip=Enregistrer les mensurations
+tutti.editBenthosFrequencies.action.saveAndContinue=Enregistrer et Continuer
+tutti.editBenthosFrequencies.action.saveAndContinue.mnemonic=E
+tutti.editBenthosFrequencies.action.saveAndContinue.tip=Enregistrer les mensurations et saisir les mensurations pour le lot suivant
tutti.editBenthosFrequencies.error.length.doublon=La classe de taille <strong>%s</strong> est utilisée plusieurs fois (deuxième occurrence trouvée à la ligne <strong>%s</strong>), ce qui n'est pas autorisé.<hr/>Veuillez corriger cela pour pouvoir enregistrer les mensurations.
tutti.editBenthosFrequencies.field.lengthStepCaracteristic=Type de mesure
tutti.editBenthosFrequencies.field.lengthStepCaracteristic.tip=Méthode de mensuration des individus
@@ -947,9 +950,12 @@
tutti.editSpeciesFrequencies.action.generate=Générer
tutti.editSpeciesFrequencies.action.generate.mnemonic=G
tutti.editSpeciesFrequencies.action.generate.tip=Générer les mensurations
-tutti.editSpeciesFrequencies.action.save=Enregistrer
-tutti.editSpeciesFrequencies.action.save.mnemonic=E
-tutti.editSpeciesFrequencies.action.save.tip=Enregistrer les mensurations
+tutti.editSpeciesFrequencies.action.saveAndClose=Enregistrer et Fermer
+tutti.editSpeciesFrequencies.action.saveAndClose.mnemonic=F
+tutti.editSpeciesFrequencies.action.saveAndClose.tip=Enregistrer les mensurations
+tutti.editSpeciesFrequencies.action.saveAndContinue=Enregistrer et Continuer
+tutti.editSpeciesFrequencies.action.saveAndContinue.mnemonic=E
+tutti.editSpeciesFrequencies.action.saveAndContinue.tip=Enregistrer les mensurations et saisir les mensurations pour le lot suivant
tutti.editSpeciesFrequencies.error.length.doublon=La classe de taille <strong>%s</strong> est utilisée plusieurs fois (deuxième occurrence trouvée à la ligne <strong>%s</strong>), ce qui n'est pas autorisé.<hr/>Veuillez corriger cela pour pouvoir enregistrer les mensurations.
tutti.editSpeciesFrequencies.field.lengthStepCaracteristic=Type de mesure
tutti.editSpeciesFrequencies.field.lengthStepCaracteristic.tip=Méthode de mensuration des individus
1
0
See <http://ci.nuiton.org/jenkins/job/tutti/985/changes>
Changes:
[Tony Chemit] fixes #3280: [CAPTURE] à la création d'un lot, scanner le protocole et proposer la catégorisation du protocole
------------------------------------------
[...truncated 311 lines...]
2013-09-19 16:16:00,843 1600 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.service.catches.TuttiWeightComputingServiceTest
2013-09-19 16:16:00,857 1614 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@6df55f1d
2013-09-19 16:16:00,858 1615 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@4dc834d6
2013-09-19 16:16:00,858 1615 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@12bba415
2013-09-19 16:16:00,859 1616 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@74178802
2013-09-19 16:16:00,860 1617 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@1ff50057
2013-09-19 16:16:00,876 1633 [main] INFO org.nuiton.config.ApplicationConfig - Loading configuration file (classpath) : <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/test-c…>
2013-09-19 16:16:00,878 1635 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/src/test/dbCG…,> test [class fr.ifremer.tutti.service.catches.TuttiWeightComputingServiceTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.042 sec - in fr.ifremer.tutti.service.catches.TuttiWeightComputingServiceTest
Running fr.ifremer.tutti.service.catches.multipost.TuttiMultiPostExportServiceTest
2013-09-19 16:16:00,883 1640 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.service.catches.multipost.TuttiMultiPostExportServiceTest
2013-09-19 16:16:00,889 1646 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@65c530da
2013-09-19 16:16:00,889 1646 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@39b4cec7
2013-09-19 16:16:00,889 1646 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@d73886a
2013-09-19 16:16:00,889 1646 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@1c00ee0c
2013-09-19 16:16:00,890 1647 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@1c76b9da
2013-09-19 16:16:00,890 1647 [main] INFO org.nuiton.config.ApplicationConfig - Loading configuration file (classpath) : <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/test-c…>
2013-09-19 16:16:00,891 1648 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/src/test/dbCG…,> test [class fr.ifremer.tutti.service.catches.multipost.TuttiMultiPostExportServiceTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.012 sec - in fr.ifremer.tutti.service.catches.multipost.TuttiMultiPostExportServiceTest
Running fr.ifremer.tutti.service.UpdateSchemaTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.service.UpdateSchemaTest
Running fr.ifremer.tutti.service.sumatra.TuttiCatchesSumatraExportServiceTest
2013-09-19 16:16:00,892 1649 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.service.sumatra.TuttiCatchesSumatraExportServiceTest
2013-09-19 16:16:00,898 1655 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@1ac7352a
2013-09-19 16:16:00,898 1655 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@5fd61d70
2013-09-19 16:16:00,898 1655 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@6226d537
2013-09-19 16:16:00,898 1655 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@63784038
2013-09-19 16:16:00,899 1656 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@4f44fbe0
2013-09-19 16:16:00,900 1657 [main] INFO org.nuiton.config.ApplicationConfig - Loading configuration file (classpath) : <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/test-c…>
2013-09-19 16:16:00,900 1657 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/src/test/dbEx…,> test [class fr.ifremer.tutti.service.sumatra.TuttiCatchesSumatraExportServiceTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.005 sec - in fr.ifremer.tutti.service.sumatra.TuttiCatchesSumatraExportServiceTest
Running fr.ifremer.tutti.service.pupitri.TuttiPupitriImportExportServiceTest
2013-09-19 16:16:00,901 1658 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.service.pupitri.TuttiPupitriImportExportServiceTest
2013-09-19 16:16:00,906 1663 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@577feece
2013-09-19 16:16:00,907 1664 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@574356c8
2013-09-19 16:16:00,907 1664 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@5f6913a
2013-09-19 16:16:00,907 1664 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@7eb879e4
2013-09-19 16:16:00,907 1664 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@5e00b48c
2013-09-19 16:16:00,908 1665 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write-dbExport.properties
2013-09-19 16:16:00,908 1665 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at src/test/dbExport, test [class fr.ifremer.tutti.service.pupitri.TuttiPupitriImportExportServiceTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.007 sec - in fr.ifremer.tutti.service.pupitri.TuttiPupitriImportExportServiceTest
Running fr.ifremer.tutti.service.ValidationServiceTest
2013-09-19 16:16:00,947 1704 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@1aa58969
2013-09-19 16:16:00,948 1705 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@7cd569b5
2013-09-19 16:16:00,948 1705 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@1f0f2a1a
2013-09-19 16:16:00,948 1705 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@1c9520e4
2013-09-19 16:16:00,948 1705 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@516edbd
2013-09-19 16:16:00,952 1709 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - New service fr.ifremer.tutti.service.ValidationService@4a9b4a2
2013-09-19 16:16:00,956 1713 [main] INFO org.nuiton.validator.NuitonValidatorFactory - Set the default provider name to xwork2
2013-09-19 16:16:01,196 1953 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.ValidationService@4a9b4a2
2013-09-19 16:16:01,203 1960 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@411d84f0
2013-09-19 16:16:01,203 1960 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@401a8346
2013-09-19 16:16:01,203 1960 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@ca0898b
2013-09-19 16:16:01,203 1960 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@7fa60b26
2013-09-19 16:16:01,204 1961 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@5bdaaf56
2013-09-19 16:16:01,204 1961 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - New service fr.ifremer.tutti.service.ValidationService@722d6636
2013-09-19 16:16:01,309 2066 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.ValidationService@722d6636
2013-09-19 16:16:01,311 2068 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@5fe0095c
2013-09-19 16:16:01,311 2068 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@446759c6
2013-09-19 16:16:01,312 2069 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@5d36f93f
2013-09-19 16:16:01,312 2069 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@4425c6e8
2013-09-19 16:16:01,312 2069 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@8ff99df
2013-09-19 16:16:01,312 2069 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - New service fr.ifremer.tutti.service.ValidationService@44cf0416
2013-09-19 16:16:01,510 2267 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.ValidationService@44cf0416
Tests run: 4, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.601 sec - in fr.ifremer.tutti.service.ValidationServiceTest
Running fr.ifremer.tutti.service.DecoratorServiceTest
2013-09-19 16:16:01,513 2270 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@f2f65c1
2013-09-19 16:16:01,514 2271 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@5ffb432e
2013-09-19 16:16:01,514 2271 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@68f7b23c
2013-09-19 16:16:01,514 2271 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@5dd6b6fa
2013-09-19 16:16:01,514 2271 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@218ec2d7
2013-09-19 16:16:01,515 2272 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - New service fr.ifremer.tutti.service.DecoratorService@5c0a664
2013-09-19 16:16:01,546 2303 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.DecoratorService@5c0a664
2013-09-19 16:16:01,549 2306 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@143f032d
2013-09-19 16:16:01,549 2306 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@34033cf4
2013-09-19 16:16:01,549 2306 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@4096d1d9
2013-09-19 16:16:01,549 2306 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@6dab1eaf
2013-09-19 16:16:01,549 2306 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@50a14c18
2013-09-19 16:16:01,549 2306 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - New service fr.ifremer.tutti.service.DecoratorService@d8ae503
2013-09-19 16:16:01,556 2313 [main] WARN org.nuiton.i18n.I18n -
I18n was not initialized! will init it with default initializer and default locale, it might not translate anything for you...
Please use the method I18n.init(I18nInitializer, Locale) before any calling to a translation...
2013-09-19 16:16:01,642 2399 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@496e0966, bundlePrefix:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-validator/3.0-alpha-1/nuiton-validator-3.0-alpha-1.jar!/i18n/nuiton-validator, size:1>
<I18nBundleEntry@68854108, locale:en_GB, scope FULL, path:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-validator/3.0-alpha-1/nuiton-validator-3.0-alpha-1.jar!/i18n/nuiton-validator_en_GB.properties>
2013-09-19 16:16:01,642 2399 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@496e0966, bundlePrefix:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-validator/3.0-alpha-1/nuiton-validator-3.0-alpha-1.jar!/i18n/nuiton-validator, size:2>
<I18nBundleEntry@cf94429a, locale:es_ES, scope FULL, path:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-validator/3.0-alpha-1/nuiton-validator-3.0-alpha-1.jar!/i18n/nuiton-validator_es_ES.properties>
2013-09-19 16:16:01,642 2399 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@496e0966, bundlePrefix:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-validator/3.0-alpha-1/nuiton-validator-3.0-alpha-1.jar!/i18n/nuiton-validator, size:3>
<I18nBundleEntry@3e1c175a, locale:fr_FR, scope FULL, path:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-validator/3.0-alpha-1/nuiton-validator-3.0-alpha-1.jar!/i18n/nuiton-validator_fr_FR.properties>
2013-09-19 16:16:01,642 2399 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@572b2d33, bundlePrefix:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-csv/3.0-alpha-1/nuiton-csv-3.0-alpha-1.jar!/i18n/nuiton-csv, size:1>
<I18nBundleEntry@309c94a6, locale:es_ES, scope FULL, path:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-csv/3.0-alpha-1/nuiton-csv-3.0-alpha-1.jar!/i18n/nuiton-csv_es_ES.properties>
2013-09-19 16:16:01,642 2399 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@572b2d33, bundlePrefix:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-csv/3.0-alpha-1/nuiton-csv-3.0-alpha-1.jar!/i18n/nuiton-csv, size:2>
<I18nBundleEntry@c98d9314, locale:en_GB, scope FULL, path:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-csv/3.0-alpha-1/nuiton-csv-3.0-alpha-1.jar!/i18n/nuiton-csv_en_GB.properties>
2013-09-19 16:16:01,642 2399 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@572b2d33, bundlePrefix:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-csv/3.0-alpha-1/nuiton-csv-3.0-alpha-1.jar!/i18n/nuiton-csv, size:3>
<I18nBundleEntry@9f246966, locale:fr_FR, scope FULL, path:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-csv/3.0-alpha-1/nuiton-csv-3.0-alpha-1.jar!/i18n/nuiton-csv_fr_FR.properties>
2013-09-19 16:16:01,642 2399 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@53a49bfa, bundlePrefix:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-utils/2.7.1/nuiton-utils-2.7.1.jar!/i18n/nuiton-utils, size:1>
<I18nBundleEntry@3db946bb, locale:es_ES, scope FULL, path:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-utils/2.7.1/nuiton-utils-2.7.1.jar!/i18n/nuiton-utils_es_ES.properties>
2013-09-19 16:16:01,643 2400 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@53a49bfa, bundlePrefix:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-utils/2.7.1/nuiton-utils-2.7.1.jar!/i18n/nuiton-utils, size:2>
<I18nBundleEntry@ac411b7b, locale:fr_FR, scope FULL, path:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-utils/2.7.1/nuiton-utils-2.7.1.jar!/i18n/nuiton-utils_fr_FR.properties>
2013-09-19 16:16:01,643 2400 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@53a49bfa, bundlePrefix:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-utils/2.7.1/nuiton-utils-2.7.1.jar!/i18n/nuiton-utils, size:3>
<I18nBundleEntry@d6aa4529, locale:en_GB, scope FULL, path:jar:file:/var/local/maven/data/repository/org/nuiton/nuiton-utils/2.7.1/nuiton-utils-2.7.1.jar!/i18n/nuiton-utils_en_GB.properties>
2013-09-19 16:16:01,643 2400 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@5bfc64fc, bundlePrefix:jar:<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-persistence/target/tu…,> size:1>
<I18nBundleEntry@d06c7619, locale:en_GB, scope FULL, path:jar:<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-persistence/target/tu…>>
2013-09-19 16:16:01,643 2400 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@5bfc64fc, bundlePrefix:jar:<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-persistence/target/tu…,> size:2>
<I18nBundleEntry@a6034c6b, locale:fr_FR, scope FULL, path:jar:<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-persistence/target/tu…>>
2013-09-19 16:16:01,643 2400 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@174a0b92, bundlePrefix:<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/classe…,> size:1>
<I18nBundleEntry@56537c39, locale:fr_FR, scope FULL, path:<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/classe…>>
2013-09-19 16:16:01,643 2400 [main] INFO org.nuiton.i18n.bundle.I18nBundle - <I18nBundle@174a0b92, bundlePrefix:<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/classe…,> size:2>
<I18nBundleEntry@80bca5e7, locale:en_GB, scope FULL, path:<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/classe…>>
2013-09-19 16:16:01,643 2400 [main] INFO org.nuiton.i18n.init.I18nInitializer - 5 bundle(s) found, in 13 file(s).
2013-09-19 16:16:01,644 2401 [main] INFO org.nuiton.i18n.I18nStore - 5 bundle(s) found, [13 file(s)].
2013-09-19 16:16:01,645 2402 [main] INFO org.nuiton.i18n.I18nLanguage - Encoding UTF-8 will be used to load files
2013-09-19 16:16:01,655 2412 [main] INFO org.nuiton.i18n.I18nStore - I18nLanguage <locale: en_GB, nbStences:332>, nbEntries: 5, nbSentences: 332.
2013-09-19 16:16:01,656 2413 [main] INFO fr.ifremer.tutti.service.TuttiServiceContext - Close service fr.ifremer.tutti.service.DecoratorService@d8ae503
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.145 sec - in fr.ifremer.tutti.service.DecoratorServiceTest
Running fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportServiceTest
2013-09-19 16:16:01,658 2415 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportServiceTest
2013-09-19 16:16:01,661 2418 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@666c5994
2013-09-19 16:16:01,661 2418 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@74379ada
2013-09-19 16:16:01,661 2418 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@6e9799d1
2013-09-19 16:16:01,661 2418 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@22f3a110
2013-09-19 16:16:01,661 2418 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@d9326df
2013-09-19 16:16:01,661 2418 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write-dbCGFS.properties
2013-09-19 16:16:01,662 2419 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at src/test/dbCGFS, test [class fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportServiceTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.005 sec - in fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportServiceTest
Running fr.ifremer.tutti.service.referential.TuttiReferentialImportExportServiceTest
2013-09-19 16:16:01,664 2421 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.service.referential.TuttiReferentialImportExportServiceTest
2013-09-19 16:16:01,666 2423 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@48027886
2013-09-19 16:16:01,666 2423 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@514560c0
2013-09-19 16:16:01,666 2423 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@21d306ef
2013-09-19 16:16:01,666 2423 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@256c4642
2013-09-19 16:16:01,667 2424 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@d70cdf9
2013-09-19 16:16:01,667 2424 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - No configuration file found in classpath at tutti-test-write-dbCGFS.properties
2013-09-19 16:16:01,667 2424 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at src/test/dbCGFS, test [class fr.ifremer.tutti.service.referential.TuttiReferentialImportExportServiceTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.004 sec - in fr.ifremer.tutti.service.referential.TuttiReferentialImportExportServiceTest
Running fr.ifremer.tutti.service.export.TuttiExportServiceTest
2013-09-19 16:16:01,671 2428 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.service.export.TuttiExportServiceTest
2013-09-19 16:16:01,673 2430 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@1a8dba6b
2013-09-19 16:16:01,674 2431 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@31f04eff
2013-09-19 16:16:01,674 2431 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@17d260f6
2013-09-19 16:16:01,674 2431 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@74dbc2b1
2013-09-19 16:16:01,674 2431 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@19ea760c
2013-09-19 16:16:01,674 2431 [main] INFO org.nuiton.config.ApplicationConfig - Loading configuration file (classpath) : <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/test-c…>
2013-09-19 16:16:01,675 2432 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/src/test/dbCG…,> test [class fr.ifremer.tutti.service.export.TuttiExportServiceTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.005 sec - in fr.ifremer.tutti.service.export.TuttiExportServiceTest
Running fr.ifremer.tutti.service.export.TuttiExportService2Test
2013-09-19 16:16:01,675 2432 [main] INFO fr.ifremer.tutti.persistence.test.DatabaseResource - Prepare test class fr.ifremer.tutti.service.export.TuttiExportService2Test
2013-09-19 16:16:01,678 2435 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter fr.ifremer.tutti.persistence.config.SampleCategoryModelConverter@1a71e7c
2013-09-19 16:16:01,678 2435 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URLConverter@7b07dd21
2013-09-19 16:16:01,678 2435 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.URIConverter@4146e0a1
2013-09-19 16:16:01,678 2435 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.VersionConverter@14458b82
2013-09-19 16:16:01,678 2435 [main] INFO org.nuiton.util.converter.ConverterUtil - register converter org.nuiton.util.converter.LocaleConverter@71edd8a0
2013-09-19 16:16:01,679 2436 [main] INFO org.nuiton.config.ApplicationConfig - Loading configuration file (classpath) : <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/test-c…>
2013-09-19 16:16:01,679 2436 [main] WARN fr.ifremer.tutti.persistence.test.DatabaseResource - Could not find db at <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/src/test/dbEx…,> test [class fr.ifremer.tutti.service.export.TuttiExportService2Test] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec - in fr.ifremer.tutti.service.export.TuttiExportService2Test
Results :
Tests run: 19, Failures: 0, Errors: 0, Skipped: 10
[JENKINS] Recording test results
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ tutti-service ---
[INFO] Building jar: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/tutti-…>
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ tutti-service ---
[INFO]
[INFO] --- maven-install-plugin:2.5:install (default-install) @ tutti-service ---
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/tutti-…> to /var/local/maven/data/repository/fr/ifremer/tutti/tutti-service/2.5-SNAPSHOT/tutti-service-2.5-SNAPSHOT.jar
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/pom.xml> to /var/local/maven/data/repository/fr/ifremer/tutti/tutti-service/2.5-SNAPSHOT/tutti-service-2.5-SNAPSHOT.pom
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: UI 2.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-ui-swing ---
[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-ui-swing/target>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ tutti-ui-swing ---
[INFO]
[INFO] --- jaxx-maven-plugin:2.5.25:generate (default) @ tutti-ui-swing ---
[INFO] use project compile scope class-path
[INFO] Detects 41 modified jaxx file(s).
[ERROR] JAXX detects 2 errors :
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-ui-swing/src/main/jav…>:1
: class jaxx.runtime.swing.editor.bean.BeanFilterableComboBox does not support attribute 'sortable'
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-ui-swing/src/main/jav…>:1
: class jaxx.runtime.swing.editor.bean.BeanFilterableComboBox does not support attribute 'sortable'
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Tutti ............................................. SUCCESS [2.154s]
[INFO] Tutti :: Persistence .............................. SUCCESS [8.036s]
[INFO] Tutti :: Service .................................. SUCCESS [4.551s]
[INFO] Tutti :: UI ....................................... FAILURE [9.235s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 24.591s
[INFO] Finished at: Thu Sep 19 16:16:11 CEST 2013
[INFO] Final Memory: 55M/247M
[INFO] ------------------------------------------------------------------------
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-service/builds/2013-09-19_16-15-44/archive/fr.ifremer.tutti/tutti-service/2.5-SNAPSHOT/tutti-service-2.5-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-service/target/tutti-…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-service/builds/2013-09-19_16-15-44/archive/fr.ifremer.tutti/tutti-service/2.5-SNAPSHOT/tutti-service-2.5-SNAPSHOT.jar
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-ui-swing/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-ui-swing/builds/2013-09-19_16-15-44/archive/fr.ifremer.tutti/tutti-ui-swing/2.5-SNAPSHOT/tutti-ui-swing-2.5-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-09-19_16-15-44/archive/fr.ifremer/tutti/2.5-SNAPSHOT/tutti-2.5-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/target/tutti-2.5-SNAPSHOT-s…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-09-19_16-15-44/archive/fr.ifremer/tutti/2.5-SNAPSHOT/tutti-2.5-SNAPSHOT-site_fr.xml
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-persistence/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-09-19_16-15-44/archive/fr.ifremer.tutti/tutti-persistence/2.5-SNAPSHOT/tutti-persistence-2.5-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk/tutti-persistence/target/tu…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-09-19_16-15-44/archive/fr.ifremer.tutti/tutti-persistence/2.5-SNAPSHOT/tutti-persistence-2.5-SNAPSHOT.jar
Waiting for Jenkins to finish collecting data
mavenExecutionResult exceptions not empty
message : Failed to execute goal org.nuiton.jaxx:jaxx-maven-plugin:2.5.25:generate (default) on project tutti-ui-swing: Aborting due to errors reported by jaxxc
cause : Aborting due to errors reported by jaxxc
Stack trace :
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.nuiton.jaxx:jaxx-maven-plugin:2.5.25:generate (default) on project tutti-ui-swing: Aborting due to errors reported by jaxxc
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:174)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:100)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:66)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: org.apache.maven.plugin.MojoExecutionException: Aborting due to errors reported by jaxxc
at org.nuiton.jaxx.plugin.GenerateMojo.doAction(GenerateMojo.java:517)
at org.nuiton.plugin.AbstractPlugin.execute(AbstractPlugin.java:132)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 26 more
Sending e-mails to: tutti-commits(a)list.forge.codelutin.com chemit(a)codelutin.com
channel stopped
1
2
19 Sep '13
See <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/985/…>
Changes:
[Tony Chemit] fixes #3280: [CAPTURE] à la création d'un lot, scanner le protocole et proposer la catégorisation du protocole
------------------------------------------
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: UI 2.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-ui-swing ---
[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/t…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ tutti-ui-swing ---
[INFO]
[INFO] --- jaxx-maven-plugin:2.5.25:generate (default) @ tutti-ui-swing ---
[INFO] use project compile scope class-path
[INFO] Detects 41 modified jaxx file(s).
[ERROR] JAXX detects 2 errors :
<http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…>:1
: class jaxx.runtime.swing.editor.bean.BeanFilterableComboBox does not support attribute 'sortable'
<http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-ui-swing/ws/s…>:1
: class jaxx.runtime.swing.editor.bean.BeanFilterableComboBox does not support attribute 'sortable'
1
2
Author: tchemit
Date: 2013-09-19 16:31:48 +0200 (Thu, 19 Sep 2013)
New Revision: 1193
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1193
Log:
refs #3293: Updates jaxx to 2.5.26
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-09-19 14:09:05 UTC (rev 1192)
+++ trunk/pom.xml 2013-09-19 14:31:48 UTC (rev 1193)
@@ -131,7 +131,7 @@
<eugenePluginVersion>2.7</eugenePluginVersion>
<hibernateVersion>3.6.10.Final</hibernateVersion>
- <jaxxVersion>2.5.25</jaxxVersion>
+ <jaxxVersion>2.5.26-SNAPSHOT</jaxxVersion>
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.15.1</xworkVersion>
1
0
19 Sep '13
Author: tchemit
Date: 2013-09-19 16:09:05 +0200 (Thu, 19 Sep 2013)
New Revision: 1192
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1192
Log:
fixes #3280: [CAPTURE] ?\195?\160 la cr?\195?\169ation d'un lot, scanner le protocole et proposer la cat?\195?\169gorisation du protocole
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css 2013-09-19 14:09:05 UTC (rev 1192)
@@ -105,7 +105,12 @@
}
#categoryComboBox {
+ property: selectedCategory;
+ sortable: false;
+ showDecorator: false;
+ showReset: false;
selectedItem: {model.getSelectedCategory()};
+ data: {model.getCategory()};
}
#sampleWeightLabel {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx 2013-09-19 14:09:05 UTC (rev 1192)
@@ -144,8 +144,9 @@
<JLabel id='categoryLabel'/>
</cell>
<cell weightx='1.0'>
- <JComboBox id='categoryComboBox'
- onActionPerformed="model.setSelectedCategory((SampleCategoryModelEntry) categoryComboBox.getSelectedItem());"/>
+ <BeanFilterableComboBox id='categoryComboBox'
+ constructorParams='this'
+ genericType='SampleCategoryModelEntry'/>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-09-19 14:09:05 UTC (rev 1192)
@@ -43,7 +43,6 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUIModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchTableModel;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.species.create.CreateSpeciesBatchUIModel;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
@@ -57,7 +56,6 @@
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
-import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
@@ -80,17 +78,17 @@
private final CaracteristicQualitativeValue sortedValue;
- protected boolean categoryIsAdjusting;
+ private SampleCategoryModel sampleCategoryModel;
public CreateBenthosBatchUIHandler(TuttiUI parentUi,
CreateBenthosBatchUI ui) {
super(parentUi.getHandler().getContext(), ui,
+ SplitBenthosBatchRowModel.PROPERTY_SELECTED,
SplitBenthosBatchRowModel.PROPERTY_CATEGORY_VALUE,
SplitBenthosBatchRowModel.PROPERTY_WEIGHT);
this.persistenceService = context.getPersistenceService();
- SampleCategoryModel sampleCategoryModel =
- getDataContext().getSampleCategoryModel();
+ this.sampleCategoryModel = getDataContext().getSampleCategoryModel();
SampleCategoryModelEntry caracteristic = sampleCategoryModel.getCategoryById(sampleCategoryModel.getFirstCategoryId());
@@ -124,7 +122,7 @@
@Override
protected boolean isRowValid(SplitBenthosBatchRowModel row) {
- return row.isValid();
+ return row.isSelected();
}
@Override
@@ -143,19 +141,33 @@
}
@Override
+ protected void onAfterSelectedRowChanged(int oldRowIndex,
+ SplitBenthosBatchRowModel oldRow,
+ int newRowIndex,
+ SplitBenthosBatchRowModel newRow) {
+ super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
+ if (newRow != null) {
+
+ // Recompute the valid state of the row
+ recomputeRowValidState(newRow);
+
+ // Need to recompute the sample weight
+ computeSampleWeight();
+ }
+ }
+
+ @Override
protected void onRowModified(int rowIndex,
SplitBenthosBatchRowModel row,
String propertyName,
Object oldValue,
Object newValue) {
+ // Recompute the valid state of the row
recomputeRowValidState(row);
- if (SplitBenthosBatchRowModel.PROPERTY_WEIGHT.equals(propertyName)) {
-
- // Need to recompute the sample weight
- computeSampleWeight(row);
- }
+ // Need to recompute the sample weight
+ computeSampleWeight();
}
//------------------------------------------------------------------------//
@@ -165,8 +177,6 @@
@Override
public void beforeInitUI() {
- SampleCategoryModel sampleCategoryModel =
- getDataContext().getSampleCategoryModel();
CreateBenthosBatchUIModel model =
new CreateBenthosBatchUIModel(sampleCategoryModel);
ui.setContextValue(model);
@@ -183,6 +193,18 @@
null,
DecoratorService.FROM_PROTOCOL);
+ List<SampleCategoryModelEntry> categories = Lists.newArrayList();
+
+ // add all categories
+ categories.addAll(sampleCategoryModel.getCategory());
+
+ // remove the first one (V/HV)
+ categories.remove(0);
+
+ initBeanFilterableComboBox(ui.getCategoryComboBox(),
+ Lists.<SampleCategoryModelEntry>newArrayList(categories),
+ null);
+
Caracteristic caracteristic =
persistenceService.getSortedUnsortedCaracteristic();
@@ -206,12 +228,9 @@
if (newValue == null || source.getSpeciesUsed() == null) {
- // reste V/HV category
+ // reset V/HV category
source.setSampleCategory(null);
- // reset categories
- source.setCategory(null);
-
} else {
// look for best value for V/HV category : if sorted is available then use it
@@ -232,41 +251,12 @@
}
source.setSampleCategory(newCategory);
- // recompute possible categories
- List<SampleCategoryModelEntry> categories = Lists.newArrayList();
-
- SampleCategoryModel sampleCategoryModel =
- getModel().getSampleCategoryModel();
-
- // add all categories
- categories.addAll(sampleCategoryModel.getCategory());
-
- // remove the first one (V/HV)
- categories.remove(0);
-
// reset selected category
if (log.isInfoEnabled()) {
log.info("Remove selected category before changing the categories...");
}
source.setSelectedCategory(null);
- categoryIsAdjusting = true;
-
- try {
-
- // set universe of categories
- if (log.isInfoEnabled()) {
- log.info("Categories to use: " + categories);
- }
-
- source.setCategory(categories);
-
- // force to remove the first selected value of the combo-box
- ui.getCategoryComboBox().setSelectedItem(null);
- } finally {
- categoryIsAdjusting = false;
- }
-
// compute the selected sample category
SampleCategoryModelEntry selectedCategory = null;
@@ -294,6 +284,8 @@
if (selectedCategory == null) {
// by default use the first one
+ List<SampleCategoryModelEntry> categories =
+ getUI().getCategoryComboBox().getData();
selectedCategory = categories.get(0);
if (log.isInfoEnabled()) {
@@ -304,56 +296,33 @@
if (log.isInfoEnabled()) {
log.info("Selected category : " + selectedCategory);
}
- ui.getCategoryComboBox().setSelectedItem(selectedCategory);
- }
- }
- });
+ // force reset of selected category
+ source.setSelectedCategory(null);
- // when category changed, remove selected category
- model.addPropertyChangeListener(CreateSpeciesBatchUIModel.PROPERTY_CATEGORY, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
-
-// CreateSpeciesBatchUIModel source =
-// (CreateSpeciesBatchUIModel) evt.getSource();
-
-// // unselect previous selected category
-// source.setSelectedCategory(null);
-
- // fill comboBox with new list
- List<SampleCategoryModelEntry> data = (List<SampleCategoryModelEntry>) evt.getNewValue();
- if (data == null) {
-
- ui.getCategoryComboBox().setModel(new DefaultComboBoxModel());
- } else {
- ui.getCategoryComboBox().setModel(new DefaultComboBoxModel(data.toArray()));
+ // set new selected category
+ source.setSelectedCategory(selectedCategory);
}
}
});
// when selected category changed, regenerate the table model + add inside some default rows
- model.addPropertyChangeListener(CreateSpeciesBatchUIModel.PROPERTY_SELECTED_CATEGORY, new PropertyChangeListener() {
+ model.addPropertyChangeListener(CreateBenthosBatchUIModel.PROPERTY_SELECTED_CATEGORY, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
- if (!categoryIsAdjusting) {
+ // can change the selected category
+ CreateBenthosBatchUIModel source =
+ (CreateBenthosBatchUIModel) evt.getSource();
- // can change the selected category
- CreateSpeciesBatchUIModel source =
- (CreateSpeciesBatchUIModel) evt.getSource();
+ // when selected category change, sample total weight is reset
+ source.setSampleWeight(null);
- // when selected category change, sample total weight is reset
- source.setSampleWeight(null);
-
- SampleCategoryModelEntry newValue =
- (SampleCategoryModelEntry) evt.getNewValue();
- generateTableModel(newValue);
- }
+ SampleCategoryModelEntry newValue =
+ (SampleCategoryModelEntry) evt.getNewValue();
+ generateTableModel(newValue);
}
});
- ui.getCategoryComboBox().setRenderer(newListCellRender(SampleCategoryModelEntry.class));
-
generateTableModel(null);
initTable(getTable());
@@ -437,31 +406,31 @@
model.setAvailableSpecies(speciesToUse);
}
- public void saveAndClose() {
+ public void saveAndContinue() {
if (log.isDebugEnabled()) {
- log.debug("Save and close UI " + ui);
+ log.debug("Save and Continue UI " + ui);
}
EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
- parent.getBenthosTabContent().getHandler().addBatch(getModel());
+ BenthosBatchUI benthosTabContent = parent.getBenthosTabContent();
+ benthosTabContent.getHandler().addBatch(getModel());
- // close dialog
- closeUI(ui);
+ // re-open this screen
+ openUI(benthosTabContent.getModel());
}
- public void saveAndContinue() {
+ public void saveAndClose() {
if (log.isDebugEnabled()) {
- log.debug("Save and continue UI " + ui);
+ log.debug("Save and Close UI " + ui);
}
EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
- BenthosBatchUI benthosTabContent = parent.getBenthosTabContent();
- benthosTabContent.getHandler().addBatch(getModel());
+ parent.getBenthosTabContent().getHandler().addBatch(getModel());
- // re-open this screen
- openUI(benthosTabContent.getModel());
+ // close dialog
+ closeUI(ui);
}
public Species openAddSpeciesDialog(String title, List<Species> species) {
@@ -480,21 +449,19 @@
//-- Internal methods --//
//------------------------------------------------------------------------//
- protected void computeSampleWeight(SplitBenthosBatchRowModel row) {
+ protected void computeSampleWeight() {
- if (log.isInfoEnabled()) {
- log.info("Will recompute sample weight from row: " + row);
- }
-
Float result = null;
List<SplitBenthosBatchRowModel> rows = getTableModel().getRows();
- for (SplitBenthosBatchRowModel rowModel : rows) {
- Float weight = rowModel.getWeight();
- if (weight != null) {
- if (result == null) {
- result = 0f;
+ for (SplitBenthosBatchRowModel row : rows) {
+ if (row.isSelected()) {
+ Float weight = row.getWeight();
+ if (weight != null) {
+ if (result == null) {
+ result = 0f;
+ }
+ result += weight;
}
- result += weight;
}
}
getModel().setSampleWeight(result);
@@ -502,8 +469,8 @@
protected void generateTableModel(SampleCategoryModelEntry category) {
- if (log.isInfoEnabled()) {
- log.info("Generate table model for category " + category);
+ if (log.isDebugEnabled()) {
+ log.debug("Generate table model for category " + category);
}
// when generate a new table model, then reset previous rows from model
getModel().setRows(null);
@@ -536,8 +503,8 @@
if (data != null) {
- if (log.isInfoEnabled()) {
- log.info("Got " + data.sizeQualitativeValue() + " qualitative data to add");
+ if (log.isDebugEnabled()) {
+ log.debug("Got " + data.sizeQualitativeValue() + " qualitative data to add");
}
addColumnToModel(columnModel,
null,
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java 2013-09-19 14:09:05 UTC (rev 1192)
@@ -32,7 +32,6 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.catches.SelectedCategoryAble;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchRowModel;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.species.create.CreateSpeciesBatchUI;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -40,7 +39,7 @@
import java.util.List;
/**
- * Model of {@link CreateSpeciesBatchUI}.
+ * Model of {@link CreateBenthosBatchUI}.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
@@ -250,6 +249,20 @@
return result;
}
+ public boolean isCategoryIsFilled() {
+ boolean result = selectedCategory != null;
+ if (result) {
+ result = false;
+ for (SplitBenthosBatchRowModel rowModel : getRows()) {
+ if (rowModel.isValid()) {
+ result = true;
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
@Override
protected CreateBenthosBatchUIModel newEntity() {
return new CreateBenthosBatchUIModel(sampleCategoryModel);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java 2013-09-19 14:09:05 UTC (rev 1192)
@@ -49,6 +49,8 @@
public static final String PROPERTY_WEIGHT = "weight";
+ public static final String PROPERTY_SELECTED = "selected";
+
/**
* Delegate sample category which contains category value + weight.
*
@@ -56,6 +58,8 @@
*/
protected final SampleCategory<Serializable> category = SampleCategory.newSample(null);
+ protected boolean selected;
+
protected static final Binder<SplitBenthosBatchRowModel, SplitBenthosBatchRowModel> fromBeanBinder =
BinderFactory.newBinder(SplitBenthosBatchRowModel.class,
SplitBenthosBatchRowModel.class);
@@ -108,6 +112,16 @@
firePropertyChange(PROPERTY_WEIGHT, oldValue, weight);
}
+ public boolean isSelected() {
+ return selected;
+ }
+
+ public void setSelected(boolean selected) {
+ Object oldValue = isSelected();
+ this.selected = selected;
+ firePropertyChange(PROPERTY_SELECTED, oldValue, selected);
+ }
+
@Override
protected SplitBenthosBatchRowModel newEntity() {
return new SplitBenthosBatchRowModel();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchTableModel.java 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchTableModel.java 2013-09-19 14:09:05 UTC (rev 1192)
@@ -43,7 +43,7 @@
private static final long serialVersionUID = 1L;
public static final ColumnIdentifier<SplitBenthosBatchRowModel> SELECTED = ColumnIdentifier.newId(
- SplitBenthosBatchRowModel.PROPERTY_VALID,
+ SplitBenthosBatchRowModel.PROPERTY_SELECTED,
n_("tutti.splitBenthosBatch.table.header.selected"),
n_("tutti.splitBenthosBatch.table.header.selected"));
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-09-19 14:09:05 UTC (rev 1192)
@@ -34,7 +34,6 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchTableModel;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
@@ -72,6 +71,7 @@
public SplitBenthosBatchUIHandler(EditCatchesUI parentUi,
SplitBenthosBatchUI ui) {
super(parentUi.getHandler().getContext(), ui,
+ SplitBenthosBatchRowModel.PROPERTY_SELECTED,
SplitBenthosBatchRowModel.PROPERTY_CATEGORY_VALUE,
SplitBenthosBatchRowModel.PROPERTY_WEIGHT);
}
@@ -92,7 +92,7 @@
@Override
protected boolean isRowValid(SplitBenthosBatchRowModel row) {
- return row.isValid();
+ return row.isSelected();
}
@Override
@@ -110,20 +110,32 @@
}
}
+
@Override
+ protected void onAfterSelectedRowChanged(int oldRowIndex, SplitBenthosBatchRowModel oldRow, int newRowIndex, SplitBenthosBatchRowModel newRow) {
+ super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
+ if (newRow != null) {
+
+ // Recompute the valid state of the row
+ recomputeRowValidState(newRow);
+
+ // Need to recompute the sample weight
+ computeSampleWeight();
+ }
+ }
+
+ @Override
protected void onRowModified(int rowIndex,
SplitBenthosBatchRowModel row,
String propertyName,
Object oldValue,
Object newValue) {
+ // Recompute the valid state of the row
recomputeRowValidState(row);
- if (SplitBenthosBatchRowModel.PROPERTY_WEIGHT.equals(propertyName)) {
-
- // Need to recompute the sample weight
- computeSampleWeight(row);
- }
+ // Need to recompute the sample weight
+ computeSampleWeight();
}
//------------------------------------------------------------------------//
@@ -316,21 +328,19 @@
//-- Internal methods --//
//------------------------------------------------------------------------//
- protected void computeSampleWeight(SplitBenthosBatchRowModel row) {
+ protected void computeSampleWeight() {
- if (log.isDebugEnabled()) {
- log.debug("Will recompute sample weight from row: " + row);
- }
-
Float result = null;
List<SplitBenthosBatchRowModel> rows = getTableModel().getRows();
- for (SplitBenthosBatchRowModel rowModel : rows) {
- Float weight = rowModel.getWeight();
- if (weight != null) {
- if (result == null) {
- result = 0f;
+ for (SplitBenthosBatchRowModel row : rows) {
+ if (row.isSelected()) {
+ Float weight = row.getWeight();
+ if (weight != null) {
+ if (result == null) {
+ result = 0f;
+ }
+ result += weight;
}
- result += weight;
}
}
getModel().setSampleWeight(result);
@@ -361,7 +371,7 @@
} else {
editableCategoryValue = true;
addFloatColumnToModel(columnModel,
- SplitSpeciesBatchTableModel.EDITABLE_CATEGORY_VALUE,
+ SplitBenthosBatchTableModel.EDITABLE_CATEGORY_VALUE,
TuttiUI.DECIMAL1_PATTERN);
}
@@ -373,12 +383,12 @@
addColumnToModel(columnModel,
null,
newTableCellRender(CaracteristicQualitativeValue.class),
- SplitSpeciesBatchTableModel.READ_ONLY_CATEGORY_VALUE);
+ SplitBenthosBatchTableModel.READ_ONLY_CATEGORY_VALUE);
}
{ // Weight
addFloatColumnToModel(columnModel,
- SplitSpeciesBatchTableModel.WEIGHT,
+ SplitBenthosBatchTableModel.WEIGHT,
TuttiUI.DECIMAL3_PATTERN);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css 2013-09-19 14:09:05 UTC (rev 1192)
@@ -105,7 +105,12 @@
}
#categoryComboBox {
+ property: selectedCategory;
+ sortable: false;
+ showDecorator: false;
+ showReset: false;
selectedItem: {model.getSelectedCategory()};
+ data: {model.getCategory()};
}
#sampleWeightLabel {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx 2013-09-19 14:09:05 UTC (rev 1192)
@@ -144,8 +144,9 @@
<JLabel id='categoryLabel'/>
</cell>
<cell weightx='1.0'>
- <JComboBox id='categoryComboBox'
- onActionPerformed="model.setSelectedCategory((SampleCategoryModelEntry) categoryComboBox.getSelectedItem());"/>
+ <BeanFilterableComboBox id='categoryComboBox'
+ constructorParams='this'
+ genericType='SampleCategoryModelEntry'/>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-09-19 14:09:05 UTC (rev 1192)
@@ -56,7 +56,6 @@
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
-import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
@@ -80,17 +79,17 @@
private final CaracteristicQualitativeValue sortedValue;
- protected boolean categoryIsAdjusting;
+ private SampleCategoryModel sampleCategoryModel;
public CreateSpeciesBatchUIHandler(TuttiUI parentUi,
CreateSpeciesBatchUI ui) {
super(parentUi.getHandler().getContext(), ui,
+ SplitSpeciesBatchRowModel.PROPERTY_SELECTED,
SplitSpeciesBatchRowModel.PROPERTY_CATEGORY_VALUE,
SplitSpeciesBatchRowModel.PROPERTY_WEIGHT);
this.persistenceService = context.getPersistenceService();
- SampleCategoryModel sampleCategoryModel =
- getDataContext().getSampleCategoryModel();
+ this.sampleCategoryModel = getDataContext().getSampleCategoryModel();
SampleCategoryModelEntry caracteristic = sampleCategoryModel.getCategoryById(sampleCategoryModel.getFirstCategoryId());
@@ -124,7 +123,7 @@
@Override
protected boolean isRowValid(SplitSpeciesBatchRowModel row) {
- return row.isValid();
+ return row.isSelected();
}
@Override
@@ -143,19 +142,33 @@
}
@Override
+ protected void onAfterSelectedRowChanged(int oldRowIndex,
+ SplitSpeciesBatchRowModel oldRow,
+ int newRowIndex,
+ SplitSpeciesBatchRowModel newRow) {
+ super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
+ if (newRow != null) {
+
+ // Recompute the valid state of the row
+ recomputeRowValidState(newRow);
+
+ // Need to recompute the sample weight
+ computeSampleWeight();
+ }
+ }
+
+ @Override
protected void onRowModified(int rowIndex,
SplitSpeciesBatchRowModel row,
String propertyName,
Object oldValue,
Object newValue) {
+ // Recompute the valid state of the row
recomputeRowValidState(row);
- if (SplitSpeciesBatchRowModel.PROPERTY_WEIGHT.equals(propertyName)) {
-
- // Need to recompute the sample weight
- computeSampleWeight(row);
- }
+ // Need to recompute the sample weight
+ computeSampleWeight();
}
//------------------------------------------------------------------------//
@@ -165,8 +178,6 @@
@Override
public void beforeInitUI() {
- SampleCategoryModel sampleCategoryModel =
- getDataContext().getSampleCategoryModel();
CreateSpeciesBatchUIModel model =
new CreateSpeciesBatchUIModel(sampleCategoryModel);
ui.setContextValue(model);
@@ -183,6 +194,18 @@
null,
DecoratorService.FROM_PROTOCOL);
+ List<SampleCategoryModelEntry> categories = Lists.newArrayList();
+
+ // add all categories
+ categories.addAll(sampleCategoryModel.getCategory());
+
+ // remove the first one (V/HV)
+ categories.remove(0);
+
+ initBeanFilterableComboBox(ui.getCategoryComboBox(),
+ Lists.<SampleCategoryModelEntry>newArrayList(categories),
+ null);
+
Caracteristic caracteristic =
persistenceService.getSortedUnsortedCaracteristic();
@@ -206,12 +229,9 @@
if (newValue == null || source.getSpeciesUsed() == null) {
- // reste V/HV category
+ // reset V/HV category
source.setSampleCategory(null);
- // reset categories
- source.setCategory(null);
-
} else {
// look for best value for V/HV category : if sorted is available then use it
@@ -232,41 +252,12 @@
}
source.setSampleCategory(newCategory);
- // recompute possible categories
- List<SampleCategoryModelEntry> categories = Lists.newArrayList();
-
- SampleCategoryModel sampleCategoryModel =
- getModel().getSampleCategoryModel();
-
- // add all categories
- categories.addAll(sampleCategoryModel.getCategory());
-
- // remove the first one (V/HV)
- categories.remove(0);
-
// reset selected category
if (log.isInfoEnabled()) {
log.info("Remove selected category before changing the categories...");
}
source.setSelectedCategory(null);
- categoryIsAdjusting = true;
-
- try {
-
- // set universe of categories
- if (log.isInfoEnabled()) {
- log.info("Categories to use: " + categories);
- }
-
- source.setCategory(categories);
-
- // force to remove the first selected value of the combo-box
- ui.getCategoryComboBox().setSelectedItem(null);
- } finally {
- categoryIsAdjusting = false;
- }
-
// compute the selected sample category
SampleCategoryModelEntry selectedCategory = null;
@@ -294,6 +285,8 @@
if (selectedCategory == null) {
// by default use the first one
+ List<SampleCategoryModelEntry> categories =
+ getUI().getCategoryComboBox().getData();
selectedCategory = categories.get(0);
if (log.isInfoEnabled()) {
@@ -304,29 +297,11 @@
if (log.isInfoEnabled()) {
log.info("Selected category : " + selectedCategory);
}
- ui.getCategoryComboBox().setSelectedItem(selectedCategory);
- }
- }
- });
+ // force reset of selected category
+ source.setSelectedCategory(null);
- // when category changed, remove selected category
- model.addPropertyChangeListener(CreateSpeciesBatchUIModel.PROPERTY_CATEGORY, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
-
-// CreateSpeciesBatchUIModel source =
-// (CreateSpeciesBatchUIModel) evt.getSource();
-
-// // unselect previous selected category
-// source.setSelectedCategory(null);
-
- // fill comboBox with new list
- List<SampleCategoryModelEntry> data = (List<SampleCategoryModelEntry>) evt.getNewValue();
- if (data == null) {
-
- ui.getCategoryComboBox().setModel(new DefaultComboBoxModel());
- } else {
- ui.getCategoryComboBox().setModel(new DefaultComboBoxModel(data.toArray()));
+ // set new selected category
+ source.setSelectedCategory(selectedCategory);
}
}
});
@@ -336,24 +311,19 @@
@Override
public void propertyChange(PropertyChangeEvent evt) {
- if (!categoryIsAdjusting) {
+ // can change the selected category
+ CreateSpeciesBatchUIModel source =
+ (CreateSpeciesBatchUIModel) evt.getSource();
- // can change the selected category
- CreateSpeciesBatchUIModel source =
- (CreateSpeciesBatchUIModel) evt.getSource();
+ // when selected category change, sample total weight is reset
+ source.setSampleWeight(null);
- // when selected category change, sample total weight is reset
- source.setSampleWeight(null);
-
- SampleCategoryModelEntry newValue =
- (SampleCategoryModelEntry) evt.getNewValue();
- generateTableModel(newValue);
- }
+ SampleCategoryModelEntry newValue =
+ (SampleCategoryModelEntry) evt.getNewValue();
+ generateTableModel(newValue);
}
});
- ui.getCategoryComboBox().setRenderer(newListCellRender(SampleCategoryModelEntry.class));
-
generateTableModel(null);
initTable(getTable());
@@ -439,7 +409,7 @@
public void saveAndContinue() {
if (log.isDebugEnabled()) {
- log.debug("Save UI " + ui);
+ log.debug("Save And Continue UI " + ui);
}
EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
@@ -479,21 +449,19 @@
//-- Internal methods --//
//------------------------------------------------------------------------//
- protected void computeSampleWeight(SplitSpeciesBatchRowModel row) {
+ protected void computeSampleWeight() {
- if (log.isInfoEnabled()) {
- log.info("Will recompute sample weight from row: " + row);
- }
-
Float result = null;
List<SplitSpeciesBatchRowModel> rows = getTableModel().getRows();
- for (SplitSpeciesBatchRowModel rowModel : rows) {
- Float weight = rowModel.getWeight();
- if (weight != null) {
- if (result == null) {
- result = 0f;
+ for (SplitSpeciesBatchRowModel row : rows) {
+ if (row.isSelected()) {
+ Float weight = row.getWeight();
+ if (weight != null) {
+ if (result == null) {
+ result = 0f;
+ }
+ result += weight;
}
- result += weight;
}
}
getModel().setSampleWeight(result);
@@ -501,8 +469,8 @@
protected void generateTableModel(SampleCategoryModelEntry category) {
- if (log.isInfoEnabled()) {
- log.info("Generate table model for category " + category);
+ if (log.isDebugEnabled()) {
+ log.debug("Generate table model for category " + category);
}
// when generate a new table model, then reset previous rows from model
getModel().setRows(null);
@@ -535,8 +503,8 @@
if (data != null) {
- if (log.isInfoEnabled()) {
- log.info("Got " + data.sizeQualitativeValue() + " qualitative data to add");
+ if (log.isDebugEnabled()) {
+ log.debug("Got " + data.sizeQualitativeValue() + " qualitative data to add");
}
addColumnToModel(columnModel,
null,
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java 2013-09-19 14:09:05 UTC (rev 1192)
@@ -250,6 +250,20 @@
return result;
}
+ public boolean isCategoryIsFilled() {
+ boolean result = selectedCategory != null;
+ if (result) {
+ result = false;
+ for (SplitSpeciesBatchRowModel rowModel : getRows()) {
+ if (rowModel.isValid()) {
+ result = true;
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
@Override
protected CreateSpeciesBatchUIModel newEntity() {
return new CreateSpeciesBatchUIModel(sampleCategoryModel);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java 2013-09-19 14:09:05 UTC (rev 1192)
@@ -46,6 +46,8 @@
public static final String PROPERTY_WEIGHT = "weight";
+ public static final String PROPERTY_SELECTED = "selected";
+
/**
* Delegate sample category which contains category value + weight.
*
@@ -53,6 +55,8 @@
*/
protected final SampleCategory<Serializable> category = SampleCategory.newSample(null);
+ protected boolean selected;
+
public SplitSpeciesBatchRowModel() {
super(SplitSpeciesBatchRowModel.class, null, null);
}
@@ -97,6 +101,16 @@
firePropertyChange(PROPERTY_WEIGHT, oldValue, weight);
}
+ public boolean isSelected() {
+ return selected;
+ }
+
+ public void setSelected(boolean selected) {
+ Object oldValue = isSelected();
+ this.selected = selected;
+ firePropertyChange(PROPERTY_SELECTED, oldValue, selected);
+ }
+
@Override
protected SplitSpeciesBatchRowModel newEntity() {
return new SplitSpeciesBatchRowModel();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java 2013-09-19 14:09:05 UTC (rev 1192)
@@ -43,7 +43,7 @@
private static final long serialVersionUID = 1L;
public static final ColumnIdentifier<SplitSpeciesBatchRowModel> SELECTED = ColumnIdentifier.newId(
- SplitSpeciesBatchRowModel.PROPERTY_VALID,
+ SplitSpeciesBatchRowModel.PROPERTY_SELECTED,
n_("tutti.splitSpeciesBatch.table.header.selected"),
n_("tutti.splitSpeciesBatch.table.header.selected"));
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-09-19 14:09:05 UTC (rev 1192)
@@ -71,6 +71,7 @@
public SplitSpeciesBatchUIHandler(EditCatchesUI parentUi,
SplitSpeciesBatchUI ui) {
super(parentUi.getHandler().getContext(), ui,
+ SplitSpeciesBatchRowModel.PROPERTY_SELECTED,
SplitSpeciesBatchRowModel.PROPERTY_CATEGORY_VALUE,
SplitSpeciesBatchRowModel.PROPERTY_WEIGHT);
}
@@ -91,7 +92,7 @@
@Override
protected boolean isRowValid(SplitSpeciesBatchRowModel row) {
- return row.isValid();
+ return row.isSelected();
}
@Override
@@ -110,19 +111,33 @@
}
@Override
+ protected void onAfterSelectedRowChanged(int oldRowIndex,
+ SplitSpeciesBatchRowModel oldRow,
+ int newRowIndex,
+ SplitSpeciesBatchRowModel newRow) {
+ super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
+ if (newRow != null) {
+
+ // Recompute the valid state of the row
+ recomputeRowValidState(newRow);
+
+ // Need to recompute the sample weight
+ computeSampleWeight();
+ }
+ }
+
+ @Override
protected void onRowModified(int rowIndex,
SplitSpeciesBatchRowModel row,
String propertyName,
Object oldValue,
Object newValue) {
+ // Recompute the valid state of the row
recomputeRowValidState(row);
- if (SplitSpeciesBatchRowModel.PROPERTY_WEIGHT.equals(propertyName)) {
-
- // Need to recompute the sample weight
- computeSampleWeight(row);
- }
+ // Need to recompute the sample weight
+ computeSampleWeight();
}
//------------------------------------------------------------------------//
@@ -314,21 +329,19 @@
//-- Internal methods --//
//------------------------------------------------------------------------//
- protected void computeSampleWeight(SplitSpeciesBatchRowModel row) {
+ protected void computeSampleWeight() {
- if (log.isInfoEnabled()) {
- log.info("Will recompute sample weight from row: " + row);
- }
-
Float result = null;
List<SplitSpeciesBatchRowModel> rows = getTableModel().getRows();
- for (SplitSpeciesBatchRowModel rowModel : rows) {
- Float weight = rowModel.getWeight();
- if (weight != null) {
- if (result == null) {
- result = 0f;
+ for (SplitSpeciesBatchRowModel row : rows) {
+ if (row.isSelected()) {
+ Float weight = row.getWeight();
+ if (weight != null) {
+ if (result == null) {
+ result = 0f;
+ }
+ result += weight;
}
- result += weight;
}
}
getModel().setSampleWeight(result);
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml 2013-09-19 14:09:05 UTC (rev 1192)
@@ -71,6 +71,28 @@
</field>
+ <field name="batchCount">
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ batchCount == null || !categoryIsFilled ]]>
+ </param>
+ <message>
+ tutti.validator.error.createSpeciesBatch.countAndCategories.notPossible
+ </message>
+ </field-validator>
+ </field>
+
+ <field name="selectedCategory">
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ batchCount == null || !categoryIsFilled ]]>
+ </param>
+ <message>
+ tutti.validator.error.createSpeciesBatch.countAndCategories.notPossible
+ </message>
+ </field-validator>
+ </field>
+
<field name="sampleWeight">
<field-validator type="fieldexpression" short-circuit="true">
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml 2013-09-19 14:09:05 UTC (rev 1192)
@@ -70,6 +70,28 @@
</field>
+ <field name="batchCount">
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ batchCount == null || !categoryIsFilled ]]>
+ </param>
+ <message>
+ tutti.validator.error.createSpeciesBatch.countAndCategories.notPossible
+ </message>
+ </field-validator>
+ </field>
+
+ <field name="selectedCategory">
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ batchCount == null || !categoryIsFilled ]]>
+ </param>
+ <message>
+ tutti.validator.error.createSpeciesBatch.countAndCategories.notPossible
+ </message>
+ </field-validator>
+ </field>
+
<field name="sampleWeight">
<field-validator type="fieldexpression" short-circuit="true">
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-19 14:09:05 UTC (rev 1192)
@@ -149,6 +149,12 @@
tutti.createAccidentalBatch.action.save=
tutti.createAccidentalBatch.action.save.mnemonic=
tutti.createAccidentalBatch.action.save.tip=
+tutti.createAccidentalBatch.action.saveAndClose=
+tutti.createAccidentalBatch.action.saveAndClose.mnemonic=
+tutti.createAccidentalBatch.action.saveAndClose.tip=
+tutti.createAccidentalBatch.action.saveAndContinue=
+tutti.createAccidentalBatch.action.saveAndContinue.mnemonic=
+tutti.createAccidentalBatch.action.saveAndContinue.tip=
tutti.createAccidentalBatch.field.accidentalDeadOrAlive=
tutti.createAccidentalBatch.field.accidentalDeadOrAlive.tip=
tutti.createAccidentalBatch.field.accidentalGender=
@@ -219,6 +225,12 @@
tutti.createMarineLitterBatch.action.save=
tutti.createMarineLitterBatch.action.save.mnemonic=
tutti.createMarineLitterBatch.action.save.tip=
+tutti.createMarineLitterBatch.action.saveAndClose=
+tutti.createMarineLitterBatch.action.saveAndClose.mnemonic=
+tutti.createMarineLitterBatch.action.saveAndClose.tip=
+tutti.createMarineLitterBatch.action.saveAndContinue=
+tutti.createMarineLitterBatch.action.saveAndContinue.mnemonic=
+tutti.createMarineLitterBatch.action.saveAndContinue.tip=
tutti.createMarineLitterBatch.field.marineLitterCategory=
tutti.createMarineLitterBatch.field.marineLitterCategory.tip=
tutti.createMarineLitterBatch.field.marineLitterSizeCategory=
@@ -1415,6 +1427,7 @@
tutti.validator.error.createMarineLitterBatch.number.invalidValue=
tutti.validator.error.createMarineLitterBatch.number.required=
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=
+tutti.validator.error.createSpeciesBatch.countAndCategories.notPossible=
tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=
tutti.validator.error.createSpeciesBatch.species.required=
tutti.validator.error.createSpeciesBatch.speciesAndCategory.notAvailable=
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-09-19 09:41:01 UTC (rev 1191)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-09-19 14:09:05 UTC (rev 1192)
@@ -136,9 +136,12 @@
tutti.createAccidentalBatch.action.cancel=Annuler
tutti.createAccidentalBatch.action.cancel.mnemonic=A
tutti.createAccidentalBatch.action.cancel.tip=Annuler la création de la capture accidentelle
-tutti.createAccidentalBatch.action.save=Enregistrer
-tutti.createAccidentalBatch.action.save.mnemonic=E
-tutti.createAccidentalBatch.action.save.tip=Enregistrer la capture accidentelle
+tutti.createAccidentalBatch.action.saveAndClose=Créer et Fermer
+tutti.createAccidentalBatch.action.saveAndClose.mnemonic=F
+tutti.createAccidentalBatch.action.saveAndClose.tip=Enregistrer la capture accidentelle et fermer
+tutti.createAccidentalBatch.action.saveAndContinue=Créer
+tutti.createAccidentalBatch.action.saveAndContinue.mnemonic=C
+tutti.createAccidentalBatch.action.saveAndContinue.tip=Enregistrer la capture accidentelle et saisir une autre capture
tutti.createAccidentalBatch.field.accidentalDeadOrAlive=Mort ou vivant
tutti.createAccidentalBatch.field.accidentalDeadOrAlive.tip=L'animal a-t-il été remis à l'eau mort ou vivant ?
tutti.createAccidentalBatch.field.accidentalGender=Sexe
@@ -158,12 +161,12 @@
tutti.createBenthosBatch.action.cancel=Annuler
tutti.createBenthosBatch.action.cancel.mnemonic=A
tutti.createBenthosBatch.action.cancel.tip=Annuler la création du lot espèce
-tutti.createBenthosBatch.action.saveAndClose=Créer et fermer
+tutti.createBenthosBatch.action.saveAndClose=Créer et Fermer
tutti.createBenthosBatch.action.saveAndClose.mnemonic=F
tutti.createBenthosBatch.action.saveAndClose.tip=Enregistrer la création du lot espèce et quitter l'écran
tutti.createBenthosBatch.action.saveAndContinue=Créer
tutti.createBenthosBatch.action.saveAndContinue.mnemonic=C
-tutti.createBenthosBatch.action.saveAndContinue.tip=Enregistrer la création du lot espèce
+tutti.createBenthosBatch.action.saveAndContinue.tip=Enregistrer la création du lot espèce et en saisir un autre
tutti.createBenthosBatch.field.batchCount=Nombre
tutti.createBenthosBatch.field.batchCount.tip=Saisir le nombre d'individus dans le lot
tutti.createBenthosBatch.field.batchWeight=Poids du lot (kg)
@@ -203,9 +206,12 @@
tutti.createMarineLitterBatch.action.cancel=Annuler
tutti.createMarineLitterBatch.action.cancel.mnemonic=A
tutti.createMarineLitterBatch.action.cancel.tip=Annuler la création du lot macro-déchet
-tutti.createMarineLitterBatch.action.save=Enregistrer
-tutti.createMarineLitterBatch.action.save.mnemonic=E
-tutti.createMarineLitterBatch.action.save.tip=Enregistrer la création du lot macro-déchet
+tutti.createMarineLitterBatch.action.saveAndClose=Créer et Fermer
+tutti.createMarineLitterBatch.action.saveAndClose.mnemonic=F
+tutti.createMarineLitterBatch.action.saveAndClose.tip=Enregistrer la création du lot macro-déchet et fermer
+tutti.createMarineLitterBatch.action.saveAndContinue=Créer
+tutti.createMarineLitterBatch.action.saveAndContinue.mnemonic=C
+tutti.createMarineLitterBatch.action.saveAndContinue.tip=Enregistrer la création du lot macro-déchet et en saisir un autre
tutti.createMarineLitterBatch.field.marineLitterCategory=Catégorie de déchets
tutti.createMarineLitterBatch.field.marineLitterCategory.tip=Type de déchets observés
tutti.createMarineLitterBatch.field.marineLitterSizeCategory=Catégorie de taille
@@ -224,7 +230,7 @@
tutti.createSpeciesBatch.action.saveAndClose.tip=Enregistrer la création du lot espèce et fermer l'écran
tutti.createSpeciesBatch.action.saveAndContinue=Créer
tutti.createSpeciesBatch.action.saveAndContinue.mnemonic=C
-tutti.createSpeciesBatch.action.saveAndContinue.tip=Enregistrer la création du lot espèce
+tutti.createSpeciesBatch.action.saveAndContinue.tip=Enregistrer la création du lot espèce et en saisir un autre
tutti.createSpeciesBatch.field.batchCount=Nombre
tutti.createSpeciesBatch.field.batchCount.tip=Saisir le nombre d'individus dans le lot
tutti.createSpeciesBatch.field.batchWeight=Poids du lot (kg)
@@ -1375,6 +1381,7 @@
tutti.validator.error.createMarineLitterBatch.number.invalidValue=Le nombre doit être strictement positif
tutti.validator.error.createMarineLitterBatch.number.required=Le nombre est obligatoire
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif
+tutti.validator.error.createSpeciesBatch.countAndCategories.notPossible=Impossible de dénombrer et catégoriser en même temps
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
1
0
r1191 - in trunk/tutti-ui-swing/src/main: filtered-resources java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create
by tchemit@users.forge.codelutin.com 19 Sep '13
by tchemit@users.forge.codelutin.com 19 Sep '13
19 Sep '13
Author: tchemit
Date: 2013-09-19 11:41:01 +0200 (Thu, 19 Sep 2013)
New Revision: 1191
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1191
Log:
fixes #3291: [CAPTURE] Permettre la saisie de plusieurs macro-d?\195?\169chets sans avoir ?\195?\160 fermer l'?\195?\169cran de cr?\195?\169ation
fixes #3292: [CAPTURE] Permettre la saisie de plusieurs captures accidentelles sans avoir ?\195?\160 fermer l'?\195?\169cran de cr?\195?\169ation
Modified:
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-19 08:53:29 UTC (rev 1190)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-19 09:41:01 UTC (rev 1191)
@@ -1,8 +1,9 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Wed Sep 18 18:37:46 CEST 2013
+#Thu Sep 19 11:22:41 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions
-tutti.createAccidentalBatch.action.save.help=editFishingOperation.html\#captureCapturesAccidentellesActions
+tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions
+tutti.createAccidentalBatch.action.saveAndContinue.help=editFishingOperation.html\#captureCapturesAccidentellesActions
tutti.createAccidentalBatch.field.accidentalDeadOrAlive.help=editFishingOperation.html\#captureCapturesAccidentellesFields
tutti.createAccidentalBatch.field.accidentalGender.help=editFishingOperation.html\#captureCapturesAccidentellesFields
tutti.createAccidentalBatch.field.accidentalLengthStepCaracteristic.help=editFishingOperation.html\#captureCapturesAccidentellesFields
@@ -31,7 +32,8 @@
tutti.createIndividualObservationBatch.field.individualObservationWeight.help=editFishingOperation.html\#captureObservationsIndividuellesFields
tutti.createIndividualObservationBatch.help=editFishingOperation.html\#captureObservationsIndividuelles
tutti.createMarineLitterBatch.action.cancel.help=editFishingOperation.html\#captureMacroDechetsActions
-tutti.createMarineLitterBatch.action.save.help=editFishingOperation.html\#captureMacroDechetsActions
+tutti.createMarineLitterBatch.action.saveAndClose.help=editFishingOperation.html\#captureMacroDechetsActions
+tutti.createMarineLitterBatch.action.saveAndContinue.help=editFishingOperation.html\#captureMacroDechetsActions
tutti.createMarineLitterBatch.field.marineLitterCategory.help=editFishingOperation.html\#captureMacroDechetsFields
tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help=editFishingOperation.html\#captureMacroDechetsFields
tutti.createMarineLitterBatch.field.number.help=editFishingOperation.html\#captureMacroDechetsFields
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-19 08:53:29 UTC (rev 1190)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-19 09:41:01 UTC (rev 1191)
@@ -1,8 +1,9 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Wed Sep 18 18:37:46 CEST 2013
+#Thu Sep 19 11:22:41 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions
-tutti.createAccidentalBatch.action.save.help=editFishingOperation.html\#captureCapturesAccidentellesActions
+tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions
+tutti.createAccidentalBatch.action.saveAndContinue.help=editFishingOperation.html\#captureCapturesAccidentellesActions
tutti.createAccidentalBatch.field.accidentalDeadOrAlive.help=editFishingOperation.html\#captureCapturesAccidentellesFields
tutti.createAccidentalBatch.field.accidentalGender.help=editFishingOperation.html\#captureCapturesAccidentellesFields
tutti.createAccidentalBatch.field.accidentalLengthStepCaracteristic.help=editFishingOperation.html\#captureCapturesAccidentellesFields
@@ -31,7 +32,8 @@
tutti.createIndividualObservationBatch.field.individualObservationWeight.help=editFishingOperation.html\#captureObservationsIndividuellesFields
tutti.createIndividualObservationBatch.help=editFishingOperation.html\#captureObservationsIndividuelles
tutti.createMarineLitterBatch.action.cancel.help=editFishingOperation.html\#captureMacroDechetsActions
-tutti.createMarineLitterBatch.action.save.help=editFishingOperation.html\#captureMacroDechetsActions
+tutti.createMarineLitterBatch.action.saveAndClose.help=editFishingOperation.html\#captureMacroDechetsActions
+tutti.createMarineLitterBatch.action.saveAndContinue.help=editFishingOperation.html\#captureMacroDechetsActions
tutti.createMarineLitterBatch.field.marineLitterCategory.help=editFishingOperation.html\#captureMacroDechetsFields
tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help=editFishingOperation.html\#captureMacroDechetsFields
tutti.createMarineLitterBatch.field.number.help=editFishingOperation.html\#captureMacroDechetsFields
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.css 2013-09-19 08:53:29 UTC (rev 1190)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.css 2013-09-19 09:41:01 UTC (rev 1191)
@@ -113,15 +113,24 @@
selectedItem: {model.getDeadOrAlive()};
}
-#saveButton {
+#saveAndContinueButton {
actionIcon: save;
- text: "tutti.createAccidentalBatch.action.save";
- toolTipText: "tutti.createAccidentalBatch.action.save.tip";
- i18nMnemonic: "tutti.createAccidentalBatch.action.save.mnemonic";
+ text: "tutti.createAccidentalBatch.action.saveAndContinue";
+ toolTipText: "tutti.createAccidentalBatch.action.saveAndContinue.tip";
+ i18nMnemonic: "tutti.createAccidentalBatch.action.saveAndContinue.mnemonic";
enabled: {model.isValid()};
- _help: {"tutti.createAccidentalBatch.action.save.help"};
+ _help: {"tutti.createAccidentalBatch.action.saveAndContinue.help"};
}
+#saveAndCloseButton {
+ actionIcon: save;
+ text: "tutti.createAccidentalBatch.action.saveAndClose";
+ toolTipText: "tutti.createAccidentalBatch.action.saveAndClose.tip";
+ i18nMnemonic: "tutti.createAccidentalBatch.action.saveAndClose.mnemonic";
+ enabled: {model.isValid()};
+ _help: {"tutti.createAccidentalBatch.action.saveAndClose.help"};
+}
+
#cancelButton {
actionIcon: cancel;
text: "tutti.createAccidentalBatch.action.cancel";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.jaxx 2013-09-19 08:53:29 UTC (rev 1190)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUI.jaxx 2013-09-19 09:41:01 UTC (rev 1191)
@@ -150,6 +150,7 @@
<!-- Form Actions -->
<JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
- <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ <JButton id='saveAndContinueButton' onActionPerformed='handler.saveAndContinue()'/>
+ <JButton id='saveAndCloseButton' onActionPerformed='handler.saveAndClose()'/>
</JPanel>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIHandler.java 2013-09-19 08:53:29 UTC (rev 1190)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/create/CreateAccidentalBatchUIHandler.java 2013-09-19 09:41:01 UTC (rev 1191)
@@ -26,6 +26,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.accidental.AccidentalBatchUI;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
@@ -144,13 +145,27 @@
}
- public void save() {
+ public void saveAndContinue() {
if (log.isDebugEnabled()) {
- log.debug("Save UI " + ui);
+ log.debug("Save And Continue UI " + ui);
}
EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ AccidentalBatchUI accidentalTabContent = parent.getAccidentalTabContent();
+ accidentalTabContent.getHandler().addBatch(getModel());
+
+ // reopen ui
+ openUI();
+ }
+
+ public void saveAndClose() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Save And Close UI " + ui);
+ }
+
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
parent.getAccidentalTabContent().getHandler().addBatch(getModel());
// close dialog
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css 2013-09-19 08:53:29 UTC (rev 1190)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css 2013-09-19 09:41:01 UTC (rev 1191)
@@ -76,15 +76,24 @@
bean: {model};
}
-#saveButton {
+#saveAndContinueButton {
actionIcon: save;
- text: "tutti.createMarineLitterBatch.action.save";
- toolTipText: "tutti.createMarineLitterBatch.action.save.tip";
- i18nMnemonic: "tutti.createMarineLitterBatch.action.save.mnemonic";
+ text: "tutti.createMarineLitterBatch.action.saveAndContinue";
+ toolTipText: "tutti.createMarineLitterBatch.action.saveAndContinue.tip";
+ i18nMnemonic: "tutti.createMarineLitterBatch.action.saveAndContinue.mnemonic";
enabled: {model.isValid()};
- _help: {"tutti.createMarineLitterBatch.action.save.help"};
+ _help: {"tutti.createMarineLitterBatch.action.saveAndContinue.help"};
}
+#saveAndCloseButton {
+ actionIcon: save;
+ text: "tutti.createMarineLitterBatch.action.saveAndClose";
+ toolTipText: "tutti.createMarineLitterBatch.action.saveAndClose.tip";
+ i18nMnemonic: "tutti.createMarineLitterBatch.action.saveAndClose.mnemonic";
+ enabled: {model.isValid()};
+ _help: {"tutti.createMarineLitterBatch.action.saveAndClose.help"};
+}
+
#cancelButton {
actionIcon: cancel;
text: "tutti.createMarineLitterBatch.action.cancel";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx 2013-09-19 08:53:29 UTC (rev 1190)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx 2013-09-19 09:41:01 UTC (rev 1191)
@@ -108,6 +108,7 @@
<!-- Form Actions -->
<JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
- <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ <JButton id='saveAndContinueButton' onActionPerformed='handler.saveAndContinue()'/>
+ <JButton id='saveAndCloseButton' onActionPerformed='handler.saveAndClose()'/>
</JPanel>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java 2013-09-19 08:53:29 UTC (rev 1190)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java 2013-09-19 09:41:01 UTC (rev 1191)
@@ -32,6 +32,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUIModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
@@ -159,13 +160,27 @@
}
- public void save() {
+ public void saveAndContinue() {
if (log.isDebugEnabled()) {
- log.debug("Save UI " + ui);
+ log.debug("Save And Continue UI " + ui);
}
EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ MarineLitterBatchUI marineLitterTabContent = parent.getMarineLitterTabContent();
+ marineLitterTabContent.getHandler().addBatch(getModel());
+
+ // reopen this ui
+ openUI(marineLitterTabContent.getModel());
+ }
+
+ public void saveAndClose() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Save And Close UI " + ui);
+ }
+
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
parent.getMarineLitterTabContent().getHandler().addBatch(getModel());
// close dialog
1
0
r1190 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches
by tchemit@users.forge.codelutin.com 19 Sep '13
by tchemit@users.forge.codelutin.com 19 Sep '13
19 Sep '13
Author: tchemit
Date: 2013-09-19 10:53:29 +0200 (Thu, 19 Sep 2013)
New Revision: 1190
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1190
Log:
fixes #3289: [CAPTURE] Impossible de cr?\195?\169er un lot esp?\195?\168ce / benthos (V ou HV) apr?\195?\168s avoir supprimer le lot pour cette m?\195?\170me esp?\195?\168ce
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java
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-09-19 08:52:54 UTC (rev 1189)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-09-19 08:53:29 UTC (rev 1190)
@@ -25,6 +25,7 @@
*/
import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.HashMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
@@ -118,7 +119,7 @@
* @since 0.3
*/
protected final Multimap<CaracteristicQualitativeValue, Species>
- speciesUsed = ArrayListMultimap.create();
+ speciesUsed = HashMultimap.create();
/**
* Categories already used in some batches.
1
0
r1189 - in trunk/tutti-persistence/src/main: java/fr/ifremer/tutti/persistence/service/batch resources/i18n
by tchemit@users.forge.codelutin.com 19 Sep '13
by tchemit@users.forge.codelutin.com 19 Sep '13
19 Sep '13
Author: tchemit
Date: 2013-09-19 10:52:54 +0200 (Thu, 19 Sep 2013)
New Revision: 1189
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1189
Log:
fixes #3265: [TRAIT] V?\195?\169rifier que l'ordre de saisie des captures est bien celui de la configuration de cat?\195?\169gorisation
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/ScientificCruiseCatchBatchValidator.java
trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/ScientificCruiseCatchBatchValidator.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/ScientificCruiseCatchBatchValidator.java 2013-09-18 16:47:50 UTC (rev 1188)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/ScientificCruiseCatchBatchValidator.java 2013-09-19 08:52:54 UTC (rev 1189)
@@ -45,6 +45,7 @@
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
@@ -95,8 +96,8 @@
List<CatchBatchValidationError> errors = Lists.newArrayList();
- Integer[] categoryIds =
- sampleCategoryModel.getSamplingOrder().toArray(new Integer[sampleCategoryModel.getSamplingOrder().size()]);
+ Map<Integer, SampleCategoryModelEntry> categoriesById =
+ sampleCategoryModel.getCategoryMap();
for (SpeciesBatch speciesBatch : species.getChildren()) {
@@ -113,11 +114,10 @@
// check sample categories order is ok
validateSampleCategoriesOrder(
- sampleCategoryModel,
+ categoriesById,
errors,
speciesBatch,
- categoryIds,
- 0,
+ null,
n_("tutti.persistence.batch.validation.invalid.species.sampleCategoryId.order"));
}
}
@@ -130,8 +130,8 @@
List<CatchBatchValidationError> errors = Lists.newArrayList();
- Integer[] categoryIds =
- sampleCategoryModel.getSamplingOrder().toArray(new Integer[sampleCategoryModel.getSamplingOrder().size()]);
+ Map<Integer, SampleCategoryModelEntry> categoriesById =
+ sampleCategoryModel.getCategoryMap();
for (BenthosBatch benthosBatch : benthos.getChildren()) {
@@ -147,11 +147,10 @@
// check sample categories order is ok
validateSampleCategoriesOrder(
- sampleCategoryModel,
+ categoriesById,
errors,
benthosBatch,
- categoryIds,
- 0,
+ null,
n_("tutti.persistence.batch.validation.invalid.benthos.sampleCategoryId.order"));
}
}
@@ -355,46 +354,50 @@
}
}
- protected void validateSampleCategoriesOrder(SampleCategoryModel sampleCategoryModel,
+ protected void validateSampleCategoriesOrder(Map<Integer, SampleCategoryModelEntry> categoriesById,
List<CatchBatchValidationError> errors,
SpeciesAbleBatch aBatch,
- Integer[] categoryIds,
- int level,
+ SampleCategoryModelEntry lastSampleCategory,
String messageKey) {
Integer sampleCategoryId = aBatch.getSampleCategoryId();
- Integer exceptedCategoryId = categoryIds[level];
+ SampleCategoryModelEntry actualCategory =
+ categoriesById.get(sampleCategoryId);
+ if (lastSampleCategory != null) {
- if (!exceptedCategoryId.equals(sampleCategoryId)) {
+ // check the category is after the last one
- // bad sample category id
+ if (actualCategory.getOrder() < lastSampleCategory.getOrder()) {
- SampleCategoryModelEntry actualCategory = sampleCategoryModel.getCategoryById(sampleCategoryId);
- SampleCategoryModelEntry exceptedCategory = sampleCategoryModel.getCategoryById(exceptedCategoryId);
+ // bad order
- addError(errors,
- messageKey,
- aBatch.getId(),
- aBatch.getSpecies().getName(),
- actualCategory.getLabel(),
- exceptedCategory.getLabel());
+ addError(errors,
+ messageKey,
+ aBatch.getId(),
+ aBatch.getSpecies().getName(),
+ actualCategory.getLabel(),
+ lastSampleCategory.getLabel());
- // no need to continue, we got a bad order
- return;
+ // no need to continue, we got a bad order
+ return;
+ }
+
}
+ // keep the last sample category
+ lastSampleCategory = actualCategory;
+
if (!aBatch.isChildBatchsEmpty()) {
for (SpeciesAbleBatch speciesAbleBatch : aBatch.getChildBatchs()) {
validateSampleCategoriesOrder(
- sampleCategoryModel,
+ categoriesById,
errors,
speciesAbleBatch,
- categoryIds,
- level + 1,
+ lastSampleCategory,
messageKey);
}
}
Modified: trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties
===================================================================
--- trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-09-18 16:47:50 UTC (rev 1188)
+++ trunk/tutti-persistence/src/main/resources/i18n/tutti-persistence_fr_FR.properties 2013-09-19 08:52:54 UTC (rev 1189)
@@ -27,9 +27,9 @@
tutti.persistence.batch.validation.horsVracNotFound=Lot 'Hors Vrac' non trouvé ou configuré avec d'autres critères de classement.
tutti.persistence.batch.validation.horsVracSpeciesNotFound=Lot 'Hors Vrac > Espèces' non trouvé ou configuré avec d'autres critères de classement.
tutti.persistence.batch.validation.invalid.benthos.sampleCategoryId=Le lot benthos %s (espèce %s) utilise une catégorie (id %s) non reconnue
-tutti.persistence.batch.validation.invalid.benthos.sampleCategoryId.order=Le lot benthos %s (espèce %s) ne respecte pas l'ordre des catégories, utilisation de la catégorie <strong>%s</strong> au lieu de <strong>%s</strong>
+tutti.persistence.batch.validation.invalid.benthos.sampleCategoryId.order=Le lot benthos %s (espèce %s) ne respecte pas l'ordre des catégories, utilisation de la catégorie <strong>%s</strong> après la catégories <strong>%s</strong>
tutti.persistence.batch.validation.invalid.species.sampleCategoryId=Le lot espèce %s (espèce %s) utilise une catégorise (id %s) non reconnue
-tutti.persistence.batch.validation.invalid.species.sampleCategoryId.order=Le lot espèce %s (espèce %s) ne respecte pas l'ordre des catégories, utilisation de la catégorie <strong>%s</strong> au lieu de <strong>%s</strong>
+tutti.persistence.batch.validation.invalid.species.sampleCategoryId.order=Le lot espèce %s (espèce %s) ne respecte pas l'ordre des catégories, utilisation de la catégorie <strong>%s</strong> après la catégorie <strong>%s</strong>
tutti.persistence.batch.validation.unkonwn.taxon=Le lot (%s) utilise une espèce de code inconnu (%s).
tutti.persistence.batch.validation.unsortedNotFound=Lot 'Hors Vrac > Espèces' non trouvé ou configuré avec d'autres critères de classement.
tutti.persistence.batch.validation.vracBenthosAliveItemizedNotFound=Lot 'Vrac > Benthos > Vivant Trié' non trouvé, ou configuré avec d'autres critères de classement.
1
0
18 Sep '13
Author: tchemit
Date: 2013-09-18 18:47:50 +0200 (Wed, 18 Sep 2013)
New Revision: 1188
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1188
Log:
refs #3280: [CAPTURE] ?\195?\160 la cr?\195?\169ation d'un lot, scanner le protocole et proposer la cat?\195?\169gorisation du protocole
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SelectedCategoryAble.java
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel.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/create/CreateSpeciesBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/protocol/TuttiProtocols.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -360,6 +360,30 @@
}
/**
+ * Retrieve the speciesProtocol corresponding to the species of the given protocol.
+ *
+ * @param protocol
+ * @param species
+ * @return
+ * @since 2.5
+ */
+ public static SpeciesProtocol getSpeciesProtocol(TuttiProtocol protocol, Species species) {
+ return getSpeciesProtocol(species, protocol.getSpecies());
+ }
+
+ /**
+ * Retrieve the benthosProtocol corresponding to the species of the given protocol.
+ *
+ * @param protocol
+ * @param species
+ * @return
+ * @since 2.5
+ */
+ public static SpeciesProtocol getBenthosProtocol(TuttiProtocol protocol, Species species) {
+ return getSpeciesProtocol(species, protocol.getBenthos());
+ }
+
+ /**
* Retrieve the speciesprotocol corresponding to the species of the batch
*
* @param species
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-18 16:47:50 UTC (rev 1188)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Wed Sep 18 14:22:16 CEST 2013
+#Wed Sep 18 18:37:46 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions
tutti.createAccidentalBatch.action.save.help=editFishingOperation.html\#captureCapturesAccidentellesActions
@@ -16,7 +16,9 @@
tutti.createBenthosBatch.action.saveAndContinue.help=editFishingOperation.html\#captureBenthosActions
tutti.createBenthosBatch.field.batchCount.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.batchWeight.help=editFishingOperation.html\#captureBenthosFields
+tutti.createBenthosBatch.field.categoryField.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.sampleCategory.help=editFishingOperation.html\#captureBenthosFields
+tutti.createBenthosBatch.field.sampleWeightField.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.sortedUnsortedCategory.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.species.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.help=editFishingOperation.html\#captureBenthos
@@ -40,7 +42,9 @@
tutti.createSpeciesBatch.action.saveAndContinue.help=editFishingOperation.html\#captureEspecesCreeLotActions
tutti.createSpeciesBatch.field.batchCount.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.batchWeight.help=editFishingOperation.html\#captureEspecesCreeLotFields
+tutti.createSpeciesBatch.field.categoryField.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.sampleCategory.help=editFishingOperation.html\#captureEspecesCreeLotFields
+tutti.createSpeciesBatch.field.sampleWeightField.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.sortedUnsortedCategory.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.species.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.help=editFishingOperation.html\#captureEspecesCreeLot
@@ -211,12 +215,12 @@
tutti.editProtocol.field.vesselUseFeature.help=editProtocol.html\#fieldsCaracteristics
tutti.editProtocol.help=editProtocol.html
tutti.editProtocol.pane.caracteristic.help=editProtocol.html\#fieldsCaracteristics
-tutti.editSampleCategoryModel.action.cancel.help=editSampleCategory.html#actions
-tutti.editSampleCategoryModel.action.close.help=editSampleCategory.html#actions
-tutti.editSampleCategoryModel.action.moveDownEntry.help=editSampleCategory.html#actions
-tutti.editSampleCategoryModel.action.moveUpEntry.help=editSampleCategory.html#actions
-tutti.editSampleCategoryModel.action.removeEntry.help=editSampleCategory.html#actions
-tutti.editSampleCategoryModel.action.save.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.cancel.help=editSampleCategory.html\#actions
+tutti.editSampleCategoryModel.action.close.help=editSampleCategory.html\#actions
+tutti.editSampleCategoryModel.action.moveDownEntry.help=editSampleCategory.html\#actions
+tutti.editSampleCategoryModel.action.moveUpEntry.help=editSampleCategory.html\#actions
+tutti.editSampleCategoryModel.action.removeEntry.help=editSampleCategory.html\#actions
+tutti.editSampleCategoryModel.action.save.help=editSampleCategory.html\#actions
tutti.editSampleCategoryModel.help=editSampleCategory.html
tutti.editSpeciesBatch.action.createBatch.help=editFishingOperation.html\#captureEspecesActions
tutti.editSpeciesBatch.action.createMelag.help=editFishingOperation.html\#captureEspecesActions
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-18 16:47:50 UTC (rev 1188)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Wed Sep 18 14:22:16 CEST 2013
+#Wed Sep 18 18:37:46 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions
tutti.createAccidentalBatch.action.save.help=editFishingOperation.html\#captureCapturesAccidentellesActions
@@ -16,7 +16,9 @@
tutti.createBenthosBatch.action.saveAndContinue.help=editFishingOperation.html\#captureBenthosActions
tutti.createBenthosBatch.field.batchCount.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.batchWeight.help=editFishingOperation.html\#captureBenthosFields
+tutti.createBenthosBatch.field.categoryField.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.sampleCategory.help=editFishingOperation.html\#captureBenthosFields
+tutti.createBenthosBatch.field.sampleWeightField.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.sortedUnsortedCategory.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.species.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.help=editFishingOperation.html\#captureBenthos
@@ -40,7 +42,9 @@
tutti.createSpeciesBatch.action.saveAndContinue.help=editFishingOperation.html\#captureEspecesCreeLotActions
tutti.createSpeciesBatch.field.batchCount.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.batchWeight.help=editFishingOperation.html\#captureEspecesCreeLotFields
+tutti.createSpeciesBatch.field.categoryField.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.sampleCategory.help=editFishingOperation.html\#captureEspecesCreeLotFields
+tutti.createSpeciesBatch.field.sampleWeightField.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.sortedUnsortedCategory.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.species.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.help=editFishingOperation.html\#captureEspecesCreeLot
@@ -211,12 +215,12 @@
tutti.editProtocol.field.vesselUseFeature.help=editProtocol.html\#fieldsCaracteristics
tutti.editProtocol.help=editProtocol.html
tutti.editProtocol.pane.caracteristic.help=editProtocol.html\#fieldsCaracteristics
-tutti.editSampleCategoryModel.action.cancel.help=editSampleCategory.html#actions
-tutti.editSampleCategoryModel.action.close.help=editSampleCategory.html#actions
-tutti.editSampleCategoryModel.action.moveDownEntry.help=editSampleCategory.html#actions
-tutti.editSampleCategoryModel.action.moveUpEntry.help=editSampleCategory.html#actions
-tutti.editSampleCategoryModel.action.removeEntry.help=editSampleCategory.html#actions
-tutti.editSampleCategoryModel.action.save.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.cancel.help=editSampleCategory.html\#actions
+tutti.editSampleCategoryModel.action.close.help=editSampleCategory.html\#actions
+tutti.editSampleCategoryModel.action.moveDownEntry.help=editSampleCategory.html\#actions
+tutti.editSampleCategoryModel.action.moveUpEntry.help=editSampleCategory.html\#actions
+tutti.editSampleCategoryModel.action.removeEntry.help=editSampleCategory.html\#actions
+tutti.editSampleCategoryModel.action.save.help=editSampleCategory.html\#actions
tutti.editSampleCategoryModel.help=editSampleCategory.html
tutti.editSpeciesBatch.action.createBatch.help=editFishingOperation.html\#captureEspecesActions
tutti.editSpeciesBatch.action.createMelag.help=editFishingOperation.html\#captureEspecesActions
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SelectedCategoryAble.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SelectedCategoryAble.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SelectedCategoryAble.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -0,0 +1,14 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches;
+
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
+
+/**
+ * When a model offers a selected category.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.5
+ */
+public interface SelectedCategoryAble {
+
+ SampleCategoryModelEntry getSelectedCategory();
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SelectedCategoryAble.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -53,7 +53,6 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency.BenthosFrequencyRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchUI;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchUIModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
@@ -656,6 +655,15 @@
// update speciesUsed
addToSpeciesUsed(newRow);
+
+ if (batchRootRowModel.getSelectedCategory() != null) {
+
+ // add first category
+ splitBatch(batchRootRowModel.getSelectedCategory(),
+ batchRootRowModel.getRows(),
+ batchRootRowModel.getSampleWeight()
+ );
+ }
}
recomputeBatchActionEnable();
@@ -721,63 +729,63 @@
EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
SplitBenthosBatchUI splitBatchEditor = parent.getBenthosTabSplitBatch();
-// splitBatchEditor.getHandler().editBatch(parentBatch);
-// parent.getHandler().setBenthosSelectedCard(EditCatchesUIHandler.SPLIT_BATCH_CARD);
parent.getHandler().splitBenthosBatch(parentBatch, splitBatchEditor);
}
}
- public void splitBatch(SplitBenthosBatchUIModel splitModel) {
- if (splitModel.isValid()) {
+ public void splitBatch(SampleCategoryModelEntry sampleCategoryDef,
+ List<SplitBenthosBatchRowModel> rows,
+ Float totalRowWeight) {
- JXTable table = getTable();
+ JXTable table = getTable();
- // get selected row
- int insertRow = table.getSelectedRow();
+ // get selected row
+ int insertRow = table.getSelectedRow();
- BenthosBatchTableModel tableModel = getTableModel();
- BenthosBatchRowModel parentBatch = tableModel.getEntry(insertRow);
+ BenthosBatchTableModel tableModel = getTableModel();
+ BenthosBatchRowModel parentBatch = tableModel.getEntry(insertRow);
- // create batch rows
+ // Create rows in batch table model
+ Float parentWeight = parentBatch.getFinestCategory().getNotNullWeight();
+ boolean subSample = parentWeight != null && totalRowWeight != null
+ && parentWeight > totalRowWeight;
- SampleCategoryModelEntry sampleCategoryDef = splitModel.getSelectedCategory();
+ List<BenthosBatchRowModel> newBatches = Lists.newArrayList();
+ for (SplitBenthosBatchRowModel row : rows) {
+ if (row.isValid()) {
- // Create rows in batch table model
+ // can keep this row
+ BenthosBatchRowModel newBatch = tableModel.createNewRow();
- List<BenthosBatchRowModel> newBatches = Lists.newArrayList();
- for (SplitBenthosBatchRowModel row : splitModel.getRows()) {
- if (row.isValid()) {
+ loadBatchRow(parentBatch,
+ newBatch,
+ sampleCategoryDef.getCategoryId(),
+ row.getCategoryValue(),
+ row.getWeight(),
+ null);
- // can keep this row
- BenthosBatchRowModel newBatch = tableModel.createNewRow();
+ newBatch.getFinestCategory().setSubSample(subSample);
- loadBatchRow(parentBatch,
- newBatch,
- sampleCategoryDef.getCategoryId(),
- row.getCategoryValue(),
- row.getWeight(),
- null);
+ recomputeRowValidState(newBatch);
+ newBatches.add(newBatch);
- recomputeRowValidState(newBatch);
- newBatches.add(newBatch);
-
- tableModel.addNewRow(++insertRow, newBatch);
- }
+ tableModel.addNewRow(++insertRow, newBatch);
}
+ }
- // add new batches to his parent
- parentBatch.setChildBatch(newBatches);
+ // add new batches to his parent
+ parentBatch.setChildBatch(newBatches);
- //TODO Should only save parentBatch (will persist all his childs)
- //saveRow(parentBatch);
+ //TODO Should only save parentBatch (will persist all his childs)
+ //saveRow(parentBatch);
- // save new batches
- saveRows(newBatches);
+ // save new batches
+ saveRows(newBatches);
- BenthosBatchUIModel model = getModel();
- model.setLeafNumber(model.getLeafNumber() + newBatches.size() - 1);
- }
+ BenthosBatchUIModel model = getModel();
+ model.setLeafNumber(model.getLeafNumber() + newBatches.size() - 1);
+
recomputeBatchActionEnable();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css 2013-09-18 16:47:50 UTC (rev 1188)
@@ -51,6 +51,10 @@
data: {model.getAvailableSpecies()};
}
+#categoryPanel {
+ visible: {model.getSpecies() != null};
+}
+
#sampleCategoryLabel {
text: "tutti.createBenthosBatch.field.sampleCategory";
toolTipText: "tutti.createBenthosBatch.field.sampleCategory.tip";
@@ -93,6 +97,38 @@
bean: {model};
}
+#categoryLabel {
+ text: "tutti.createBenthosBatch.field.category";
+ toolTipText: "tutti.createBenthosBatch.field.categoryField.tip";
+ labelFor: {categoryComboBox};
+ _help: {"tutti.createBenthosBatch.field.categoryField.help"};
+}
+
+#categoryComboBox {
+ selectedItem: {model.getSelectedCategory()};
+}
+
+#sampleWeightLabel {
+ text: "tutti.createBenthosBatch.field.sampleWeight";
+ toolTipText: "tutti.createBenthosBatch.field.sampleWeightField.tip";
+ labelFor: {sampleWeightField};
+ _help: {"tutti.createBenthosBatch.field.sampleWeightField.help"};
+}
+
+#sampleWeightField {
+ editable: false;
+ enabled: false;
+ text: {getStringValue(model.getSampleWeight())};
+}
+
+#table {
+ selectionMode: {ListSelectionModel.SINGLE_SELECTION};
+ selectionBackground: {null};
+ selectionForeground: {Color.BLACK};
+ sortable: false;
+ enabled: {model.getSelectedCategory() != null}
+}
+
#addSpeciesButton {
text: "tutti.createBenthosBatch.action.addSpecies";
toolTipText: "tutti.createBenthosBatch.action.addSpecies.tip";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx 2013-09-18 16:47:50 UTC (rev 1188)
@@ -28,6 +28,7 @@
<import>
fr.ifremer.tutti.persistence.entities.referential.Species
fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue
+ fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry
fr.ifremer.tutti.ui.swing.TuttiHelpBroker
fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI
@@ -39,6 +40,7 @@
jaxx.runtime.swing.editor.NumberEditor
java.awt.Color
+ javax.swing.ListSelectionModel
static org.nuiton.i18n.I18n._
static jaxx.runtime.SwingUtil.getStringValue
@@ -68,12 +70,15 @@
<field name='sampleCategory'
component='sampleCategoryComboBox'/>
<field name='batchWeight' component='batchWeightField'/>
+ <field name='batchCount' component='batchCountField'/>
+ <field name='selectedCategory' component='categoryComboBox'/>
+ <field name='sampleWeight' component='sampleWeightField'/>
</BeanValidator>
<TuttiHelpBroker id='broker'
constructorParams='"tutti.createBenthosBatch.help"'/>
- <Table id='configurationPanel' constraints='BorderLayout.CENTER' fill='both'>
+ <Table id='configurationPanel' constraints='BorderLayout.NORTH' fill='both'>
<!-- Species -->
<row>
@@ -123,6 +128,44 @@
</Table>
+ <JPanel id='categoryPanel' constraints='BorderLayout.CENTER'
+ layout='{new BorderLayout()}'>
+ <Table id='categoryConfigurationPanel' constraints='BorderLayout.NORTH'
+ fill='both'>
+ <row>
+ <cell columns="2">
+ <JSeparator/>
+ </cell>
+ </row>
+
+ <!-- First SampleCategory choice -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='categoryLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <JComboBox id='categoryComboBox'
+ onActionPerformed="model.setSelectedCategory((SampleCategoryModelEntry) categoryComboBox.getSelectedItem());"/>
+ </cell>
+ </row>
+
+ <!-- Sample Total weight -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='sampleWeightLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <JTextField id='sampleWeightField'/>
+ </cell>
+ </row>
+
+ </Table>
+
+ <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
+ <JXTable id='table'/>
+ </JScrollPane>
+ </JPanel>
+
<!-- Form Actions -->
<JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -30,6 +30,9 @@
import fr.ifremer.tutti.persistence.TuttiPersistence;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
+import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
@@ -38,16 +41,23 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUIModel;
-import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchRowModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchTableModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.species.create.CreateSpeciesBatchUIModel;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
+import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.species.SelectSpeciesUI;
import fr.ifremer.tutti.ui.swing.util.species.SelectSpeciesUIModel;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
+import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
@@ -60,7 +70,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-public class CreateBenthosBatchUIHandler extends AbstractTuttiUIHandler<CreateBenthosBatchUIModel, CreateBenthosBatchUI> implements Cancelable {
+public class CreateBenthosBatchUIHandler extends AbstractTuttiTableUIHandler<SplitBenthosBatchRowModel, CreateBenthosBatchUIModel, CreateBenthosBatchUI> implements Cancelable {
/** Logger. */
private static final Log log =
@@ -70,9 +80,13 @@
private final CaracteristicQualitativeValue sortedValue;
+ protected boolean categoryIsAdjusting;
+
public CreateBenthosBatchUIHandler(TuttiUI parentUi,
CreateBenthosBatchUI ui) {
- super(parentUi.getHandler().getContext(), ui);
+ super(parentUi.getHandler().getContext(), ui,
+ SplitBenthosBatchRowModel.PROPERTY_CATEGORY_VALUE,
+ SplitBenthosBatchRowModel.PROPERTY_WEIGHT);
this.persistenceService = context.getPersistenceService();
SampleCategoryModel sampleCategoryModel =
@@ -95,12 +109,66 @@
}
//------------------------------------------------------------------------//
+ //-- AbstractTuttiTableUIHandler methods --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public SplitBenthosBatchTableModel getTableModel() {
+ return (SplitBenthosBatchTableModel) getTable().getModel();
+ }
+
+ @Override
+ public JXTable getTable() {
+ return ui.getTable();
+ }
+
+ @Override
+ protected boolean isRowValid(SplitBenthosBatchRowModel row) {
+ return row.isValid();
+ }
+
+ @Override
+ protected void saveSelectedRowIfRequired(TuttiBeanMonitor<SplitBenthosBatchRowModel> rowMonitor,
+ SplitBenthosBatchRowModel row) {
+ if (rowMonitor.wasModified()) {
+
+ if (row.isValid()) {
+ if (log.isInfoEnabled()) {
+ log.info("Change row that was modified and valid");
+ }
+ }
+
+ rowMonitor.clearModified();
+ }
+ }
+
+ @Override
+ protected void onRowModified(int rowIndex,
+ SplitBenthosBatchRowModel row,
+ String propertyName,
+ Object oldValue,
+ Object newValue) {
+
+ recomputeRowValidState(row);
+
+ if (SplitBenthosBatchRowModel.PROPERTY_WEIGHT.equals(propertyName)) {
+
+ // Need to recompute the sample weight
+ computeSampleWeight(row);
+ }
+ }
+
+ //------------------------------------------------------------------------//
//-- AbstractTuttiUIHandler methods --//
//------------------------------------------------------------------------//
@Override
public void beforeInitUI() {
- CreateBenthosBatchUIModel model = new CreateBenthosBatchUIModel();
+
+ SampleCategoryModel sampleCategoryModel =
+ getDataContext().getSampleCategoryModel();
+ CreateBenthosBatchUIModel model =
+ new CreateBenthosBatchUIModel(sampleCategoryModel);
ui.setContextValue(model);
listModelIsModify(model);
}
@@ -122,7 +190,9 @@
Lists.newArrayList(caracteristic.getQualitativeValue()),
null);
- getModel().addPropertyChangeListener(CreateBenthosBatchUIModel.PROPERTY_SPECIES, new PropertyChangeListener() {
+ CreateBenthosBatchUIModel model = getModel();
+
+ model.addPropertyChangeListener(CreateBenthosBatchUIModel.PROPERTY_SPECIES, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
@@ -136,11 +206,15 @@
if (newValue == null || source.getSpeciesUsed() == null) {
+ // reste V/HV category
source.setSampleCategory(null);
+ // reset categories
+ source.setCategory(null);
+
} else {
- // look for best value : if sorted is available then use it
+ // look for best value for V/HV category : if sorted is available then use it
List<CaracteristicQualitativeValue> qualitativeValues =
ui.getSampleCategoryComboBox().getData();
@@ -157,11 +231,134 @@
}
}
source.setSampleCategory(newCategory);
+
+ // recompute possible categories
+ List<SampleCategoryModelEntry> categories = Lists.newArrayList();
+
+ SampleCategoryModel sampleCategoryModel =
+ getModel().getSampleCategoryModel();
+
+ // add all categories
+ categories.addAll(sampleCategoryModel.getCategory());
+
+ // remove the first one (V/HV)
+ categories.remove(0);
+
+ // reset selected category
+ if (log.isInfoEnabled()) {
+ log.info("Remove selected category before changing the categories...");
+ }
+ source.setSelectedCategory(null);
+
+ categoryIsAdjusting = true;
+
+ try {
+
+ // set universe of categories
+ if (log.isInfoEnabled()) {
+ log.info("Categories to use: " + categories);
+ }
+
+ source.setCategory(categories);
+
+ // force to remove the first selected value of the combo-box
+ ui.getCategoryComboBox().setSelectedItem(null);
+ } finally {
+ categoryIsAdjusting = false;
+ }
+
+ // compute the selected sample category
+
+ SampleCategoryModelEntry selectedCategory = null;
+
+ if (getDataContext().isProtocolFilled()) {
+
+ // try to find the first category from protocol
+ TuttiProtocol protocol = getDataContext().getProtocol();
+ SpeciesProtocol speciesProtocol = TuttiProtocols.getBenthosProtocol(protocol, newValue);
+ if (speciesProtocol != null) {
+
+ // species defined in protocol
+ if (speciesProtocol.sizeMandatorySampleCategoryId() > 1) {
+
+ // use the second category (the first one is V/HV)
+ Integer categoryId = speciesProtocol.getMandatorySampleCategoryId().get(1);
+ selectedCategory = sampleCategoryModel.getCategoryById(categoryId);
+ if (log.isInfoEnabled()) {
+ log.info("Use category from protocol: " + categoryId + " :: " + selectedCategory);
+ }
+ }
+ }
+ }
+
+ if (selectedCategory == null) {
+
+ // by default use the first one
+ selectedCategory = categories.get(0);
+
+ if (log.isInfoEnabled()) {
+ log.info("Use default first category: " + selectedCategory);
+ }
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Selected category : " + selectedCategory);
+ }
+ ui.getCategoryComboBox().setSelectedItem(selectedCategory);
}
}
});
- listenValidatorValid(ui.getValidator(), getModel());
+ // when category changed, remove selected category
+ model.addPropertyChangeListener(CreateSpeciesBatchUIModel.PROPERTY_CATEGORY, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
+// CreateSpeciesBatchUIModel source =
+// (CreateSpeciesBatchUIModel) evt.getSource();
+
+// // unselect previous selected category
+// source.setSelectedCategory(null);
+
+ // fill comboBox with new list
+ List<SampleCategoryModelEntry> data = (List<SampleCategoryModelEntry>) evt.getNewValue();
+ if (data == null) {
+
+ ui.getCategoryComboBox().setModel(new DefaultComboBoxModel());
+ } else {
+ ui.getCategoryComboBox().setModel(new DefaultComboBoxModel(data.toArray()));
+ }
+ }
+ });
+
+ // when selected category changed, regenerate the table model + add inside some default rows
+ model.addPropertyChangeListener(CreateSpeciesBatchUIModel.PROPERTY_SELECTED_CATEGORY, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
+ if (!categoryIsAdjusting) {
+
+ // can change the selected category
+ CreateSpeciesBatchUIModel source =
+ (CreateSpeciesBatchUIModel) evt.getSource();
+
+ // when selected category change, sample total weight is reset
+ source.setSampleWeight(null);
+
+ SampleCategoryModelEntry newValue =
+ (SampleCategoryModelEntry) evt.getNewValue();
+ generateTableModel(newValue);
+ }
+ }
+ });
+
+ ui.getCategoryComboBox().setRenderer(newListCellRender(SampleCategoryModelEntry.class));
+
+ generateTableModel(null);
+
+ initTable(getTable());
+
+ listenValidatorValid(ui.getValidator(), model);
}
@Override
@@ -184,7 +381,6 @@
EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
parent.getHandler().setBenthosSelectedCard(EditCatchesUIHandler.MAIN_CARD);
-
}
@Override
@@ -280,4 +476,126 @@
return result;
}
+ //------------------------------------------------------------------------//
+ //-- Internal methods --//
+ //------------------------------------------------------------------------//
+
+ protected void computeSampleWeight(SplitBenthosBatchRowModel row) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will recompute sample weight from row: " + row);
+ }
+
+ Float result = null;
+ List<SplitBenthosBatchRowModel> rows = getTableModel().getRows();
+ for (SplitBenthosBatchRowModel rowModel : rows) {
+ Float weight = rowModel.getWeight();
+ if (weight != null) {
+ if (result == null) {
+ result = 0f;
+ }
+ result += weight;
+ }
+ }
+ getModel().setSampleWeight(result);
+ }
+
+ protected void generateTableModel(SampleCategoryModelEntry category) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Generate table model for category " + category);
+ }
+ // when generate a new table model, then reset previous rows from model
+ getModel().setRows(null);
+
+ Caracteristic data = null;
+
+ DefaultTableColumnModelExt columnModel =
+ new DefaultTableColumnModelExt();
+
+ { // Selection
+
+ addBooleanColumnToModel(columnModel,
+ SplitBenthosBatchTableModel.SELECTED,
+ getTable());
+ }
+
+ boolean editableCategoryValue = false;
+ if (category != null) {
+
+ if (!category.getCaracteristic().isQualitativeValueEmpty()) {
+
+ // qualitative category
+ data = category.getCaracteristic();
+ } else {
+ editableCategoryValue = true;
+ addFloatColumnToModel(columnModel,
+ SplitBenthosBatchTableModel.EDITABLE_CATEGORY_VALUE,
+ TuttiUI.DECIMAL1_PATTERN);
+ }
+
+ if (data != null) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Got " + data.sizeQualitativeValue() + " qualitative data to add");
+ }
+ addColumnToModel(columnModel,
+ null,
+ newTableCellRender(CaracteristicQualitativeValue.class),
+ SplitBenthosBatchTableModel.READ_ONLY_CATEGORY_VALUE);
+ }
+ { // Weight
+
+ addFloatColumnToModel(columnModel,
+ SplitBenthosBatchTableModel.WEIGHT,
+ TuttiUI.DECIMAL3_PATTERN);
+ }
+ }
+
+ // create table model
+ SplitBenthosBatchTableModel tableModel =
+ new SplitBenthosBatchTableModel(columnModel,
+ getModel(),
+ editableCategoryValue);
+
+ JXTable table = getTable();
+
+ // remove all listener on tables we could add before
+ uninstallTableSaveOnRowChangedSelectionListener();
+ uninstallTableKeyListener();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Install new table model " + tableModel);
+ }
+ table.setModel(tableModel);
+ table.setColumnModel(columnModel);
+
+ // install table listeners
+ installTableSaveOnRowChangedSelectionListener();
+ installTableKeyListener(columnModel, table);
+
+ // fill datas
+
+ List<SplitBenthosBatchRowModel> rows = Lists.newArrayList();
+
+ if (data != null) {
+
+ // add a row for each qualitive value
+ for (CaracteristicQualitativeValue qualitativeValue : data.getQualitativeValue()) {
+ if (log.isDebugEnabled()) {
+ log.debug("Add QV: " + qualitativeValue);
+ }
+ SplitBenthosBatchRowModel newRow = tableModel.createNewRow();
+ newRow.setCategoryValue(qualitativeValue);
+ rows.add(newRow);
+ }
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Will add " + rows.size() + " rows in table model " +
+ "(can add a first empty row? " + editableCategoryValue + ").");
+ }
+
+ getModel().setRows(rows);
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -26,10 +26,14 @@
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.SelectedCategoryAble;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.create.CreateSpeciesBatchUI;
-import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -41,7 +45,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-public class CreateBenthosBatchUIModel extends AbstractTuttiBeanUIModel<CreateBenthosBatchUIModel, CreateBenthosBatchUIModel> {
+public class CreateBenthosBatchUIModel extends AbstractTuttiTableUIModel<CreateBenthosBatchUIModel, SplitBenthosBatchRowModel, CreateBenthosBatchUIModel> implements SelectedCategoryAble {
private final static Log log = LogFactory.getLog(CreateBenthosBatchUIModel.class);
@@ -57,6 +61,12 @@
public static final String PROPERTY_BATCH_COUNT = "batchCount";
+ public static final String PROPERTY_CATEGORY = "category";
+
+ public static final String PROPERTY_SELECTED_CATEGORY = "selectedCategory";
+
+ public static final String PROPERTY_SAMPLE_WEIGHT = "sampleWeight";
+
/**
* All available species (sets by protocol).
*
@@ -88,21 +98,54 @@
/**
* Batch count.
*
- * @since 0.3
+ * @since 2.5
*/
protected Integer batchCount;
/**
+ * Sample categories.
+ *
+ * @since 2.5
+ */
+ protected List<SampleCategoryModelEntry> category;
+
+ /**
+ * Selected Sample category.
+ *
+ * @since 2.5
+ */
+ protected SampleCategoryModelEntry selectedCategory;
+
+ /**
+ * Sample weight of split batches.
+ *
+ * @since 2.5
+ */
+ protected Float sampleWeight;
+
+ /**
+ * Model of sample categories.
+ *
+ * @since 2.5
+ */
+ protected SampleCategoryModel sampleCategoryModel;
+
+ /**
* Already used species by sample category.
*
* @since 0.3
*/
protected final Multimap<CaracteristicQualitativeValue, Species> speciesUsed = ArrayListMultimap.create();
- public CreateBenthosBatchUIModel() {
+ public CreateBenthosBatchUIModel(SampleCategoryModel sampleCategoryModel) {
super(CreateBenthosBatchUIModel.class, null, null);
+ this.sampleCategoryModel = sampleCategoryModel;
}
+ public SampleCategoryModel getSampleCategoryModel() {
+ return sampleCategoryModel;
+ }
+
public List<Species> getAvailableSpecies() {
if (log.isDebugEnabled()) {
log.debug("getAvailableSpecies " + availableSpecies);
@@ -160,6 +203,37 @@
firePropertyChange(PROPERTY_BATCH_COUNT, oldValue, batchCount);
}
+ public List<SampleCategoryModelEntry> getCategory() {
+ return category;
+ }
+
+ public void setCategory(List<SampleCategoryModelEntry> category) {
+ Object oldValue = getCategory();
+ this.category = category;
+ firePropertyChange(PROPERTY_CATEGORY, oldValue, category);
+ }
+
+ @Override
+ public SampleCategoryModelEntry getSelectedCategory() {
+ return selectedCategory;
+ }
+
+ public void setSelectedCategory(SampleCategoryModelEntry selectedCategory) {
+ Object oldValue = getSelectedCategory();
+ this.selectedCategory = selectedCategory;
+ firePropertyChange(PROPERTY_SELECTED_CATEGORY, oldValue, selectedCategory);
+ }
+
+ public Float getSampleWeight() {
+ return sampleWeight;
+ }
+
+ public void setSampleWeight(Float sampleWeight) {
+ Object oldValue = getSampleWeight();
+ this.sampleWeight = sampleWeight;
+ firePropertyChange(PROPERTY_SAMPLE_WEIGHT, oldValue, sampleWeight);
+ }
+
public Multimap<CaracteristicQualitativeValue, Species> getSpeciesUsed() {
return speciesUsed;
}
@@ -178,6 +252,6 @@
@Override
protected CreateBenthosBatchUIModel newEntity() {
- return new CreateBenthosBatchUIModel();
+ return new CreateBenthosBatchUIModel(sampleCategoryModel);
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchTableModel.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchTableModel.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.ui.swing.content.operation.catches.SelectedCategoryAble;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
import org.jdesktop.swingx.table.TableColumnModelExt;
@@ -61,10 +62,10 @@
n_("tutti.splitBenthosBatch.table.header.weight"),
n_("tutti.splitBenthosBatch.table.header.weight"));
- private final SplitBenthosBatchUIModel uiModel;
+ private final SelectedCategoryAble uiModel;
public SplitBenthosBatchTableModel(TableColumnModelExt columnModel,
- SplitBenthosBatchUIModel uiModel,
+ SelectedCategoryAble uiModel,
boolean createEmptyRowIsEmpty) {
super(columnModel, createEmptyRowIsEmpty, createEmptyRowIsEmpty);
this.uiModel = uiModel;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -31,7 +31,6 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel;
@@ -301,7 +300,13 @@
}
EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
- parent.getBenthosTabContent().getHandler().splitBatch(getModel());
+ SplitBenthosBatchUIModel model = getModel();
+ if (model.isValid()) {
+ parent.getBenthosTabContent().getHandler().splitBatch(
+ model.getSelectedCategory(),
+ model.getRows(),
+ model.getSampleWeight());
+ }
// close dialog
closeUI(ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -26,6 +26,7 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.SelectedCategoryAble;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
@@ -38,7 +39,7 @@
* @since 0.3
*/
public class SplitBenthosBatchUIModel
- extends AbstractTuttiTableUIModel<BenthosBatchRowModel, SplitBenthosBatchRowModel, SplitBenthosBatchUIModel> {
+ extends AbstractTuttiTableUIModel<BenthosBatchRowModel, SplitBenthosBatchRowModel, SplitBenthosBatchUIModel> implements SelectedCategoryAble {
private static final long serialVersionUID = 1L;
@@ -106,6 +107,7 @@
firePropertyChange(PROPERTY_CATEGORY, oldValue, category);
}
+ @Override
public SampleCategoryModelEntry getSelectedCategory() {
return selectedCategory;
}
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-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -657,6 +657,15 @@
// update speciesUsed
addToSpeciesUsed(newRow);
+
+ if (batchRootRowModel.getSelectedCategory() != null) {
+
+ // add first category
+ splitBatch(batchRootRowModel.getSelectedCategory(),
+ batchRootRowModel.getRows(),
+ batchRootRowModel.getSampleWeight()
+ );
+ }
}
recomputeBatchActionEnable();
@@ -722,8 +731,6 @@
EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
SplitSpeciesBatchUI splitBatchEditor = parent.getSpeciesTabSplitBatch();
-// splitBatchEditor.getHandler().editBatch(parentBatch);
-// parent.getHandler().setSpeciesSelectedCard(EditCatchesUIHandler.SPLIT_BATCH_CARD);
parent.getHandler().splitSpeciesBatch(parentBatch, splitBatchEditor);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css 2013-09-18 16:47:50 UTC (rev 1188)
@@ -51,6 +51,10 @@
data: {model.getAvailableSpecies()};
}
+#categoryPanel {
+ visible: {model.getSpecies() != null};
+}
+
#sampleCategoryLabel {
text: "tutti.createSpeciesBatch.field.sampleCategory";
toolTipText: "tutti.createSpeciesBatch.field.sampleCategory.tip";
@@ -93,6 +97,38 @@
bean: {model};
}
+#categoryLabel {
+ text: "tutti.createSpeciesBatch.field.category";
+ toolTipText: "tutti.createSpeciesBatch.field.categoryField.tip";
+ labelFor: {categoryComboBox};
+ _help: {"tutti.createSpeciesBatch.field.categoryField.help"};
+}
+
+#categoryComboBox {
+ selectedItem: {model.getSelectedCategory()};
+}
+
+#sampleWeightLabel {
+ text: "tutti.createSpeciesBatch.field.sampleWeight";
+ toolTipText: "tutti.createSpeciesBatch.field.sampleWeightField.tip";
+ labelFor: {sampleWeightField};
+ _help: {"tutti.createSpeciesBatch.field.sampleWeightField.help"};
+}
+
+#sampleWeightField {
+ editable: false;
+ enabled: false;
+ text: {getStringValue(model.getSampleWeight())};
+}
+
+#table {
+ selectionMode: {ListSelectionModel.SINGLE_SELECTION};
+ selectionBackground: {null};
+ selectionForeground: {Color.BLACK};
+ sortable: false;
+ enabled: {model.getSelectedCategory() != null}
+}
+
#addSpeciesButton {
text: "tutti.createSpeciesBatch.action.addSpecies";
toolTipText: "tutti.createSpeciesBatch.action.addSpecies.tip";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx 2013-09-18 16:47:50 UTC (rev 1188)
@@ -28,6 +28,7 @@
<import>
fr.ifremer.tutti.persistence.entities.referential.Species
fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue
+ fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry
fr.ifremer.tutti.ui.swing.TuttiHelpBroker
fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI
@@ -39,6 +40,7 @@
jaxx.runtime.swing.editor.NumberEditor
java.awt.Color
+ javax.swing.ListSelectionModel
static org.nuiton.i18n.I18n._
static jaxx.runtime.SwingUtil.getStringValue
@@ -68,12 +70,15 @@
<field name='sampleCategory'
component='sampleCategoryComboBox'/>
<field name='batchWeight' component='batchWeightField'/>
+ <field name='batchCount' component='batchCountField'/>
+ <field name='selectedCategory' component='categoryComboBox'/>
+ <field name='sampleWeight' component='sampleWeightField'/>
</BeanValidator>
<TuttiHelpBroker id='broker'
constructorParams='"tutti.createSpeciesBatch.help"'/>
- <Table id='configurationPanel' constraints='BorderLayout.CENTER' fill='both'>
+ <Table id='configurationPanel' constraints='BorderLayout.NORTH' fill='both'>
<!-- Species -->
<row>
@@ -123,6 +128,44 @@
</Table>
+ <JPanel id='categoryPanel' constraints='BorderLayout.CENTER'
+ layout='{new BorderLayout()}'>
+ <Table id='categoryConfigurationPanel' constraints='BorderLayout.NORTH'
+ fill='both'>
+ <row>
+ <cell columns="2">
+ <JSeparator/>
+ </cell>
+ </row>
+
+ <!-- First SampleCategory choice -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='categoryLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <JComboBox id='categoryComboBox'
+ onActionPerformed="model.setSelectedCategory((SampleCategoryModelEntry) categoryComboBox.getSelectedItem());"/>
+ </cell>
+ </row>
+
+ <!-- Sample Total weight -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='sampleWeightLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <JTextField id='sampleWeightField'/>
+ </cell>
+ </row>
+
+ </Table>
+
+ <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
+ <JXTable id='table'/>
+ </JScrollPane>
+ </JPanel>
+
<!-- Form Actions -->
<JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -30,6 +30,9 @@
import fr.ifremer.tutti.persistence.TuttiPersistence;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
+import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocols;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
@@ -38,16 +41,22 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel;
-import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchRowModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchTableModel;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
+import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.species.SelectSpeciesUI;
import fr.ifremer.tutti.ui.swing.util.species.SelectSpeciesUIModel;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
+import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
@@ -60,7 +69,8 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-public class CreateSpeciesBatchUIHandler extends AbstractTuttiUIHandler<CreateSpeciesBatchUIModel, CreateSpeciesBatchUI> implements Cancelable {
+public class CreateSpeciesBatchUIHandler extends
+ AbstractTuttiTableUIHandler<SplitSpeciesBatchRowModel, CreateSpeciesBatchUIModel, CreateSpeciesBatchUI> implements Cancelable {
/** Logger. */
private static final Log log =
@@ -70,9 +80,13 @@
private final CaracteristicQualitativeValue sortedValue;
+ protected boolean categoryIsAdjusting;
+
public CreateSpeciesBatchUIHandler(TuttiUI parentUi,
CreateSpeciesBatchUI ui) {
- super(parentUi.getHandler().getContext(), ui);
+ super(parentUi.getHandler().getContext(), ui,
+ SplitSpeciesBatchRowModel.PROPERTY_CATEGORY_VALUE,
+ SplitSpeciesBatchRowModel.PROPERTY_WEIGHT);
this.persistenceService = context.getPersistenceService();
SampleCategoryModel sampleCategoryModel =
@@ -90,17 +104,71 @@
break;
}
}
- Preconditions.checkNotNull(vracValue,"Could not found vrac qualitative value");
+ Preconditions.checkNotNull(vracValue, "Could not found vrac qualitative value");
sortedValue = vracValue;
}
//------------------------------------------------------------------------//
+ //-- AbstractTuttiTableUIHandler methods --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public SplitSpeciesBatchTableModel getTableModel() {
+ return (SplitSpeciesBatchTableModel) getTable().getModel();
+ }
+
+ @Override
+ public JXTable getTable() {
+ return ui.getTable();
+ }
+
+ @Override
+ protected boolean isRowValid(SplitSpeciesBatchRowModel row) {
+ return row.isValid();
+ }
+
+ @Override
+ protected void saveSelectedRowIfRequired(TuttiBeanMonitor<SplitSpeciesBatchRowModel> rowMonitor,
+ SplitSpeciesBatchRowModel row) {
+ if (rowMonitor.wasModified()) {
+
+ if (row.isValid()) {
+ if (log.isInfoEnabled()) {
+ log.info("Change row that was modified and valid");
+ }
+ }
+
+ rowMonitor.clearModified();
+ }
+ }
+
+ @Override
+ protected void onRowModified(int rowIndex,
+ SplitSpeciesBatchRowModel row,
+ String propertyName,
+ Object oldValue,
+ Object newValue) {
+
+ recomputeRowValidState(row);
+
+ if (SplitSpeciesBatchRowModel.PROPERTY_WEIGHT.equals(propertyName)) {
+
+ // Need to recompute the sample weight
+ computeSampleWeight(row);
+ }
+ }
+
+ //------------------------------------------------------------------------//
//-- AbstractTuttiUIHandler methods --//
//------------------------------------------------------------------------//
@Override
public void beforeInitUI() {
- CreateSpeciesBatchUIModel model = new CreateSpeciesBatchUIModel();
+
+ SampleCategoryModel sampleCategoryModel =
+ getDataContext().getSampleCategoryModel();
+ CreateSpeciesBatchUIModel model =
+ new CreateSpeciesBatchUIModel(sampleCategoryModel);
ui.setContextValue(model);
listModelIsModify(model);
}
@@ -122,7 +190,9 @@
caracteristic.getQualitativeValue(),
null);
- getModel().addPropertyChangeListener(CreateSpeciesBatchUIModel.PROPERTY_SPECIES, new PropertyChangeListener() {
+ CreateSpeciesBatchUIModel model = getModel();
+
+ model.addPropertyChangeListener(CreateSpeciesBatchUIModel.PROPERTY_SPECIES, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
@@ -136,11 +206,15 @@
if (newValue == null || source.getSpeciesUsed() == null) {
+ // reste V/HV category
source.setSampleCategory(null);
+ // reset categories
+ source.setCategory(null);
+
} else {
- // look for best value : if sorted is available then use it
+ // look for best value for V/HV category : if sorted is available then use it
List<CaracteristicQualitativeValue> qualitativeValues =
ui.getSampleCategoryComboBox().getData();
@@ -157,11 +231,134 @@
}
}
source.setSampleCategory(newCategory);
+
+ // recompute possible categories
+ List<SampleCategoryModelEntry> categories = Lists.newArrayList();
+
+ SampleCategoryModel sampleCategoryModel =
+ getModel().getSampleCategoryModel();
+
+ // add all categories
+ categories.addAll(sampleCategoryModel.getCategory());
+
+ // remove the first one (V/HV)
+ categories.remove(0);
+
+ // reset selected category
+ if (log.isInfoEnabled()) {
+ log.info("Remove selected category before changing the categories...");
+ }
+ source.setSelectedCategory(null);
+
+ categoryIsAdjusting = true;
+
+ try {
+
+ // set universe of categories
+ if (log.isInfoEnabled()) {
+ log.info("Categories to use: " + categories);
+ }
+
+ source.setCategory(categories);
+
+ // force to remove the first selected value of the combo-box
+ ui.getCategoryComboBox().setSelectedItem(null);
+ } finally {
+ categoryIsAdjusting = false;
+ }
+
+ // compute the selected sample category
+
+ SampleCategoryModelEntry selectedCategory = null;
+
+ if (getDataContext().isProtocolFilled()) {
+
+ // try to find the first category from protocol
+ TuttiProtocol protocol = getDataContext().getProtocol();
+ SpeciesProtocol speciesProtocol = TuttiProtocols.getSpeciesProtocol(protocol, newValue);
+ if (speciesProtocol != null) {
+
+ // species defined in protocol
+ if (speciesProtocol.sizeMandatorySampleCategoryId() > 1) {
+
+ // use the second category (the first one is V/HV)
+ Integer categoryId = speciesProtocol.getMandatorySampleCategoryId().get(1);
+ selectedCategory = sampleCategoryModel.getCategoryById(categoryId);
+ if (log.isInfoEnabled()) {
+ log.info("Use category from protocol: " + categoryId + " :: " + selectedCategory);
+ }
+ }
+ }
+ }
+
+ if (selectedCategory == null) {
+
+ // by default use the first one
+ selectedCategory = categories.get(0);
+
+ if (log.isInfoEnabled()) {
+ log.info("Use default first category: " + selectedCategory);
+ }
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Selected category : " + selectedCategory);
+ }
+ ui.getCategoryComboBox().setSelectedItem(selectedCategory);
}
}
});
- listenValidatorValid(ui.getValidator(), getModel());
+ // when category changed, remove selected category
+ model.addPropertyChangeListener(CreateSpeciesBatchUIModel.PROPERTY_CATEGORY, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
+// CreateSpeciesBatchUIModel source =
+// (CreateSpeciesBatchUIModel) evt.getSource();
+
+// // unselect previous selected category
+// source.setSelectedCategory(null);
+
+ // fill comboBox with new list
+ List<SampleCategoryModelEntry> data = (List<SampleCategoryModelEntry>) evt.getNewValue();
+ if (data == null) {
+
+ ui.getCategoryComboBox().setModel(new DefaultComboBoxModel());
+ } else {
+ ui.getCategoryComboBox().setModel(new DefaultComboBoxModel(data.toArray()));
+ }
+ }
+ });
+
+ // when selected category changed, regenerate the table model + add inside some default rows
+ model.addPropertyChangeListener(CreateSpeciesBatchUIModel.PROPERTY_SELECTED_CATEGORY, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
+ if (!categoryIsAdjusting) {
+
+ // can change the selected category
+ CreateSpeciesBatchUIModel source =
+ (CreateSpeciesBatchUIModel) evt.getSource();
+
+ // when selected category change, sample total weight is reset
+ source.setSampleWeight(null);
+
+ SampleCategoryModelEntry newValue =
+ (SampleCategoryModelEntry) evt.getNewValue();
+ generateTableModel(newValue);
+ }
+ }
+ });
+
+ ui.getCategoryComboBox().setRenderer(newListCellRender(SampleCategoryModelEntry.class));
+
+ generateTableModel(null);
+
+ initTable(getTable());
+
+ listenValidatorValid(ui.getValidator(), model);
}
@Override
@@ -184,7 +381,6 @@
EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
parent.getHandler().setSpeciesSelectedCard(EditCatchesUIHandler.MAIN_CARD);
-
}
@Override
@@ -279,4 +475,127 @@
return result;
}
+ //------------------------------------------------------------------------//
+ //-- Internal methods --//
+ //------------------------------------------------------------------------//
+
+ protected void computeSampleWeight(SplitSpeciesBatchRowModel row) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will recompute sample weight from row: " + row);
+ }
+
+ Float result = null;
+ List<SplitSpeciesBatchRowModel> rows = getTableModel().getRows();
+ for (SplitSpeciesBatchRowModel rowModel : rows) {
+ Float weight = rowModel.getWeight();
+ if (weight != null) {
+ if (result == null) {
+ result = 0f;
+ }
+ result += weight;
+ }
+ }
+ getModel().setSampleWeight(result);
+ }
+
+ protected void generateTableModel(SampleCategoryModelEntry category) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Generate table model for category " + category);
+ }
+ // when generate a new table model, then reset previous rows from model
+ getModel().setRows(null);
+
+ Caracteristic data = null;
+
+ DefaultTableColumnModelExt columnModel =
+ new DefaultTableColumnModelExt();
+
+ { // Selection
+
+ addBooleanColumnToModel(columnModel,
+ SplitSpeciesBatchTableModel.SELECTED,
+ getTable());
+ }
+
+ boolean editableCategoryValue = false;
+ if (category != null) {
+
+ if (!category.getCaracteristic().isQualitativeValueEmpty()) {
+
+ // qualitative category
+ data = category.getCaracteristic();
+ } else {
+ editableCategoryValue = true;
+ addFloatColumnToModel(columnModel,
+ SplitSpeciesBatchTableModel.EDITABLE_CATEGORY_VALUE,
+ TuttiUI.DECIMAL1_PATTERN);
+ }
+
+ if (data != null) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Got " + data.sizeQualitativeValue() + " qualitative data to add");
+ }
+ addColumnToModel(columnModel,
+ null,
+ newTableCellRender(CaracteristicQualitativeValue.class),
+ SplitSpeciesBatchTableModel.READ_ONLY_CATEGORY_VALUE);
+ }
+ { // Weight
+
+ addFloatColumnToModel(columnModel,
+ SplitSpeciesBatchTableModel.WEIGHT,
+ TuttiUI.DECIMAL3_PATTERN);
+ }
+ }
+
+ // create table model
+ SplitSpeciesBatchTableModel tableModel =
+ new SplitSpeciesBatchTableModel(columnModel,
+ getModel(),
+ editableCategoryValue);
+
+ JXTable table = getTable();
+
+ // remove all listener on tables we could add before
+ uninstallTableSaveOnRowChangedSelectionListener();
+ uninstallTableKeyListener();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Install new table model " + tableModel);
+ }
+ table.setModel(tableModel);
+ table.setColumnModel(columnModel);
+
+ // install table listeners
+ installTableSaveOnRowChangedSelectionListener();
+ installTableKeyListener(columnModel, table);
+
+ // fill datas
+
+ List<SplitSpeciesBatchRowModel> rows = Lists.newArrayList();
+
+ if (data != null) {
+
+ // add a row for each qualitive value
+ for (CaracteristicQualitativeValue qualitativeValue : data.getQualitativeValue()) {
+ if (log.isDebugEnabled()) {
+ log.debug("Add QV: " + qualitativeValue);
+ }
+ SplitSpeciesBatchRowModel newRow = tableModel.createNewRow();
+ newRow.setCategoryValue(qualitativeValue);
+ rows.add(newRow);
+ }
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Will add " + rows.size() + " rows in table model " +
+ "(can add a first empty row? " + editableCategoryValue + ").");
+ }
+
+ getModel().setRows(rows);
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -26,9 +26,13 @@
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.SelectedCategoryAble;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchRowModel;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -40,9 +44,10 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-public class CreateSpeciesBatchUIModel extends AbstractTuttiBeanUIModel<CreateSpeciesBatchUIModel, CreateSpeciesBatchUIModel> {
+public class CreateSpeciesBatchUIModel extends AbstractTuttiTableUIModel<CreateSpeciesBatchUIModel, SplitSpeciesBatchRowModel, CreateSpeciesBatchUIModel> implements SelectedCategoryAble {
- private final static Log log = LogFactory.getLog(CreateSpeciesBatchUIModel.class);
+ private final static Log log =
+ LogFactory.getLog(CreateSpeciesBatchUIModel.class);
private static final long serialVersionUID = 1L;
@@ -56,6 +61,12 @@
public static final String PROPERTY_BATCH_COUNT = "batchCount";
+ public static final String PROPERTY_CATEGORY = "category";
+
+ public static final String PROPERTY_SELECTED_CATEGORY = "selectedCategory";
+
+ public static final String PROPERTY_SAMPLE_WEIGHT = "sampleWeight";
+
/**
* All available species (sets by protocol).
*
@@ -87,21 +98,54 @@
/**
* Batch count.
*
- * @since 0.3
+ * @since 2.5
*/
protected Integer batchCount;
/**
+ * Sample categories.
+ *
+ * @since 2.5
+ */
+ protected List<SampleCategoryModelEntry> category;
+
+ /**
+ * Selected Sample category.
+ *
+ * @since 2.5
+ */
+ protected SampleCategoryModelEntry selectedCategory;
+
+ /**
+ * Sample weight of split batches.
+ *
+ * @since 2.5
+ */
+ protected Float sampleWeight;
+
+ /**
+ * Model of sample categories.
+ *
+ * @since 2.5
+ */
+ protected SampleCategoryModel sampleCategoryModel;
+
+ /**
* Already used species by sample category.
*
* @since 0.3
*/
protected final Multimap<CaracteristicQualitativeValue, Species> speciesUsed = ArrayListMultimap.create();
- public CreateSpeciesBatchUIModel() {
+ public CreateSpeciesBatchUIModel(SampleCategoryModel sampleCategoryModel) {
super(CreateSpeciesBatchUIModel.class, null, null);
+ this.sampleCategoryModel = sampleCategoryModel;
}
+ public SampleCategoryModel getSampleCategoryModel() {
+ return sampleCategoryModel;
+ }
+
public List<Species> getAvailableSpecies() {
if (log.isDebugEnabled()) {
log.debug("getAvailableSpecies " + availableSpecies);
@@ -159,6 +203,37 @@
firePropertyChange(PROPERTY_BATCH_COUNT, oldValue, batchCount);
}
+ public List<SampleCategoryModelEntry> getCategory() {
+ return category;
+ }
+
+ public void setCategory(List<SampleCategoryModelEntry> category) {
+ Object oldValue = getCategory();
+ this.category = category;
+ firePropertyChange(PROPERTY_CATEGORY, oldValue, category);
+ }
+
+ @Override
+ public SampleCategoryModelEntry getSelectedCategory() {
+ return selectedCategory;
+ }
+
+ public void setSelectedCategory(SampleCategoryModelEntry selectedCategory) {
+ Object oldValue = getSelectedCategory();
+ this.selectedCategory = selectedCategory;
+ firePropertyChange(PROPERTY_SELECTED_CATEGORY, oldValue, selectedCategory);
+ }
+
+ public Float getSampleWeight() {
+ return sampleWeight;
+ }
+
+ public void setSampleWeight(Float sampleWeight) {
+ Object oldValue = getSampleWeight();
+ this.sampleWeight = sampleWeight;
+ firePropertyChange(PROPERTY_SAMPLE_WEIGHT, oldValue, sampleWeight);
+ }
+
public Multimap<CaracteristicQualitativeValue, Species> getSpeciesUsed() {
return speciesUsed;
}
@@ -177,6 +252,6 @@
@Override
protected CreateSpeciesBatchUIModel newEntity() {
- return new CreateSpeciesBatchUIModel();
+ return new CreateSpeciesBatchUIModel(sampleCategoryModel);
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.ui.swing.content.operation.catches.SelectedCategoryAble;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
import org.jdesktop.swingx.table.TableColumnModelExt;
@@ -61,10 +62,10 @@
n_("tutti.splitSpeciesBatch.table.header.weight"),
n_("tutti.splitSpeciesBatch.table.header.weight"));
- private final SplitSpeciesBatchUIModel uiModel;
+ private final SelectedCategoryAble uiModel;
public SplitSpeciesBatchTableModel(TableColumnModelExt columnModel,
- SplitSpeciesBatchUIModel uiModel,
+ SelectedCategoryAble uiModel,
boolean createEmptyRowIsEmpty) {
super(columnModel, createEmptyRowIsEmpty, createEmptyRowIsEmpty);
this.uiModel = uiModel;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -31,7 +31,6 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel;
@@ -69,19 +68,11 @@
private static final Log log =
LogFactory.getLog(SplitSpeciesBatchUIHandler.class);
-// /**
-// * Parent UI.
-// *
-// * @since 0.3
-// */
-// private final SpeciesBatchUI parentUi;
-
public SplitSpeciesBatchUIHandler(EditCatchesUI parentUi,
SplitSpeciesBatchUI ui) {
super(parentUi.getHandler().getContext(), ui,
SplitSpeciesBatchRowModel.PROPERTY_CATEGORY_VALUE,
SplitSpeciesBatchRowModel.PROPERTY_WEIGHT);
-// this.parentUi = parentUi.getSpeciesTabContent();
}
//------------------------------------------------------------------------//
@@ -251,11 +242,6 @@
//-- Public methods --//
//------------------------------------------------------------------------//
- public String decorateSpecies(Species object) {
- String result = object == null ? "" : super.decorate(object);
- return result;
- }
-
public void editBatch(SpeciesBatchRowModel batch) {
// get possible the last used
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -26,7 +26,7 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.SelectedCategoryAble;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
@@ -39,14 +39,12 @@
* @since 0.3
*/
public class SplitSpeciesBatchUIModel
- extends AbstractTuttiTableUIModel<SpeciesBatchRowModel, SplitSpeciesBatchRowModel, SplitSpeciesBatchUIModel> {
+ extends AbstractTuttiTableUIModel<SpeciesBatchRowModel, SplitSpeciesBatchRowModel, SplitSpeciesBatchUIModel> implements SelectedCategoryAble {
private static final long serialVersionUID = 1L;
public static final String PROPERTY_CATEGORY = "category";
-// public static final String PROPERTY_SPECIES = "species";
-
public static final String PROPERTY_SELECTED_CATEGORY = "selectedCategory";
public static final String PROPERTY_BATCH_WEIGHT = "batchWeight";
@@ -81,6 +79,11 @@
*/
protected Float sampleWeight;
+ /**
+ * Model of sample categories.
+ *
+ * @since 2.4
+ */
protected SampleCategoryModel sampleCategoryModel;
public SplitSpeciesBatchUIModel(SampleCategoryModel sampleCategoryModel) {
@@ -93,18 +96,12 @@
}
public void setBatch(SpeciesBatchRowModel batch) {
-// Object oldSpecies = getSpecies();
Object oldWeight = getBatchWeight();
this.batch = batch;
-// firePropertyChange(PROPERTY_SPECIES, oldSpecies, getSpecies());
firePropertyChange(PROPERTY_BATCH_WEIGHT, oldWeight, getBatchWeight());
}
-// public Species getSpecies() {
-// return batch == null ? null : batch.getSpecies();
-// }
-
public List<SampleCategoryModelEntry> getCategory() {
return category;
}
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-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-09-18 16:47:50 UTC (rev 1188)
@@ -362,6 +362,11 @@
for (SampleCategoryModelEntry sampleCategoryModelEntry : sampleCategoryModel.getCategory()) {
+ if (sampleCategoryModelEntry.getOrder() == 0) {
+ // first category is not editable
+ continue;
+ }
+
MandatorySampleCategoryColumnIdentifier identifier = MandatorySampleCategoryColumnIdentifier.newId(
EditProtocolSpeciesRowModel.PROPERTY_MANDATORY_SAMPLE_CATEGORY_ID,
sampleCategoryModelEntry.getCategoryId(),
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml 2013-09-18 16:47:50 UTC (rev 1188)
@@ -70,4 +70,24 @@
</field-validator>
</field>
+
+ <field name="sampleWeight">
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ sampleWeight == null || sampleWeight > 0 ]]></param>
+ <message>
+ tutti.validator.error.splitSpeciesBatch.sampleWeight.invalidValue
+ </message>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ sampleWeight == null || batchWeight == null || sampleWeight <= batchWeight]]></param>
+ <message>
+ tutti.validator.error.splitSpeciesBatch.sampleWeight.sampleBatchGreaterThanBatchWeight
+ </message>
+ </field-validator>
+
+ </field>
</validators>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml 2013-09-18 16:47:50 UTC (rev 1188)
@@ -69,4 +69,24 @@
</field-validator>
</field>
+
+ <field name="sampleWeight">
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ sampleWeight == null || sampleWeight > 0 ]]></param>
+ <message>
+ tutti.validator.error.splitSpeciesBatch.sampleWeight.invalidValue
+ </message>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ sampleWeight == null || batchWeight == null || sampleWeight <= batchWeight]]></param>
+ <message>
+ tutti.validator.error.splitSpeciesBatch.sampleWeight.sampleBatchGreaterThanBatchWeight
+ </message>
+ </field-validator>
+
+ </field>
</validators>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-18 16:47:50 UTC (rev 1188)
@@ -181,8 +181,12 @@
tutti.createBenthosBatch.field.batchCount.tip=
tutti.createBenthosBatch.field.batchWeight=
tutti.createBenthosBatch.field.batchWeight.tip=
+tutti.createBenthosBatch.field.category=
+tutti.createBenthosBatch.field.categoryField.tip=
tutti.createBenthosBatch.field.sampleCategory=
tutti.createBenthosBatch.field.sampleCategory.tip=
+tutti.createBenthosBatch.field.sampleWeight=
+tutti.createBenthosBatch.field.sampleWeightField.tip=
tutti.createBenthosBatch.field.species=
tutti.createBenthosBatch.field.species.tip=
tutti.createBenthosBatch.title=
@@ -241,8 +245,12 @@
tutti.createSpeciesBatch.field.batchCount.tip=
tutti.createSpeciesBatch.field.batchWeight=
tutti.createSpeciesBatch.field.batchWeight.tip=
+tutti.createSpeciesBatch.field.category=
+tutti.createSpeciesBatch.field.categoryField.tip=
tutti.createSpeciesBatch.field.sampleCategory=
tutti.createSpeciesBatch.field.sampleCategory.tip=
+tutti.createSpeciesBatch.field.sampleWeight=
+tutti.createSpeciesBatch.field.sampleWeightField.tip=
tutti.createSpeciesBatch.field.species=
tutti.createSpeciesBatch.field.species.tip=
tutti.createSpeciesBatch.title=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-09-18 12:38:56 UTC (rev 1187)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-09-18 16:47:50 UTC (rev 1188)
@@ -168,8 +168,12 @@
tutti.createBenthosBatch.field.batchCount.tip=Saisir le nombre d'individus dans le lot
tutti.createBenthosBatch.field.batchWeight=Poids du lot (kg)
tutti.createBenthosBatch.field.batchWeight.tip=Poids du lot (kg)
+tutti.createBenthosBatch.field.category=Catégorie
+tutti.createBenthosBatch.field.categoryField.tip=Choisir le mode de catégorisation
tutti.createBenthosBatch.field.sampleCategory=V / HV
tutti.createBenthosBatch.field.sampleCategory.tip=Catégorie Vrac / Hors Vrac
+tutti.createBenthosBatch.field.sampleWeight=Poids total catégorisé (kg)
+tutti.createBenthosBatch.field.sampleWeightField.tip=Somme des poids saisis ci-dessous (kg)
tutti.createBenthosBatch.field.species=Espèce du lot
tutti.createBenthosBatch.field.species.tip=Espèce du lot
tutti.createBenthosBatch.title=Créer un lot
@@ -225,8 +229,12 @@
tutti.createSpeciesBatch.field.batchCount.tip=Saisir le nombre d'individus dans le lot
tutti.createSpeciesBatch.field.batchWeight=Poids du lot (kg)
tutti.createSpeciesBatch.field.batchWeight.tip=Poids du lot (non obligatoire à ce stade)
+tutti.createSpeciesBatch.field.category=Catégorie
+tutti.createSpeciesBatch.field.categoryField.tip=Choisir le mode de catégorisation
tutti.createSpeciesBatch.field.sampleCategory=V / HV
tutti.createSpeciesBatch.field.sampleCategory.tip=Catégorie Vrac / Hors Vrac
+tutti.createSpeciesBatch.field.sampleWeight=Poids total catégorisé (kg)
+tutti.createSpeciesBatch.field.sampleWeightField.tip=Somme des poids saisis ci-dessous (kg)
tutti.createSpeciesBatch.field.species=Espèce du lot
tutti.createSpeciesBatch.field.species.tip=Code campagne ou Code Rubin – Nom scientifique du lot à créer
tutti.createSpeciesBatch.title=Créer un lot
1
0
r1187 - in trunk/tutti-ui-swing/src/main: filtered-resources help/fr java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create java/fr/ifremer/tutti/ui/swing/content/operation/catches/species java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create resources/i18n
by tchemit@users.forge.codelutin.com 18 Sep '13
by tchemit@users.forge.codelutin.com 18 Sep '13
18 Sep '13
Author: tchemit
Date: 2013-09-18 14:38:56 +0200 (Wed, 18 Sep 2013)
New Revision: 1187
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1187
Log:
fixes #3279: [CAPTURE] pouvoir saisir aussi le nombre d?\195?\168s la cr?\195?\169ation d'un lot + ajout doc
Added:
trunk/tutti-ui-swing/src/main/help/fr/editSampleCategory.html
Modified:
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/help/fr/editCruise.html
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.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/create/CreateSpeciesBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-09-18 12:38:56 UTC (rev 1187)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Wed Sep 18 13:39:38 CEST 2013
+#Wed Sep 18 14:22:16 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions
tutti.createAccidentalBatch.action.save.help=editFishingOperation.html\#captureCapturesAccidentellesActions
@@ -12,9 +12,9 @@
tutti.createAccidentalBatch.help=editFishingOperation.html\#captureCapturesAccidentelles
tutti.createBenthosBatch.action.addSpecies.help=editFishingOperation.html\#captureBenthosActions
tutti.createBenthosBatch.action.cancel.help=editFishingOperation.html\#captureBenthosActions
-tutti.createBenthosBatch.action.save.help=
tutti.createBenthosBatch.action.saveAndClose.help=editFishingOperation.html\#captureBenthosActions
tutti.createBenthosBatch.action.saveAndContinue.help=editFishingOperation.html\#captureBenthosActions
+tutti.createBenthosBatch.field.batchCount.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.batchWeight.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.sampleCategory.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.sortedUnsortedCategory.help=editFishingOperation.html\#captureBenthosFields
@@ -36,11 +36,11 @@
tutti.createMarineLitterBatch.help=editFishingOperation.html\#captureMacroDechets
tutti.createSpeciesBatch.action.addSpecies.help=editFishingOperation.html\#captureEspecesCreeLotActions
tutti.createSpeciesBatch.action.cancel.help=editFishingOperation.html\#captureEspecesCreeLotActions
-tutti.createSpeciesBatch.action.save.help=
tutti.createSpeciesBatch.action.saveAndClose.help=editFishingOperation.html\#captureEspecesCreeLotActions
tutti.createSpeciesBatch.action.saveAndContinue.help=editFishingOperation.html\#captureEspecesCreeLotActions
+tutti.createSpeciesBatch.field.batchCount.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.batchWeight.help=editFishingOperation.html\#captureEspecesCreeLotFields
-tutti.createSpeciesBatch.field.sampleCategory.help=editFishingOperation.html\#captureEspecesCreeLotActions
+tutti.createSpeciesBatch.field.sampleCategory.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.sortedUnsortedCategory.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.species.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.help=editFishingOperation.html\#captureEspecesCreeLot
@@ -50,7 +50,7 @@
tutti.dbManager.action.importDb.help=dbManager.html\#actions
tutti.dbManager.action.installDb.help=dbManager.html\#actions
tutti.dbManager.action.openDb.help=dbManager.html\#actions
-tutti.dbManager.action.reinstallDb.help=
+tutti.dbManager.action.reinstallDb.help=dbManager.html\#actions
tutti.dbManager.action.upgradeDb.help=dbManager.html\#actions
tutti.dbManager.help=dbManager.html
tutti.editAccidentalBatch.action.createBatch.help=editFishingOperation.html\#captureCapturesAccidentellesActions
@@ -211,13 +211,13 @@
tutti.editProtocol.field.vesselUseFeature.help=editProtocol.html\#fieldsCaracteristics
tutti.editProtocol.help=editProtocol.html
tutti.editProtocol.pane.caracteristic.help=editProtocol.html\#fieldsCaracteristics
-tutti.editSampleCategoryModel.action.cancel.help=
-tutti.editSampleCategoryModel.action.close.help=
-tutti.editSampleCategoryModel.action.moveDownEntry.help=
-tutti.editSampleCategoryModel.action.moveUpEntry.help=
-tutti.editSampleCategoryModel.action.removeEntry.help=
-tutti.editSampleCategoryModel.action.save.help=
-tutti.editSampleCategoryModel.help=
+tutti.editSampleCategoryModel.action.cancel.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.close.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.moveDownEntry.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.moveUpEntry.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.removeEntry.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.save.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.help=editSampleCategory.html
tutti.editSpeciesBatch.action.createBatch.help=editFishingOperation.html\#captureEspecesActions
tutti.editSpeciesBatch.action.createMelag.help=editFishingOperation.html\#captureEspecesActions
tutti.editSpeciesBatch.action.editFrequencies.help=editFishingOperation.html\#captureEspecesActions
@@ -261,7 +261,7 @@
tutti.main.action.changeLocaleFR.help=menu.html\#menu_aide
tutti.main.action.changeLocaleUK.help=menu.html\#menu_aide
tutti.main.action.showHelp.help=menu.html\#menu_aide
-tutti.main.help=menu.html\#menu_aide
+tutti.main.help=index.html
tutti.main.menu.action.about.help=menu.html\#menu_aide
tutti.main.menu.action.changeLocale.help=menu.html\#menu_aide
tutti.main.menu.action.changeLocaleFR.help=menu.html\#menu_aide
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-09-18 12:38:56 UTC (rev 1187)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Wed Sep 18 13:39:38 CEST 2013
+#Wed Sep 18 14:22:16 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions
tutti.createAccidentalBatch.action.save.help=editFishingOperation.html\#captureCapturesAccidentellesActions
@@ -12,11 +12,11 @@
tutti.createAccidentalBatch.help=editFishingOperation.html\#captureCapturesAccidentelles
tutti.createBenthosBatch.action.addSpecies.help=editFishingOperation.html\#captureBenthosActions
tutti.createBenthosBatch.action.cancel.help=editFishingOperation.html\#captureBenthosActions
-tutti.createBenthosBatch.action.save.help=editFishingOperation.html\#captureBenthosActions
-tutti.createBenthosBatch.action.saveAndClose.help=
-tutti.createBenthosBatch.action.saveAndContinue.help=
+tutti.createBenthosBatch.action.saveAndClose.help=editFishingOperation.html\#captureBenthosActions
+tutti.createBenthosBatch.action.saveAndContinue.help=editFishingOperation.html\#captureBenthosActions
+tutti.createBenthosBatch.field.batchCount.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.batchWeight.help=editFishingOperation.html\#captureBenthosFields
-tutti.createBenthosBatch.field.sampleCategory.help=
+tutti.createBenthosBatch.field.sampleCategory.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.sortedUnsortedCategory.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.field.species.help=editFishingOperation.html\#captureBenthosFields
tutti.createBenthosBatch.help=editFishingOperation.html\#captureBenthos
@@ -36,9 +36,9 @@
tutti.createMarineLitterBatch.help=editFishingOperation.html\#captureMacroDechets
tutti.createSpeciesBatch.action.addSpecies.help=editFishingOperation.html\#captureEspecesCreeLotActions
tutti.createSpeciesBatch.action.cancel.help=editFishingOperation.html\#captureEspecesCreeLotActions
-tutti.createSpeciesBatch.action.save.help=
tutti.createSpeciesBatch.action.saveAndClose.help=editFishingOperation.html\#captureEspecesCreeLotActions
tutti.createSpeciesBatch.action.saveAndContinue.help=editFishingOperation.html\#captureEspecesCreeLotActions
+tutti.createSpeciesBatch.field.batchCount.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.batchWeight.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.sampleCategory.help=editFishingOperation.html\#captureEspecesCreeLotFields
tutti.createSpeciesBatch.field.sortedUnsortedCategory.help=editFishingOperation.html\#captureEspecesCreeLotFields
@@ -50,7 +50,7 @@
tutti.dbManager.action.importDb.help=dbManager.html\#actions
tutti.dbManager.action.installDb.help=dbManager.html\#actions
tutti.dbManager.action.openDb.help=dbManager.html\#actions
-tutti.dbManager.action.reinstallDb.help=
+tutti.dbManager.action.reinstallDb.help=dbManager.html\#actions
tutti.dbManager.action.upgradeDb.help=dbManager.html\#actions
tutti.dbManager.help=dbManager.html
tutti.editAccidentalBatch.action.createBatch.help=editFishingOperation.html\#captureCapturesAccidentellesActions
@@ -211,13 +211,13 @@
tutti.editProtocol.field.vesselUseFeature.help=editProtocol.html\#fieldsCaracteristics
tutti.editProtocol.help=editProtocol.html
tutti.editProtocol.pane.caracteristic.help=editProtocol.html\#fieldsCaracteristics
-tutti.editSampleCategoryModel.action.cancel.help=
-tutti.editSampleCategoryModel.action.close.help=
-tutti.editSampleCategoryModel.action.moveDownEntry.help=
-tutti.editSampleCategoryModel.action.moveUpEntry.help=
-tutti.editSampleCategoryModel.action.removeEntry.help=
-tutti.editSampleCategoryModel.action.save.help=
-tutti.editSampleCategoryModel.help=
+tutti.editSampleCategoryModel.action.cancel.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.close.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.moveDownEntry.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.moveUpEntry.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.removeEntry.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.action.save.help=editSampleCategory.html#actions
+tutti.editSampleCategoryModel.help=editSampleCategory.html
tutti.editSpeciesBatch.action.createBatch.help=editFishingOperation.html\#captureEspecesActions
tutti.editSpeciesBatch.action.createMelag.help=editFishingOperation.html\#captureEspecesActions
tutti.editSpeciesBatch.action.editFrequencies.help=editFishingOperation.html\#captureEspecesActions
Modified: trunk/tutti-ui-swing/src/main/help/fr/editCruise.html
===================================================================
--- trunk/tutti-ui-swing/src/main/help/fr/editCruise.html 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/help/fr/editCruise.html 2013-09-18 12:38:56 UTC (rev 1187)
@@ -93,6 +93,6 @@
<dt>Enregistrer</dt>
<dd>enregistre les modifications faites dans les différents champs.</dd>
</dl>
-
+</div>
</body>
</html>
\ No newline at end of file
Added: trunk/tutti-ui-swing/src/main/help/fr/editSampleCategory.html
===================================================================
--- trunk/tutti-ui-swing/src/main/help/fr/editSampleCategory.html (rev 0)
+++ trunk/tutti-ui-swing/src/main/help/fr/editSampleCategory.html 2013-09-18 12:38:56 UTC (rev 1187)
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html lang="fr">
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Tutti - Créer / Éditer une campagne</title>
+ <link href="../css/bootstrap.min.css" rel="stylesheet">
+ <link href="../css/style.css" rel="stylesheet">
+ <script type="text/javascript" src="../js/jquery-2.0.3.min.js"></script>
+ <script type="text/javascript" src="../js/bootstrap.min.js"></script>
+</head>
+<body>
+
+<script type="text/javascript" src="../js/navbar.js"></script>
+
+<div class="container">
+ <div class="page-header">
+ <h1>Configurer les catégories</h1>
+ </div>
+
+ <p>Sur cet écran, on peut configuer les catégories à utiliser dans l'écran Espèces / Benthos.</p>
+
+ <h2>Description des champs<a name="fields"></a></h2>
+ TODO
+
+ <h2>Description des actions<a name="actions"></a></h2>
+ <dl>
+ <dt>Fermer</dt>
+ <dd>ferme l'écran.</dd>
+ <dt>Enregistrer</dt>
+ <dd>enregistre les modifications.</dd>
+ </dl>
+</div>
+</body>
+</html>
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/help/fr/editSampleCategory.html
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-09-18 12:38:56 UTC (rev 1187)
@@ -631,19 +631,20 @@
parent.getHandler().setBenthosSelectedCard(EditCatchesUIHandler.CREATE_BATCH_CARD);
}
- public void addBatch(CreateBenthosBatchUIModel bethosBatchRootRowModel) {
- if (bethosBatchRootRowModel.isValid()) {
+ public void addBatch(CreateBenthosBatchUIModel batchRootRowModel) {
+ if (batchRootRowModel.isValid()) {
BenthosBatchTableModel tableModel = getTableModel();
BenthosBatchRowModel newRow = tableModel.createNewRow();
- Species species = bethosBatchRootRowModel.getSpecies();
+ Species species = batchRootRowModel.getSpecies();
newRow.setSpecies(species);
+ newRow.setNumber(batchRootRowModel.getBatchCount());
- CaracteristicQualitativeValue sampleCategory = bethosBatchRootRowModel.getSampleCategory();
+ CaracteristicQualitativeValue sampleCategory = batchRootRowModel.getSampleCategory();
SampleCategory category = newRow.getFirstSampleCategory();
category.setCategoryValue(sampleCategory);
- category.setCategoryWeight(bethosBatchRootRowModel.getBatchWeight());
+ category.setCategoryWeight(batchRootRowModel.getBatchWeight());
newRow.setSampleCategory(category);
recomputeRowValidState(newRow);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.css 2013-09-18 12:38:56 UTC (rev 1187)
@@ -78,6 +78,21 @@
bean: {model};
}
+#batchCountLabel {
+ text: "tutti.createBenthosBatch.field.batchCount";
+ toolTipText: "tutti.createBenthosBatch.field.batchCount.tip";
+ labelFor: {batchCountField};
+ _help: {"tutti.createBenthosBatch.field.batchCount.help"};
+}
+
+#batchCountField {
+ property: batchCount;
+ model: {model.getBatchCount()};
+ useFloat: true;
+ numberPattern: {INT_6_DIGITS_PATTERN};
+ bean: {model};
+}
+
#addSpeciesButton {
text: "tutti.createBenthosBatch.action.addSpecies";
toolTipText: "tutti.createBenthosBatch.action.addSpecies.tip";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUI.jaxx 2013-09-18 12:38:56 UTC (rev 1187)
@@ -99,6 +99,16 @@
</cell>
</row>
+ <!-- Species batch count -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='batchCountLabel'/>
+ </cell>
+ <cell weightx='1.0' columns='2'>
+ <NumberEditor id='batchCountField' constructorParams='this'/>
+ </cell>
+ </row>
+
<!-- Sorted / Unsorted Category -->
<row>
<cell anchor='west'>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-09-18 12:38:56 UTC (rev 1187)
@@ -218,6 +218,7 @@
model.setSpecies(null);
model.setSampleCategory(null);
model.setBatchWeight(null);
+ model.setBatchCount(null);
List<Species> speciesToUse = Lists.newArrayList();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel.java 2013-09-18 12:38:56 UTC (rev 1187)
@@ -55,6 +55,8 @@
public static final String PROPERTY_BATCH_WEIGHT = "batchWeight";
+ public static final String PROPERTY_BATCH_COUNT = "batchCount";
+
/**
* All available species (sets by protocol).
*
@@ -77,13 +79,20 @@
protected CaracteristicQualitativeValue sampleCategory;
/**
- * Incoming batch weight to split.
+ * Batch weight.
*
* @since 0.3
*/
protected Float batchWeight;
/**
+ * Batch count.
+ *
+ * @since 0.3
+ */
+ protected Integer batchCount;
+
+ /**
* Already used species by sample category.
*
* @since 0.3
@@ -141,6 +150,16 @@
firePropertyChange(PROPERTY_BATCH_WEIGHT, oldValue, batchWeight);
}
+ public Integer getBatchCount() {
+ return batchCount;
+ }
+
+ public void setBatchCount(Integer batchCount) {
+ Object oldValue = getBatchCount();
+ this.batchCount = batchCount;
+ firePropertyChange(PROPERTY_BATCH_COUNT, oldValue, batchCount);
+ }
+
public Multimap<CaracteristicQualitativeValue, Species> getSpeciesUsed() {
return speciesUsed;
}
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-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-09-18 12:38:56 UTC (rev 1187)
@@ -633,19 +633,19 @@
parent.getHandler().setSpeciesSelectedCard(EditCatchesUIHandler.CREATE_BATCH_CARD);
}
- public void addBatch(CreateSpeciesBatchUIModel speciesBatchRootRowModel) {
- if (speciesBatchRootRowModel.isValid()) {
+ public void addBatch(CreateSpeciesBatchUIModel batchRootRowModel) {
+ if (batchRootRowModel.isValid()) {
SpeciesBatchTableModel tableModel = getTableModel();
SpeciesBatchRowModel newRow = tableModel.createNewRow();
- Species species = speciesBatchRootRowModel.getSpecies();
+ Species species = batchRootRowModel.getSpecies();
newRow.setSpecies(species);
-
- CaracteristicQualitativeValue sampleCategory = speciesBatchRootRowModel.getSampleCategory();
+ newRow.setNumber(batchRootRowModel.getBatchCount());
+ CaracteristicQualitativeValue sampleCategory = batchRootRowModel.getSampleCategory();
SampleCategory category = newRow.getFirstSampleCategory();
category.setCategoryValue(sampleCategory);
- category.setCategoryWeight(speciesBatchRootRowModel.getBatchWeight());
+ category.setCategoryWeight(batchRootRowModel.getBatchWeight());
newRow.setSampleCategory(category);
recomputeRowValidState(newRow);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.css 2013-09-18 12:38:56 UTC (rev 1187)
@@ -78,6 +78,21 @@
bean: {model};
}
+#batchCountLabel {
+ text: "tutti.createSpeciesBatch.field.batchCount";
+ toolTipText: "tutti.createSpeciesBatch.field.batchCount.tip";
+ labelFor: {batchCountField};
+ _help: {"tutti.createSpeciesBatch.field.batchCount.help"};
+}
+
+#batchCountField {
+ property: batchCount;
+ model: {model.getBatchCount()};
+ useFloat: false;
+ numberPattern: {INT_6_DIGITS_PATTERN};
+ bean: {model};
+}
+
#addSpeciesButton {
text: "tutti.createSpeciesBatch.action.addSpecies";
toolTipText: "tutti.createSpeciesBatch.action.addSpecies.tip";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUI.jaxx 2013-09-18 12:38:56 UTC (rev 1187)
@@ -99,6 +99,16 @@
</cell>
</row>
+ <!-- Species batch count -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='batchCountLabel'/>
+ </cell>
+ <cell weightx='1.0' columns='2'>
+ <NumberEditor id='batchCountField' constructorParams='this'/>
+ </cell>
+ </row>
+
<!-- Sample Category -->
<row>
<cell anchor='west'>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-09-18 12:38:56 UTC (rev 1187)
@@ -218,6 +218,7 @@
model.setSpecies(null);
model.setSampleCategory(null);
model.setBatchWeight(null);
+ model.setBatchCount(null);
List<Species> speciesToUse = Lists.newArrayList();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel.java 2013-09-18 12:38:56 UTC (rev 1187)
@@ -54,6 +54,8 @@
public static final String PROPERTY_BATCH_WEIGHT = "batchWeight";
+ public static final String PROPERTY_BATCH_COUNT = "batchCount";
+
/**
* All available species (sets by protocol).
*
@@ -76,13 +78,20 @@
protected CaracteristicQualitativeValue sampleCategory;
/**
- * Incoming batch weight to split.
+ * Batch weight.
*
* @since 0.3
*/
protected Float batchWeight;
/**
+ * Batch count.
+ *
+ * @since 0.3
+ */
+ protected Integer batchCount;
+
+ /**
* Already used species by sample category.
*
* @since 0.3
@@ -140,6 +149,16 @@
firePropertyChange(PROPERTY_BATCH_WEIGHT, oldValue, batchWeight);
}
+ public Integer getBatchCount() {
+ return batchCount;
+ }
+
+ public void setBatchCount(Integer batchCount) {
+ Object oldValue = getBatchCount();
+ this.batchCount = batchCount;
+ firePropertyChange(PROPERTY_BATCH_COUNT, oldValue, batchCount);
+ }
+
public Multimap<CaracteristicQualitativeValue, Species> getSpeciesUsed() {
return speciesUsed;
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-09-18 12:38:56 UTC (rev 1187)
@@ -177,6 +177,8 @@
tutti.createBenthosBatch.action.saveAndContinue=
tutti.createBenthosBatch.action.saveAndContinue.mnemonic=
tutti.createBenthosBatch.action.saveAndContinue.tip=
+tutti.createBenthosBatch.field.batchCount=
+tutti.createBenthosBatch.field.batchCount.tip=
tutti.createBenthosBatch.field.batchWeight=
tutti.createBenthosBatch.field.batchWeight.tip=
tutti.createBenthosBatch.field.sampleCategory=
@@ -232,8 +234,11 @@
tutti.createSpeciesBatch.action.saveAndClose=
tutti.createSpeciesBatch.action.saveAndClose.mnemonic=
tutti.createSpeciesBatch.action.saveAndClose.tip=
+tutti.createSpeciesBatch.action.saveAndContinue=
tutti.createSpeciesBatch.action.saveAndContinue.mnemonic=
tutti.createSpeciesBatch.action.saveAndContinue.tip=
+tutti.createSpeciesBatch.field.batchCount=
+tutti.createSpeciesBatch.field.batchCount.tip=
tutti.createSpeciesBatch.field.batchWeight=
tutti.createSpeciesBatch.field.batchWeight.tip=
tutti.createSpeciesBatch.field.sampleCategory=
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-09-18 12:11:34 UTC (rev 1186)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-09-18 12:38:56 UTC (rev 1187)
@@ -164,6 +164,8 @@
tutti.createBenthosBatch.action.saveAndContinue=Créer
tutti.createBenthosBatch.action.saveAndContinue.mnemonic=C
tutti.createBenthosBatch.action.saveAndContinue.tip=Enregistrer la création du lot espèce
+tutti.createBenthosBatch.field.batchCount=Nombre
+tutti.createBenthosBatch.field.batchCount.tip=Saisir le nombre d'individus dans le lot
tutti.createBenthosBatch.field.batchWeight=Poids du lot (kg)
tutti.createBenthosBatch.field.batchWeight.tip=Poids du lot (kg)
tutti.createBenthosBatch.field.sampleCategory=V / HV
@@ -219,6 +221,8 @@
tutti.createSpeciesBatch.action.saveAndContinue=Créer
tutti.createSpeciesBatch.action.saveAndContinue.mnemonic=C
tutti.createSpeciesBatch.action.saveAndContinue.tip=Enregistrer la création du lot espèce
+tutti.createSpeciesBatch.field.batchCount=Nombre
+tutti.createSpeciesBatch.field.batchCount.tip=Saisir le nombre d'individus dans le lot
tutti.createSpeciesBatch.field.batchWeight=Poids du lot (kg)
tutti.createSpeciesBatch.field.batchWeight.tip=Poids du lot (non obligatoire à ce stade)
tutti.createSpeciesBatch.field.sampleCategory=V / HV
1
0