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
February 2013
- 6 participants
- 236 discussions
r295 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table
by kmorin@users.forge.codelutin.com 01 Feb '13
by kmorin@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: kmorin
Date: 2013-02-01 18:07:19 +0100 (Fri, 01 Feb 2013)
New Revision: 295
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/295
Log:
add tooltip to table headers
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-02-01 16:39:00 UTC (rev 294)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-02-01 17:07:19 UTC (rev 295)
@@ -359,11 +359,11 @@
TableCellRenderer renderer,
ColumnIdentifier<R> identifier) {
- TableColumn col = new TableColumnExt(model.getColumnCount());
+ TableColumnExt col = new TableColumnExt(model.getColumnCount());
col.setCellEditor(editor);
col.setCellRenderer(renderer);
col.setHeaderValue(_(identifier.getHeaderI18nKey()));
- //TODO Use tip in a header renderer
+ col.setToolTipText(_(identifier.getHeaderTipI18nKey()));
col.setIdentifier(identifier);
model.addColumn(col);
1
0
r294 - in trunk/tutti-persistence-adagio/src: main/java/fr/ifremer/tutti/persistence/service main/java/fr/ifremer/tutti/persistence/service/measure test/java/fr/ifremer/tutti/persistence/service
by blavenier@users.forge.codelutin.com 01 Feb '13
by blavenier@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: blavenier
Date: 2013-02-01 17:39:00 +0100 (Fri, 01 Feb 2013)
New Revision: 294
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/294
Log:
- Fix on SpeciesBatch.sampleCategoryValue : if qualitative value, the UI need a CaracteristicQualitativeValue and not an Integer or a String
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-02-01 16:37:18 UTC (rev 293)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-02-01 16:39:00 UTC (rev 294)
@@ -61,7 +61,9 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.service.measure.MeasurementPersistenceHelper;
@@ -233,13 +235,15 @@
@Override
public List<SpeciesBatchFrequency> getAllSpeciesBatchFrequency(
String speciesBatchId) {
- return null;
+ List<SpeciesBatchFrequency> results = Lists.newArrayList();
+ // TODO
+ return results;
}
@Override
public List<SpeciesBatchFrequency> saveSpeciesBatchFrequency(
String speciesBatchId, List<SpeciesBatchFrequency> frequencies) {
- return null;
+ return frequencies;
}
// ------------------------------------------------------------------------//
@@ -447,13 +451,12 @@
Integer qvValue = (Integer)source[colIndex++];
Float numValue = (Float)source[colIndex++];
String alphaValue = (String)source[colIndex++];
- Serializable value = (qvValue!=null)?qvValue.toString():((numValue!=null)?numValue:alphaValue);
// Species
Integer referenceTaxonId = (Integer)source[colIndex++];
if (referenceTaxonId !=null) {
- Species species = new Species();
- species.setId(referenceTaxonId.toString());
+ // TODO : add cache on getSpecies
+ Species species = referentialService.getSpecies(referenceTaxonId.toString());
result.setSpecies(species);
}
@@ -461,19 +464,15 @@
Integer pmfmIdGrandFather = (Integer)source[colIndex++];
Integer qualitativeIdGrandFather = (Integer)source[colIndex++];
- if (pmfmId != null && value != null) {
- SampleCategoryEnum sampleCategory = measurementHelper.pmfmId2SampleCategory(pmfmId);
- result.setSampleCategoryType(sampleCategory);
- result.setSampleCategoryValue(value);
+ if (pmfmId != null) {
+ setSampleCategoryQualitative(result, pmfmId, numValue, alphaValue, qvValue);
}
-
// When no sorting measurement found, retrieve the sorted/unsorted from an ancestor batch
else {
if (referenceTaxonId != null
&& enumeration.PMFM_ID_SORTED_UNSORTED.equals(pmfmIdGrandFather)
&& qualitativeIdGrandFather != null){
- result.setSampleCategoryType(SampleCategoryEnum.sortedUnsorted);
- result.setSampleCategoryValue(qualitativeIdGrandFather.toString());
+ setSampleCategoryQualitative(result, pmfmIdGrandFather, null, null, qualitativeIdGrandFather);
}
else {
// TODO TC : manage this exception in the UI => 'format des captures incompatibles avec tutti...'
@@ -529,6 +528,37 @@
}
return qualitativeValueId;
}
+
+ protected void setSampleCategoryQualitative(SpeciesBatch target, Integer pmfmId, Float numericalvalue, String alphanumericalValue, Integer qualitativeValueId) {
+ if (pmfmId == null) {
+ return;
+ }
+ SampleCategoryEnum sampleCategory = measurementHelper.pmfmId2SampleCategory(pmfmId);
+ target.setSampleCategoryType(sampleCategory);
+ if (numericalvalue != null) {
+ target.setSampleCategoryValue(numericalvalue);
+ return;
+ }
+ if (alphanumericalValue != null) {
+ target.setSampleCategoryValue(alphanumericalValue);
+ return;
+ }
+
+ Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
+ if (caracteristic == null || caracteristic.getCaracteristicType() != CaracteristicType.QUALITATIVE) {
+ return;
+ }
+ CaracteristicQualitativeValue value = null;
+ for (Iterator iterator = caracteristic.getQualitativeValue().iterator(); iterator
+ .hasNext();) {
+ CaracteristicQualitativeValue qv = (CaracteristicQualitativeValue) iterator.next();
+ if (qualitativeValueId.intValue() == Integer.parseInt(qv.getId())) {
+ value = qv;
+ break;
+ }
+ }
+ target.setSampleCategoryValue(value);
+ }
protected void removeAllChildrenBatchs(Integer batchId, List<SortingBatch> result) {
Iterator<Integer> list = queryListTyped("speciesBatchChildren",
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java 2013-02-01 16:37:18 UTC (rev 293)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/measure/MeasurementPersistenceHelper.java 2013-02-01 16:39:00 UTC (rev 294)
@@ -56,6 +56,7 @@
import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.service.AbstractPersistenceService;
import fr.ifremer.tutti.persistence.service.ReferentialPersistenceService;
@@ -138,9 +139,13 @@
}
else if (caracteristic.getCaracteristicType() == CaracteristicType.QUALITATIVE) {
Integer qvId = null;
- if (value instanceof Integer) {
+ if (value instanceof CaracteristicQualitativeValue) {
+ qvId = Integer.valueOf(((CaracteristicQualitativeValue)value).getId());
+ }
+ else if (value instanceof Integer) {
qvId = (Integer)value;
}
+ // TODO BL : not used ? => to remove
else {
qvId = Integer.valueOf(value.toString());
}
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java 2013-02-01 16:37:18 UTC (rev 293)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java 2013-02-01 16:39:00 UTC (rev 294)
@@ -36,6 +36,7 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
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 org.junit.Before;
@@ -67,14 +68,14 @@
protected CatchBatch catchBacth;
protected List<Species> species;
protected Caracteristic sortedUnsortedPMFM;
- protected String horsVracQualitativeValueId;
- protected String vracQualitativeValueId;
+ protected CaracteristicQualitativeValue horsVracQualitativeValue;
+ protected CaracteristicQualitativeValue vracQualitativeValue;
protected Caracteristic maturityPMFM;
- protected String firstMaturityQualitativeValueId;
+ protected CaracteristicQualitativeValue firstMaturityQualitativeValue;
protected Caracteristic sexPMFM;
- protected String maleQualitativeValueId;
- protected String femaleQualitativeValueId;
- protected String unkQualitativeValueId;
+ protected CaracteristicQualitativeValue maleQualitativeValue;
+ protected CaracteristicQualitativeValue femaleQualitativeValue;
+ protected CaracteristicQualitativeValue unkQualitativeValue;
protected String speciesBacthId = null;
@@ -123,14 +124,14 @@
assertTrue(species.size() > 2);
sortedUnsortedPMFM = referentialService.getSortedUnsortedCaracteristic();
- horsVracQualitativeValueId = sortedUnsortedPMFM.getQualitativeValue(0).getId();
- vracQualitativeValueId = sortedUnsortedPMFM.getQualitativeValue(1).getId();
+ horsVracQualitativeValue = sortedUnsortedPMFM.getQualitativeValue(0);
+ vracQualitativeValue = sortedUnsortedPMFM.getQualitativeValue(1);
maturityPMFM = referentialService.getMaturityCaracteristic();
- firstMaturityQualitativeValueId = maturityPMFM.getQualitativeValue(0).getId();
+ firstMaturityQualitativeValue = maturityPMFM.getQualitativeValue(0);
sexPMFM = referentialService.getSexCaracteristic();
- maleQualitativeValueId = sexPMFM.getQualitativeValue(1).getId();
- femaleQualitativeValueId = sexPMFM.getQualitativeValue(2).getId();
- unkQualitativeValueId = sexPMFM.getQualitativeValue(3).getId();
+ maleQualitativeValue = sexPMFM.getQualitativeValue(1);
+ femaleQualitativeValue = sexPMFM.getQualitativeValue(2);
+ unkQualitativeValue = sexPMFM.getQualitativeValue(3);
}
@Test
@@ -152,7 +153,7 @@
//batch.setCatchBatch(catchBatch);
batch.setSpecies(taxon1);
batch.setSampleCategoryType(SampleCategoryEnum.sortedUnsorted);
- batch.setSampleCategoryValue(vracQualitativeValueId);
+ batch.setSampleCategoryValue(vracQualitativeValue);
batch.setWeight(5f);
assertCreateAndReloadSpeciesBatch(batch, null);
@@ -171,7 +172,7 @@
batch.setComment("ESP1 - Vrac/5 Male/2 ss-ech/1 Nombre/7");
batch.setWeight(2f);
batch.setSampleCategoryType(SampleCategoryEnum.sex);
- batch.setSampleCategoryValue(maleQualitativeValueId);
+ batch.setSampleCategoryValue(maleQualitativeValue);
batch.setSampleCategoryWeight(1f);
batch.setNumber(7);
@@ -188,7 +189,7 @@
batch.setComment("ESP1 - Vrac/5 Female/3 Nombre/14");
batch.setWeight(3f);
batch.setSampleCategoryType(SampleCategoryEnum.sex);
- batch.setSampleCategoryValue(femaleQualitativeValueId);
+ batch.setSampleCategoryValue(femaleQualitativeValue);
batch.setSampleCategoryWeight(null);
batch.setNumber(14);
@@ -205,7 +206,7 @@
//batch.setCatchBatch(catchBatch);
batch.setSpecies(taxon2);
batch.setSampleCategoryType(SampleCategoryEnum.sortedUnsorted);
- batch.setSampleCategoryValue(vracQualitativeValueId);
+ batch.setSampleCategoryValue(vracQualitativeValue);
batch.setWeight(7f);
assertCreateAndReloadSpeciesBatch(batch, null);
@@ -218,7 +219,7 @@
batch.setSpecies(taxon1);
batch.setComment("ESP2 - Vrac/7 UNK/2 ss-ech/1 Nombre/11");
batch.setSampleCategoryType(SampleCategoryEnum.maturity);
- batch.setSampleCategoryValue(firstMaturityQualitativeValueId);
+ batch.setSampleCategoryValue(firstMaturityQualitativeValue);
batch.setWeight(2f);
batch.setSampleCategoryWeight(1f);
batch.setNumber(11);
@@ -230,7 +231,7 @@
// -----------------------------------------------------------------------------
// Batch : ESP2 - Vrac/7 UNK/1.75 ss-ech/1.11 Nombre/99
batch.setSampleCategoryType(SampleCategoryEnum.sex);
- batch.setSampleCategoryValue(unkQualitativeValueId);
+ batch.setSampleCategoryValue(unkQualitativeValue);
batch.setComment("ESP2 - Vrac/7 UNK/1.75 ss-ech/1.11 Nombre/99");
batch.setWeight(1.75f);
batch.setSampleCategoryWeight(1.11f);
@@ -299,7 +300,7 @@
batch.setFishingOperation(fishingOperation);
batch.setSpecies(taxon1);
batch.setSampleCategoryType(SampleCategoryEnum.sortedUnsorted);
- batch.setSampleCategoryValue(vracQualitativeValueId);
+ batch.setSampleCategoryValue(vracQualitativeValue);
batch.setWeight(5f);
assertCreateAndReloadSpeciesBatch(batch, null);
esp1Batch = batch;
@@ -310,7 +311,7 @@
batch.setFishingOperation(fishingOperation);
batch.setSpecies(taxon1);
batch.setSampleCategoryType(SampleCategoryEnum.sex);
- batch.setSampleCategoryValue(maleQualitativeValueId);
+ batch.setSampleCategoryValue(maleQualitativeValue);
batch.setWeight(2f);
assertCreateAndReloadSpeciesBatch(batch, esp1Batch.getId());
1
0
r293 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency resources/i18n
by kmorin@users.forge.codelutin.com 01 Feb '13
by kmorin@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: kmorin
Date: 2013-02-01 17:37:18 +0100 (Fri, 01 Feb 2013)
New Revision: 293
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/293
Log:
fixes #1959 [ESPECES] ajouter la saisie directe du nombre d'individus dans le popup "mensuration" pour le cas o?\195?\185 on ne mesure pas les individus (simple d?\195?\169nombrement).
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/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/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml
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/species/frequency/FrequencyCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java 2013-02-01 15:13:51 UTC (rev 292)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java 2013-02-01 16:37:18 UTC (rev 293)
@@ -152,11 +152,19 @@
// transfer rows to editor
List<SpeciesFrequencyRowModel> frequency = Lists.newArrayList();
- for (SpeciesFrequencyRowModel row : frequencyModel.getRows()) {
- if (row.isValid()) {
+
+ if (frequencyModel.isSimpleCountingMode()) {
+ SpeciesFrequencyRowModel row = new SpeciesFrequencyRowModel();
+ row.setNumber(frequencyModel.getSimpleCount());
+ frequency.add(row);
+
+ } else {
+ for (SpeciesFrequencyRowModel row : frequencyModel.getRows()) {
+ if (row.isValid()) {
- // can keep this row
- frequency.add(row);
+ // can keep this row
+ frequency.add(row);
+ }
}
}
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-02-01 15:13:51 UTC (rev 292)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.css 2013-02-01 16:37:18 UTC (rev 293)
@@ -43,6 +43,7 @@
#stepLabel {
text: "tutti.label.frequencyConfiguration.step";
labelFor: {stepField};
+ enabled: {!model.isSimpleCountingMode()};
}
#stepField {
@@ -51,16 +52,19 @@
useFloat: true;
numberPattern: {DECIMAL1_PATTERN};
bean: {model};
+ enabled: {!model.isSimpleCountingMode()};
}
#lengthStepCaracteristicLabel {
text: "tutti.label.frequencyConfiguration.lengthStepCaracteristic";
labelFor: {lengthStepCaracteristicComboBox};
+ enabled: {!model.isSimpleCountingMode()};
}
#lengthStepCaracteristicComboBox {
property: lengthStepCaracteristic;
selectedItem: {model.getLengthStepCaracteristic()};
+ enabled: {!model.isSimpleCountingMode()};
}
#minStepLabel {
@@ -151,6 +155,20 @@
buttonGroup: "mode";
}
+#simpleCountingModeButton {
+ text: "tutti.label.frequencyConfiguration.mode.simpleCounting";
+ toolTipText: "tutti.label.frequencyConfiguration.mode.simpleCounting.tip";
+ value: "simpleCountingMode";
+ selected: {model.isSimpleCountingMode()};
+ buttonGroup: "mode";
+}
+
+#simpleCountingModeLabel {
+ text: "tutti.label.frequencyConfiguration.no.configuration";
+ horizontalAlignment: {JLabel.CENTER};
+ enabled: false;
+}
+
#closeButton {
actionIcon: "close";
text: "tutti.action.close";
@@ -158,6 +176,14 @@
enabled: {model.getRows().size() == 0 || model.getLengthStepCaracteristic() != null};
}
+#dataFieldLayout {
+ selected: {model.isSimpleCountingMode() ? "noLengthCaracteristicPmfm" : "lengthCaracteristicPmfm"};
+}
+
+#dataFieldPanel {
+ layout: {dataFieldLayout};
+}
+
#table {
selectionMode: {ListSelectionModel.SINGLE_SELECTION};
selectionBackground: {null};
@@ -166,6 +192,20 @@
enabled: {model.getLengthStepCaracteristic() != null}
}
+#simpleCountingLabel {
+ text: "tutti.table.species.frequency.header.number";
+ labelFor: {simpleCountingField};
+}
+
+#simpleCountingField {
+ property: simpleCount;
+ model: {model.getSimpleCount()};
+ useFloat: false;
+ showReset: true;
+ numberPattern: {TuttiUI.INT_6_DIGITS_PATTERN};
+ bean: {model};
+}
+
#cancelButton {
actionIcon: cancel;
mnemonic: C;
@@ -178,18 +218,3 @@
text: "tutti.action.save";
enabled: {model.isValid()};
}
-
-#messagePanel {
- border: {BorderFactory.createTitledBorder(_("tutti.title.messages"))};
- /*height: 200;
- width: 500;*/
-}
-
-#errorTable {
- rowSelectionAllowed: true;
- autoCreateRowSorter: true;
- autoResizeMode: {JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS};
- cellSelectionEnabled: false;
- selectionMode: {ListSelectionModel.SINGLE_SELECTION};
- model: {errorTableModel};
-}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/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-02-01 15:13:51 UTC (rev 292)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx 2013-02-01 16:37:18 UTC (rev 293)
@@ -81,6 +81,9 @@
<CardLayout2Ext id='modeConfigurationLayout'
constructorParams='this, "modeConfigurationPanel"'/>
+
+ <CardLayout2Ext id='dataFieldLayout'
+ constructorParams='this, "dataFieldPanel"'/>
<JPanel id='configurationPanel' layout='{new BorderLayout()}'
constraints='BorderLayout.NORTH'>
@@ -94,6 +97,8 @@
onActionPerformed='model.setConfigurationMode(SpeciesFrequencyUIModel.ConfigurationMode.AUTO_GEN)'/>
<JRadioButton id='rafaleModeButton'
onActionPerformed='model.setConfigurationMode(SpeciesFrequencyUIModel.ConfigurationMode.RAFALE)'/>
+ <JRadioButton id='simpleCountingModeButton'
+ onActionPerformed='model.setConfigurationMode(SpeciesFrequencyUIModel.ConfigurationMode.SIMPLE_COUNTING)'/>
</VBox>
<JPanel id='modeConfigurationPanel' constraints='BorderLayout.CENTER'>
@@ -148,6 +153,10 @@
</row>
</Table>
</JPanel>
+ <JPanel id='simpleCountingModePanel' constraints='"simpleCountingMode"'
+ layout='{new BorderLayout()}'>
+ <JLabel id='simpleCountingModeLabel' constraints='BorderLayout.CENTER'/>
+ </JPanel>
</JPanel>
</JPanel>
<Table fill='both' constraints='BorderLayout.SOUTH'>
@@ -178,11 +187,23 @@
</row>
</Table>
</JPanel>
+
+ <JPanel id='dataFieldPanel' constraints='BorderLayout.CENTER'>
+ <JScrollPane id='tableScrollPane' constraints='"lengthCaracteristicPmfm"'>
+ <JXTable id='table'/>
+ </JScrollPane>
+ <Table constraints='"noLengthCaracteristicPmfm"' fill='horizontal'>
+ <row>
+ <cell>
+ <JLabel id='simpleCountingLabel'/>
+ </cell>
+ <cell weightx='1'>
+ <NumberEditor id='simpleCountingField' constructorParams='this'/>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
- <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table'/>
- </JScrollPane>
-
<!-- actions -->
<JPanel id='actionPanel' layout='{new GridLayout(1, 0)}'
constraints='BorderLayout.SOUTH'>
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-02-01 15:13:51 UTC (rev 292)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-02-01 16:37:18 UTC (rev 293)
@@ -179,7 +179,7 @@
lengthStepCaracteristics = TuttiEntities.splitById(lengthStepCaracterics);
SpeciesFrequencyUIModel model = getModel();
-
+
if (context.isProtocolFilled()) {
// get loaded protocol
@@ -195,7 +195,7 @@
// speciesProtocol = TuttiEntities.splitById(protocol.getSpecies());
}
-
+
//TODO Use protocol to have lengthStepCaracteristic to use (if any protocol)
initBeanComboBox(ui.getLengthStepCaracteristicComboBox(),
lengthStepCaracterics,
@@ -207,9 +207,6 @@
model.setMinStep(10f);
model.setMaxStep(20f);
- //TODO Configure this ?
- model.setConfigurationMode(SpeciesFrequencyUIModel.ConfigurationMode.SIMPLE);
-
ui.getRafaleStepField().getTextField().addKeyListener(new KeyAdapter() {
@Override
@@ -477,11 +474,21 @@
// connect model to validator
ui.getValidator().setBean(model);
-
+
model.setRows(editFrequency);
model.setStep(lengthStep);
model.setLengthStepCaracteristic(lengthStepCaracteristic);
-
+
+ SpeciesFrequencyUIModel.ConfigurationMode mode = SpeciesFrequencyUIModel.ConfigurationMode.SIMPLE;
+ if (protocol != null) {
+ String speciesId = speciesBatch.getSpecies().getId();
+ SpeciesProtocol speciesProtocol = this.speciesProtocol.get(speciesId);
+ if (speciesProtocol.getLengthStepPmfmId() == null) {
+ mode = SpeciesFrequencyUIModel.ConfigurationMode.SIMPLE_COUNTING;
+ }
+ }
+ model.setConfigurationMode(mode);
+
// keep batch (will be used to push back editing entry)
model.setBatch(speciesBatch);
}
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-02-01 15:13:51 UTC (rev 292)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java 2013-02-01 16:37:18 UTC (rev 293)
@@ -52,12 +52,17 @@
public static final String PROPERTY_RAFALE_MODE = "rafaleMode";
+ public static final String PROPERTY_SIMPLE_COUNTING_MODE = "simpleCountingMode";
+
+ public static final String PROPERTY_SIMPLE_COUNT = "simpleCount";
+
public static final String PROPERTY_LENGHT_STEP_CARACTERISTIC = "lengthStepCaracteristic";
public static enum ConfigurationMode {
SIMPLE,
AUTO_GEN,
- RAFALE
+ RAFALE,
+ SIMPLE_COUNTING
}
/**
@@ -101,6 +106,13 @@
* @since 0.3
*/
protected Caracteristic lengthStepCaracteristic;
+
+ /**
+ * Number in case of simple counting mode
+ *
+ * @since 1.0
+ */
+ protected Integer simpleCount;
public SpeciesFrequencyUIModel() {
super(SpeciesBatchRowModel.class, null, null);
@@ -117,6 +129,7 @@
firePropertyChange(PROPERTY_SIMPLE_MODE, null, isSimpleMode());
firePropertyChange(PROPERTY_AUTO_GEN_MODE, null, isAutoGenMode());
firePropertyChange(PROPERTY_RAFALE_MODE, null, isRafaleMode());
+ firePropertyChange(PROPERTY_SIMPLE_COUNTING_MODE, null, isSimpleCountingMode());
}
public float getStep() {
@@ -161,6 +174,16 @@
firePropertyChange(PROPERTY_CAN_GENERATE, null, isCanGenerate());
}
+ public Integer getSimpleCount() {
+ return simpleCount;
+ }
+
+ public void setSimpleCount(Integer simpleCount) {
+ Object oldValue = getSimpleCount();
+ this.simpleCount = simpleCount;
+ firePropertyChange(PROPERTY_SIMPLE_COUNT, oldValue, simpleCount);
+ }
+
public boolean isSimpleMode() {
return ConfigurationMode.SIMPLE == configurationMode;
}
@@ -172,6 +195,10 @@
public boolean isRafaleMode() {
return ConfigurationMode.RAFALE == configurationMode;
}
+
+ public boolean isSimpleCountingMode() {
+ return ConfigurationMode.SIMPLE_COUNTING == configurationMode;
+ }
public boolean isCanGenerate() {
return minStep != null && maxStep != null && maxStep > minStep;
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml 2013-02-01 15:13:51 UTC (rev 292)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml 2013-02-01 16:37:18 UTC (rev 293)
@@ -28,23 +28,22 @@
<field name="lengthStepCaracteristic">
- <field-validator type="required" short-circuit="true">
- <message>
- tutti.validator.error.speciesFrequency.lengthStepCaracteristic.required
- </message>
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ isSimpleCountingMode() || lengthStepCaracteristic != null ]]>
+ </param>
+ <message>tutti.validator.error.speciesFrequency.lengthStepCaracteristic.required</message>
</field-validator>
-
+
</field>
<field name="rows">
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
- <![CDATA[ oneRowValid ]]>
+ <![CDATA[ isSimpleCountingMode() || rows != null ]]>
</param>
- <message>
- tutti.validator.error.speciesFrequency.oneRowRequired
- </message>
+ <message>tutti.validator.error.speciesFrequency.oneRowRequired</message>
</field-validator>
</field>
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-02-01 15:13:51 UTC (rev 292)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-01 16:37:18 UTC (rev 293)
@@ -202,6 +202,8 @@
tutti.label.frequencyConfiguration.mode.rafale.tip=Mode où on ne saisit uniquement la classe de taille (les nombres seront alors incrémentés...)
tutti.label.frequencyConfiguration.mode.simple=Mode simple
tutti.label.frequencyConfiguration.mode.simple.tip=Mode par défaut on on doit tout saisir (les classes de tailles et les nombres)
+tutti.label.frequencyConfiguration.mode.simpleCounting=Mode simple dénombrement
+tutti.label.frequencyConfiguration.mode.simpleCounting.tip=Mode par défaut si la classe de taille n'est pas renseignée dans le protocole.
tutti.label.frequencyConfiguration.no.configuration=< Pas de configuration >
tutti.label.frequencyConfiguration.rafaleStep=Classe de taille à incrémenter
tutti.label.frequencyConfiguration.step=Pas de la classe de taille
1
0
r292 - trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service
by blavenier@users.forge.codelutin.com 01 Feb '13
by blavenier@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: blavenier
Date: 2013-02-01 16:13:51 +0100 (Fri, 01 Feb 2013)
New Revision: 292
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/292
Log:
- return empty list instead of null, in methods getAllBenthos, getAllPlancton, etc. (need for UI)
- initialization multirigNumber and multirigAggregation to 1, when value not found in database (could only append when opening a cruise not filled with tutti)
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/MacroWasteBatchPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceImpl.java
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-02-01 15:06:29 UTC (rev 291)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/AccidentalBatchPersistenceServiceImpl.java 2013-02-01 15:13:51 UTC (rev 292)
@@ -25,10 +25,14 @@
*/
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
+import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;
+import com.google.common.collect.Lists;
+
import java.util.List;
/**
@@ -44,7 +48,10 @@
@Override
public List<AccidentalBatch> getAllAccidentalBatch(String fishingOperationId) {
- return null;
+ List<AccidentalBatch> result = Lists.newArrayList();
+
+ // TODO
+ return result;
}
@Override
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-02-01 15:06:29 UTC (rev 291)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-02-01 15:13:51 UTC (rev 292)
@@ -25,10 +25,14 @@
*/
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
+import fr.ifremer.tutti.persistence.entities.data.MacroWasteBatch;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;
+import com.google.common.collect.Lists;
+
import java.util.List;
/**
@@ -44,7 +48,10 @@
@Override
public List<BenthosBatch> getAllBenthosBatch(String fishingOperationId) {
- return null;
+ List<BenthosBatch> result = Lists.newArrayList();
+
+ // TODO
+ return result;
}
@Override
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-02-01 15:06:29 UTC (rev 291)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-02-01 15:13:51 UTC (rev 292)
@@ -25,6 +25,7 @@
*/
import java.sql.Timestamp;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -258,21 +259,26 @@
"pmfmIdTrawlNet", IntegerType.INSTANCE, enumeration.PMFM_ID_MULTIRIG_NUMBER);
List<Gear> gears = Lists.newArrayList();
- int maxTrawlNetFound = 0;
+ int maxMultirigNumberFound = 0;
while (list.hasNext()) {
Object[] gearRow = list.next();
Gear target = referentialService.getGear((Integer) gearRow[0]);
- Float trawlNet = (Float) gearRow[1];
- if (trawlNet != null && trawlNet.intValue() > maxTrawlNetFound) {
- maxTrawlNetFound = trawlNet.intValue();
+ Float multirigNumber = (Float) gearRow[1];
+ if (multirigNumber != null && multirigNumber.intValue() > maxMultirigNumberFound) {
+ maxMultirigNumberFound = multirigNumber.intValue();
}
gears.add(target);
}
result.setGear(gears);
- if (maxTrawlNetFound > 0) {
- result.setMultirigNumber(maxTrawlNetFound);
+ if (maxMultirigNumberFound > 0) {
+ result.setMultirigNumber(maxMultirigNumberFound);
}
}
+ // Force initialization of multirigNumber to 1 initialization (need for UI)
+ if (result.getMultirigNumber() == null){
+ log.warn(MessageFormat.format("Cruise with id={0} has been load with a default multirigNumber=1, beacause not multirigNumber were found in database.", new Object[]{id}));
+ result.setMultirigNumber(1);
+ }
return result;
}
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-02-01 15:06:29 UTC (rev 291)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-02-01 15:13:51 UTC (rev 292)
@@ -26,6 +26,7 @@
import java.io.Serializable;
import java.sql.Timestamp;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -186,7 +187,13 @@
if (multirigAggregation != null) {
fishingOperation.setMultirigAggregation(multirigAggregation);
}
+ // Force initialization to 1 initialization (need for UI)
+ else {
+ log.warn(MessageFormat.format("FishingOperation with id={0} has been load with a default multirigAggregation={1}, because no multirigAggregation were found in database.", new Object[]{fishingOperation.getId(), fishingOperation.getMultirigAggregation()}));
+ fishingOperation.setMultirigAggregation("1");
+ }
+
fishingOperations.add(fishingOperation);
}
return fishingOperations;
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/MacroWasteBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/MacroWasteBatchPersistenceServiceImpl.java 2013-02-01 15:06:29 UTC (rev 291)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/MacroWasteBatchPersistenceServiceImpl.java 2013-02-01 15:13:51 UTC (rev 292)
@@ -25,10 +25,14 @@
*/
import fr.ifremer.tutti.persistence.entities.data.MacroWasteBatch;
+import fr.ifremer.tutti.persistence.entities.data.PlanktonBatch;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;
+import com.google.common.collect.Lists;
+
import java.util.List;
/**
@@ -44,7 +48,11 @@
@Override
public List<MacroWasteBatch> getAllMacroWasteBatch(String fishingOperationId) {
- return null;
+ List<MacroWasteBatch> result = Lists.newArrayList();
+
+ // TODO BL
+
+ return result;
}
@Override
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceImpl.java 2013-02-01 15:06:29 UTC (rev 291)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/PlanktonBatchPersistenceServiceImpl.java 2013-02-01 15:13:51 UTC (rev 292)
@@ -29,6 +29,8 @@
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;
+import com.google.common.collect.Lists;
+
import java.util.List;
/**
@@ -44,7 +46,11 @@
@Override
public List<PlanktonBatch> getAllPlanktonBatch(String fishingOperationId) {
- return null;
+ List<PlanktonBatch> result = Lists.newArrayList();
+
+ // TODO BL
+
+ return result;
}
@Override
1
0
r291 - in trunk/tutti-ui-swing/src/main/assembly: full min
by bpoussin@users.forge.codelutin.com 01 Feb '13
by bpoussin@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: bpoussin
Date: 2013-02-01 16:06:29 +0100 (Fri, 01 Feb 2013)
New Revision: 291
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/291
Log:
modif date script shell
implantation script bat
Modified:
trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat
trunk/tutti-ui-swing/src/main/assembly/min/launch.bat
trunk/tutti-ui-swing/src/main/assembly/min/update.bat
trunk/tutti-ui-swing/src/main/assembly/min/update.sh
Modified: trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat 2013-02-01 14:22:46 UTC (rev 290)
+++ trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat 2013-02-01 15:06:29 UTC (rev 291)
@@ -0,0 +1,19 @@
+@echo off
+
+set OLDDIR=%CD%
+cd /d %~dp0%
+set REP=%CD%
+
+set JAVA_HOME=%REP%\jre
+set JAVA_COMMAND=%JAVA_HOME%\bin\java
+
+echo current dir=%REP% and JAVA_HOME=%JAVA_HOME%
+
+:start
+
+copy tutti-app\update.bat .
+call update.bat
+call tutti-app\launch.bat --option tutti.launch.mode=full
+if errorlevel 88 goto start
+
+cd %OLDDIR%
Modified: trunk/tutti-ui-swing/src/main/assembly/min/launch.bat
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/min/launch.bat 2013-02-01 14:22:46 UTC (rev 290)
+++ trunk/tutti-ui-swing/src/main/assembly/min/launch.bat 2013-02-01 15:06:29 UTC (rev 291)
@@ -1,2 +1,11 @@
+@echo off
-java -Xmx1024M -jar ${project.build.finalName}.${project.packaging} %1 %2 %3 %4 %5 %6 %7 %8 %9
+set OLDDIR=%CD%
+cd /d %~dp0%
+
+echo lauch java
+%JAVA_COMMAND% -Xmx1024M -jar ${project.build.finalName}.${project.packaging} %1 %2 %3 %4 %5 %6 %7 %8 %9
+set exitcode=%ERRORLEVEL%
+echo Stop Tutti with exitcode: %exitcode%
+cd %OLDDIR%
+exit /b %exitcode%
Modified: trunk/tutti-ui-swing/src/main/assembly/min/update.bat
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/min/update.bat 2013-02-01 14:22:46 UTC (rev 290)
+++ trunk/tutti-ui-swing/src/main/assembly/min/update.bat 2013-02-01 15:06:29 UTC (rev 291)
@@ -0,0 +1,31 @@
+@echo off
+
+set t=%time::=%
+set BACKUP_DATE=%date:~6,4%%date:~3,2%%date:~0,2%%t:~0,6%
+
+if not exist "NEW\jre" goto tutti
+
+rem deplacement de l'ancienne jre
+set /p oldVersion=<jre\version.appup
+set /p newVersion=<NEW\jre\version.appup
+set backupdir=OLD\jre-%oldVersion: =%-%BACKUP_DATE: =%
+echo Update jre version %oldVersion: =% to %newVersion: =% old jre keep in "%backupdir%"
+if not exist "OLD" mkdir OLD
+move jre "%backupdir%"
+move NEW\jre jre
+
+:tutti
+
+if not exist "NEW\tutti-app" goto end
+
+rem deplacement de l'ancien tutti
+set /p oldVersion=<tutti-app\version.appup
+set /p newVersion=<NEW\tutti-app\version.appup
+set backupdir=OLD\tutti-app-%oldVersion: =%-%BACKUP_DATE: =%
+echo Update tutti-app version %oldVersion: =% to %newVersion: =% old jre keep in "%backupdir%"
+if not exist "OLD" mkdir OLD
+move tutti-app "%backupdir%"
+move NEW\tutti-app tutti-app
+
+
+:end
Modified: trunk/tutti-ui-swing/src/main/assembly/min/update.sh
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/min/update.sh 2013-02-01 14:22:46 UTC (rev 290)
+++ trunk/tutti-ui-swing/src/main/assembly/min/update.sh 2013-02-01 15:06:29 UTC (rev 291)
@@ -1,11 +1,11 @@
#!/bin/bash
-BACKUP_DATE=$(date -d %Y-%j)
+BACKUP_DATE=$(date +%Y%m%d%H%M%S)
if [ -d NEW/jre ]; then
oldVersion=`cat jre/version.appup`
newVersion=`cat NEW/jre/version.appup`
echo "Update jre version $oldVersion to $newVersion"
- mkdir OLD
+ mkdir -p OLD
backupdir=OLD/jre-$oldVersion-$BACKUP_DATE
echo "Backup jre old version to $backupDir"
#mv jre $backupDir
@@ -16,7 +16,7 @@
oldVersion=`cat tutti-app/version.appup`
newVersion=`cat NEW/tutti-app/version.appup`
echo "Update tutti version $oldVersion to $newVersion"
- mkdir OLD
+ mkdir -p OLD
backupdir=OLD/tutti-app-$oldVersion-$BACKUP_DATE
echo "Backup tutti old version to $backupDir"
#mv tutti-app $backupDir
1
0
r290 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/operation/catches/species resources/i18n
by kmorin@users.forge.codelutin.com 01 Feb '13
by kmorin@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: kmorin
Date: 2013-02-01 15:22:46 +0100 (Fri, 01 Feb 2013)
New Revision: 290
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/290
Log:
fixes #1964 [CAPTURE - ESPECES] Cat?\195?\169gorisation impossible si un poids sous-?\195?\169chantillonn?\195?\169 a ?\195?\169t?\195?\169 saisi
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/resources/i18n/tutti-ui-swing_fr_FR.properties
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-02-01 11:46:34 UTC (rev 289)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-02-01 14:22:46 UTC (rev 290)
@@ -78,10 +78,12 @@
import java.util.EnumMap;
import java.util.List;
import java.util.Set;
+import javax.swing.JOptionPane;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.validator.swing.SwingValidator;
import static org.nuiton.i18n.I18n.n_;
+import static org.nuiton.i18n.I18n._;
/**
* @author tchemit <chemit(a)codelutin.com>
@@ -674,7 +676,7 @@
}
public void splitSpeciesBatch() {
-
+
JXTable table = getTable();
// get selected row
@@ -687,15 +689,33 @@
SpeciesBatchRowModel parentBatch = tableModel.getEntry(rowIndex);
- if (log.isInfoEnabled()) {
- log.info("Open split batch ui for row [" + rowIndex + ']');
+ boolean split = true;
+ if (parentBatch.getWeight() != null) {
+ int i = JOptionPane.showConfirmDialog(
+ ui,
+ _("tutti.dialog.catches.species.split.weightNotNull.message"),
+ _("tutti.dialog.catches.species.split.weightNotNull.title"),
+ JOptionPane.OK_CANCEL_OPTION);
+
+ if (i == JOptionPane.OK_OPTION) {
+ parentBatch.setWeight(null);
+
+ } else {
+ split = false;
+ }
}
- EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
- SplitSpeciesBatchUI splitBatchEditor = parent.getSpeciesTabSplitBatch();
+ if (split) {
+ if (log.isInfoEnabled()) {
+ log.info("Open split batch ui for row [" + rowIndex + ']');
+ }
- splitBatchEditor.getHandler().editBatch(parentBatch);
- parent.getHandler().setSelectedCard(EditCatchesUIHandler.SPLIT_BATCH_CARD);
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ SplitSpeciesBatchUI splitBatchEditor = parent.getSpeciesTabSplitBatch();
+
+ splitBatchEditor.getHandler().editBatch(parentBatch);
+ parent.getHandler().setSelectedCard(EditCatchesUIHandler.SPLIT_BATCH_CARD);
+ }
}
public void splitBatch(SplitSpeciesBatchUIModel splitModel) {
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-02-01 11:46:34 UTC (rev 289)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-01 14:22:46 UTC (rev 290)
@@ -115,6 +115,8 @@
tutti.config.ui.useSexagecimalEditor=Utiliser l'éditeur sexagécimal pour entrer des coordonnées
tutti.dialog.askSaveBeforeLeaving.message=Vous avez fait des modifications qu vous n'avez pas enregistrées. Voulez-vous les enregistrer ?
tutti.dialog.askSaveBeforeLeaving.title=Modifications non enregistrées
+tutti.dialog.catches.species.split.weightNotNull.message=Pour catégoriser un lot, il ne doit pas avoir de poids sous-échantillonné. Catégoriser le lot mettra le poids sous-échantillonné à nul.
+tutti.dialog.catches.species.split.weightNotNull.title=Poids sous-échantillonné non nul
tutti.duration.format=dj Hh m'm'
tutti.errorTable.title=Rapport de contrôles
tutti.file.csv=Extension d'un fichier csv
1
0
r289 - trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service
by blavenier@users.forge.codelutin.com 01 Feb '13
by blavenier@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: blavenier
Date: 2013-02-01 12:46:34 +0100 (Fri, 01 Feb 2013)
New Revision: 289
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/289
Log:
Remove some imports
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-02-01 11:45:40 UTC (rev 288)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-02-01 11:46:34 UTC (rev 289)
@@ -27,7 +27,6 @@
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
-import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashSet;
@@ -49,8 +48,6 @@
import com.google.common.collect.Lists;
import fr.ifremer.adagio.core.dao.administration.user.PersonDao;
-import fr.ifremer.adagio.core.dao.data.measure.GearPhysicalMeasurement;
-import fr.ifremer.adagio.core.dao.data.measure.GearUseMeasurement;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.ObservedFishingTrip;
import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruise;
@@ -59,15 +56,10 @@
import fr.ifremer.adagio.core.dao.referential.QualityFlag;
import fr.ifremer.adagio.core.dao.referential.QualityFlagDao;
import fr.ifremer.adagio.core.dao.referential.gear.GearDao;
-import fr.ifremer.adagio.core.dao.referential.gear.GearImpl;
import fr.ifremer.adagio.core.dao.referential.location.Location;
import fr.ifremer.adagio.core.dao.referential.location.LocationDao;
-import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm;
import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmDao;
-import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValue;
import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueDao;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
import fr.ifremer.adagio.core.dao.referential.vessel.VesselDao;
import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-02-01 11:45:40 UTC (rev 288)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-02-01 11:46:34 UTC (rev 289)
@@ -33,7 +33,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.logging.SimpleFormatter;
import javax.annotation.Resource;
@@ -47,41 +46,22 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import fr.ifremer.adagio.core.dao.administration.user.DepartmentImpl;
-import fr.ifremer.adagio.core.dao.data.batch.Batch;
-import fr.ifremer.adagio.core.dao.data.batch.BatchImpl;
-import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatchDao;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatchImpl;
import fr.ifremer.adagio.core.dao.data.batch.SortingBatch;
import fr.ifremer.adagio.core.dao.data.batch.SortingBatchDao;
import fr.ifremer.adagio.core.dao.data.batch.SortingBatchImpl;
-import fr.ifremer.adagio.core.dao.data.batch.denormalized.DenormalizedBatch;
import fr.ifremer.adagio.core.dao.data.batch.denormalized.DenormalizedBatchDao;
-import fr.ifremer.adagio.core.dao.data.batch.denormalized.DenormalizedBatchImpl;
-import fr.ifremer.adagio.core.dao.data.measure.Measurement;
import fr.ifremer.adagio.core.dao.data.measure.QuantificationMeasurement;
import fr.ifremer.adagio.core.dao.data.measure.SortingMeasurement;
-import fr.ifremer.adagio.core.dao.data.measure.VesselUseMeasurement;
-import fr.ifremer.adagio.core.dao.data.operation.FishingOperationImpl;
-import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruise;
-import fr.ifremer.adagio.core.dao.data.vessel.feature.use.VesselUseFeatures;
import fr.ifremer.adagio.core.dao.referential.QualityFlagImpl;
-import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValue;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
-import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
-import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.service.measure.MeasurementPersistenceHelper;
1
0
r288 - in trunk/tutti-persistence-adagio/src: main/java/fr/ifremer/tutti/persistence/service main/resources test/java/fr/ifremer/tutti/persistence/service
by blavenier@users.forge.codelutin.com 01 Feb '13
by blavenier@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: blavenier
Date: 2013-02-01 12:45:40 +0100 (Fri, 01 Feb 2013)
New Revision: 288
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/288
Log:
- CruisePersistenceService : Fix save : remove old gear if need
- SpeciesBatchPersistenceService : Add impl on deleteSpeciesbatch() and deleteSpeciesSubBatch() + Unit test
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-02-01 11:12:52 UTC (rev 287)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-02-01 11:45:40 UTC (rev 288)
@@ -27,10 +27,13 @@
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import javax.annotation.Resource;
@@ -47,6 +50,7 @@
import fr.ifremer.adagio.core.dao.administration.user.PersonDao;
import fr.ifremer.adagio.core.dao.data.measure.GearPhysicalMeasurement;
+import fr.ifremer.adagio.core.dao.data.measure.GearUseMeasurement;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.ObservedFishingTrip;
import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruise;
@@ -490,9 +494,18 @@
if (copyIfNull && source.isGearEmpty() && fishingTrip.getGearPhysicalFeatures() != null) {
fishingTrip.getGearPhysicalFeatures().clear();
} else if (!source.isGearEmpty()) {
+ // Create a list to trace not updated items, to be able to remove them later
+ Set<GearPhysicalFeatures> notChangedGearPhysicalFeatures = new HashSet<GearPhysicalFeatures>();
+ if (fishingTrip.getGearPhysicalFeatures() != null) {
+ notChangedGearPhysicalFeatures.addAll(fishingTrip.getGearPhysicalFeatures());
+ }
+
+ // Create or update a geaPhysicalFeatures for each gears in the cruise
for (int i = 0; i < source.getGear().size(); i++) {
Gear gear = source.getGear().get(i);
GearPhysicalFeatures guf = measurementHelper.getGearPhysicalfeatures(fishingTrip, Integer.valueOf(gear.getId()), true);
+ notChangedGearPhysicalFeatures.remove(guf);
+
guf.setStartDate(fishingTrip.getDepartureDateTime());
guf.setEndDate(fishingTrip.getReturnDateTime());
guf.setVessel(fishingTrip.getVessel());
@@ -509,6 +522,16 @@
measurementHelper.setGearPhysicalMeasurement(target, guf, enumeration.PMFM_ID_MULTIRIG_NUMBER, Float.valueOf(source.getMultirigNumber()), null, null);
}
}
+
+ // Remove deleted gear physical features
+ if (fishingTrip.getGearPhysicalFeatures() != null && notChangedGearPhysicalFeatures.size() > 0) {
+ for (GearPhysicalFeatures guf : notChangedGearPhysicalFeatures) {
+ if (guf.getGearPhysicalMeasurements() != null) {
+ guf.getGearPhysicalMeasurements().clear();
+ }
+ fishingTrip.getGearPhysicalFeatures().remove(guf);
+ }
+ }
}
// Save miscDataBuffer into fishing trip comments, because it's not used in Allegro
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-02-01 11:12:52 UTC (rev 287)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-02-01 11:45:40 UTC (rev 288)
@@ -544,7 +544,7 @@
vesselUseFeatures = target.getVesselUseFeatures().iterator().next();
}
- // Create a list to store all updates, then remove not updated items
+ // Create a list to trace not updated items, to be able to remove them later
Set<VesselUseMeasurement> notChangedVesselUseMeasurements = new HashSet<VesselUseMeasurement>();
if (vesselUseFeatures.getVesselUseMeasurements() != null) {
notChangedVesselUseMeasurements.addAll(vesselUseFeatures.getVesselUseMeasurements());
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-02-01 11:12:52 UTC (rev 287)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-02-01 11:45:40 UTC (rev 288)
@@ -80,6 +80,7 @@
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.service.measure.MeasurementPersistenceHelper;
@@ -234,10 +235,19 @@
@Override
public void deleteSpeciesBatch(String id) {
+ Preconditions.checkNotNull(id);
+
+ getCurrentSession().setFlushMode(FlushMode.COMMIT);
+
+ List<SortingBatch> allChildrenBatchs = Lists.newArrayList();
+ removeAllChildrenBatchs(Integer.valueOf(id), allChildrenBatchs);
+
+ getCurrentSession().flush();
}
@Override
public void deleteSpeciesSubBatch(String id) {
+ deleteSpeciesBatch(id);
}
@Override
@@ -387,10 +397,10 @@
// Retrieve category type
Integer pmfmId = measurementHelper.sampleCategory2PmfmId(source.getSampleCategoryType());
if (pmfmId == null || !pmfmId.equals(enumeration.PMFM_ID_SORTED_UNSORTED)) {
- throw new DataIntegrityViolationException(MessageFormat.format("A species batch with no parent should have a sampleCategoryType with id={0}.",
- new Object[]{enumeration.PMFM_ID_SORTED_UNSORTED}));
+ throw new DataIntegrityViolationException(MessageFormat.format("A species batch with no parent should have a sampleCategoryType {0} (PMFM.ID={1})",
+ new Object[]{SampleCategoryEnum.sortedUnsorted.name(), enumeration.PMFM_ID_SORTED_UNSORTED}));
}
- Integer qualitativeValueId = Integer.valueOf(source.getSampleCategoryValue().toString());
+ Integer qualitativeValueId = convertSampleCategoryValueIntoQualitativeId(source.getSampleCategoryValue());
Object[] cols = queryUnique("parentBatch",
"fishingOperationId", IntegerType.INSTANCE, Integer.valueOf(source.getFishingOperation().getId()),
@@ -399,6 +409,9 @@
"pmfmIdSortingType", IntegerType.INSTANCE, enumeration.PMFM_ID_SORTING_TYPE,
"qualitativeIdSortingType", IntegerType.INSTANCE, enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES);
+ if (cols == null) {
+ throw new DataIntegrityViolationException("Catch batchs not presents, or invalid batch tree structure. Please make sure CatchBatch has been saved before to create a SpeciesBatch.");
+ }
// Parent Batch
Integer parentBatchId = (Integer)cols[0];
SortingBatch parentBatch = load(SortingBatchImpl.class, parentBatchId);
@@ -522,6 +535,37 @@
applyInheritedProperties(speciesBatch.getChildBatchs(),
(hasAppliedCategoryValue ? null : inheritedSampleCategoryValue),
speciesBatch.getSpecies(), result);
+ }
+ }
+ Integer convertSampleCategoryValueIntoQualitativeId(Serializable value) {
+ if (value == null) return null;
+ Integer qualitativeValueId = null;
+ if (value instanceof CaracteristicQualitativeValue) {
+ CaracteristicQualitativeValue cqValue =(CaracteristicQualitativeValue)value;
+ qualitativeValueId = Integer.valueOf(cqValue.getId());
}
+ else if (value instanceof String){
+ qualitativeValueId = Integer.valueOf((String)value);
+ }
+ return qualitativeValueId;
}
+
+ protected void removeAllChildrenBatchs(Integer batchId, List<SortingBatch> result) {
+ Iterator<Integer> list = queryListTyped("speciesBatchChildren",
+ "batchId", IntegerType.INSTANCE, batchId);
+
+ // First, add childrens
+ while (list.hasNext()) {
+
+ removeAllChildrenBatchs(list.next(), result);
+ }
+
+ // Then add the given batch (after children, because of order need in "delete")
+ SortingBatch batch = sortingBatchDao.load(batchId);
+ //SortingBatch batch = (SortingBatch)getCurrentSession().get(SortingBatchImpl.class, batchId);
+ batch.getSortingMeasurements().clear();
+ batch.getQuantificationMeasurements().clear();
+ sortingBatchDao.remove(batch);
+ }
+
}
Modified: trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-02-01 11:12:52 UTC (rev 287)
+++ trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-02-01 11:45:40 UTC (rev 288)
@@ -434,7 +434,19 @@
]]>
<query-param name="batchId" type="java.lang.Integer"/>
</query>
-
+
+ <query name="speciesBatchChildren">
+ <![CDATA[
+ SELECT
+ cb.id
+ FROM
+ SortingBatchImpl b
+ INNER JOIN b.childBatchs cb
+ WHERE
+ b.id = :batchId
+ ]]>
+ <query-param name="batchId" type="java.lang.Integer"/>
+ </query>
<!-- ===================================================================== -->
<!-- === Requete techniques sur référentiels [REF-TXXX] === -->
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java 2013-02-01 11:12:52 UTC (rev 287)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java 2013-02-01 11:45:40 UTC (rev 288)
@@ -41,6 +41,7 @@
import java.util.Calendar;
import java.util.GregorianCalendar;
+import java.util.Iterator;
import java.util.List;
import static org.junit.Assert.assertEquals;
@@ -198,19 +199,53 @@
@Test
public void saveCruise(/*Cruise bean*/) {
- Cruise cruise = service.getCruise(dbResource.getFixtures().cruiseId());
+ // -----------------------------------------------------------------------------
+ // 1. Init a cruise (by copy)
+ // -----------------------------------------------------------------------------
+ Cruise cruise = service.getCruise(dbResource.getFixtures().cruiseId());
cruise.setId(null);
+ Calendar calendar = new GregorianCalendar();
+ cruise.setBeginDate(calendar.getTime());
+
+ cruise.setYear(calendar.get(Calendar.YEAR));
+
+ calendar.add(Calendar.MONTH, 1); // add one month
+ cruise.setEndDate(calendar.getTime());
+
cruise = service.createCruise(cruise);
+
+ // -----------------------------------------------------------------------------
+ // 2. Apply some changes
+ // -----------------------------------------------------------------------------
+ // Name :
cruise.setName("Unit-test-" + System.currentTimeMillis());
+
+ // Remove gear, then add another gear
+ Gear previousGear = cruise.getGear(0);
+ cruise.getGear().clear();
+ List<Gear> gears = referentialService.getAllFishingGear();
+ for (Iterator iterator = gears.iterator(); iterator.hasNext();) {
+ Gear gear = (Gear) iterator.next();
+
+ // Make sure the gear is different before to add it
+ if (gear.getId() != null && !gear.getId().equals(previousGear.getId())) {
+ cruise.addGear(gear);
+ break;
+ }
+ }
+ // Save changes, then check
Cruise savedCruise = service.saveCruise(cruise);
assertNotNull(savedCruise);
- assertEquals(cruise.getId(), savedCruise.getId());
- assertEquals(cruise.getName(), savedCruise.getName());
- assertEquals(cruise.getComment(), savedCruise.getComment());
- assertNotNull(cruise.getGear());
- assertEquals(cruise.getGear().size(), savedCruise.getGear().size());
+ Cruise reloadedCruise = service.getCruise(savedCruise.getId());
+
+ assertEquals(cruise.getId(), reloadedCruise.getId());
+ assertEquals(cruise.getName(), reloadedCruise.getName());
+ assertEquals(cruise.getComment(), reloadedCruise.getComment());
+ assertNotNull(reloadedCruise.getGear());
+ assertEquals(cruise.getGear().size(), reloadedCruise.getGear().size());
+ assertEquals(cruise.getGear(0).getId(), reloadedCruise.getGear(0).getId());
}
}
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java 2013-02-01 11:12:52 UTC (rev 287)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceTest.java 2013-02-01 11:45:40 UTC (rev 288)
@@ -42,6 +42,8 @@
import org.junit.ClassRule;
import org.junit.Ignore;
import org.junit.Test;
+import org.springframework.dao.DataRetrievalFailureException;
+
import static org.junit.Assert.*;
/**
@@ -64,6 +66,16 @@
protected FishingOperation fishingOperation;
protected CatchBatch catchBacth;
protected List<Species> species;
+ protected Caracteristic sortedUnsortedPMFM;
+ protected String horsVracQualitativeValueId;
+ protected String vracQualitativeValueId;
+ protected Caracteristic maturityPMFM;
+ protected String firstMaturityQualitativeValueId;
+ protected Caracteristic sexPMFM;
+ protected String maleQualitativeValueId;
+ protected String femaleQualitativeValueId;
+ protected String unkQualitativeValueId;
+
protected String speciesBacthId = null;
@@ -109,24 +121,25 @@
species = referentialService.getAllSpecies();
assertNotNull(species);
assertTrue(species.size() > 2);
+
+ sortedUnsortedPMFM = referentialService.getSortedUnsortedCaracteristic();
+ horsVracQualitativeValueId = sortedUnsortedPMFM.getQualitativeValue(0).getId();
+ vracQualitativeValueId = sortedUnsortedPMFM.getQualitativeValue(1).getId();
+ maturityPMFM = referentialService.getMaturityCaracteristic();
+ firstMaturityQualitativeValueId = maturityPMFM.getQualitativeValue(0).getId();
+ sexPMFM = referentialService.getSexCaracteristic();
+ maleQualitativeValueId = sexPMFM.getQualitativeValue(1).getId();
+ femaleQualitativeValueId = sexPMFM.getQualitativeValue(2).getId();
+ unkQualitativeValueId = sexPMFM.getQualitativeValue(3).getId();
}
@Test
public void createSpeciesBatch(/*SpeciesBatch bean, String parentBatchId*/) {
- Caracteristic sortedUnsortedPMFM = referentialService.getSortedUnsortedCaracteristic();
- String horsVracQualitativeValueId = sortedUnsortedPMFM.getQualitativeValue(0).getId();
- String vracQualitativeValueId = sortedUnsortedPMFM.getQualitativeValue(1).getId();
- Caracteristic maturityPMFM = referentialService.getMaturityCaracteristic();
- String firstMaturityQualitativeValueId = maturityPMFM.getQualitativeValue(0).getId();
- Species taxon1 = species.get(0);
- Species taxon2 = species.get(1);
- Caracteristic sexPMFM = referentialService.getSexCaracteristic();
- String maleQualitativeValueId = sexPMFM.getQualitativeValue(1).getId();
- String femaleQualitativeValueId = sexPMFM.getQualitativeValue(2).getId();
- String unkQualitativeValueId = sexPMFM.getQualitativeValue(3).getId();
SpeciesBatch esp1Batch = null;
SpeciesBatch esp2Batch = null;
SpeciesBatch batch = null;
+ Species taxon1 = species.get(0);
+ Species taxon2 = species.get(1);
// -----------------------------------------------------------------------------
// 1. Test with only mandatory properties
@@ -271,13 +284,53 @@
}
@Test
- @Ignore
public void deleteSpeciesBatch(/*String id*/) {
+ SpeciesBatch esp1Batch = null;
+ SpeciesBatch childBatch = null;
+ SpeciesBatch batch = null;
+ Species taxon1 = species.get(0);
+
+ // -----------------------------------------------------------------------------
+ // 1. Create two batchs (parent + child), then remove the parent batch
+ // -----------------------------------------------------------------------------
+ // batch : ESP1 Vrac/5
+ batch = new SpeciesBatch();
+ batch.setParentBatch(null);
+ batch.setFishingOperation(fishingOperation);
+ batch.setSpecies(taxon1);
+ batch.setSampleCategoryType(SampleCategoryEnum.sortedUnsorted);
+ batch.setSampleCategoryValue(vracQualitativeValueId);
+ batch.setWeight(5f);
+ assertCreateAndReloadSpeciesBatch(batch, null);
+ esp1Batch = batch;
+
+ // batch : ESP1 Vrac/5 Male/2
+ batch = new SpeciesBatch();
+ batch.setParentBatch(esp1Batch);
+ batch.setFishingOperation(fishingOperation);
+ batch.setSpecies(taxon1);
+ batch.setSampleCategoryType(SampleCategoryEnum.sex);
+ batch.setSampleCategoryValue(maleQualitativeValueId);
+ batch.setWeight(2f);
+ assertCreateAndReloadSpeciesBatch(batch, esp1Batch.getId());
+
+ // Try to remove
+ service.deleteSpeciesBatch(esp1Batch.getId());
+
+ // Check if remove
+ try {
+ batch = service.getSpeciesBatch(esp1Batch.getId());
+ assertNull(batch);
+ }
+ catch(DataRetrievalFailureException drfe) {
+ assertNotNull(drfe);
+ }
}
@Test
@Ignore
public void deleteSpeciesSubBatch(/*String id*/) {
+ // Idem deleteSpeciesBatch
}
@Test
1
0
01 Feb '13
Author: kmorin
Date: 2013-02-01 12:12:52 +0100 (Fri, 01 Feb 2013)
New Revision: 287
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/287
Log:
- fixes #1845 [ERGO] - Principe d'enregistrement lors de la fermeture de l'?\195?\169cran
- javadoc
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ChangeScreenAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java
Modified:
trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java
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/species/SampleCategoryType.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx
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/fishing/CaracteristicRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
trunk/tutti-ui-swing/src/main/resources/icons/action-alert-warning.png
Modified: trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/license/THIRD-PARTY.properties 2013-02-01 11:12:52 UTC (rev 287)
@@ -24,7 +24,7 @@
# Please fill the missing licenses for dependencies :
#
#
-#Fri Feb 01 01:12:25 CET 2013
+#Fri Feb 01 12:08:25 CET 2013
antlr--antlr--2.7.6=BSD License
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -55,7 +55,6 @@
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JList;
-import javax.swing.JMenuItem;
import javax.swing.JRootPane;
import javax.swing.KeyStroke;
import javax.swing.ListCellRenderer;
@@ -130,6 +129,18 @@
return context.getConfig();
}
+ /**
+ * Can the UI be closed? It is useful whe the user wants to exit the current
+ * screen but the model is modified: we can then ask the user if he wants to
+ * save or not.
+ *
+ * @param nextScreen the next screen to display
+ * @return
+ */
+ public boolean canCloseUI(TuttiScreen nextScreen) {
+ return true;
+ }
+
public void setText(KeyEvent event, String property) {
JTextComponent field = (JTextComponent) event.getSource();
String value = field.getText();
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ChangeScreenAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ChangeScreenAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ChangeScreenAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -0,0 +1,35 @@
+
+package fr.ifremer.tutti.ui.swing;
+
+import java.awt.event.ActionEvent;
+
+/**
+ * Abstract action defining actions which sets the screen of the application.
+ *
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
+ */
+public abstract class ChangeScreenAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ protected ChangeScreenAction(MainUIHandler handler,
+ String name,
+ String icon,
+ String text,
+ String tip,
+ boolean hideBody) {
+ super(handler, name, icon, text, tip, hideBody);
+ }
+
+ @Override
+ protected boolean prepareAction(ActionEvent event) {
+ boolean result = super.prepareAction(event);
+ result &= getHandler().getCurrentHandler().canCloseUI(getNextScreen());
+ return result;
+ }
+
+ /**
+ * @return the next screen to display.
+ */
+ protected abstract TuttiScreen getNextScreen();
+
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -33,12 +33,12 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the cruise edition screen to edit the selected cruise.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class EditSelectedCruiseAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+public class EditSelectedCruiseAction extends ChangeScreenAction {
private static final long serialVersionUID = 1L;
@@ -61,6 +61,11 @@
if (log.isInfoEnabled()) {
log.info("Edit cruise: " + getContext().getCruiseId());
}
- getContext().setScreen(TuttiScreen.EDIT_CRUISE);
+ getContext().setScreen(getNextScreen());
}
+
+ @Override
+ protected TuttiScreen getNextScreen() {
+ return TuttiScreen.EDIT_CRUISE;
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -31,12 +31,12 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the catches edition screen to edit the selected catches.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class EditSelectedCruiseCatchesAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+public class EditSelectedCruiseCatchesAction extends ChangeScreenAction {
private static final long serialVersionUID = 1L;
@@ -56,6 +56,12 @@
Preconditions.checkState(getContext().isCruiseFilled());
getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_EDIT);
getContext().setScreen(null);
- getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
+ getContext().setScreen(getNextScreen());
}
+
+ @Override
+ protected TuttiScreen getNextScreen() {
+ return TuttiScreen.EDIT_FISHING_OPERATION;
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -33,12 +33,12 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the program edition screen to edit the selected program.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class EditSelectedProgramAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+public class EditSelectedProgramAction extends ChangeScreenAction {
private static final long serialVersionUID = 1L;
@@ -61,6 +61,12 @@
if (log.isInfoEnabled()) {
log.info("Edit program: " + getContext().getProgramId());
}
- getContext().setScreen(TuttiScreen.EDIT_PROGRAM);
+ getContext().setScreen(getNextScreen());
}
+
+ @Override
+ protected TuttiScreen getNextScreen() {
+ return TuttiScreen.EDIT_PROGRAM;
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -33,12 +33,12 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the protocol edition screen to edit the selected protocol.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class EditSelectedProtocolAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+public class EditSelectedProtocolAction extends ChangeScreenAction {
private static final long serialVersionUID = 1L;
@@ -62,6 +62,12 @@
if (log.isInfoEnabled()) {
log.info("Edit protocol: " + getContext().getProtocolId());
}
- getContext().setScreen(TuttiScreen.EDIT_PROTOCOL);
+ getContext().setScreen(getNextScreen());
}
+
+ @Override
+ protected TuttiScreen getNextScreen() {
+ return TuttiScreen.EDIT_PROTOCOL;
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -274,6 +274,11 @@
ui.getValidatorMessageWidget().clearValidators();
}
+ public AbstractTuttiUIHandler getCurrentHandler() {
+ TuttiUI<?, ?> body = (TuttiUI<?, ?>) currentBody;
+ return body.getHandler();
+ }
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
@@ -286,7 +291,7 @@
if (currentBody != null) {
TuttiUI<?, ?> body = (TuttiUI<?, ?>) currentBody;
body.getHandler().onCloseUI();
-
+
context.getSwingSession().save();
ui.getBody().remove(currentBody);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -29,12 +29,12 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the cruise selection screen (home).
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class SelectCruiseAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+public class SelectCruiseAction extends ChangeScreenAction {
private static final long serialVersionUID = 1L;
@@ -52,6 +52,11 @@
@Override
protected void doAction(ActionEvent e) {
// Preconditions.checkNotNull(getContext().isCruiseFilled());
- getContext().setScreen(TuttiScreen.SELECT_CRUISE);
+ getContext().setScreen(getNextScreen());
}
+
+ @Override
+ protected TuttiScreen getNextScreen() {
+ return TuttiScreen.SELECT_CRUISE;
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -31,12 +31,12 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the catches validation screen to edit the selected catches.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class ValidateSelectedCruiseCatchesAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+public class ValidateSelectedCruiseCatchesAction extends ChangeScreenAction {
private static final long serialVersionUID = 1L;
@@ -55,6 +55,11 @@
Preconditions.checkState(getContext().isCruiseFilled());
getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_VALIDATE);
getContext().setScreen(null);
- getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
+ getContext().setScreen(getNextScreen());
}
+
+ @Override
+ protected TuttiScreen getNextScreen() {
+ return TuttiScreen.EDIT_FISHING_OPERATION;
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -32,7 +32,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Cancels the edition of a cruise
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -33,7 +33,9 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.MainUI;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUI;
+import java.awt.event.ActionEvent;
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.context.JAXXContextEntryDef;
import jaxx.runtime.validator.swing.SwingValidator;
@@ -44,6 +46,7 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
+import javax.swing.JOptionPane;
/**
* Handler of UI {@link EditCruiseUI}.
@@ -263,6 +266,20 @@
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
}
+
+ @Override
+ public boolean canCloseUI(TuttiScreen nextScreen) {
+ boolean result = true;
+ if (getModel().isModify()) {
+ int answer = askSaveBeforeLeaving(ui);
+ result = answer == JOptionPane.NO_OPTION;
+ if (answer == JOptionPane.YES_OPTION) {
+ ActionEvent event = new ActionEvent(nextScreen, nextScreen.ordinal(), null);
+ ui.getSaveCruiseAction().actionPerformed(event);
+ }
+ }
+ return result;
+ }
@Override
public EditCruiseUIModel getModel() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -36,6 +36,8 @@
import static org.nuiton.i18n.I18n._;
/**
+ * Saves a cruise
+ *
* @author kmorin <kmorin(a)codelutin.com>
* @since 1.0
*/
@@ -53,6 +55,11 @@
);
}
+ /**
+ * If the event source is a TuttiScreen, then the screen changes to the source.
+ * Otherwise, the screen changes to the home.
+ * @param event
+ */
@Override
protected void doAction(ActionEvent event) {
TuttiUIContext context = getContext();
@@ -73,7 +80,13 @@
context.setProgramId(saved.getProgram().getId());
context.setCruiseId(saved.getId());
- context.setScreen(TuttiScreen.SELECT_CRUISE);
+ TuttiScreen nextScreen;
+ if (event.getSource().getClass().isAssignableFrom(TuttiScreen.class)) {
+ nextScreen = (TuttiScreen) event.getSource();
+ } else {
+ nextScreen = TuttiScreen.SELECT_CRUISE;
+ }
+ context.setScreen(nextScreen);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -36,7 +36,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the protocol creation screen with the data of an already existing protocol.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -35,7 +35,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the catches edition screen.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -34,7 +34,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the cruise edition screen.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -34,7 +34,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the program edition screen.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -36,7 +36,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the protocol edition screen.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -38,7 +38,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens a file chooser and exports the protocol into the selected file.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -39,7 +39,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens a file chooser and imports the protocol from the selected file.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -32,7 +32,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the cruise creation screen.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -32,7 +32,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the program creation screen.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -34,7 +34,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the protocol creation screen.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -34,7 +34,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Opens the catches validation screen.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -0,0 +1,63 @@
+
+package fr.ifremer.tutti.ui.swing.content.operation;
+
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import java.awt.event.ActionEvent;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Cancels the edition of a fishing operation and potentially switch to another tab.
+ *
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
+ */
+public class CancelEditFishingOperationAction extends AbstractTuttiAction<EditFishingOperationUIModel, EditFishingOperationUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(SaveFishingOperationAction.class);
+
+ public CancelEditFishingOperationAction(EditFishingOperationUIHandler handler) {
+ super(handler,
+ "cancelFishingOperation",
+ "cancel",
+ _("tutti.action.cancel.editFishingOperation"),
+ _("tutti.action.cancel.editFishingOperation.tip"),
+ false
+ );
+ }
+
+ /**
+ * If the event source is an EditFishingOperationUIHandler,
+ * then the tab panel of the parent switch to the index set
+ * in the ID param of the event.
+ *
+ * @param event
+ * @throws Exception
+ */
+ @Override
+ protected void doAction(ActionEvent event) throws Exception {
+ FishingOperationsUIHandler parentHandler = getHandler().getParentUi().getHandler();
+ if (getModel().isCreate()) {
+ if (log.isInfoEnabled()) {
+ log.info("Cancel edition for fishingOperation ");
+ }
+ // cancel to create a new fishingOperation
+ parentHandler.closeCurrentFishingOperation();
+
+ } else {
+ parentHandler.reloadFishingOperation();
+ }
+ if (event.getSource() != null
+ && event.getSource().getClass().isAssignableFrom(EditFishingOperationUIHandler.class)) {
+
+ int newIndex = event.getID();
+ parentHandler.getTabPanel().setSelectedIndex(newIndex);
+ }
+ }
+
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-02-01 11:12:52 UTC (rev 287)
@@ -455,8 +455,7 @@
}
#cancelButton {
- actionIcon: cancel;
- text:"tutti.action.cancel";
+ action: {cancelFishingOperationAction};
}
#importCasinoButton {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-02-01 11:12:52 UTC (rev 287)
@@ -78,6 +78,8 @@
initializer='getContextValue(EditFishingOperationUIModel.class)'/>
<SaveFishingOperationAction id='saveFishingOperationAction' constructorParams='handler'/>
+
+ <CancelEditFishingOperationAction id='cancelFishingOperationAction' constructorParams='handler'/>
<SwingValidatorMessageTableModel id='errorTableModel'/>
@@ -88,6 +90,7 @@
<field name='fishingOperationNumber'
component='fishingOperationNumberField'/>
<field name='gearShootingStartDate' component='gearShootingStartDateField'/>
+ <field name='gearShootingEndDate' component='gearShootingEndDateField'/>
<field name='comment' component='commentPane'/>
<field name='saisisseur' component='saisisseurList'/>
<field name='vessel' component='vesselComboBox'/>
@@ -523,7 +526,7 @@
<JPanel layout='{new BorderLayout()}' constraints='BorderLayout.SOUTH'>
<JPanel id='createFishingOperationActions' layout='{new GridLayout(1,0)}'
constraints='BorderLayout.CENTER'>
- <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='cancelButton'/>
<JButton id='saveButton'/>
</JPanel>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -40,6 +40,7 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.MainUI;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.CaracteristicTabUIModel;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUI;
@@ -63,10 +64,10 @@
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
+import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
-import jaxx.runtime.SwingUtil;
import jaxx.runtime.validator.swing.SwingValidator;
/**
@@ -350,28 +351,42 @@
}
@Override
- public boolean onHideTab() {
- boolean result = true;
- if (isAModelModified()) {
+ public boolean canCloseUI(TuttiScreen nextScreen) {
+ boolean result = !isAModelModified();
+ if (!result) {
int answer = askSaveBeforeLeaving(ui);
+ ActionEvent event = new ActionEvent(nextScreen, nextScreen.ordinal(), null);
switch (answer) {
case JOptionPane.OK_OPTION:
- ui.getSaveFishingOperationAction().actionPerformed(null);
+ ui.getSaveFishingOperationAction().actionPerformed(event);
break;
+ }
+ result = answer == JOptionPane.NO_OPTION;
+ }
+ return result;
+ }
+ @Override
+ public boolean onHideTab(int currentIndex, int newIndex) {
+ boolean result = !isAModelModified();
+ if (!result) {
+ int answer = askSaveBeforeLeaving(ui);
+ ActionEvent event = new ActionEvent(this, newIndex, null);
+ switch (answer) {
+ case JOptionPane.OK_OPTION:
+ ui.getSaveFishingOperationAction().actionPerformed(event);
+ break;
+
case JOptionPane.NO_OPTION:
- parentUi.getHandler().reloadFishingOperation();
+ ui.getCancelFishingOperationAction().actionPerformed(event);
break;
-
- case JOptionPane.CANCEL_OPTION:
- result = false;
}
}
return result;
}
@Override
- public void onShowTab() {
+ public void onShowTab(int currentIndex, int newIndex) {
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
main.registerValidator(ui.getValidator());
@@ -483,19 +498,6 @@
}
}
- public void cancel() {
- if (getModel().isCreate()) {
- if (log.isInfoEnabled()) {
- log.info("Cancel edition for fishingOperation ");
- }
- // cancel to create a new fishingOperation
- parentUi.getHandler().closeCurrentFishingOperation();
-
- } else {
- parentUi.getHandler().reloadFishingOperation();
- }
- }
-
public void importCasino() {
//TODO
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -31,6 +31,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler;
@@ -169,9 +170,6 @@
ui.getTabPane().setSelectedIndex(0);
ui.getFishingOperationTabContent().getFishingOperationTabPane().setSelectedIndex(0);
- // when quitting ui, let's de-select fishingOperation (will save any changes)
- selectFishingOperation(null);
-
closeUI(ui.getFishingOperationTabContent());
closeUI(ui.getCatchesTabContent());
}
@@ -182,6 +180,15 @@
}
@Override
+ public boolean canCloseUI(TuttiScreen nextScreen) {
+ boolean result = super.canCloseUI(nextScreen);
+ if (getTabPanel().getSelectedIndex() == 0) {
+ result = ui.getFishingOperationTabContent().getHandler().canCloseUI(nextScreen);
+ }
+ return result;
+ }
+
+ @Override
public SwingValidator<FishingOperationsUIModel> getValidator() {
return null;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -28,6 +28,7 @@
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.CaracteristicTabUIModel;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUIModel;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.gearshooting.GearShootingTabUIModel;
@@ -42,6 +43,8 @@
import static org.nuiton.i18n.I18n._;
/**
+ * Saves a fishing operation and potentially sets another screen or switch to another tab.
+ *
* @author kmorin <kmorin(a)codelutin.com>
* @since 1.0
*/
@@ -61,11 +64,21 @@
false
);
}
-
+
+ /**
+ * If the event source is an EditFishingOperationUIHandler,
+ * then the tab panel of the parent switch to the index set
+ * in the ID param of the event.
+ * If the event source is a TuttiScreen, then the screen changes to the source.
+ *
+ * @param event
+ * @throws Exception
+ */
@Override
protected void doAction(ActionEvent event) {
EditFishingOperationUIHandler handler = getHandler();
+ FishingOperationsUIHandler parentHandler = getHandler().getParentUi().getHandler();
TuttiBeanMonitor<EditFishingOperationUIModel> monitor = handler.getFishingOperationMonitor();
@@ -116,8 +129,20 @@
getModel().setModify(false);
// persist current fishingOperation
- handler.getParentUi().getHandler().saveFishingOperation(toSave);
+ parentHandler.saveFishingOperation(toSave);
}
+
+ if (event.getSource() != null) {
+ Class sourceClass = event.getSource().getClass();
+ if (sourceClass.isAssignableFrom(EditFishingOperationUIHandler.class)) {
+ int newIndex = event.getID();
+ parentHandler.getTabPanel().setSelectedIndex(newIndex);
+
+ } else if (sourceClass.isAssignableFrom(TuttiScreen.class)) {
+ TuttiScreen nextScreen = (TuttiScreen) event.getSource();
+ getContext().setScreen(nextScreen);
+ }
+ }
}
}
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-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -157,7 +157,7 @@
}
@Override
- public boolean onHideTab() {
+ public boolean onHideTab(int currentIndex, int newIndex) {
AbstractTuttiBeanUIModel model = getModel();
boolean result = model.isValid();
if (result && model.isModify()) {
@@ -167,7 +167,7 @@
}
@Override
- public void onShowTab() {
+ public void onShowTab(int currentIndex, int newIndex) {
registerValidators();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -27,9 +27,7 @@
import com.google.common.collect.Maps;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.service.DecoratorService;
-
import java.util.EnumMap;
-
import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
@@ -79,6 +77,11 @@
return result;
}
+ @Override
+ public String toString() {
+ return getLabel();
+ }
+
public static final EnumMap<SampleCategoryEnum, SampleCategoryType> enumToType;
static {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-02-01 11:12:52 UTC (rev 287)
@@ -166,7 +166,7 @@
}
#filterSpeciesBatchRootButton {
- text: "tutti.label.filterSpeciesBatchMode.mode.root";
+ text: {_("tutti.label.filterSpeciesBatchMode.mode.root", model.getRootNumber())};
toolTipText: "tutti.label.filterSpeciesBatchMode.mode.root.tip";
value: "root";
selected: {model.isTableViewModeRoot()};
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-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -330,7 +330,9 @@
super.onModelRowsChanged(rows);
// clear speciesUsed
- getModel().getSpeciesUsed().clear();
+ SpeciesBatchUIModel model = getModel();
+ model.getSpeciesUsed().clear();
+ model.setRootNumber(0);
for (SpeciesBatchRowModel row : rows) {
updateTotalFromFrequencies(row);
@@ -742,6 +744,9 @@
// save new batches
saveRows(newBatches);
+
+ SpeciesBatchUIModel model = getModel();
+ model.setLeafNumber(model.getLeafNumber() + newBatches.size() - 1);
}
recomputeBatchActionEnable();
@@ -1184,8 +1189,13 @@
if (log.isInfoEnabled()) {
log.info("Remove from speciesUsed: " + decorate(row.getSortedUnsortedCategoryValue()) + " - " + decorate(row.getSpecies()));
}
- getModel().getSpeciesUsed().remove(row.getSortedUnsortedCategoryValue(),
+ SpeciesBatchUIModel model = getModel();
+ model.getSpeciesUsed().remove(row.getSortedUnsortedCategoryValue(),
row.getSpecies());
+
+ if (row.isBatchRoot()) {
+ model.setRootNumber(model.getRootNumber() - 1);
+ }
}
protected void addToSpeciesUsed(SpeciesBatchRowModel row) {
@@ -1195,8 +1205,11 @@
if (log.isInfoEnabled()) {
log.info("Add to speciesUsed: " + decorate(row.getSortedUnsortedCategoryValue()) + " - " + decorate(row.getSpecies()));
}
- getModel().getSpeciesUsed().put(row.getSortedUnsortedCategoryValue(),
+ SpeciesBatchUIModel model = getModel();
+ model.getSpeciesUsed().put(row.getSortedUnsortedCategoryValue(),
row.getSpecies());
+
+ model.setRootNumber(model.getRootNumber() + 1);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -58,6 +58,10 @@
public static final String PROPERTY_TABLE_VIEW_MODE_LEAF = "tableViewModeLeaf";
public static final String PROPERTY_TABLE_VIEW_MODE_ROOT = "tableViewModeRoot";
+
+ public static final String PROPERTY_ROOT_NUMBER = "rootNumber";
+
+ public static final String PROPERTY_LEAF_NUMBER = "leafNumber";
/**
* Sampling order (sets by protocol).
@@ -115,6 +119,16 @@
* @since 0.3
*/
protected boolean removeSpeciesSubBatchEnabled;
+
+ /**
+ * @since 1.0
+ */
+ protected int rootNumber;
+
+ /**
+ * @since 1.0
+ */
+ protected int leafNumber;
public SpeciesBatchUIModel(EditCatchesUIModel catchesUIModel) {
super(catchesUIModel,
@@ -221,6 +235,26 @@
return speciesUsed;
}
+ public int getRootNumber() {
+ return rootNumber;
+ }
+
+ public void setRootNumber(int rootNumber) {
+ Object oldValue = getRootNumber();
+ this.rootNumber = rootNumber;
+ firePropertyChange(PROPERTY_ROOT_NUMBER, oldValue, rootNumber);
+ }
+
+ public int getLeafNumber() {
+ return leafNumber;
+ }
+
+ public void setLeafNumber(int leafNumber) {
+ Object oldValue = getLeafNumber();
+ this.leafNumber = leafNumber;
+ firePropertyChange(PROPERTY_LEAF_NUMBER, oldValue, leafNumber);
+ }
+
public boolean isCreateSpeciesBatchEnabled() {
return createSpeciesBatchEnabled;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -31,8 +31,6 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchTableModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.CreateSpeciesBatchUI;
import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
import jaxx.runtime.SwingUtil;
@@ -52,10 +50,7 @@
import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.table.DefaultTableCellRenderer;
-import jaxx.runtime.swing.CardLayout2Ext;
-import static org.nuiton.i18n.I18n._;
-
/**
* Component to render and edit frequency stuff from batch table.
*
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-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -43,8 +43,6 @@
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
-import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
-import jaxx.runtime.validator.swing.SwingValidatorUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -59,7 +57,6 @@
import java.util.List;
import java.util.Map;
import jaxx.runtime.SwingUtil;
-import jaxx.runtime.swing.CardLayout2Ext;
import jaxx.runtime.validator.swing.SwingValidator;
/**
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -30,20 +30,19 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import java.awt.Dimension;
import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
import java.util.List;
-import java.util.concurrent.Executors;
import javax.swing.SwingUtilities;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import static org.nuiton.i18n.I18n._;
+
/**
- *
+ * Enable to select a species to the species selected in the protocol.
+ *
* @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
*/
public class AddSpeciesAction extends AbstractTuttiAction<CreateSpeciesBatchUIModel, CreateSpeciesBatchUIHandler> {
@@ -52,8 +51,6 @@
/** Logger. */
private static final Log log = LogFactory.getLog(AddSpeciesAction.class);
-// protected AddSpeciesUI popup;
-
protected List<Species> allSpecies;
public AddSpeciesAction(CreateSpeciesBatchUIHandler handler) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -26,26 +26,15 @@
*/
import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.TuttiPersistence;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
-import fr.ifremer.tutti.ui.swing.TuttiUI;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.List;
-import javax.swing.JDialog;
-import jaxx.runtime.SwingUtil;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
- *
* @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
*/
public class AddSpeciesUIHandler extends AbstractTuttiUIHandler<AddSpeciesUIModel> {
@@ -75,6 +64,9 @@
@Override
public void onCloseUI() {
+ if (log.isInfoEnabled()) {
+ log.info("Closing: " + ui);
+ }
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIModel.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIModel.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -31,8 +31,8 @@
import java.util.List;
/**
- *
* @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
*/
public class AddSpeciesUIModel extends AbstractTuttiBeanUIModel<AddSpeciesUIModel, AddSpeciesUIModel> {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -45,7 +45,6 @@
import java.beans.PropertyChangeListener;
import java.util.List;
import jaxx.runtime.SwingUtil;
-import jaxx.runtime.swing.CardLayout2Ext;
import jaxx.runtime.validator.swing.SwingValidator;
/**
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 2013-02-01 11:12:52 UTC (rev 287)
@@ -45,7 +45,6 @@
}
#categoryComboBox {
- property: selectedCategory;
selectedItem: {model.getSelectedCategory()};
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx 2013-02-01 11:12:52 UTC (rev 287)
@@ -82,8 +82,7 @@
<JLabel id='categoryLabel'/>
</cell>
<cell weightx='1.0'>
- <BeanComboBox id='categoryComboBox' constructorParams='this'
- genericType='SampleCategoryType'/>
+ <JComboBox id='categoryComboBox'/>
</cell>
</row>
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-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -39,8 +39,6 @@
import fr.ifremer.tutti.ui.swing.util.Cancelable;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
-import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
-import jaxx.runtime.validator.swing.SwingValidatorUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
@@ -49,8 +47,8 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
+import javax.swing.DefaultComboBoxModel;
import jaxx.runtime.SwingUtil;
-import jaxx.runtime.swing.CardLayout2Ext;
import jaxx.runtime.validator.swing.SwingValidator;
/**
@@ -168,11 +166,7 @@
initUI(ui);
SplitSpeciesBatchUIModel model = getModel();
-
- initBeanComboBox(ui.getCategoryComboBox(),
- Lists.<SampleCategoryType>newArrayList(),
- model.getSelectedCategory());
-
+
// when category changed, remove selected category
model.addPropertyChangeListener(SplitSpeciesBatchUIModel.PROPERTY_CATEGORY, new PropertyChangeListener() {
@Override
@@ -185,7 +179,8 @@
source.setSelectedCategory(null);
// fill comboBox with new list
- ui.getCategoryComboBox().setData((List<SampleCategoryType>) evt.getNewValue());
+ List<SampleCategoryType> data = (List<SampleCategoryType>) evt.getNewValue();
+ ui.getCategoryComboBox().setModel(new DefaultComboBoxModel(data.toArray()));
}
});
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicRowModel.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicRowModel.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -30,8 +30,9 @@
import java.io.Serializable;
/**
- *
+ *
* @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
*/
public abstract class CaracteristicRowModel<RM extends CaracteristicRowModel<RM>> extends AbstractTuttiBeanUIModel<Serializable, RM> {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -47,6 +47,7 @@
/**
*
* @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
*/
public abstract class CaracteristicTabUIHandler
<RM extends CaracteristicRowModel<RM>,
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -32,7 +32,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Cancels the edition of a program
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -28,7 +28,10 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.MainUI;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUI;
+import java.awt.event.ActionEvent;
+import javax.swing.JOptionPane;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -121,6 +124,20 @@
}
@Override
+ public boolean canCloseUI(TuttiScreen nextScreen) {
+ boolean result = true;
+ if (getModel().isModify()) {
+ int answer = askSaveBeforeLeaving(ui);
+ result = answer == JOptionPane.NO_OPTION;
+ if (answer == JOptionPane.YES_OPTION) {
+ ActionEvent event = new ActionEvent(nextScreen, nextScreen.ordinal(), null);
+ ui.getSaveProgramAction().actionPerformed(event);
+ }
+ }
+ return result;
+ }
+
+ @Override
public EditProgramUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -29,6 +29,7 @@
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.ChangeScreenAction;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import java.awt.event.ActionEvent;
@@ -59,6 +60,11 @@
);
}
+ /**
+ * If the event source is a TuttiScreen, then the screen changes to the source.
+ * Otherwise, the screen changes to the home.
+ * @param event
+ */
@Override
protected void doAction(ActionEvent event) {
TuttiUIContext context = getContext();
@@ -76,7 +82,14 @@
}
context.setProgramId(saved.getId());
- context.setScreen(TuttiScreen.SELECT_CRUISE);
+
+ TuttiScreen nextScreen;
+ if (event.getSource().getClass().isAssignableFrom(TuttiScreen.class)) {
+ nextScreen = (TuttiScreen) event.getSource();
+ } else {
+ nextScreen = TuttiScreen.SELECT_CRUISE;
+ }
+ context.setScreen(nextScreen);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -32,7 +32,7 @@
import static org.nuiton.i18n.I18n._;
/**
- * TODO
+ * Cancels the edition of a protocol
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -101,6 +101,7 @@
result.setWeightEnabled(true);
result.setCountIfNoFrequencyEnabled(true);
result.setCalcifySampleEnabled(true);
+ result.setValid(true);
return result;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -33,10 +33,12 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.MainUI;
import fr.ifremer.tutti.ui.swing.MainUIHandler;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUI;
import fr.ifremer.tutti.ui.swing.content.home.ImportProtocolAction;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
+import java.awt.event.ActionEvent;
import jaxx.runtime.swing.editor.bean.BeanDoubleList;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.collections.CollectionUtils;
@@ -47,6 +49,7 @@
import java.util.List;
import java.util.Map;
+import javax.swing.JOptionPane;
/**
@@ -170,12 +173,6 @@
allCaracteristic = persistenceService.getAllCaracteristic();
-// hydroCaracteristics = ArrayListMultimap.create();
-// for (Caracteristic caracteristic :
-// persistenceService.getAllCaracteristic()) {
-// String name = HydrologicCaracteristicUtil.getGlobalName(caracteristic.getName());
-// hydroCaracteristics.put(name, caracteristic.getId());
-// }
}
public List<Caracteristic> getAllCaracteristic() {
@@ -312,7 +309,7 @@
initDoubleList(ui.getLengthClassesList(),
Lists.newArrayList(allCaracteristic),
- model.getHydrologyPmfmId());
+ model.getLengthClassesPmfmId());
initDoubleList(ui.getGearList(),
Lists.newArrayList(allCaracteristic),
@@ -326,28 +323,6 @@
Lists.newArrayList(allCaracteristic),
model.getHydrologyPmfmId());
-// List<Caracteristic> selection = Lists.newArrayList();
-// Collection<String> availableCaracteristicNames = hydroCaracteristics.keySet();
-// List<Caracteristic> availableCaracteristics = Lists.newArrayList();
-// for (String name : availableCaracteristicNames) {
-// Caracteristic caracteristic = HydrologicCaracteristicUtil.createGlobalCaracteristic(name, null);
-// availableCaracteristics.add(caracteristic);
-// }
-// List<String> hydrologyPmfm = model.getHydrologyPmfmId();
-// if (hydrologyPmfm != null) {
-// for (String caracteristicName : availableCaracteristicNames) {
-// Collection<String> ids = hydroCaracteristics.get(caracteristicName);
-// for (String caracteristicId : hydrologyPmfm) {
-// if (ids.contains(caracteristicId)) {
-// Caracteristic caracteristic = HydrologicCaracteristicUtil.createGlobalCaracteristic(caracteristicName, null);
-// selection.add(caracteristic);
-// break;
-// }
-// }
-// }
-// }
-// initBeanList(ui.getHydrologyList(), availableCaracteristics, selection);
-
// if new protocol can already cancel his creation
model.setModify(model.isCreate());
}
@@ -362,6 +337,20 @@
}
@Override
+ public boolean canCloseUI(TuttiScreen nextScreen) {
+ boolean result = true;
+ if (getModel().isModify()) {
+ int answer = askSaveBeforeLeaving(ui);
+ result = answer == JOptionPane.NO_OPTION;
+ if (answer == JOptionPane.YES_OPTION) {
+ ActionEvent event = new ActionEvent(nextScreen, nextScreen.ordinal(), null);
+ ui.getSaveProtocolAction().actionPerformed(event);
+ }
+ }
+ return result;
+ }
+
+ @Override
protected void onAfterSelectedRowChanged(int oldRowIndex,
EditProtocolSpeciesRowModel oldRow,
int newRowIndex,
@@ -383,7 +372,7 @@
ui.getSpeciesComboBox().removeItem(species);
selectFirstInCombo(ui.getSpeciesComboBox());
-// getModel().setModify(true);
+ getModel().setModify(true);
}
/** Removes a species */
@@ -400,10 +389,6 @@
getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
}
-// public Multimap<String, String> getHydroCaracteristics() {
-// return hydroCaracteristics;
-// }
-
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -42,6 +42,8 @@
import static org.nuiton.i18n.I18n._;
/**
+ * Saves a protocol
+ *
* @author kmorin <kmorin(a)codelutin.com>
* @since 1.0
*/
@@ -62,6 +64,11 @@
);
}
+ /**
+ * If the event source is a TuttiScreen, then the screen changes to the source.
+ * Otherwise, the screen changes to the home.
+ * @param event
+ */
@Override
protected void doAction(ActionEvent event) {
EditProtocolUIModel model = getModel();
@@ -94,7 +101,13 @@
context.setProtocolId(saved.getId());
- context.setScreen(TuttiScreen.SELECT_CRUISE);
+ TuttiScreen nextScreen;
+ if (event.getSource().getClass().isAssignableFrom(TuttiScreen.class)) {
+ nextScreen = (TuttiScreen) event.getSource();
+ } else {
+ nextScreen = TuttiScreen.SELECT_CRUISE;
+ }
+ context.setScreen(nextScreen);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -31,7 +31,6 @@
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import java.awt.Component;
import javax.swing.DefaultSingleSelectionModel;
-import javax.swing.Icon;
import javax.swing.JTabbedPane;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -67,12 +66,12 @@
if (currentIndex != newIndex) {
TabHandler handler = getTabHandler(currentIndex);
if (handler != null) {
- result = handler.onHideTab();
+ result = handler.onHideTab(currentIndex, newIndex);
}
handler = getTabHandler(newIndex);
if (handler != null) {
- handler.onShowTab();
+ handler.onShowTab(currentIndex, newIndex);
}
}
return result;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -27,7 +27,6 @@
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import java.awt.Color;
-import java.awt.Transparency;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JLabel;
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -1,91 +0,0 @@
-
-package fr.ifremer.tutti.ui.swing.util;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import org.nuiton.util.beans.Binder;
-import org.nuiton.util.beans.BinderFactory;
-
-/**
- * @author kmorin <kmorin(a)codelutin.com>
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class HydrologicCaracteristicUtil {
-
- public enum Type {
- START,
- END,
- AVERAGE
- }
-
- protected static Binder<Caracteristic, Caracteristic> caracteristicBinder;
-
- public static String getGlobalName(String name) {
- if (name.charAt(name.length() - 2) == '_') {
- name = name.substring(0, name.length() - 2);
- }
- return name;
- }
-
- public static Caracteristic createGlobalCaracteristic(String name,
- Caracteristic source) {
- Caracteristic result = new Caracteristic();
- if (source != null) {
- getCaracteristicBinder().copy(source, result);
- }
- result.setName(name);
- result.setId(name);
- return result;
- }
-
- public static Type getTypeOfCaracteristic(Caracteristic caracteristic) {
- String name = caracteristic.getName();
- Type result = null;
- if (name.charAt(name.length() - 2) == '_') {
- char lastChar = name.charAt(name.length() - 1);
- switch (lastChar) {
- case 'S':
- result = Type.START;
- break;
- case 'E':
- result = Type.END;
- break;
- case 'A':
- result = Type.AVERAGE;
- }
- }
- return result;
- }
-
- protected static Binder<Caracteristic, Caracteristic> getCaracteristicBinder() {
- if (caracteristicBinder == null) {
- caracteristicBinder =
- BinderFactory.newBinder(Caracteristic.class);
- }
- return caracteristicBinder;
- }
-}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TabHandler.java 2013-02-01 11:12:52 UTC (rev 287)
@@ -36,11 +36,17 @@
/**
* Method called when the tab is hidden
*
+ * @param currentIndex
+ * @param newIndex
* @return <code>false</code> to prevent the tab to be hidden,
* <code>true</code> otherwise.
*/
- boolean onHideTab();
+ boolean onHideTab(int currentIndex, int newIndex);
- /** Method called when the tab is shown */
- void onShowTab();
+ /**
+ * Method called when the tab is shown
+ * @param currentIndex
+ * @param newIndex
+ */
+ void onShowTab(int currentIndex, int newIndex);
}
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml 2013-02-01 11:12:52 UTC (rev 287)
@@ -55,12 +55,26 @@
<field-validator type="required" short-circuit="true">
<message>tutti.validator.error.cruise.beginDate.required</message>
</field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ endDate == null || beginDate.compareTo(endDate) <= 0 ]]>
+ </param>
+ <message>tutti.validator.error.cruise.dates.endBeforeStart</message>
+ </field-validator>
</field>
<field name="endDate">
<field-validator type="required" short-circuit="true">
<message>tutti.validator.error.cruise.endDate.required</message>
</field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ beginDate == null || beginDate.compareTo(endDate) <= 0 ]]>
+ </param>
+ <message>tutti.validator.error.cruise.dates.endBeforeStart</message>
+ </field-validator>
</field>
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-warning-validation.xml 2013-02-01 11:12:52 UTC (rev 287)
@@ -30,6 +30,24 @@
<validators>
+ <field name="gearShootingStartDate">
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ gearShootingEndDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) <= 0 ]]>
+ </param>
+ <message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message>
+ </field-validator>
+ </field>
+
+ <field name="gearShootingEndDate">
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ gearShootingStartDate == null || gearShootingEndDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) <= 0 ]]>
+ </param>
+ <message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message>
+ </field-validator>
+ </field>
+
<!--gear shooting start latitude validation -->
<field name="gearShootingStartLatitude">
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-02-01 11:12:52 UTC (rev 287)
@@ -69,12 +69,30 @@
<field-validator type="required" short-circuit="true">
<message>tutti.validator.error.fishingOperation.date.required</message>
</field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ gearShootingEndDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) <= 0 ]]>
+ </param>
+ <message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message>
+ </field-validator>
+
+ </field>
+ <field name="gearShootingEndDate">
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ gearShootingStartDate == null || gearShootingEndDate == null || gearShootingStartDate.compareTo(gearShootingEndDate) <= 0 ]]>
+ </param>
+ <message>tutti.validator.error.fishingOperation.dates.endBeforeStart</message>
+ </field-validator>
+
</field>
<!--gear shooting start latitude validation -->
- <field name="gearShootingStartLatitude">
+ <field name="gearShootingStartLatitude">
<field-validator type="fieldexpressionwithparams">
<param name="doubleParams">min:90.0|max:90.0</param>
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-02-01 11:03:51 UTC (rev 286)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-01 11:12:52 UTC (rev 287)
@@ -6,6 +6,8 @@
tutti.action.cancel=Annuler
tutti.action.cancel.editCruise=Annuler
tutti.action.cancel.editCruise.tip=Annuler l'édition (ou la création) de la campagne
+tutti.action.cancel.editFishingOperation=Annuler
+tutti.action.cancel.editFishingOperation.tip=Annuler l'édition (ou la création) du trait
tutti.action.cancel.editProgram=Annuler
tutti.action.cancel.editProgram.tip=Annuler l'édition (ou la création) de la série de campagne
tutti.action.cancel.editProtocol=Annuler
@@ -160,7 +162,7 @@
tutti.label.filterSpeciesBatchMode.mode.all.tip=Pas de filtre (tous les lots sont visibles)
tutti.label.filterSpeciesBatchMode.mode.leaf=Feuilles
tutti.label.filterSpeciesBatchMode.mode.leaf.tip=Voir uniquement les lots *feuilles*
-tutti.label.filterSpeciesBatchMode.mode.root=Parents
+tutti.label.filterSpeciesBatchMode.mode.root=Parents (%s)
tutti.label.filterSpeciesBatchMode.mode.root.tip=Voir uniquement les lots *parents*
tutti.label.filterVesselType=Filtre \:
tutti.label.filterVesselType.all=Tout
@@ -376,6 +378,7 @@
tutti.validator.error.createSpeciesBatch.speciesAndCategory.notAvailable=Couple (espèce - Vrac/Hors Vrac) déjà utilisée
tutti.validator.error.cruise.beginDate.required=La date de début est obligatoire
tutti.validator.error.cruise.country.required=Le pays est obligatoire
+tutti.validator.error.cruise.dates.endBeforeStart=La date de fin doit être après la date de début
tutti.validator.error.cruise.endDate.required=La date de fin est obligatoire
tutti.validator.error.cruise.gear.required=Au moins un engin doit être sélectionné
tutti.validator.error.cruise.headOfMission.required=Au moins un chef de mission doit être sélectionné
@@ -386,6 +389,7 @@
tutti.validator.error.cruise.vessel.required=Au moins un bateau doit être sélectionné
tutti.validator.error.cruise.year.required=L'année est obligatoire
tutti.validator.error.fishingOperation.date.required=La date du fishingOperation est obligatoire
+tutti.validator.error.fishingOperation.dates.endBeforeStart=La date de fin doit être après la date de début
tutti.validator.error.fishingOperation.fishingOperationNumber.required=Le numéro de trait est obligatoire
tutti.validator.error.fishingOperation.stationNumber.required=Le numéro de station est obligatoire
tutti.validator.error.fishingOperation.stationNumber.too.long=Valeur trop longue (limitée à %s caractères)
Modified: trunk/tutti-ui-swing/src/main/resources/icons/action-alert-warning.png
===================================================================
(Binary files differ)
1
0
r286 - in trunk/tutti-service/src/main/java/fr/ifremer/tutti/service: . protocol
by tchemit@users.forge.codelutin.com 01 Feb '13
by tchemit@users.forge.codelutin.com 01 Feb '13
01 Feb '13
Author: tchemit
Date: 2013-02-01 12:03:51 +0100 (Fri, 01 Feb 2013)
New Revision: 286
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/286
Log:
improve import / export models
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java
Removed:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicImportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesImportModel.java
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-02-01 10:54:50 UTC (rev 285)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-02-01 11:03:51 UTC (rev 286)
@@ -27,6 +27,7 @@
import fr.ifremer.tutti.persistence.entities.IdAware;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.util.csv.ValueParserFormatter;
+import org.nuiton.util.csv.ext.AbstractImportExportModel;
import org.nuiton.util.csv.ext.AbstractImportModel;
import java.text.ParseException;
@@ -40,9 +41,9 @@
*/
public class TuttiCsvUtil {
- public static abstract class AbstractTuttiImportModel<M> extends AbstractImportModel<M> {
+ public static abstract class AbstractTuttiImportExportModel<M> extends AbstractImportExportModel<M> {
- public AbstractTuttiImportModel(char separator) {
+ public AbstractTuttiImportExportModel(char separator) {
super(separator);
}
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java (from rev 285, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicImportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/CaracteristicRowModel.java 2013-02-01 11:03:51 UTC (rev 286)
@@ -0,0 +1,77 @@
+/*
+ * #%L
+ * EchoBase :: Services
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 - 2012 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+package fr.ifremer.tutti.service.protocol;
+
+
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.nuiton.util.csv.Common;
+
+import java.util.Map;
+
+/**
+ * Model to import / export {@link CaracteristicRow}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class CaracteristicRowModel extends TuttiCsvUtil.AbstractTuttiImportExportModel<CaracteristicRow> {
+
+ public CaracteristicRowModel(char separator, Map<String, Caracteristic> caracteristicMap) {
+ super(separator);
+
+ // import definition
+
+ newForeignKeyColumn(CaracteristicRow.PROPERTY_ID,
+ CaracteristicRow.PROPERTY_CARACTERISTIC,
+ Caracteristic.class,
+ Caracteristic.PROPERTY_ID,
+ caracteristicMap);
+
+ newMandatoryColumn(CaracteristicRow.PROPERTY_TYPE,
+ CaracteristicRow.PROPERTY_TYPE,
+ Common.newEnumByNameParserFormatter(CaracteristicType.class));
+
+ newIgnoredColumn(CaracteristicRow.PROPERTY_PARAMETER);
+ newIgnoredColumn(CaracteristicRow.PROPERTY_MATRIX);
+ newIgnoredColumn(CaracteristicRow.PROPERTY_FRACTION);
+ newIgnoredColumn(CaracteristicRow.PROPERTY_METHOD);
+
+ // export definition
+
+ newColumnForExport(CaracteristicRow.PROPERTY_ID);
+ newColumnForExport(CaracteristicRow.PROPERTY_TYPE, Common.newEnumByNameParserFormatter(CaracteristicType.class));
+ newColumnForExport(CaracteristicRow.PROPERTY_PARAMETER);
+ newColumnForExport(CaracteristicRow.PROPERTY_MATRIX);
+ newColumnForExport(CaracteristicRow.PROPERTY_FRACTION);
+ newColumnForExport(CaracteristicRow.PROPERTY_METHOD);
+ }
+
+ @Override
+ public CaracteristicRow newEmptyInstance() {
+ return new CaracteristicRow();
+ }
+
+}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicExportModel.java 2013-02-01 10:54:50 UTC (rev 285)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicExportModel.java 2013-02-01 11:03:51 UTC (rev 286)
@@ -1,52 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-package fr.ifremer.tutti.service.protocol;
-
-
-import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
-import org.nuiton.util.csv.Common;
-import org.nuiton.util.csv.ext.AbstractExportModel;
-
-/**
- * Model to export caracteristics (from a protocol or not).
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class ProtocolCaracteristicExportModel extends AbstractExportModel<CaracteristicRow> {
-
- public ProtocolCaracteristicExportModel(char separator) {
- super(separator);
-
- newColumnForExport(CaracteristicRow.PROPERTY_ID);
- newColumnForExport(CaracteristicRow.PROPERTY_TYPE, Common.newEnumByNameParserFormatter(CaracteristicType.class));
- newColumnForExport(CaracteristicRow.PROPERTY_PARAMETER);
- newColumnForExport(CaracteristicRow.PROPERTY_MATRIX);
- newColumnForExport(CaracteristicRow.PROPERTY_FRACTION);
- newColumnForExport(CaracteristicRow.PROPERTY_METHOD);
- }
-
-
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicImportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicImportModel.java 2013-02-01 10:54:50 UTC (rev 285)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolCaracteristicImportModel.java 2013-02-01 11:03:51 UTC (rev 286)
@@ -1,66 +0,0 @@
-/*
- * #%L
- * EchoBase :: Services
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 - 2012 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-package fr.ifremer.tutti.service.protocol;
-
-
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.nuiton.util.csv.Common;
-
-import java.util.Map;
-
-/**
- * Model to import protocol caracteristics.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class ProtocolCaracteristicImportModel extends TuttiCsvUtil.AbstractTuttiImportModel<CaracteristicRow> {
-
- public ProtocolCaracteristicImportModel(char separator, Map<String, Caracteristic> caracteristicMap) {
- super(separator);
-
- newForeignKeyColumn(CaracteristicRow.PROPERTY_ID,
- CaracteristicRow.PROPERTY_CARACTERISTIC,
- Caracteristic.class,
- Caracteristic.PROPERTY_ID,
- caracteristicMap);
-
- newMandatoryColumn(CaracteristicRow.PROPERTY_TYPE,
- CaracteristicRow.PROPERTY_TYPE,
- Common.newEnumByNameParserFormatter(CaracteristicType.class));
-
- newIgnoredColumn(CaracteristicRow.PROPERTY_PARAMETER);
- newIgnoredColumn(CaracteristicRow.PROPERTY_MATRIX);
- newIgnoredColumn(CaracteristicRow.PROPERTY_FRACTION);
- newIgnoredColumn(CaracteristicRow.PROPERTY_METHOD);
- }
-
- @Override
- public CaracteristicRow newEmptyInstance() {
- return new CaracteristicRow();
- }
-
-}
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesExportModel.java 2013-02-01 10:54:50 UTC (rev 285)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesExportModel.java 2013-02-01 11:03:51 UTC (rev 286)
@@ -1,53 +0,0 @@
-package fr.ifremer.tutti.service.protocol;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
-import org.nuiton.util.csv.Common;
-import org.nuiton.util.csv.ext.AbstractExportModel;
-
-/**
- * Model to export {@link SpeciesProtocol}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class ProtocolSpeciesExportModel extends AbstractExportModel<SpeciesRow> {
-
- public ProtocolSpeciesExportModel(char separator) {
- super(separator);
-
- newColumnForExport(SpeciesRow.PROPERTY_ID);
- newColumnForExport(SpeciesRow.PROPERTY_LENGTH_CLASS, SpeciesRow.PROPERTY_LENGTH_CLASS_ID);
- newColumnForExport(SpeciesRow.PROPERTY_SIZE_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newColumnForExport(SpeciesRow.PROPERTY_SEX_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newColumnForExport(SpeciesRow.PROPERTY_MATURITY_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newColumnForExport(SpeciesRow.PROPERTY_AGE_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newColumnForExport(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newColumnForExport(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newColumnForExport(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN);
- }
-
-}
\ No newline at end of file
Deleted: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesImportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesImportModel.java 2013-02-01 10:54:50 UTC (rev 285)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesImportModel.java 2013-02-01 11:03:51 UTC (rev 286)
@@ -1,77 +0,0 @@
-package fr.ifremer.tutti.service.protocol;
-
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
-import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.TuttiCsvUtil;
-import org.nuiton.util.csv.Common;
-
-import java.util.Map;
-
-/**
- * Model to export {@link SpeciesProtocol}.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class ProtocolSpeciesImportModel extends TuttiCsvUtil.AbstractTuttiImportModel<SpeciesRow> {
-
- public ProtocolSpeciesImportModel(char separator,
- Map<String, Caracteristic> caracteristicMap,
- Map<String, Species> speciesMap) {
- super(separator);
-
- newForeignKeyColumn(SpeciesRow.PROPERTY_ID,
- SpeciesRow.PROPERTY_SPECIES,
- Species.class,
- Species.PROPERTY_ID,
- speciesMap);
-
- newForeignKeyColumn(SpeciesRow.PROPERTY_LENGTH_CLASS,
- SpeciesRow.PROPERTY_LENGTH_CLASS,
- Caracteristic.class,
- Caracteristic.PROPERTY_ID,
- caracteristicMap);
-
- newMandatoryColumn(SpeciesRow.PROPERTY_SIZE_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newMandatoryColumn(SpeciesRow.PROPERTY_SEX_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newMandatoryColumn(SpeciesRow.PROPERTY_MATURITY_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newMandatoryColumn(SpeciesRow.PROPERTY_AGE_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newMandatoryColumn(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newMandatoryColumn(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN);
- newMandatoryColumn(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN);
-//
-// newIgnoredColumn(SpeciesRow.PROPERTY_PARAMETER);
- }
-
- @Override
- public SpeciesRow newEmptyInstance() {
- return new SpeciesRow();
- }
-
-
-}
\ No newline at end of file
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java 2013-02-01 10:54:50 UTC (rev 285)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRow.java 2013-02-01 11:03:51 UTC (rev 286)
@@ -53,6 +53,7 @@
public static final String PROPERTY_AGE_ENABLED = "ageEnabled";
public static final String PROPERTY_LENGTH_CLASS = "lengthClass";
+
public static final String PROPERTY_LENGTH_CLASS_ID = "lengthClassId";
public static final String PROPERTY_WEIGHT_ENABLED = "weightEnabled";
Copied: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java (from rev 285, trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/ProtocolSpeciesImportModel.java)
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/SpeciesRowModel.java 2013-02-01 11:03:51 UTC (rev 286)
@@ -0,0 +1,88 @@
+package fr.ifremer.tutti.service.protocol;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+import org.nuiton.util.csv.Common;
+
+import java.util.Map;
+
+/**
+ * Model to import / export {@link SpeciesRow}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class SpeciesRowModel extends TuttiCsvUtil.AbstractTuttiImportExportModel<SpeciesRow> {
+
+ public SpeciesRowModel(char separator,
+ Map<String, Caracteristic> caracteristicMap,
+ Map<String, Species> speciesMap) {
+ super(separator);
+
+ // import definition
+
+ newForeignKeyColumn(SpeciesRow.PROPERTY_ID,
+ SpeciesRow.PROPERTY_SPECIES,
+ Species.class,
+ Species.PROPERTY_ID,
+ speciesMap);
+
+ newForeignKeyColumn(SpeciesRow.PROPERTY_LENGTH_CLASS,
+ SpeciesRow.PROPERTY_LENGTH_CLASS,
+ Caracteristic.class,
+ Caracteristic.PROPERTY_ID,
+ caracteristicMap);
+
+ newMandatoryColumn(SpeciesRow.PROPERTY_SIZE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_SEX_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_MATURITY_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_AGE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newMandatoryColumn(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+
+ // export definition
+
+ newColumnForExport(SpeciesRow.PROPERTY_ID);
+ newColumnForExport(SpeciesRow.PROPERTY_LENGTH_CLASS, SpeciesRow.PROPERTY_LENGTH_CLASS_ID);
+ newColumnForExport(SpeciesRow.PROPERTY_SIZE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_SEX_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_MATURITY_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_AGE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_WEIGHT_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ newColumnForExport(SpeciesRow.PROPERTY_CALCIFY_SAMPLE_ENABLED, Common.PRIMITIVE_BOOLEAN);
+ }
+
+ @Override
+ public SpeciesRow newEmptyInstance() {
+ return new SpeciesRow();
+ }
+
+
+}
\ No newline at end of file
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java 2013-02-01 10:54:50 UTC (rev 285)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java 2013-02-01 11:03:51 UTC (rev 286)
@@ -86,9 +86,9 @@
Multimap<CaracteristicType, String> ids = TreeMultimap.create();
- ProtocolCaracteristicImportModel csvModel =
- new ProtocolCaracteristicImportModel(getCsvSeparator(),
- caracteristicMap);
+ CaracteristicRowModel csvModel =
+ new CaracteristicRowModel(getCsvSeparator(),
+ caracteristicMap);
Reader reader = Files.newReader(file, Charsets.UTF_8);
try {
@@ -161,8 +161,9 @@
Lists.newArrayList(caracteristicMap.keySet()), function);
- ProtocolCaracteristicExportModel csvModel =
- new ProtocolCaracteristicExportModel(getCsvSeparator());
+ CaracteristicRowModel csvModel =
+ new CaracteristicRowModel(getCsvSeparator(),
+ caracteristicMap);
BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8);
try {
@@ -205,8 +206,9 @@
function.setType(CaracteristicType.HYDROLOGY);
rows.addAll(Lists.transform(protocol.getHydrologyPmfmId(), function));
}
- ProtocolCaracteristicExportModel csvModel =
- new ProtocolCaracteristicExportModel(getCsvSeparator());
+ CaracteristicRowModel csvModel =
+ new CaracteristicRowModel(getCsvSeparator(),
+ caracteristicMap);
BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8);
try {
@@ -240,10 +242,10 @@
}
}
- ProtocolSpeciesImportModel csvModel =
- new ProtocolSpeciesImportModel(getCsvSeparator(),
- caracteristicMap,
- speciesMap);
+ SpeciesRowModel csvModel =
+ new SpeciesRowModel(getCsvSeparator(),
+ caracteristicMap,
+ speciesMap);
Reader reader = Files.newReader(file, Charsets.UTF_8);
try {
@@ -311,8 +313,10 @@
speciesMap));
}
- ProtocolSpeciesExportModel csvModel =
- new ProtocolSpeciesExportModel(getCsvSeparator());
+ SpeciesRowModel csvModel =
+ new SpeciesRowModel(getCsvSeparator(),
+ caracteristicMap,
+ speciesMap);
BufferedWriter writer = Files.newWriter(file, Charsets.UTF_8);
try {
1
0