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
- 4058 discussions
03 May '13
Author: kmorin
Date: 2013-05-03 17:49:20 +0200 (Fri, 03 May 2013)
New Revision: 917
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/917
Log:
fixes #1830 [REFERENTIEL] - Engins de pr?\195?\169l?\195?\168vement
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
@@ -399,6 +400,11 @@
@Transactional(readOnly = false)
Cruise saveCruise(Cruise bean);
+ Gear getGearWithCaracteristics(Gear gear, Cruise cruise);
+
+ @Transactional(readOnly = false)
+ void saveGearCaracteristics(Gear gear, Cruise cruise);
+
//------------------------------------------------------------------------//
//-- Protocol methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -26,6 +26,7 @@
import com.google.common.collect.Maps;
import fr.ifremer.adagio.core.service.technical.CacheService;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
@@ -508,6 +509,16 @@
return cruiseService.saveCruise(bean);
}
+ @Override
+ public Gear getGearWithCaracteristics(Gear gear, Cruise cruise) {
+ return cruiseService.getGearWithCaracteristics(gear, cruise);
+ }
+
+ @Override
+ public void saveGearCaracteristics(Gear gear, Cruise cruise) {
+ cruiseService.saveGearCaracteristics(gear, cruise);
+ }
+
//------------------------------------------------------------------------//
//-- Protocol methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
@@ -327,6 +328,16 @@
}
@Override
+ public Gear getGearWithCaracteristics(Gear gear, Cruise cruise) {
+ throw notImplemented();
+ }
+
+ @Override
+ public void saveGearCaracteristics(Gear gear, Cruise cruise) {
+ throw notImplemented();
+ }
+
+ @Override
public List<String> getAllProtocolNames() {
throw notImplemented();
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceService.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -25,7 +25,9 @@
*/
import fr.ifremer.tutti.persistence.TuttiPersistenceServiceImplementor;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -48,4 +50,9 @@
@Transactional(readOnly = false)
Cruise saveCruise(Cruise bean);
+
+ Gear getGearWithCaracteristics(Gear gear, Cruise cruise);
+
+ @Transactional(readOnly = false)
+ void saveGearCaracteristics(Gear gear, Cruise cruise);
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -32,6 +32,7 @@
import fr.ifremer.adagio.core.dao.administration.programStrategy.ProgramImpl;
import fr.ifremer.adagio.core.dao.administration.user.PersonDao;
import fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
+import fr.ifremer.adagio.core.dao.data.measure.GearPhysicalMeasurement;
import fr.ifremer.adagio.core.dao.data.measure.SurveyMeasurement;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.ObservedFishingTrip;
@@ -50,20 +51,15 @@
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.location.LocationImpl;
-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.QualitativeValueDao;
-import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl;
+import fr.ifremer.adagio.core.dao.referential.pmfm.*;
import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Person;
-import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.persistence.entities.referential.*;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -74,13 +70,9 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.io.Serializable;
import java.text.MessageFormat;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
/**
* @author tchemit <chemit(a)codelutin.com>
@@ -487,6 +479,126 @@
role);
}
+ public Gear getGearWithCaracteristics(Gear gear, Cruise cruise) {
+ Preconditions.checkNotNull(cruise);
+ Preconditions.checkNotNull(cruise.getId(), "Cruise 'id' must not be null or empty");
+ Preconditions.checkNotNull(gear);
+ Preconditions.checkNotNull(gear.getId(), "Gear 'id' must not be null or empty");
+
+ CaracteristicMap result = new CaracteristicMap();
+
+ Iterator<GearPhysicalMeasurement> list = queryListTyped(
+ "gearCaracteristics",
+ "cruiseId", IntegerType.INSTANCE, cruise.getIdAsInt(),
+ "gearId", IntegerType.INSTANCE, gear.getIdAsInt());
+
+ while (list.hasNext()) {
+ GearPhysicalMeasurement measurement = list.next();
+
+ Integer pmfmId = measurement.getPmfm().getId();
+ if (!enumeration.PMFM_ID_MULTIRIG_NUMBER.equals(pmfmId)) {
+ Caracteristic caracteristic = referentialService.getCaracteristic(pmfmId);
+
+ Serializable value = null;
+ switch (caracteristic.getCaracteristicType()) {
+ case NUMBER:
+ value = measurement.getNumericalValue();
+ break;
+ case QUALITATIVE:
+ QualitativeValue qualitativeValue = measurement.getQualitativeValue();
+ if (qualitativeValue != null) {
+ value = TuttiEntities.getQualitativeValue(caracteristic,
+ qualitativeValue.getId());
+ }
+ break;
+ case TEXT:
+ value = measurement.getAlphanumericalValue();
+ break;
+ }
+ result.put(caracteristic, value);
+ }
+ }
+
+ gear.setCaracteristics(result);
+ return gear;
+ }
+
+ public void saveGearCaracteristics(Gear gear, Cruise cruise) {
+ Preconditions.checkNotNull(cruise);
+ Preconditions.checkNotNull(cruise.getId(), "Cruise 'id' must not be null or empty");
+ Preconditions.checkNotNull(gear);
+ Preconditions.checkNotNull(gear.getId(), "Gear 'id' must not be null or empty");
+
+ ScientificCruise scientificCruise = scientificCruiseDao.load(cruise.getIdAsInt());
+ if (scientificCruise == null) {
+ throw new DataRetrievalFailureException("Could not retrieve cruise with id=" + cruise.getId());
+ }
+
+ // Retrieve entities : FishingTrip
+ ObservedFishingTrip fishingTrip = (ObservedFishingTrip) scientificCruise.getFishingTrips().iterator().next();
+ Preconditions.checkNotNull(fishingTrip);
+
+ List<Integer> measurementsToRemove = Lists.newArrayList();
+
+ GearPhysicalFeatures gpf = gearPhysicalFeaturesDao.getGearPhysicalfeatures(fishingTrip, gear.getIdAsInt(), true);
+ if (gpf.getGearPhysicalMeasurements() != null) {
+ for (GearPhysicalMeasurement measurement : gpf.getGearPhysicalMeasurements()) {
+ Integer pmfmId = measurement.getPmfm().getId();
+ if (!enumeration.PMFM_ID_MULTIRIG_NUMBER.equals(pmfmId)) {
+ measurementsToRemove.add(pmfmId);
+ }
+ }
+ }
+
+ CaracteristicMap caracteristicMap = gear.getCaracteristics();
+ if (caracteristicMap != null) {
+ for (Caracteristic caracteristic : caracteristicMap.keySet()) {
+
+ Float numericalValue = null;
+ String alphanumericalValue = null;
+ Integer qualitativeValue = null;
+ Object value = caracteristicMap.get(caracteristic);
+
+ switch (caracteristic.getCaracteristicType()) {
+ case NUMBER:
+ numericalValue = (Float) value;
+ break;
+
+ case QUALITATIVE:
+ Integer qvId = null;
+ if (value instanceof CaracteristicQualitativeValue) {
+ qvId = Integer.valueOf(((CaracteristicQualitativeValue) value).getId());
+ } else if (value instanceof Integer) {
+ qvId = (Integer) value;
+ }
+ qualitativeValue = qvId;
+ break;
+
+ case TEXT:
+ alphanumericalValue = (String) value;
+ break;
+ }
+
+ GearPhysicalMeasurement gearPhysicalMeasurement =
+ gearPhysicalFeaturesDao.setGearPhysicalMeasurement(scientificCruise,
+ gpf,
+ caracteristic.getIdAsInt(),
+ numericalValue,
+ alphanumericalValue,
+ qualitativeValue);
+
+ measurementsToRemove.remove(gearPhysicalMeasurement.getPmfm().getId());
+ }
+ }
+
+ for (Integer pmfmId : measurementsToRemove) {
+ gearPhysicalFeaturesDao.removeGearPhysicalMeasurement(gpf, pmfmId);
+ }
+
+ gearPhysicalFeaturesDao.update(gpf);
+
+ }
+
// adapt to surveyMeasurement
protected SurveyMeasurement getOrCreateSurveyMeasurement(FishingTrip fishingTrip,
Integer pmfmId) {
Modified: trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-05-03 15:49:20 UTC (rev 917)
@@ -152,9 +152,9 @@
<![CDATA[
SELECT
gpf.gear.id AS gearId,
- MAX(CASE gpm.pmfm.id
+ MAX(CASE gpm.pmfm.id
WHEN :pmfmIdTrawlNet THEN gpm.numericalValue
- ELSE 0
+ ELSE 0
END) as trawlNet,
count(o.id) as operationCount
FROM
@@ -165,7 +165,7 @@
LEFT OUTER JOIN gpf.operations o
WHERE
sc.id = :cruiseId
- GROUP BY
+ GROUP BY
gpf.gear.id
ORDER BY count(o.id) DESC
]]>
@@ -173,6 +173,24 @@
<query-param name="pmfmIdTrawlNet" type="java.lang.Integer"/>
</query>
+ <query cacheable="true" name="gearCaracteristics">
+ <![CDATA[
+ SELECT
+ gpm
+ FROM
+ ScientificCruiseImpl sc
+ JOIN sc.fishingTrips ft
+ JOIN ft.gearPhysicalFeatures gpf
+ LEFT OUTER JOIN gpf.gearPhysicalMeasurements gpm
+ WHERE
+ sc.id = :cruiseId
+ AND
+ gpf.gear.id = :gearId
+ ]]>
+ <query-param name="cruiseId" type="java.lang.Integer"/>
+ <query-param name="gearId" type="java.lang.Integer"/>
+ </query>
+
<query cacheable="true" name="allCruiseSecondaryVessels">
<![CDATA[
SELECT
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -31,6 +31,7 @@
import fr.ifremer.tutti.persistence.TuttiPersistence;
import fr.ifremer.tutti.persistence.TuttiPersistenceNoDbImpl;
import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
@@ -590,6 +591,16 @@
return driver.saveCruise(bean);
}
+ @Override
+ public Gear getGearWithCaracteristics(Gear gear, Cruise cruise) {
+ return driver.getGearWithCaracteristics(gear, cruise);
+ }
+
+ @Override
+ public void saveGearCaracteristics(Gear gear, Cruise cruise) {
+ driver.saveGearCaracteristics(gear, cruise);
+ }
+
//------------------------------------------------------------------------//
//-- Protocol methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-05-03 15:49:20 UTC (rev 917)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Fri Apr 26 18:46:10 CEST 2013
+#Tue Apr 30 17:57:05 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=createAccidentalBatch.html\#actions
tutti.createAccidentalBatch.action.save.help=createAccidentalBatch.html\#actions
@@ -105,8 +105,10 @@
tutti.editCatchBatch.field.speciesTotalWeight.help=editCatchBatch.html\#fields
tutti.editCatchBatch.help=editCatchBatch.html
tutti.editCruise.action.close.help=editCruise.html\#actions
+tutti.editCruise.action.editGearCaracteristics.help=
tutti.editCruise.action.generateName.help=editCruise.html\#actions
tutti.editCruise.action.save.help=editCruise.html\#actions
+tutti.editCruise.action.viewGearCaracteristics.help=
tutti.editCruise.field.beginDate.help=editCruise.html\#fields
tutti.editCruise.field.comment.help=editCruise.html\#fields
tutti.editCruise.field.country.help=editCruise.html\#fields
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-05-03 15:49:20 UTC (rev 917)
@@ -1,5 +1,5 @@
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Fri Apr 26 18:46:10 CEST 2013
+#Tue Apr 30 17:57:05 CEST 2013
tutti.config.help=config.html
tutti.createAccidentalBatch.action.cancel.help=createAccidentalBatch.html\#actions
tutti.createAccidentalBatch.action.save.help=createAccidentalBatch.html\#actions
@@ -105,8 +105,10 @@
tutti.editCatchBatch.field.speciesTotalWeight.help=editCatchBatch.html\#fields
tutti.editCatchBatch.help=editCatchBatch.html
tutti.editCruise.action.close.help=editCruise.html\#actions
+tutti.editCruise.action.editGearCaracteristics.help=
tutti.editCruise.action.generateName.help=editCruise.html\#actions
tutti.editCruise.action.save.help=editCruise.html\#actions
+tutti.editCruise.action.viewGearCaracteristics.help=
tutti.editCruise.field.beginDate.help=editCruise.html\#fields
tutti.editCruise.field.comment.help=editCruise.html\#fields
tutti.editCruise.field.country.help=editCruise.html\#fields
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-05-03 15:49:20 UTC (rev 917)
@@ -50,8 +50,25 @@
_selectOnFocus: {true};
}
+#editGearCaracteristicsItem {
+ actionIcon: edit;
+ text: "tutti.editCruise.action.editGearCaracteristics";
+ toolTipText: "tutti.editCruise.action.editGearCaracteristics.tip";
+ _tuttiAction: {EditGearCaracteristicsAction.class};
+ _help: {"tutti.editCruise.action.editGearCaracteristics.help"};
+}
+
+#viewGearCaracteristicsItem {
+ actionIcon: show-frequency;
+ text: "tutti.editCruise.action.viewGearCaracteristics";
+ toolTipText: "tutti.editCruise.action.viewGearCaracteristics.tip";
+ _tuttiAction: {ViewGearCaracteristicsAction.class};
+ _help: {"tutti.editCruise.action.viewGearCaracteristics.help"};
+}
+
#editCruiseTopPanel {
_help: {"tutti.editCruise.help"};
+ layout:{mainPanelLayout};
}
#cruiseScrollPane {
@@ -278,4 +295,8 @@
#attachmentsButton {
enabled: {model.getId() != null};
+}
+
+#gearCaracteristicsEditorTitledPanel {
+ title: "tutti.editCruise.gearCaracteristics.title";
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-05-03 15:49:20 UTC (rev 917)
@@ -21,7 +21,7 @@
<http://www.gnu.org/licenses/gpl-3.0.html>.
#L%
-->
-<JPanel id='editCruiseTopPanel' layout='{new BorderLayout()}' decorator='help'
+<JPanel id='editCruiseTopPanel' decorator='help'
implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditCruiseUIModel, EditCruiseUIHandler>'>
<import>
@@ -38,8 +38,10 @@
jaxx.runtime.swing.editor.NumberEditor
jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
jaxx.runtime.swing.editor.bean.BeanDoubleList
+ jaxx.runtime.swing.CardLayout2Ext
org.jdesktop.swingx.JXDatePicker
+ org.jdesktop.swingx.JXTitledPanel
javax.swing.JSeparator
javax.swing.SwingConstants
@@ -84,6 +86,9 @@
<field name='comment' component='commentPane'/>
</BeanValidator>
+ <CardLayout2Ext id='mainPanelLayout'
+ constructorParams='this, "editCruiseTopPanel"'/>
+
<TuttiHelpBroker id='broker'
constructorParams='"tutti.editCruise.help"'/>
@@ -92,156 +97,171 @@
constructorParams='getHandler().getContext(), getModel()'/>
</JToolBar>
- <JScrollPane id='cruiseScrollPane' constraints='BorderLayout.CENTER'>
- <Table fill='both'>
+ <JPopupMenu id='gearMenuPopup'>
+ <JMenuItem id='editGearCaracteristicsItem'/>
+ <JMenuItem id='viewGearCaracteristicsItem'/>
+ </JPopupMenu>
- <!-- cruise program / survey part -->
- <row>
- <cell anchor='west'>
- <JLabel id='programLabel'/>
- </cell>
- <cell weightx='0.3'>
- <BeanFilterableComboBox id='programComboBox' constructorParams='this'
- genericType='Program'/>
- </cell>
- <cell>
- <JLabel id='surveyPartLabel'/>
- </cell>
- <cell weightx='0.3'>
- <JTextField id='surveyPartField'
- onKeyReleased='handler.setText(event, "surveyPart")'/>
- </cell>
- </row>
+ <JPanel layout='{new BorderLayout()}'
+ constraints='EditCruiseUIHandler.CRUISE_CARD'>
+ <JScrollPane id='cruiseScrollPane' constraints='BorderLayout.CENTER'>
+ <Table fill='both'>
- <!-- departure harbour / begin date -->
- <row>
- <cell anchor='west'>
- <JLabel id='departureLocationLabel'/>
- </cell>
- <cell>
- <BeanFilterableComboBox id='departureLocationComboBox'
- constructorParams='this'
- genericType='TuttiLocation'/>
- </cell>
- <cell>
- <JLabel id='beginDateLabel'/>
- </cell>
- <cell>
- <JXDatePicker id='beginDateField'
- onActionPerformed='handler.setDate(event, "beginDate")'/>
- </cell>
- </row>
+ <!-- cruise program / survey part -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='programLabel'/>
+ </cell>
+ <cell weightx='0.3'>
+ <BeanFilterableComboBox id='programComboBox' constructorParams='this'
+ genericType='Program'/>
+ </cell>
+ <cell>
+ <JLabel id='surveyPartLabel'/>
+ </cell>
+ <cell weightx='0.3'>
+ <JTextField id='surveyPartField'
+ onKeyReleased='handler.setText(event, "surveyPart")'/>
+ </cell>
+ </row>
- <!-- landing harbour / end date -->
- <row>
- <cell anchor='west'>
- <JLabel id='returnLocationLabel'/>
- </cell>
- <cell>
- <BeanFilterableComboBox id='returnLocationComboBox'
- constructorParams='this'
- genericType='TuttiLocation'/>
- </cell>
- <cell>
- <JLabel id='endDateLabel'/>
- </cell>
- <cell>
- <JXDatePicker id='endDateField'
- onActionPerformed='handler.setDate(event, "endDate")'/>
- </cell>
- </row>
+ <!-- departure harbour / begin date -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='departureLocationLabel'/>
+ </cell>
+ <cell>
+ <BeanFilterableComboBox id='departureLocationComboBox'
+ constructorParams='this'
+ genericType='TuttiLocation'/>
+ </cell>
+ <cell>
+ <JLabel id='beginDateLabel'/>
+ </cell>
+ <cell>
+ <JXDatePicker id='beginDateField'
+ onActionPerformed='handler.setDate(event, "beginDate")'/>
+ </cell>
+ </row>
- <!-- cruise name / multirigNumber -->
- <row>
- <cell>
- <JLabel id='nameLabel'/>
- </cell>
- <cell>
- <JTextField id='nameField'
- onKeyReleased='handler.setText(event, "name")'/>
- </cell>
- <cell columns='2'>
- <JButton id='generateNameButton'
- onActionPerformed='handler.generateCampaignName()'/>
- </cell>
- </row>
+ <!-- landing harbour / end date -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='returnLocationLabel'/>
+ </cell>
+ <cell>
+ <BeanFilterableComboBox id='returnLocationComboBox'
+ constructorParams='this'
+ genericType='TuttiLocation'/>
+ </cell>
+ <cell>
+ <JLabel id='endDateLabel'/>
+ </cell>
+ <cell>
+ <JXDatePicker id='endDateField'
+ onActionPerformed='handler.setDate(event, "endDate")'/>
+ </cell>
+ </row>
- <!-- cruise name / multirigNumber -->
- <row>
- <cell>
- <JLabel id='multirigNumberLabel'/>
- </cell>
- <cell>
- <NumberEditor id='multirigNumberField' constructorParams='this'/>
- </cell>
- <cell columns="2">
- <JLabel/>
- </cell>
- </row>
+ <!-- cruise name / multirigNumber -->
+ <row>
+ <cell>
+ <JLabel id='nameLabel'/>
+ </cell>
+ <cell>
+ <JTextField id='nameField'
+ onKeyReleased='handler.setText(event, "name")'/>
+ </cell>
+ <cell columns='2'>
+ <JButton id='generateNameButton'
+ onActionPerformed='handler.generateCampaignName()'/>
+ </cell>
+ </row>
- <!-- cruise vessel / gear -->
- <row>
- <cell columns='4'>
- <JSeparator constructorParams='SwingConstants.HORIZONTAL'/>
- </cell>
- </row>
- <row>
- <cell columns='4'>
- <JPanel id='vesselFilterPane'>
- <JLabel id='filterVesselLabel'/>
- <JRadioButton id='filterVesselAllButton'
- onActionPerformed='model.setVesselType(VesselTypeEnum.ALL)'/>
- <JRadioButton id='filterVesselScientificButton'
- onActionPerformed='model.setVesselType(VesselTypeEnum.SCIENTIFIC)'/>
- <JRadioButton id='filterVesselFishingButton'
- onActionPerformed='model.setVesselType(VesselTypeEnum.FISHING)'/>
- </JPanel>
- </cell>
- </row>
- <row>
- <cell>
- <JLabel id='vesselLabel'/>
- </cell>
- <cell columns="3">
- <BeanFilterableComboBox id='vesselComboBox' constructorParams='this'
- genericType='Vessel'/>
+ <!-- cruise name / multirigNumber -->
+ <row>
+ <cell>
+ <JLabel id='multirigNumberLabel'/>
+ </cell>
+ <cell>
+ <NumberEditor id='multirigNumberField' constructorParams='this'/>
+ </cell>
+ <cell columns="2">
+ <JLabel/>
+ </cell>
+ </row>
- </cell>
- </row>
- <row weighty='0.3'>
- <cell columns="4">
- <BeanDoubleList id='gearList' genericType='Gear'/>
- </cell>
- </row>
+ <!-- cruise vessel / gear -->
+ <row>
+ <cell columns='4'>
+ <JSeparator constructorParams='SwingConstants.HORIZONTAL'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns='4'>
+ <JPanel id='vesselFilterPane'>
+ <JLabel id='filterVesselLabel'/>
+ <JRadioButton id='filterVesselAllButton'
+ onActionPerformed='model.setVesselType(VesselTypeEnum.ALL)'/>
+ <JRadioButton id='filterVesselScientificButton'
+ onActionPerformed='model.setVesselType(VesselTypeEnum.SCIENTIFIC)'/>
+ <JRadioButton id='filterVesselFishingButton'
+ onActionPerformed='model.setVesselType(VesselTypeEnum.FISHING)'/>
+ </JPanel>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JLabel id='vesselLabel'/>
+ </cell>
+ <cell columns="3">
+ <BeanFilterableComboBox id='vesselComboBox' constructorParams='this'
+ genericType='Vessel'/>
- <!-- cruise headOfMission / headOfSortRoom -->
- <row weighty='0.3'>
- <cell columns='4'>
- <JPanel layout='{new GridLayout(1, 0)}'>
- <BeanDoubleList id='headOfMissionList' genericType='Person'/>
- <BeanDoubleList id='headOfSortRoomList' genericType='Person'/>
- </JPanel>
- </cell>
- </row>
+ </cell>
+ </row>
+ <row weighty='0.3'>
+ <cell columns="4">
+ <BeanDoubleList id='gearList' genericType='Gear'/>
+ </cell>
+ </row>
- <!-- cruise comment -->
- <row weighty='0.3'>
- <cell columns='4'>
- <JScrollPane id='commentPane'
- onFocusGained='commentField.requestFocus()'>
- <JTextArea id='commentField'
- onKeyReleased='handler.setText(event, "comment")'/>
- </JScrollPane>
- </cell>
- </row>
+ <!-- cruise headOfMission / headOfSortRoom -->
+ <row weighty='0.3'>
+ <cell columns='4'>
+ <JPanel layout='{new GridLayout(1, 0)}'>
+ <BeanDoubleList id='headOfMissionList' genericType='Person'/>
+ <BeanDoubleList id='headOfSortRoomList' genericType='Person'/>
+ </JPanel>
+ </cell>
+ </row>
- </Table>
- </JScrollPane>
+ <!-- cruise comment -->
+ <row weighty='0.3'>
+ <cell columns='4'>
+ <JScrollPane id='commentPane'
+ onFocusGained='commentField.requestFocus()'>
+ <JTextArea id='commentField'
+ onKeyReleased='handler.setText(event, "comment")'/>
+ </JScrollPane>
+ </cell>
+ </row>
- <!-- Form Actions -->
- <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
- <JButton id='closeButton'/>
- <JButton id='saveButton'/>
+ </Table>
+
+ </JScrollPane>
+
+ <!-- Form Actions -->
+ <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
+ <JButton id='closeButton'/>
+ <JButton id='saveButton'/>
+ </JPanel>
</JPanel>
+ <JXTitledPanel id='gearCaracteristicsEditorTitledPanel'
+ constraints='EditCruiseUIHandler.GEAR_CARACTERISTICS_CARD'>
+ <GearCaracteristicsEditorUI id='gearCaracteristicsEditor'
+ constructorParams='this'/>
+ </JXTitledPanel>
+
</JPanel>
\ No newline at end of file
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-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -42,7 +42,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.swing.JComponent;
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
@@ -60,6 +63,10 @@
/** Logger. */
private static final Log log = LogFactory.getLog(EditCruiseUIHandler.class);
+ public static final String CRUISE_CARD = "cruise";
+
+ public static final String GEAR_CARACTERISTICS_CARD = "gearCaracteristics";
+
public static String getTitle(boolean exist) {
String result;
@@ -211,6 +218,36 @@
users,
model.getHeadOfSortRoom());
+ ui.getGearList().getSelectedList().addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+
+ if (SwingUtilities.isRightMouseButton(e)) {
+ JList jList = (JList) e.getSource();
+ Point point = e.getPoint();
+ int selectedIndex = jList.locationToIndex(point);
+ Rectangle rect = jList.getCellBounds(selectedIndex, selectedIndex);
+ if (rect.contains(point)) {
+ jList.setSelectedIndex(selectedIndex); //select the item
+ } else {
+ jList.clearSelection();
+ }
+
+ Gear gear = (Gear) jList.getSelectedValue();
+ boolean editMenuEnabled = false;
+ if (gear != null) {
+ editMenuEnabled = !getModel().isCreate() && !getModel().isModify()
+ && (!gear.isScientificGear() || persistenceService.isTemporary(gear));
+ ui.setContextValue(gear);
+ }
+ ui.getEditGearCaracteristicsItem().setEnabled(editMenuEnabled);
+ ui.getGearMenuPopup().show(jList, e.getX(), e.getY()); //and show the menu
+ }
+ }
+ });
+
+
+
SwingValidator validator = ui.getValidator();
listenValidatorValid(validator, model);
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditGearCaracteristicsAction.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -0,0 +1,34 @@
+package fr.ifremer.tutti.ui.swing.content.cruise;
+
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+
+import java.util.List;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.1
+ */
+public class EditGearCaracteristicsAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUI, EditCruiseUIHandler> {
+
+ protected final PersistenceService persistenceService;
+
+ public EditGearCaracteristicsAction(EditCruiseUIHandler handler) {
+ super(handler, false);
+ persistenceService = getContext().getPersistenceService();
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ GearCaracteristicsEditorUI editor = getUI().getGearCaracteristicsEditor();
+ editor.getModel().setEditable(true);
+
+ Gear gear = getUI().getContextValue(Gear.class);
+ gear = persistenceService.getGearWithCaracteristics(gear, getDataContext().getCruise());
+ editor.getModel().setGear(gear);
+
+ getUI().getMainPanelLayout().setSelected(EditCruiseUIHandler.GEAR_CARACTERISTICS_CARD);
+ }
+}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorRowModel.java (from rev 899, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorRowModel.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorRowModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorRowModel.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -0,0 +1,35 @@
+package fr.ifremer.tutti.ui.swing.content.cruise;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * %%
+ * 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.ui.swing.content.operation.fishing.AbstractCaracteristicRowModel;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.4
+ */
+public class GearCaracteristicsEditorRowModel extends AbstractCaracteristicRowModel<GearCaracteristicsEditorRowModel> {
+
+ private static final long serialVersionUID = 1L;
+
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorRowModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorTableModel.java (from rev 899, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorTableModel.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorTableModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorTableModel.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -0,0 +1,59 @@
+package fr.ifremer.tutti.ui.swing.content.cruise;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * %%
+ * 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.ui.swing.util.table.AbstractTuttiTableModel;
+import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
+import org.jdesktop.swingx.table.TableColumnModelExt;
+
+import static org.nuiton.i18n.I18n.n_;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.4
+ */
+public class GearCaracteristicsEditorTableModel extends AbstractTuttiTableModel<GearCaracteristicsEditorRowModel> {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final ColumnIdentifier<GearCaracteristicsEditorRowModel> KEY = ColumnIdentifier.newId(
+ GearCaracteristicsEditorRowModel.PROPERTY_KEY,
+ n_("tutti.gearCaracteristicsEditorTable.table.header.key"),
+ n_("tutti.gearCaracteristicsEditorTable.table.header.key"));
+
+ public static final ColumnIdentifier<GearCaracteristicsEditorRowModel> VALUE = ColumnIdentifier.newId(
+ GearCaracteristicsEditorRowModel.PROPERTY_VALUE,
+ n_("tutti.gearCaracteristicsEditorTable.table.header.value"),
+ n_("tutti.gearCaracteristicsEditorTable.table.header.value"));
+
+ public GearCaracteristicsEditorTableModel(TableColumnModelExt columnModel) {
+ super(columnModel, false, false);
+ setNoneEditableCols(KEY);
+ }
+
+ @Override
+ public GearCaracteristicsEditorRowModel createNewRow() {
+ GearCaracteristicsEditorRowModel result = new GearCaracteristicsEditorRowModel();
+ return result;
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorTableModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUI.css (from rev 899, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUI.css)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUI.css (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUI.css 2013-05-03 15:49:20 UTC (rev 917)
@@ -0,0 +1,70 @@
+/*
+ * #%L
+ * Tutti :: UI
+ * %%
+ * 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%
+ */
+BeanFilterableComboBox {
+ i18nPrefix: "tutti.property.";
+ showReset: true;
+}
+
+#newRowKey {
+ property: selectedCaracteristic;
+ enabled: {model.isEditable() && !newRowKey.isEmpty()};
+ visible: {model.isEditable()};
+}
+
+#addRow {
+ actionIcon: add;
+ enabled: {model.isEditable() && newRowKey.getSelectedItem() != null};
+ visible: {model.isEditable()};
+}
+
+#gearCaracteristicsEditorTable {
+ selectionMode: {ListSelectionModel.SINGLE_SELECTION};
+ selectionBackground: {null};
+ selectionForeground: {Color.BLACK};
+ sortable: false;
+ editable: {model.isEditable()};
+}
+
+#removeCaracteristicMenu {
+ actionIcon: batch-delete;
+ text: "tutti.editIndividualObservationCaracteristics.action.removeCaracteristic";
+ toolTipText: "tutti.editIndividualObservationCaracteristics.action.removeCaracteristic.tip";
+ i18nMnemonic: "tutti.editIndividualObservationCaracteristics.action.removeCaracteristic.mnemonic";
+ enabled: {model.isEditable() && model.isRemoveCaracteristicEnabled()};
+}
+
+#cancelButton {
+ actionIcon: cancel;
+ text: "tutti.editIndividualObservationCaracteristics.action.cancel";
+ toolTipText: "tutti.editIndividualObservationCaracteristics.action.cancel.tip";
+ i18nMnemonic: "tutti.editIndividualObservationCaracteristics.action.cancel.mnemonic";
+ _help: {"tutti.editIndividualObservationCaracteristics.action.cancel.help"};
+}
+
+#saveButton {
+ actionIcon: save;
+ text: "tutti.editIndividualObservationCaracteristics.action.save";
+ toolTipText: "tutti.editIndividualObservationCaracteristics.action.save.tip";
+ i18nMnemonic: "tutti.editIndividualObservationCaracteristics.action.save.mnemonic";
+ enabled: {model.isEditable() && model.isValid()};
+ _help: {"tutti.editIndividualObservationCaracteristics.action.save.help"};
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUI.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUI.jaxx (from rev 899, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUI.jaxx)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUI.jaxx (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUI.jaxx 2013-05-03 15:49:20 UTC (rev 917)
@@ -0,0 +1,89 @@
+<!--
+ #%L
+ Tutti :: UI
+ %%
+ 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%
+ -->
+<Table
+ implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<GearCaracteristicsEditorUIModel, GearCaracteristicsEditorUIHandler>'>
+
+ <import>
+ fr.ifremer.tutti.persistence.entities.referential.Caracteristic
+ fr.ifremer.tutti.ui.swing.util.TuttiUI
+
+ jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
+ org.jdesktop.swingx.JXTable
+ javax.swing.ListSelectionModel
+ java.awt.Color
+ </import>
+
+ <GearCaracteristicsEditorUIHandler id='handler'
+ initializer='getContextValue(GearCaracteristicsEditorUIHandler.class)'/>
+
+ <GearCaracteristicsEditorUIModel id='model'
+ initializer='getContextValue(GearCaracteristicsEditorUIModel.class)'/>
+
+ <JPopupMenu id='tablePopup'>
+ <JMenuItem id='removeCaracteristicMenu'
+ onActionPerformed='handler.removeCaracteristic()'/>
+ </JPopupMenu>
+
+ <row fill='both'>
+ <cell fill='both' weightx='1'>
+ <BeanFilterableComboBox id='newRowKey' constructorParams='this'
+ genericType='Caracteristic'/>
+ </cell>
+ <cell fill='both'>
+ <JButton id='addRow' onActionPerformed='handler.addRow()'/>
+ </cell>
+ </row>
+ <row fill='both' weighty='1'>
+ <cell fill='both' columns='2'>
+ <JScrollPane>
+ <JXTable id='gearCaracteristicsEditorTable'
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
+ onKeyPressed='handler.openRowMenu(event, tablePopup)'/>
+ </JScrollPane>
+ </cell>
+ </row>
+
+ <!-- Form Actions -->
+ <row fill='both'>
+ <cell fill='both' columns='2'>
+ <JPanel layout='{new GridLayout(1, 0)}'>
+ <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ </JPanel>
+ </cell>
+ </row>
+ <script><![CDATA[
+
+public GearCaracteristicsEditorUI(TuttiUI parentUI) {
+ JAXXUtil.initContext(this, parentUI);
+ GearCaracteristicsEditorUIHandler handler = new GearCaracteristicsEditorUIHandler(parentUI, this);
+ setContextValue(handler);
+ handler.beforeInitUI();
+}
+
+protected void $afterCompleteSetup() {
+ handler.afterInitUI();
+}
+
+ ]]></script>
+
+</Table>
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUI.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUIHandler.java (from rev 899, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUIHandler.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUIHandler.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUIHandler.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -0,0 +1,337 @@
+package fr.ifremer.tutti.ui.swing.content.cruise;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.util.Cancelable;
+import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
+import fr.ifremer.tutti.ui.swing.util.TuttiUI;
+import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapColumnRowModel;
+import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapEditorUI;
+import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor;
+import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
+import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
+import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
+
+import javax.swing.*;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
+import static fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapCellComponent.CaracteristicMapCellEditor;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.1
+ */
+public class GearCaracteristicsEditorUIHandler
+ extends AbstractTuttiTableUIHandler<GearCaracteristicsEditorRowModel, GearCaracteristicsEditorUIModel, GearCaracteristicsEditorUI>
+ implements Cancelable {
+
+ private final static Log log =
+ LogFactory.getLog(GearCaracteristicsEditorUIHandler.class);
+
+ protected final PersistenceService persistenceService = getContext().getPersistenceService();
+
+ public GearCaracteristicsEditorUIHandler(TuttiUI parentUi,
+ GearCaracteristicsEditorUI ui) {
+ super(parentUi.getHandler().getContext(), ui, GearCaracteristicsEditorRowModel.PROPERTY_VALUE);
+ }
+
+ @Override
+ public GearCaracteristicsEditorTableModel getTableModel() {
+ return (GearCaracteristicsEditorTableModel) getTable().getModel();
+ }
+
+ @Override
+ public JXTable getTable() {
+ return ui.getGearCaracteristicsEditorTable();
+ }
+
+ @Override
+ protected boolean isRowValid(GearCaracteristicsEditorRowModel row) {
+ return row.getKey() != null && row.getValue() != null;
+ }
+
+ @Override
+ protected void onRowModified(int rowIndex, GearCaracteristicsEditorRowModel row,
+ String propertyName, Object oldValue, Object newValue) {
+ recomputeRowValidState(row);
+ super.onRowModified(rowIndex, row, propertyName, oldValue, newValue);
+ saveSelectedRowIfNeeded();
+ }
+
+ @Override
+ protected void onAfterSelectedRowChanged(int oldRowIndex, GearCaracteristicsEditorRowModel oldRow, int newRowIndex, GearCaracteristicsEditorRowModel newRow) {
+ super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
+ getModel().setRemoveCaracteristicEnabled(newRowIndex >= 0);
+ }
+
+ @Override
+ protected void saveSelectedRowIfRequired(TuttiBeanMonitor<GearCaracteristicsEditorRowModel> rowMonitor,
+ GearCaracteristicsEditorRowModel row) {
+ if (row.isValid()) {
+ // there is a valid bean attached to the monitor
+
+ if (rowMonitor.wasModified()) {
+
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + row + " was modified, will save it");
+ }
+
+ saveRow(row);
+
+ }
+ }
+ }
+
+ @Override
+ public void beforeInitUI() {
+ GearCaracteristicsEditorUIModel model = createModel();
+ getUI().setContextValue(model);
+
+ model.addPropertyChangeListener(GearCaracteristicsEditorUIModel.PROPERTY_GEAR, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ editGear((Gear) evt.getNewValue());
+ }
+ });
+
+ }
+
+ @Override
+ public void afterInitUI() {
+ initUI(getUI());
+
+ initBeanFilterableComboBox(getKeyCombo(), Lists.<Caracteristic>newArrayList(), null);
+ getModel().setAvailableCaracteristics(getDataContext().getCaracteristics());
+
+ JXTable table = getTable();
+
+ // create table column model
+ DefaultTableColumnModelExt columnModel =
+ new DefaultTableColumnModelExt();
+
+ {
+
+ addColumnToModel(columnModel,
+ null,
+ newTableCellRender(Caracteristic.class, DecoratorService.CARACTERISTIC_WITH_UNIT),
+ GearCaracteristicsEditorTableModel.KEY);
+ }
+
+ {
+
+ addColumnToModel(columnModel,
+ new CaracteristicValueEditor(context),
+ new CaracteristicValueRenderer(context),
+ GearCaracteristicsEditorTableModel.VALUE);
+ }
+
+ // create table model
+ GearCaracteristicsEditorTableModel tableModel =
+ new GearCaracteristicsEditorTableModel(columnModel);
+
+ table.setModel(tableModel);
+ table.setColumnModel(columnModel);
+
+ initTable(table);
+ }
+
+ @Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getNewRowKey();
+ }
+
+ @Override
+ public void onCloseUI() {
+ if (log.isDebugEnabled()) {
+ log.debug("closing: " + ui);
+ }
+
+ EditCruiseUI ui = getUI().getParentContainer(EditCruiseUI.class);
+ ui.getMainPanelLayout().setSelected(EditCruiseUIHandler.CRUISE_CARD);
+
+ // when canceling always invalid model (in that way)
+ getModel().setValid(false);
+ getModel().setGear(null);
+ }
+
+ @Override
+ public SwingValidator<GearCaracteristicsEditorUIModel> getValidator() {
+ return null;
+ }
+
+ @Override
+ public void cancel() {
+
+ if (log.isInfoEnabled()) {
+ log.info("Cancel UI " + ui);
+ }
+
+ // close dialog
+ closeUI(ui);
+ }
+
+ protected BeanFilterableComboBox<Caracteristic> getKeyCombo() {
+ return ui.getNewRowKey();
+ }
+
+ protected GearCaracteristicsEditorUIModel createModel() {
+ return new GearCaracteristicsEditorUIModel();
+ }
+
+ protected void saveRow(GearCaracteristicsEditorRowModel row) {
+
+ if (row.isValid()) {
+ CaracteristicMap caracteristics = getModel().getCaracteristicMap();
+ Preconditions.checkNotNull(caracteristics);
+
+ caracteristics.put(row.getKey(), row.getValue());
+ }
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
+
+ /**
+ * Adds a row with the parameter selected in the combo box
+ **/
+ public void addRow() {
+ BeanFilterableComboBox<Caracteristic> keyCombo = getKeyCombo();
+ Caracteristic selectedItem = (Caracteristic) keyCombo.getSelectedItem();
+ GearCaracteristicsEditorTableModel tableModel = getTableModel();
+
+ GearCaracteristicsEditorRowModel row = tableModel.createNewRow();
+ row.setKey(selectedItem);
+// tableModel.addNewRow(row);
+ getModel().getRows().add(row);
+
+ int rowIndex = tableModel.getRowCount() - 1;
+ tableModel.fireTableRowsInserted(rowIndex, rowIndex);
+
+ keyCombo.getHandler().removeItem(selectedItem);
+
+ GearCaracteristicsEditorUIModel model = getModel();
+ model.setModify(true);
+ recomputeRowValidState(row);
+ }
+
+ public void removeCaracteristic() {
+ int rowIndex = getTable().getSelectedRow();
+
+ Preconditions.checkState(
+ rowIndex != -1,
+ "Cant remove caracteristic if no caracteristic selected");
+
+ GearCaracteristicsEditorRowModel row = getTableModel().getEntry(rowIndex);
+
+ CaracteristicMap caracteristicMap = getModel().getCaracteristicMap();
+ if (caracteristicMap != null) {
+ caracteristicMap.remove(row.getKey());
+ }
+
+ //add the row in the combo
+ BeanFilterableComboBox keyCombo = getKeyCombo();
+ keyCombo.addItem(row.getKey());
+// selectFirstInCombo(keyCombo);
+ keyCombo.getHandler().reset();
+
+ // remove the row from the model
+ getModel().getRows().remove(rowIndex);
+
+ // refresh all the table
+ getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
+
+ getModel().removeRowInError(row);
+ }
+
+ public void save() {
+
+ if (log.isInfoEnabled()) {
+ log.info("Save UI " + ui);
+ }
+
+ Gear gear = getModel().getGear();
+ gear.setCaracteristics((CaracteristicMap) getModel().getCaracteristicMap().clone());
+ persistenceService.saveGearCaracteristics(gear, getDataContext().getCruise());
+
+ closeUI(ui);
+ }
+
+ protected void editGear(Gear gear) {
+
+ if (gear != null) {
+ GearCaracteristicsEditorTableModel tableModel = getTableModel();
+ GearCaracteristicsEditorUIModel model = getModel();
+
+ CaracteristicMap caracteristicMap = gear.getCaracteristics();
+ if (caracteristicMap == null) {
+ caracteristicMap = new CaracteristicMap();
+ }
+ model.getCaracteristicMap().putAll(caracteristicMap);
+
+ List<GearCaracteristicsEditorRowModel> rows = Lists.newArrayList();
+ List<Caracteristic> caracteristics = Lists.newArrayList(caracteristicMap.keySet());
+
+ List<Caracteristic> availableCaracteristics = model.getAvailableCaracteristics();
+
+ for (Caracteristic key : caracteristics) {
+ GearCaracteristicsEditorRowModel newRow = tableModel.createNewRow();
+ newRow.setKey(key);
+ newRow.setValue(caracteristicMap.get(key));
+ rows.add(newRow);
+ }
+
+ model.setRows(rows);
+
+ List<Caracteristic> caracteristicList = Lists.newArrayList();
+
+ for (Caracteristic caracteristic : availableCaracteristics) {
+ if (!caracteristics.contains(caracteristic)) {
+ caracteristicList.add(caracteristic);
+ }
+ }
+
+ BeanFilterableComboBox<Caracteristic> keyCombo = getKeyCombo();
+ keyCombo.setData(caracteristicList);
+ // selectFirstInCombo(keyCombo);
+ keyCombo.getHandler().reset();
+ model.setModify(false);
+
+ }
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUIHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUIModel.java (from rev 899, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUIModel.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUIModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUIModel.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -0,0 +1,113 @@
+package fr.ifremer.tutti.ui.swing.content.cruise;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
+
+import java.util.List;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.1
+ */
+public class GearCaracteristicsEditorUIModel extends AbstractTuttiTableUIModel<Object, GearCaracteristicsEditorRowModel, GearCaracteristicsEditorUIModel> {
+
+ public static final String PROPERTY_GEAR = "gear";
+
+ public static final String PROPERTY_EDITABLE = "editable";
+
+ public static final String PROPERTY_REMOVE_CARACTERISTIC_ENABLED = "removeCaracteristicEnabled";
+
+ public static final String PROPERTY_AVAILABLE_CARACTERISTICS = "availableCaracteristics";
+
+ private static final long serialVersionUID = 1L;
+
+ protected List<Caracteristic> availableCaracteristics;
+
+ protected Gear gear;
+
+ protected boolean editable;
+
+ protected CaracteristicMap caracteristicMap = new CaracteristicMap();
+
+ /**
+ * Can user remove a selected caracteristic?
+ */
+ protected boolean removeCaracteristicEnabled;
+
+ public GearCaracteristicsEditorUIModel() {
+ super(Object.class, null, null);
+ }
+
+ public List<Caracteristic> getAvailableCaracteristics() {
+ return availableCaracteristics;
+ }
+
+ public void setAvailableCaracteristics(List<Caracteristic> availableCaracteristics) {
+ Object oldValue = getAvailableCaracteristics();
+ this.availableCaracteristics = availableCaracteristics;
+ firePropertyChange(PROPERTY_AVAILABLE_CARACTERISTICS, oldValue, availableCaracteristics);
+ }
+
+ public Gear getGear() {
+ return gear;
+ }
+
+ public void setGear(Gear gear) {
+ Object oldValue = getGear();
+ this.gear = gear;
+ firePropertyChange(PROPERTY_GEAR, oldValue, this.gear);
+ }
+
+ public boolean isRemoveCaracteristicEnabled() {
+ return removeCaracteristicEnabled;
+ }
+
+ public void setRemoveCaracteristicEnabled(boolean removeCaracteristicEnabled) {
+ Object oldValue = isRemoveCaracteristicEnabled();
+ this.removeCaracteristicEnabled = removeCaracteristicEnabled;
+ firePropertyChange(PROPERTY_REMOVE_CARACTERISTIC_ENABLED, oldValue, removeCaracteristicEnabled);
+ }
+
+ public CaracteristicMap getCaracteristicMap() {
+ return caracteristicMap;
+ }
+
+ public boolean isEditable() {
+ return editable;
+ }
+
+ public void setEditable(boolean editable) {
+ Object oldValue = isEditable();
+ this.editable = editable;
+ firePropertyChange(PROPERTY_EDITABLE, oldValue, editable);
+ }
+
+ @Override
+ protected Object newEntity() {
+ return null;
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/GearCaracteristicsEditorUIModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/ViewGearCaracteristicsAction.java 2013-05-03 15:49:20 UTC (rev 917)
@@ -0,0 +1,31 @@
+package fr.ifremer.tutti.ui.swing.content.cruise;
+
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 2.1
+ */
+public class ViewGearCaracteristicsAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUI, EditCruiseUIHandler> {
+
+ protected final PersistenceService persistenceService;
+
+ public ViewGearCaracteristicsAction(EditCruiseUIHandler handler) {
+ super(handler, false);
+ persistenceService = getContext().getPersistenceService();
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ GearCaracteristicsEditorUI editor = getUI().getGearCaracteristicsEditor();
+ editor.getModel().setEditable(false);
+
+ Gear gear = getUI().getContextValue(Gear.class);
+ gear = persistenceService.getGearWithCaracteristics(gear, getDataContext().getCruise());
+ editor.getModel().setGear(gear);
+
+ getUI().getMainPanelLayout().setSelected(EditCruiseUIHandler.GEAR_CARACTERISTICS_CARD);
+ }
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-05-03 15:49:20 UTC (rev 917)
@@ -75,7 +75,7 @@
<JMenuItem id='removeBenthosBatchMenu'/>
<JMenuItem id='removeBenthosSubBatchMenu'/>
<JMenuItem id='renameBenthosBatchMenu'/>
- <JMenuItem id='createSpeciesMelagMenu'/>
+ <JMenuItem id='createBenthosMelagMenu'/>
</JPopupMenu>
<Table id='form' fill='both' constraints='BorderLayout.NORTH'>
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-03 15:49:20 UTC (rev 917)
@@ -6,6 +6,7 @@
swing.error.desktop.mail.not.supported=
swing.error.desktop.not.supported=
traits=
+ttutti.editCruise.action.editGearCaracteristics.mnemonic=
tutti.about.bottomText=
tutti.about.message=
tutti.about.title=
@@ -277,6 +278,9 @@
tutti.editBenthosBatch.action.createBatch=
tutti.editBenthosBatch.action.createBatch.mnemonic=
tutti.editBenthosBatch.action.createBatch.tip=
+tutti.editBenthosBatch.action.createMelag=
+tutti.editBenthosBatch.action.createMelag.mnemonic=
+tutti.editBenthosBatch.action.createMelag.tip=
tutti.editBenthosBatch.action.removeBatch=
tutti.editBenthosBatch.action.removeBatch.mnemonic=
tutti.editBenthosBatch.action.removeBatch.tip=
@@ -434,6 +438,8 @@
tutti.editCruise.action.closeEditCruise=
tutti.editCruise.action.closeEditCruise.mnemonic=
tutti.editCruise.action.closeEditCruise.tip=
+tutti.editCruise.action.editGearCaracteristics=
+tutti.editCruise.action.editGearCaracteristics.tip=
tutti.editCruise.action.generateCampaignName=
tutti.editCruise.action.generateCampaignName.mnemonic=
tutti.editCruise.action.generateName.tip=
@@ -443,6 +449,8 @@
tutti.editCruise.action.saveCruise=
tutti.editCruise.action.saveCruise.mnemonic=
tutti.editCruise.action.saveCruise.tip=
+tutti.editCruise.action.viewGearCaracteristics=
+tutti.editCruise.action.viewGearCaracteristics.tip=
tutti.editCruise.askCancelEditBeforeLeaving.cancelSaveCruise=
tutti.editCruise.askSaveBeforeLeaving.saveCruise=
tutti.editCruise.field.beginDate=
@@ -481,6 +489,7 @@
tutti.editCruise.filterVesselType.fishing.tip=
tutti.editCruise.filterVesselType.scientific=
tutti.editCruise.filterVesselType.scientific.tip=
+tutti.editCruise.gearCaracteristics.title=
tutti.editCruise.title.create.cruise=
tutti.editCruise.title.edit.cruise=
tutti.editFishingOperation.action.attachments.tip=
@@ -887,6 +896,9 @@
tutti.flash.info.species.imported.in.protocol.severalReplaced=
tutti.flash.info.species.remove.from.protocol=
tutti.flash.info.species.replaced=
+tutti.gearCaracteristicsEditorEditorTable.table.header.key=
+tutti.gearCaracteristicsEditorTable.table.header.key=
+tutti.gearCaracteristicsEditorTable.table.header.value=
tutti.gearUseFeatureTable.action.removeCaracteristic=
tutti.gearUseFeatureTable.action.removeCaracteristic.mnemonic=
tutti.gearUseFeatureTable.action.removeCaracteristic.tip=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-02 15:33:42 UTC (rev 916)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-03 15:49:20 UTC (rev 917)
@@ -273,6 +273,9 @@
tutti.editBenthosBatch.action.createBatch=Créer un lot pour une espèce
tutti.editBenthosBatch.action.createBatch.mnemonic=C
tutti.editBenthosBatch.action.createBatch.tip=Créer un nouveau lot pour une espèce
+tutti.editBenthosBatch.action.createMelag=Espèces d'un MELAG
+tutti.editBenthosBatch.action.createMelag.mnemonic=C
+tutti.editBenthosBatch.action.createMelag.tip=Calcul des poids des lots appartenant à un MELAG
tutti.editBenthosBatch.action.removeBatch=Supprimer le lot
tutti.editBenthosBatch.action.removeBatch.mnemonic=S
tutti.editBenthosBatch.action.removeBatch.tip=Supprimer le lot courant (celui de la ligne sélectionnée) et tous ces fils
@@ -421,6 +424,8 @@
tutti.editCruise.action.closeEditCruise=Fermer
tutti.editCruise.action.closeEditCruise.mnemonic=F
tutti.editCruise.action.closeEditCruise.tip=Fermer l'écran d'édition de campagne
+tutti.editCruise.action.editGearCaracteristics=Editer
+tutti.editCruise.action.editGearCaracteristics.tip=Editer les caractéristiques de l'engin
tutti.editCruise.action.generateCampaignName=Générer le nom
tutti.editCruise.action.generateCampaignName.mnemonic=G
tutti.editCruise.action.generateName.tip=Générer le nom normalisé de la campagne
@@ -430,6 +435,8 @@
tutti.editCruise.action.saveCruise=Enregistrer
tutti.editCruise.action.saveCruise.mnemonic=E
tutti.editCruise.action.saveCruise.tip=Enregistrer la campagne
+tutti.editCruise.action.viewGearCaracteristics=Voir
+tutti.editCruise.action.viewGearCaracteristics.tip=Voir les caractéristiques de l'engin
tutti.editCruise.askCancelEditBeforeLeaving.cancelSaveCruise=La campagne n'est pas valide et ne peut pas être enregistrée.
tutti.editCruise.askSaveBeforeLeaving.saveCruise=Des modifications sur la campagne n'ont pas été enregistrées.
tutti.editCruise.field.beginDate=Date de début
@@ -466,6 +473,7 @@
tutti.editCruise.filterVesselType.fishing.tip=Uniquement les navires professionnels
tutti.editCruise.filterVesselType.scientific=Scientifiques
tutti.editCruise.filterVesselType.scientific.tip=Uniquement les navires scientifiques
+tutti.editCruise.gearCaracteristics.title=Caractéristiques d'un engin
tutti.editCruise.title.create.cruise=Créer une nouvelle campagne
tutti.editCruise.title.edit.cruise=Éditer une campagne existante
tutti.editFishingOperation.action.attachments.tip=Pièces-jointes de l'opération
@@ -857,6 +865,8 @@
tutti.flash.info.species.imported.in.protocol.severalReplaced=Espèces importées dans le protocole depuis le fichier <strong>%s</strong>. %s remplacées par leur référent.
tutti.flash.info.species.remove.from.protocol=L'espèce <strong>%s</strong> a été retirée du protocole.
tutti.flash.info.species.replaced=L'espèce <strong>%s</strong> a été remplacée par son référent <strong>%s</strong>.
+tutti.gearCaracteristicsEditorTable.table.header.key=Caractéristique
+tutti.gearCaracteristicsEditorTable.table.header.value=Valeur
tutti.gearUseFeatureTable.action.removeCaracteristic=Supprimer
tutti.gearUseFeatureTable.action.removeCaracteristic.mnemonic=S
tutti.gearUseFeatureTable.action.removeCaracteristic.tip=Supprimer la caractéristique
1
0
r916 - in trunk: . tutti-persistence tutti-service tutti-ui-swing
by maven-release@users.forge.codelutin.com 02 May '13
by maven-release@users.forge.codelutin.com 02 May '13
02 May '13
Author: maven-release
Date: 2013-05-02 17:33:42 +0200 (Thu, 02 May 2013)
New Revision: 916
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/916
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
trunk/pom.xml
trunk/tutti-persistence/pom.xml
trunk/tutti-service/pom.xml
trunk/tutti-ui-swing/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-02 15:33:34 UTC (rev 915)
+++ trunk/pom.xml 2013-05-02 15:33:42 UTC (rev 916)
@@ -33,7 +33,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>2.1</version>
+ <version>2.2-SNAPSHOT</version>
<modules>
<module>tutti-persistence</module>
@@ -89,12 +89,12 @@
</developers>
<scm>
- <url>http://svn.forge.codelutin.com/svn/tutti/tags/tutti-2.1</url>
+ <url>http://svn.forge.codelutin.com/svn/tutti/trunk</url>
<connection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-2.1
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
</connection>
<developerConnection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-2.1
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
</developerConnection>
</scm>
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-05-02 15:33:34 UTC (rev 915)
+++ trunk/tutti-persistence/pom.xml 2013-05-02 15:33:42 UTC (rev 916)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>2.1</version>
+ <version>2.2-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-05-02 15:33:34 UTC (rev 915)
+++ trunk/tutti-service/pom.xml 2013-05-02 15:33:42 UTC (rev 916)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>2.1</version>
+ <version>2.2-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-05-02 15:33:34 UTC (rev 915)
+++ trunk/tutti-ui-swing/pom.xml 2013-05-02 15:33:42 UTC (rev 916)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>2.1</version>
+ <version>2.2-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0
Author: maven-release
Date: 2013-05-02 17:33:34 +0200 (Thu, 02 May 2013)
New Revision: 915
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/915
Log:
[maven-release-plugin] copy for tag tutti-2.1
Added:
tags/tutti-2.1/
1
0
r914 - in trunk: . tutti-persistence tutti-service tutti-ui-swing
by maven-release@users.forge.codelutin.com 02 May '13
by maven-release@users.forge.codelutin.com 02 May '13
02 May '13
Author: maven-release
Date: 2013-05-02 17:33:25 +0200 (Thu, 02 May 2013)
New Revision: 914
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/914
Log:
[maven-release-plugin] prepare release tutti-2.1
Modified:
trunk/pom.xml
trunk/tutti-persistence/pom.xml
trunk/tutti-service/pom.xml
trunk/tutti-ui-swing/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-05-02 14:30:42 UTC (rev 913)
+++ trunk/pom.xml 2013-05-02 15:33:25 UTC (rev 914)
@@ -33,7 +33,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>2.1</version>
<modules>
<module>tutti-persistence</module>
@@ -89,12 +89,12 @@
</developers>
<scm>
- <url>http://svn.forge.codelutin.com/svn/tutti/trunk</url>
+ <url>http://svn.forge.codelutin.com/svn/tutti/tags/tutti-2.1</url>
<connection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-2.1
</connection>
<developerConnection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-2.1
</developerConnection>
</scm>
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-05-02 14:30:42 UTC (rev 913)
+++ trunk/tutti-persistence/pom.xml 2013-05-02 15:33:25 UTC (rev 914)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>2.1</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-05-02 14:30:42 UTC (rev 913)
+++ trunk/tutti-service/pom.xml 2013-05-02 15:33:25 UTC (rev 914)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>2.1</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-05-02 14:30:42 UTC (rev 913)
+++ trunk/tutti-ui-swing/pom.xml 2013-05-02 15:33:25 UTC (rev 914)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>2.1</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0
02 May '13
Author: tchemit
Date: 2013-05-02 16:30:42 +0200 (Thu, 02 May 2013)
New Revision: 913
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/913
Log:
fixes #2369: [IMP/EXP] - L'export de base avec suppression ne fonctionne pas
Modified:
trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat
Modified: trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat 2013-05-02 13:21:08 UTC (rev 912)
+++ trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat 2013-05-02 14:30:42 UTC (rev 913)
@@ -19,12 +19,13 @@
del update.bat
copy tutti.config tutti
call tutti\launch.bat --option tutti.launch.mode full --option tutti.basedir %TUTTI_BASEDIR%
+if errorlevel 89 goto deletedb
if errorlevel 88 goto start
-if errorlevel 89 goto deletedb
goto quit
:deletedb
+
echo "Clean database and restart"
del /S/Q data\db
1
0
r912 - in trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service: . batch
by tchemit@users.forge.codelutin.com 02 May '13
by tchemit@users.forge.codelutin.com 02 May '13
02 May '13
Author: tchemit
Date: 2013-05-02 15:21:08 +0200 (Thu, 02 May 2013)
New Revision: 912
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/912
Log:
refs #2221: Rendre les donn?\195?\169es CGFS compatible avec Tutti (cr?\195?\169ation dynamique des noeud de l'arbre uniquement quand requis)
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-05-02 10:32:02 UTC (rev 911)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/BenthosBatchPersistenceServiceImpl.java 2013-05-02 13:21:08 UTC (rev 912)
@@ -459,13 +459,12 @@
if (target.getId() == null
|| target.getRootBatch() == null
|| (target.getParentBatch() != null && !target.getParentBatch().getId().toString().equals(parentBatchId))) {
- batchHelper.setBatchParents(
+ batchHelper.setBenthosBatchParents(
source.getSampleCategoryType(),
source.getSampleCategoryValue(),
target,
parentBatchId,
- catchBatch,
- enumeration.QUALITATIVE_ID_SORTING_TYPE_BENTHOS);
+ catchBatch);
}
// RankOrder (initialize once, at creation)
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java 2013-05-02 10:32:02 UTC (rev 911)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CatchBatchPersistenceServiceImpl.java 2013-05-02 13:21:08 UTC (rev 912)
@@ -93,9 +93,11 @@
enumeration.PMFM_ID_SORTED_UNSORTED,
enumeration.QUALITATIVE_VRAC_ID);
- result.setCatchTotalSortedCarousselWeight(vracBatch.getWeight());
- result.setCatchTotalSortedTremisWeight(vracBatch.getWeightBeforeSampling());
- {
+ if (vracBatch != null) {
+
+ result.setCatchTotalSortedCarousselWeight(vracBatch.getWeight());
+ result.setCatchTotalSortedTremisWeight(vracBatch.getWeightBeforeSampling());
+
// Vrac > Species
SortingBatch vracSpeciesBatch = batchHelper.getSortingBatch(
vracBatch,
@@ -299,110 +301,183 @@
quantificationMeasurements.removeAll(notChangedQuantificationMeasurements);
}
+ boolean needVracSpeciesAliveNotItemized =
+ source.getSpeciesTotalLivingNotItemizedWeight() != null;
+ boolean needVracSpeciesInert =
+ source.getSpeciesTotalInertWeight() != null;
+ boolean needVracSpeciesAliveItemized = false;
+
+ boolean needVracSpecies = source.getSpeciesTotalSortedWeight() != null ||
+ needVracSpeciesAliveNotItemized ||
+ needVracSpeciesInert ||
+ needVracSpeciesAliveItemized;
+
+ boolean needVracBenthosAliveNotItemized =
+ source.getBenthosTotalLivingNotItemizedWeight() != null;
+ boolean needVracBenthosInert =
+ source.getBenthosTotalInertWeight() != null;
+ boolean needVracBenthosAliveItemized = false;
+
+ boolean needVracBenthos = source.getBenthosTotalSortedWeight() != null ||
+ needVracBenthosAliveNotItemized ||
+ needVracBenthosInert ||
+ needVracBenthosAliveItemized;
+
+ boolean needVrac =
+ source.getCatchTotalSortedCarousselWeight() != null ||
+ source.getCatchTotalSortedTremisWeight() != null ||
+ needVracSpecies ||
+ needVracBenthos;
+
+ boolean needHorsVracSpecies = false;
+ boolean needHorsVracBenthos = false;
+ boolean needHorsVracMarineLitter =
+ source.getMarineLitterTotalWeight() != null;
+
+ boolean needHorsVrac = needHorsVracSpecies ||
+ needHorsVracBenthos ||
+ needHorsVracMarineLitter;
+
+ boolean needUnsorted = source.getCatchTotalRejectedWeight() != null;
+
// ---------------------------------------------------------------------
// Vrac
// ---------------------------------------------------------------------
- SortingBatch vracBatch = batchHelper.getOrCreateVracBatch(
- target,
- source.getCatchTotalSortedCarousselWeight(),
- source.getCatchTotalSortedTremisWeight());
- // ---------------------------------------------------------------------
- // Vrac / Species
- // ---------------------------------------------------------------------
+ if (needVrac) {
- SortingBatch speciesBatch = batchHelper.getOrCreateSpeciesVracRootBatch(
- target,
- vracBatch,
- source.getSpeciesTotalSortedWeight());
+ SortingBatch vracBatch = batchHelper.getOrCreateVracBatch(
+ target,
+ source.getCatchTotalSortedCarousselWeight(),
+ source.getCatchTotalSortedTremisWeight());
- // ---------------------------------------------------------------------
- // Vrac / Species / Alive not itemized
- // ---------------------------------------------------------------------
- batchHelper.getOrCreateSpeciesVracAliveNotItemizeRootBatch(
- target,
- speciesBatch,
- source.getSpeciesTotalLivingNotItemizedWeight());
+ if (needVracSpecies) {
- // ---------------------------------------------------------------------
- // Vrac / Species / Inert (not alive)
- // ---------------------------------------------------------------------
- batchHelper.getOrCreateSpeciesVracInertRootBatch(
- target,
- speciesBatch,
- source.getSpeciesTotalInertWeight());
+ // ---------------------------------------------------------------------
+ // Vrac / Species
+ // ---------------------------------------------------------------------
+ SortingBatch speciesBatch = batchHelper.getOrCreateSpeciesVracRootBatch(
+ target,
+ vracBatch,
+ source.getSpeciesTotalSortedWeight());
- // ---------------------------------------------------------------------
- // Vrac / Species / Alive itemized
- // ---------------------------------------------------------------------
- batchHelper.getOrCreateSpeciesVracAliveItemizeRootBatch(
- target,
- speciesBatch);
+ if (needVracSpeciesAliveNotItemized) {
+ // ---------------------------------------------------------------------
+ // Vrac / Species / Alive not itemized
+ // ---------------------------------------------------------------------
+ batchHelper.getOrCreateSpeciesVracAliveNotItemizeRootBatch(
+ target,
+ speciesBatch,
+ source.getSpeciesTotalLivingNotItemizedWeight());
+ }
- // ---------------------------------------------------------------------
- // Vrac > Benthos
- // ---------------------------------------------------------------------
- SortingBatch benthosBatch = batchHelper.getOrCreateBenthosVracRootBatch(
- target,
- vracBatch,
- source.getBenthosTotalSortedWeight());
+ if (needVracSpeciesInert) {
+ // ---------------------------------------------------------------------
+ // Vrac / Species / Inert (not alive)
+ // ---------------------------------------------------------------------
+ batchHelper.getOrCreateSpeciesVracInertRootBatch(
+ target,
+ speciesBatch,
+ source.getSpeciesTotalInertWeight());
+ }
- // ---------------------------------------------------------------------
- // Vrac / Benthos / Alive not itemized
- // ---------------------------------------------------------------------
- batchHelper.getOrCreateBenthosVracAliveNotItemizeRootBatch(
- target,
- benthosBatch,
- source.getBenthosTotalLivingNotItemizedWeight());
+ if (needVracSpeciesAliveItemized) {
+ // ---------------------------------------------------------------------
+ // Vrac / Species / Alive itemized
+ // ---------------------------------------------------------------------
+ batchHelper.getOrCreateSpeciesVracAliveItemizeRootBatch(
+ target,
+ speciesBatch);
+ }
+ }
- // ---------------------------------------------------------------------
- // Vrac / Benthos / Inert (not alive)
- // ---------------------------------------------------------------------
- batchHelper.getOrCreateBenthosVracInertRootBatch(
- target,
- benthosBatch,
- source.getBenthosTotalInertWeight());
+ if (needVracBenthos) {
- // ---------------------------------------------------------------------
- // Vrac / Benthos / Alive itemized
- // ---------------------------------------------------------------------
- batchHelper.getOrCreateBenthosVracAliveItemizeRootBatch(
- target,
- benthosBatch);
+ // ---------------------------------------------------------------------
+ // Vrac > Benthos
+ // ---------------------------------------------------------------------
+ SortingBatch benthosBatch = batchHelper.getOrCreateBenthosVracRootBatch(
+ target,
+ vracBatch,
+ source.getBenthosTotalSortedWeight());
- // ---------------------------------------------------------------------
- // Hors Vrac
- // ---------------------------------------------------------------------
- SortingBatch horsVracBatch = batchHelper.getOrCreateHorsVracBatch(target);
+ if (needVracBenthosAliveNotItemized) {
+ // ---------------------------------------------------------------------
+ // Vrac / Benthos / Alive not itemized
+ // ---------------------------------------------------------------------
+ batchHelper.getOrCreateBenthosVracAliveNotItemizeRootBatch(
+ target,
+ benthosBatch,
+ source.getBenthosTotalLivingNotItemizedWeight());
+ }
- // ---------------------------------------------------------------------
- // Hors Vrac > Species
- // ---------------------------------------------------------------------
- batchHelper.getOrCreateSpeciesHorsVracRootBatch(
- target,
- horsVracBatch);
+ if (needVracBenthosInert) {
+ // ---------------------------------------------------------------------
+ // Vrac / Benthos / Inert (not alive)
+ // ---------------------------------------------------------------------
+ batchHelper.getOrCreateBenthosVracInertRootBatch(
+ target,
+ benthosBatch,
+ source.getBenthosTotalInertWeight());
+ }
- // ---------------------------------------------------------------------
- // Hors Vrac > Benthos
- // ---------------------------------------------------------------------
- batchHelper.getOrCreateBenthosHorsVracRootBatch(
- target,
- horsVracBatch);
+ if (needVracBenthosAliveItemized) {
+ // ---------------------------------------------------------------------
+ // Vrac / Benthos / Alive itemized
+ // ---------------------------------------------------------------------
+ batchHelper.getOrCreateBenthosVracAliveItemizeRootBatch(
+ target,
+ benthosBatch);
+ }
+ }
- // ---------------------------------------------------------------------
- // Hors Vrac > MarineLitter
- // ---------------------------------------------------------------------
- batchHelper.getOrCreateMarineLitterRootBatch(
- target,
- horsVracBatch,
- source.getMarineLitterTotalWeight());
+ }
- // ---------------------------------------------------------------------
- // Unsorted (=rejected)
- // ---------------------------------------------------------------------
- batchHelper.getOrCreateRejectedBatch(
- target, source.getCatchTotalRejectedWeight());
+ if (needHorsVrac) {
+ // ---------------------------------------------------------------------
+ // Hors Vrac
+ // ---------------------------------------------------------------------
+ SortingBatch horsVracBatch =
+ batchHelper.getOrCreateHorsVracBatch(target);
+
+ if (needHorsVracSpecies) {
+ // ---------------------------------------------------------------------
+ // Hors Vrac > Species
+ // ---------------------------------------------------------------------
+ batchHelper.getOrCreateSpeciesHorsVracRootBatch(
+ target,
+ horsVracBatch);
+ }
+
+ if (needHorsVracBenthos) {
+ // ---------------------------------------------------------------------
+ // Hors Vrac > Benthos
+ // ---------------------------------------------------------------------
+ batchHelper.getOrCreateBenthosHorsVracRootBatch(
+ target,
+ horsVracBatch);
+ }
+
+ if (needHorsVracMarineLitter) {
+ // ---------------------------------------------------------------------
+ // Hors Vrac > MarineLitter
+ // ---------------------------------------------------------------------
+ batchHelper.getOrCreateMarineLitterRootBatch(
+ target,
+ horsVracBatch,
+ source.getMarineLitterTotalWeight());
+ }
+ }
+
+ if (needUnsorted) {
+ // ---------------------------------------------------------------------
+ // Unsorted (=rejected)
+ // ---------------------------------------------------------------------
+ batchHelper.getOrCreateRejectedBatch(
+ target, source.getCatchTotalRejectedWeight());
+ }
+
}
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-05-02 10:32:02 UTC (rev 911)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/SpeciesBatchPersistenceServiceImpl.java 2013-05-02 13:21:08 UTC (rev 912)
@@ -37,6 +37,7 @@
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxon;
import fr.ifremer.adagio.core.dao.referential.taxon.ReferenceTaxonImpl;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
@@ -104,21 +105,28 @@
// container of speciesBatch is arbitraty put on vrac type (there is
// no common ancestor for all species batch).
BatchContainer<SpeciesBatch> result = new BatchContainer<SpeciesBatch>();
- result.setId(vracSpeciesBatch.getId());
- for (Batch batch : vracSpeciesBatch.getChildBatchs()) {
- SortingBatch source = (SortingBatch) batch;
- ReferenceTaxon referenceTaxon = source.getReferenceTaxon();
- Preconditions.checkNotNull(referenceTaxon, "Can't have a rootSpeciesBatch with a null taxon, but was for " + batch.getId());
- Species species = referentialService.getSpeciesByReferenceTaxonId(referenceTaxon.getId());
+ if (vracSpeciesBatch != null) {
- SpeciesBatch target = TuttiBeanFactory.newSpeciesBatch();
- target.setSpecies(species);
- entityToSpeciesBatch(source, target);
- result.addChildren(target);
+ result.setId(vracSpeciesBatch.getId());
- if (log.isInfoEnabled()) {
- log.info("Loaded CatchBatch Vrac > Species > Alive Itemized > " + target.getSpecies().getReferenceTaxonId() + ": " + target.getId());
+ for (Batch batch : vracSpeciesBatch.getChildBatchs()) {
+ SortingBatch source = (SortingBatch) batch;
+ ReferenceTaxon referenceTaxon = source.getReferenceTaxon();
+ Preconditions.checkNotNull(referenceTaxon, "Can't have a rootSpeciesBatch with a null taxon, but was for " + batch.getId());
+ if (log.isTraceEnabled()) {
+ log.trace("Loading CatchBatch Vrac > Species > Alive Itemized > " + referenceTaxon.getId() + " - " + " (batch:" + source.getId() + ")");
+ }
+ Species species = referentialService.getSpeciesByReferenceTaxonId(referenceTaxon.getId());
+
+ SpeciesBatch target = TuttiBeanFactory.newSpeciesBatch();
+ target.setSpecies(species);
+ entityToSpeciesBatch(source, target);
+ result.addChildren(target);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Loaded CatchBatch Vrac > Species > Alive Itemized > " + target.getSpecies().getReferenceTaxonId() + ": " + target.getId());
+ }
}
}
@@ -133,14 +141,17 @@
SortingBatch source = (SortingBatch) batch;
ReferenceTaxon referenceTaxon = source.getReferenceTaxon();
Preconditions.checkNotNull(referenceTaxon, "Can't have a rootSpeciesBatch with a null taxon, but was for " + source.getId());
+ if (log.isTraceEnabled()) {
+ log.trace("Loading CatchBatch Hors Vrac > Species > " + referenceTaxon.getId() + " - " + " (batch:" + source.getId() + ")");
+ }
Species species = referentialService.getSpeciesByReferenceTaxonId(referenceTaxon.getId());
SpeciesBatch target = TuttiBeanFactory.newSpeciesBatch();
target.setSpecies(species);
entityToSpeciesBatch(source, target);
result.addChildren(target);
- if (log.isInfoEnabled()) {
- log.info("Loaded CatchBatch Hors Vrac > Species > " + target.getSpecies().getReferenceTaxonId() + ": " + target.getId());
+ if (log.isDebugEnabled()) {
+ log.debug("Loaded CatchBatch Hors Vrac > Species > " + target.getSpecies().getReferenceTaxonId() + ": " + target.getId());
}
}
}
@@ -425,7 +436,7 @@
targetChild.setSpecies(target.getSpecies());
entityToSpeciesBatch(sourceChild, targetChild);
if (log.isInfoEnabled()) {
- log.info("Loaded CatchBatch Hors Vrac > (Species|Benthos) > " + targetChild.getSpecies().getReferenceTaxonId() + " : " + target.getId());
+ log.info("Loaded CatchBatch (Vrac|Hors Vrac) > Species > " + targetChild.getSpecies().getReferenceTaxonId() + " : " + target.getId());
}
if (targetChild.getSampleCategoryValue() != null) {
targetChilds.add(targetChild);
@@ -466,11 +477,13 @@
protected void speciesBatchToEntity(SpeciesBatch source,
SortingBatch target,
String parentBatchId,
- fr.ifremer.adagio.core.dao.data.batch.CatchBatch catchBatch ) {
+ fr.ifremer.adagio.core.dao.data.batch.CatchBatch catchBatch) {
Preconditions.checkNotNull(source.getFishingOperation());
Preconditions.checkNotNull(source.getFishingOperation().getId());
+ boolean createEntity = TuttiEntities.isNew(source);
+
Collection<QuantificationMeasurement> quantificationMeasurements = target.getQuantificationMeasurements();
Collection<SortingMeasurement> sortingMeasurements = target.getSortingMeasurements();
@@ -490,13 +503,13 @@
|| target.getRootBatch() == null
|| (target.getParentBatch() != null && !target.getParentBatch().getId().toString().equals(parentBatchId))) {
- batchHelper.setBatchParents(
+ batchHelper.setSpeciesBatchParents(
source.getSampleCategoryType(),
source.getSampleCategoryValue(),
target,
parentBatchId,
- catchBatch,
- enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES);
+ catchBatch
+ );
}
// RankOrder (initialize once, at creation)
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-05-02 10:32:02 UTC (rev 911)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/batch/BatchPersistenceHelper.java 2013-05-02 13:21:08 UTC (rev 912)
@@ -212,15 +212,17 @@
return result;
}
- public void setBatchParents(SampleCategoryEnum sampleCategoryType,
- Serializable sampleCategoryValue,
- SortingBatch target,
- String parentBatchIdStr,
- fr.ifremer.adagio.core.dao.data.batch.CatchBatch catchBatch,
- Integer batchPmfmId) {
+ public void setSpeciesBatchParents(SampleCategoryEnum sampleCategoryType,
+ Serializable sampleCategoryValue,
+ SortingBatch target,
+ String parentBatchIdStr,
+ CatchBatch catchBatch) {
Preconditions.checkNotNull(target);
+ Preconditions.checkNotNull(catchBatch);
+ target.setRootBatch(catchBatch);
+
SortingBatch parentBatch;
if (parentBatchIdStr != null) {
@@ -241,23 +243,66 @@
if (enumeration.QUALITATIVE_VRAC_ID.equals(qualitativeValueId)) {
- // vrac
+ // get vrac / Species / Alive itemized batch
parentBatch = getSortingBatch(
catchBatch,
- "Vrac > (Species | Benthos) > Alive Itemized",
- enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID, // vrac
- enumeration.PMFM_ID_SORTING_TYPE, batchPmfmId, // Species | Benthos
- enumeration.PMFM_ID_SORTING_TYPE_2, enumeration.QUALITATIVE_ID_SORTING_TYPE_2_ALIVE_ITEMIZED // vivant trié
- );
+ "Vrac > Species > Alive Itemized",
+ enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID,
+ enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES,
+ enumeration.PMFM_ID_SORTING_TYPE_2, enumeration.QUALITATIVE_ID_SORTING_TYPE_2_ALIVE_ITEMIZED);
+
+ if (parentBatch == null) {
+
+ // get vrac batch
+
+ SortingBatch vracBatch = getSortingBatch(
+ catchBatch,
+ "Vrac",
+ enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID);
+
+ if (vracBatch == null) {
+
+ // create vrac batch
+ vracBatch = getOrCreateVracBatch(catchBatch, null, null);
+ }
+
+ // get vrac > species batch
+
+ SortingBatch vracSpeciesBatch = getSortingBatch(
+ vracBatch,
+ "Vrac > Species",
+ enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES);
+
+ if (vracSpeciesBatch == null) {
+
+ // create vrac > species batch
+ vracSpeciesBatch = getOrCreateSpeciesVracRootBatch(catchBatch, vracBatch, null);
+ }
+
+ // create vrac > species > Alive itemized batch
+
+ parentBatch = getOrCreateSpeciesVracAliveItemizeRootBatch(catchBatch, vracSpeciesBatch);
+
+ }
} else if (enumeration.QUALITATIVE_HORS_VRAC_ID.equals(qualitativeValueId)) {
- // hors-vrac
+ // get hors vrac > Species batch
parentBatch = getSortingBatch(
catchBatch,
- "Hors vrac > (Species|Benthos)",
- enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_HORS_VRAC_ID, // hors vrac
- enumeration.PMFM_ID_SORTING_TYPE, batchPmfmId // Species | Benthos
- );
+ "Hors vrac > Species",
+ enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_HORS_VRAC_ID,
+ enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_SPECIES);
+
+ if (parentBatch == null) {
+
+ // get (or create) hors vrac batch
+ SortingBatch horsVracBatch = getOrCreateHorsVracBatch(catchBatch);
+
+ // create hors vrac > species batch
+ parentBatch = getOrCreateSpeciesHorsVracRootBatch(
+ catchBatch,
+ horsVracBatch);
+ }
} else {
// not possible
@@ -266,14 +311,111 @@
}
- if (parentBatch == null) {
- throw new DataIntegrityViolationException(
- "Could not retrieve parent batch, for a given speciesBatch or benthosBatch : invalid batch tree structure. Please make sure CatchBatch has been saved before to create a such batch.");
+ Preconditions.checkNotNull(parentBatch);
+ target.setParentBatch(parentBatch);
+ }
+
+ public void setBenthosBatchParents(SampleCategoryEnum sampleCategoryType,
+ Serializable sampleCategoryValue,
+ SortingBatch target,
+ String parentBatchIdStr,
+ CatchBatch catchBatch) {
+
+ Preconditions.checkNotNull(target);
+ Preconditions.checkNotNull(catchBatch);
+
+ target.setRootBatch(catchBatch);
+
+ SortingBatch parentBatch;
+ if (parentBatchIdStr != null) {
+
+ // Load existing parent and root
+ parentBatch = catchBatchDao.getSortingBatchById(catchBatch, Integer.valueOf(parentBatchIdStr));
+ } else {
+
+ // Or retrieve parent batch, from pmfm id
+ // Retrieve category type
+ if (!sampleCategoryType.equals(SampleCategoryEnum.sortedUnsorted)) {
+ throw new DataIntegrityViolationException(MessageFormat.format(
+ "A species or benthos batch with no parent should have a sampleCategoryType {0} (PMFM.ID={1})",
+ SampleCategoryEnum.sortedUnsorted.name(),
+ enumeration.PMFM_ID_SORTED_UNSORTED));
+ }
+
+ Integer qualitativeValueId = convertSampleCategoryValueIntoQualitativeId(sampleCategoryValue);
+
+ if (enumeration.QUALITATIVE_VRAC_ID.equals(qualitativeValueId)) {
+
+ // Vrac > Benthos > Alive Itemized
+ parentBatch = getSortingBatch(
+ catchBatch,
+ "Vrac > Species > Alive Itemized",
+ enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID,
+ enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_BENTHOS,
+ enumeration.PMFM_ID_SORTING_TYPE_2, enumeration.QUALITATIVE_ID_SORTING_TYPE_2_ALIVE_ITEMIZED);
+
+ if (parentBatch == null) {
+
+ // get vrac batch
+
+ SortingBatch vracBatch = getSortingBatch(
+ catchBatch,
+ "Vrac",
+ enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_VRAC_ID);
+
+ if (vracBatch == null) {
+
+ // create vrac batch
+ vracBatch = getOrCreateVracBatch(catchBatch, null, null);
+ }
+
+ // get vrac > Benthos batch
+
+ SortingBatch vracBenthosBatch = getSortingBatch(
+ vracBatch,
+ "Vrac > Benthos",
+ enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_BENTHOS);
+
+ if (vracBenthosBatch == null) {
+
+ // create vrac > Benthos batch
+ vracBenthosBatch = getOrCreateBenthosVracRootBatch(catchBatch, vracBatch, null);
+ }
+
+ // create vrac > Benthos > Alive itemized batch
+
+ parentBatch = getOrCreateBenthosVracAliveItemizeRootBatch(catchBatch, vracBenthosBatch);
+
+ }
+ } else if (enumeration.QUALITATIVE_HORS_VRAC_ID.equals(qualitativeValueId)) {
+
+ // get hors-vrac > Benthos batch
+ parentBatch = getSortingBatch(
+ catchBatch,
+ "Hors vrac > Benthos",
+ enumeration.PMFM_ID_SORTED_UNSORTED, enumeration.QUALITATIVE_HORS_VRAC_ID,
+ enumeration.PMFM_ID_SORTING_TYPE, enumeration.QUALITATIVE_ID_SORTING_TYPE_BENTHOS);
+
+ if (parentBatch == null) {
+
+ // get (or create) hors vrac batch
+
+ SortingBatch horsVracBatch = getOrCreateHorsVracBatch(catchBatch);
+
+ // create hors vrac > Benthos batch
+ parentBatch = getOrCreateBenthosHorsVracRootBatch(
+ catchBatch,
+ horsVracBatch);
+ }
+ } else {
+
+ // not possible
+ throw new DataIntegrityViolationException("Should have Vrac / Hors Vrac qualitative value, but had: " + qualitativeValueId);
+ }
}
- // Parent Batch
+ Preconditions.checkNotNull(parentBatch);
target.setParentBatch(parentBatch);
- target.setRootBatch(catchBatch);
}
public Integer convertSampleCategoryValueIntoQualitativeId(Serializable value) {
1
0
r911 - in trunk/tutti-persistence/src/main: java/fr/ifremer/tutti/persistence/service resources
by kmorin@users.forge.codelutin.com 02 May '13
by kmorin@users.forge.codelutin.com 02 May '13
02 May '13
Author: kmorin
Date: 2013-05-02 12:32:02 +0200 (Thu, 02 May 2013)
New Revision: 911
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/911
Log:
fixes #2393 [CAMPAGNE] - Engins - Tous les engins asoci?\195?\169s aux campagnes sont retourn?\195?\169s en tant qu'engins scientifiques
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-05-02 10:00:47 UTC (rev 910)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-05-02 10:32:02 UTC (rev 911)
@@ -30,6 +30,7 @@
import fr.ifremer.adagio.core.dao.data.vessel.VesselExtendDao;
import fr.ifremer.adagio.core.dao.referential.StatusDao;
import fr.ifremer.adagio.core.dao.referential.gear.FishingGearExtendDao;
+import fr.ifremer.adagio.core.dao.referential.gear.GearClassification;
import fr.ifremer.adagio.core.dao.referential.location.LocationExtendDao;
import fr.ifremer.adagio.core.dao.referential.taxon.TaxonNameExtendDao;
import fr.ifremer.adagio.core.dao.referential.taxon.TaxonRefVO;
@@ -316,7 +317,7 @@
List<Gear> result = Lists.newArrayList();
while (sources.hasNext()) {
Object[] source = sources.next();
- Gear target = loadGear(source, true);
+ Gear target = loadGear(source);
result.add(target);
}
return Collections.unmodifiableList(result);
@@ -330,7 +331,7 @@
List<Gear> result = Lists.newArrayList();
while (sources.hasNext()) {
Object[] source = sources.next();
- Gear target = loadGear(source, false);
+ Gear target = loadGear(source);
result.add(target);
}
return Collections.unmodifiableList(result);
@@ -369,7 +370,7 @@
"gear",
"gearId", IntegerType.INSTANCE, gearId);
- Gear result = source == null ? null : loadGear(source, true);
+ Gear result = source == null ? null : loadGear(source);
return result;
}
@@ -902,14 +903,19 @@
return target;
}
- protected Gear loadGear(Object[] source, boolean scientificGear) {
+ protected Gear loadGear(Object[] source) {
Gear result = TuttiBeanFactory.newGear();
result.setId(String.valueOf(source[0]));
result.setLabel((String) source[1]);
result.setName((String) source[2]);
- result.setScientificGear(scientificGear);
+ GearClassification classification = (GearClassification) source[3];
+ boolean scientific = false;
+ if (classification != null) {
+ scientific = classification.getId().equals(enumeration.GEAR_CLASSIFICIATION_ID_SCIENTIFIC);
+ }
+ result.setScientificGear(scientific);
- setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[3], result);
+ setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[4], result);
return result;
}
Modified: trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-05-02 10:00:47 UTC (rev 910)
+++ trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-05-02 10:32:02 UTC (rev 911)
@@ -695,6 +695,7 @@
g.id,
g.label,
g.name,
+ g.gearClassification,
g.status AS status
FROM GearImpl g
WHERE
@@ -713,6 +714,7 @@
g.id,
g.label,
g.name,
+ g.gearClassification,
g.status AS status
FROM GearImpl g
WHERE
1
0
r910 - in trunk/tutti-ui-swing/src/main: assembly/full java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/content/db resources/i18n
by tchemit@users.forge.codelutin.com 02 May '13
by tchemit@users.forge.codelutin.com 02 May '13
02 May '13
Author: tchemit
Date: 2013-05-02 12:00:47 +0200 (Thu, 02 May 2013)
New Revision: 910
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/910
Log:
refs #2369: [IMP/EXP] - L'export de base avec suppression ne fonctionne pas
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java
Modified:
trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat
trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat 2013-05-02 09:23:28 UTC (rev 909)
+++ trunk/tutti-ui-swing/src/main/assembly/full/tutti.bat 2013-05-02 10:00:47 UTC (rev 910)
@@ -20,5 +20,21 @@
copy tutti.config tutti
call tutti\launch.bat --option tutti.launch.mode full --option tutti.basedir %TUTTI_BASEDIR%
if errorlevel 88 goto start
+if errorlevel 89 goto deletedb
+goto quit
+
+:deletedb
+echo "Clean database and restart"
+
+del /S/Q data\db
+del /S/Q data\dbcache
+del /S/Q data\dbconf
+rmdir data\db
+rmdir data\dbcache
+rmdir data\dbconf
+
+goto start
+
+:quit
cd %OLDDIR%
Modified: trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh 2013-05-02 09:23:28 UTC (rev 909)
+++ trunk/tutti-ui-swing/src/main/assembly/full/tutti.sh 2013-05-02 10:00:47 UTC (rev 910)
@@ -22,6 +22,14 @@
./tutti/launch.sh --option tutti.launch.mode full --option tutti.basedir $TUTTI_BASEDIR
exitcode=$?
+ if [ "$exitcode" -eq "89" ]; then
+ # delete db directory and restart
+ rm -rfv data/db
+ rm -rfv data/dbcache
+ rm -rfv data/dbconf
+ exitcode=88
+ fi
+
if [ ! "$exitcode" -eq "88" ]; then
# quit now!
exit $exitcode
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-05-02 09:23:28 UTC (rev 909)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-05-02 10:00:47 UTC (rev 910)
@@ -54,6 +54,8 @@
/** Logger. */
private static final Log log = LogFactory.getLog(RunTutti.class);
+ public static final int DELETE_DB_EXIT_CODE = 89;
+
public static final int UPATE_EXIT_CODE = 88;
public static final int NORMAL_EXIT_CODE = 0;
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java 2013-05-02 09:23:28 UTC (rev 909)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java 2013-05-02 10:00:47 UTC (rev 910)
@@ -1,87 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.db;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
-import fr.ifremer.tutti.ui.swing.content.AbstractChangeScreenAction;
-import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * To close db attached to Tutti.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class CloseDbAction extends AbstractChangeScreenAction {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(CloseDbAction.class);
-
- public CloseDbAction(MainUIHandler handler) {
- super(handler, true, TuttiScreen.MANAGE_DB);
- }
-
- String jdbcUrl;
-
- @Override
- protected void doAction() {
-
- if (log.isInfoEnabled()) {
- log.info("Will close db...");
- }
-
- jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
-
- // clear all caches
- getContext().getPersistenceService().clearAllCaches();
-
- // set to not reload a real db
- getContext().setDbLoaded(false);
-
- // close services + repon a fake persistence service
- getHandler().reloadPersistenceService();
-
- // clean db context
- getContext().clearDbContext();
-
-// TuttiIOUtil.deleteDirectory(
-// getConfig().getServiceConfig().getPersistenceConfig().getCacheDirectory(),
-// _("tutti.dbManager.action.closeDb.deleteCache.error"));
- }
-
- @Override
- public void postSuccessAction() {
-
- sendMessage(_("tutti.flash.info.db.closed", jdbcUrl));
-
- // make sure title is reloaded
- getUI().getHandler().changeTitle();
- }
-}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css 2013-05-02 09:23:28 UTC (rev 909)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css 2013-05-02 10:00:47 UTC (rev 910)
@@ -58,16 +58,6 @@
visible: {model.isDbExist()};
}
-#openDbButton {
- actionIcon: open-db;
- text: "tutti.dbManager.action.openDb";
- i18nMnemonic: "tutti.dbManager.action.openDb.mnemonic";
- enabled: {!model.isDbLoaded()};
- _tuttiAction: {OpenDbAction.class};
- toolTipText: "tutti.dbManager.action.openDb.tip";
- _help: {"tutti.dbManager.action.openDb.help"};
-}
-
#upgradeDbButton {
actionIcon: update-referential;
text: "tutti.dbManager.action.upgradeDb";
@@ -78,16 +68,6 @@
_help: {"tutti.dbManager.action.upgradeDb.help"};
}
-#closeDbButton {
- actionIcon: close-db;
- text: "tutti.dbManager.action.closeDb";
- i18nMnemonic: "tutti.dbManager.action.closeDb.mnemonic";
- enabled: {model.isDbLoaded()};
- _tuttiAction: {CloseDbAction.class};
- toolTipText: "tutti.dbManager.action.closeDb.tip";
- _help: {"tutti.dbManager.action.closeDb.help"};
-}
-
#exportDbButton {
actionIcon: export-db;
text: "tutti.dbManager.action.exportDb";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx 2013-05-02 09:23:28 UTC (rev 909)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx 2013-05-02 10:00:47 UTC (rev 910)
@@ -65,11 +65,9 @@
</JPanel>
<JPanel id='withDbActions' constraints='BorderLayout.SOUTH'
layout='{new GridLayout(0, 1)}'>
- <JButton id='openDbButton'/>
<JButton id='upgradeDbButton'/>
<JButton id='exportDbButton'/>
<JButton id='exportAndCleanDbButton'/>
- <JButton id='closeDbButton'/>
</JPanel>
</JPanel>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java 2013-05-02 09:23:28 UTC (rev 909)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java 2013-05-02 10:00:47 UTC (rev 910)
@@ -27,8 +27,6 @@
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import jaxx.runtime.validator.swing.SwingValidator;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
@@ -41,10 +39,6 @@
*/
public class DbManagerUIHandler extends AbstractTuttiUIHandler<TuttiUIContext, DbManagerUI> {
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(DbManagerUIHandler.class);
-
public DbManagerUIHandler(TuttiUIContext context, DbManagerUI ui) {
super(context, ui);
}
@@ -83,8 +77,6 @@
initUI(ui);
- ui.applyDataBinding(DbManagerUI.BINDING_OPEN_DB_BUTTON_ENABLED);
-// ui.applyDataBinding(DbManagerUI.BINDING_USE_EXTERNAL_DB_BUTTON_ENABLED);
ui.applyDataBinding(DbManagerUI.BINDING_UPGRADE_DB_BUTTON_ENABLED);
ui.applyDataBinding(DbManagerUI.BINDING_EXPORT_DB_BUTTON_ENABLED);
ui.applyDataBinding(DbManagerUI.BINDING_EXPORT_AND_CLEAN_DB_BUTTON_ENABLED);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java 2013-05-02 09:23:28 UTC (rev 909)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java 2013-05-02 10:00:47 UTC (rev 910)
@@ -27,12 +27,10 @@
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.TuttiIOUtil;
import fr.ifremer.tutti.persistence.ProgressionModel;
-import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
-import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.RunTutti;
import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -111,36 +109,32 @@
progressionModel.setMessage(_("tutti.exportDb.closeDb"));
- TuttiActionHelper.runInternalAction(getHandler(), CloseDbAction.class);
+ // clear all caches
+ getContext().getPersistenceService().clearAllCaches();
- PersistenceService persistenceService =
- getContext().getPersistenceService();
+ // set to not reload a real db
+ getContext().setDbLoaded(false);
+ // close services + repon a fake persistence service
+ getHandler().reloadPersistenceService();
+
+ // clean db context
+ getContext().clearDbContext();
+
// export db
progressionModel.increments(1);
progressionModel.setMessage(_("tutti.exportDb.createArchive", file));
- persistenceService.exportDb(file);
+ getContext().getPersistenceService().exportDb(file);
// clean files
progressionModel.increments(1);
- progressionModel.setMessage(_("tutti.exportDb.deleteFiles"));
+ progressionModel.setMessage(_("tutti.exportDb.reloadApplication"));
- TuttiPersistenceConfig persistenceConfig =
- getConfig().getServiceConfig().getPersistenceConfig();
-
- File dbDirectory = persistenceConfig.getDbDirectory();
- TuttiIOUtil.cleanDirectory(dbDirectory, _("tutti.io.directory.delete.error", dbDirectory));
-
- File attachmentDirectory = persistenceConfig.getDbAttachmentDirectory();
- TuttiIOUtil.cleanDirectory(attachmentDirectory, _("tutti.io.directory.delete.error", attachmentDirectory));
-
-// File protocolDirectory = persistenceConfig.getProtocolDirectory();
-// TuttiIOUtil.cleanDirectory(protocolDirectory, _("tutti.io.directory.delete.error", protocolDirectory));
-
- getModel().setDbExist(false);
+ // Close the application, will exit and restart application
+ RunTutti.closeTutti(getHandler(), RunTutti.DELETE_DB_EXIT_CODE);
}
@Override
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-02 09:23:28 UTC (rev 909)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-05-02 10:00:47 UTC (rev 910)
@@ -851,6 +851,7 @@
tutti.exportDb.createArchive=
tutti.exportDb.deleteFiles=
tutti.exportDb.openDb=
+tutti.exportDb.reloadApplication=
tutti.exportProgram.action.success=
tutti.exportProtocol.action.success=
tutti.fishingOperations.action.newFishingOperation.mnemonic=
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-05-02 09:23:28 UTC (rev 909)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-05-02 10:00:47 UTC (rev 910)
@@ -820,8 +820,8 @@
tutti.exportCruiseForSumatra.title.choose.exportFile=Exporter les captures de la campagne
tutti.exportDb.closeDb=Fermeture de la base courante
tutti.exportDb.createArchive=Création de l'archive %s
-tutti.exportDb.deleteFiles=Suppression des fichiers dans Tutti
tutti.exportDb.openDb=Réouverture de la base courante
+tutti.exportDb.reloadApplication=Redémarrage de l'application
tutti.exportProgram.action.success=La série de campagne <strong>%s</strong> a été exportée dans le fichier <strong>%s</strong>.
tutti.exportProtocol.action.success=Protocole [%1s] exporté dans le fichier <strong>%2s</strong>.
tutti.fishingOperations.action.newFishingOperation.mnemonic=N
1
0
r909 - in trunk: src/site/rst tutti-service/src/main/java/fr/ifremer/tutti/service
by tchemit@users.forge.codelutin.com 02 May '13
by tchemit@users.forge.codelutin.com 02 May '13
02 May '13
Author: tchemit
Date: 2013-05-02 11:23:28 +0200 (Thu, 02 May 2013)
New Revision: 909
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/909
Log:
fixes #2391: [IMP/EXP] Ne plus g?\195?\169rer le protocole lors d'un import/export de la base
Modified:
trunk/src/site/rst/features.rst
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
Modified: trunk/src/site/rst/features.rst
===================================================================
--- trunk/src/site/rst/features.rst 2013-05-02 08:42:16 UTC (rev 908)
+++ trunk/src/site/rst/features.rst 2013-05-02 09:23:28 UTC (rev 909)
@@ -41,10 +41,9 @@
Tutti utilise une base de travail compatible **Allegro**, l'application permet
de gérer ces bases, à savoir :
-- Installer une base à partir d'une url distante via le mécanisme de mise à jour
- intégré.
+- Installer une base à partir d'une url distante via le mécanisme de mise à jour intégré.
- Mise à jour automatique via le mécanisme de mise à jour intégré (mis à jour des référentiels).
-- Exporter les données de Tutti (base de travail / protocols / pièces-jointes) (sous forme d'archive zip).
+- Exporter les données de Tutti (base de travail / pièces-jointes) (sous forme d'archive zip).
- Exporter les données de Tutti puis les supprimer , permet alors de pouvoir installer une nouvelle base ou importer des données de Tutti.
- Import les données de Tuttii : permet d'importer les données d'une autre instance de Tutti précedemment exportées.
@@ -60,30 +59,27 @@
| |-- allegro.properties
| |-- allegro.script
| `-- version.appup
- |-- meas_files
- | |-- CATCH_BATCH
- | | |-- OBJ100000
- | | | |-- CATCH_BATCH-OBJ100000-100005.tnk
- | | | `-- CATCH_BATCH-OBJ100000-100006.car
- | | `-- OBJ100003
- | |-- OPERATION
- | | `-- OBJ100000
- | | |-- OPERATION-OBJ100000-100000.dat
- | | `-- OPERATION-OBJ100000-100007.dat
- | `-- SAMPLE
- | |-- OBJ100000
- | | `-- SAMPLE-OBJ100000-100002.asc
- | |-- OBJ100015
- | | `-- SAMPLE-OBJ100015-100001.dat
- | |-- OBJ100018
- | | `-- SAMPLE-OBJ100018-100002.dat
- | |-- OBJ100022
- | | `-- SAMPLE-OBJ100022-100003.dat
- | `-- OBJ100040
- | `-- SAMPLE-OBJ100040-100004.dat
- `-- protocol
- |-- 194016f4-3bea-40a2-aea2-792401b9f3c9.tuttiProtocol
- `-- 54f6cb48-2463-4212-9e9b-5849db109acc.tuttiProtocol
+ `-- meas_files
+ |-- CATCH_BATCH
+ | |-- OBJ100000
+ | | |-- CATCH_BATCH-OBJ100000-100005.tnk
+ | | `-- CATCH_BATCH-OBJ100000-100006.car
+ | `-- OBJ100003
+ |-- OPERATION
+ | `-- OBJ100000
+ | |-- OPERATION-OBJ100000-100000.dat
+ | `-- OPERATION-OBJ100000-100007.dat
+ `-- SAMPLE
+ |-- OBJ100000
+ | `-- SAMPLE-OBJ100000-100002.asc
+ |-- OBJ100015
+ | `-- SAMPLE-OBJ100015-100001.dat
+ |-- OBJ100018
+ | `-- SAMPLE-OBJ100018-100002.dat
+ |-- OBJ100022
+ | `-- SAMPLE-OBJ100022-100003.dat
+ `-- OBJ100040
+ `-- SAMPLE-OBJ100040-100004.dat
Pour le moment si vous voulez importer une base sans les autres données
(pièces-jointes / protocole), il vous suffit alors simplement de créer une
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-05-02 08:42:16 UTC (rev 908)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-05-02 09:23:28 UTC (rev 909)
@@ -149,10 +149,6 @@
new File(structureDirectory, "db"),
_("tutti.service.persistence.copyDirectory.db.error"));
- TuttiIOUtil.copyDirectory(pConfig.getProtocolDirectory(),
- new File(structureDirectory, "protocol"),
- _("tutti.service.persistence.copyDirectory.protocol.error"));
-
TuttiIOUtil.copyDirectory(pConfig.getDbAttachmentDirectory(),
new File(structureDirectory, "meas_files"),
_("tutti.service.persistence.copyDirectory.attachment.error"));
@@ -190,7 +186,6 @@
fileObject = children[0];
checkArchiveDb(file, fileObject, "db", true);
checkArchiveDb(file, fileObject, "meas_files", false);
- checkArchiveDb(file, fileObject, "protocol", false);
}
protected void checkArchiveDb(File file,
1
0
r908 - trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol
by kmorin@users.forge.codelutin.com 02 May '13
by kmorin@users.forge.codelutin.com 02 May '13
02 May '13
Author: kmorin
Date: 2013-05-02 10:42:16 +0200 (Thu, 02 May 2013)
New Revision: 908
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/908
Log:
refs #2372 [PROTOCOLE] le fichier que j'importais ne passe plus en 2.0
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java
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-05-01 14:27:16 UTC (rev 907)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/protocol/TuttiProtocolImportExportService.java 2013-05-02 08:42:16 UTC (rev 908)
@@ -48,6 +48,7 @@
import org.nuiton.util.beans.BinderFactory;
import org.nuiton.util.csv.Export;
import org.nuiton.util.csv.Import;
+import org.nuiton.util.csv.ImportRuntimeException;
import java.io.BufferedWriter;
import java.io.File;
@@ -265,8 +266,13 @@
IOUtils.closeQuietly(importer);
}
reader.close();
+
+ } catch (ImportRuntimeException e) {
+ throw new TuttiTechnicalException(e.getCause().getMessage(), e);
+
} catch (Exception e) {
throw new TuttiTechnicalException(_("tutti.service.protocol.import.species.error", protocol.getName(), file), e);
+
} finally {
IOUtils.closeQuietly(reader);
}
1
0