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
May 2013
- 4 participants
- 180 discussions
06 May '13
r920 - in trunk/tutti-service/src/main: java/fr/ifremer/tutti/service resources/i18n
by kmorin@users.forge.codelutin.com 06 May '13
by kmorin@users.forge.codelutin.com 06 May '13
06 May '13
Author: kmorin
Date: 2013-05-06 15:01:52 +0200 (Mon, 06 May 2013)
New Revision: 920
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/920
Log:
fixes #2397 [AIDE] pr?\195?\169ciser le type de tri possible sur les traits
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2013-05-06 07:25:47 UTC (rev 919)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2013-05-06 13:01:52 UTC (rev 920)
@@ -143,6 +143,8 @@
n_("tutti.property.lastName");
n_("tutti.property.department");
n_("tutti.property.stationNumber");
+ n_("tutti.property.fishingOperationNumber");
+ n_("tutti.property.gearShootingStartDate");
n_("tutti.property.internationalRegistrationCode");
n_("tutti.property.date");
n_("tutti.property.program");
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-05-06 07:25:47 UTC (rev 919)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-05-06 13:01:52 UTC (rev 920)
@@ -20,8 +20,10 @@
tutti.property.firstName=
tutti.property.fishingOperation=
tutti.property.fishingOperationLocation=
+tutti.property.fishingOperationNumber=
tutti.property.fractionName=
tutti.property.gear=
+tutti.property.gearShootingStartDate=
tutti.property.genusSpecies=
tutti.property.internationalRegistrationCode=
tutti.property.label=
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-06 07:25:47 UTC (rev 919)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-05-06 13:01:52 UTC (rev 920)
@@ -18,8 +18,10 @@
tutti.property.firstName=Prénom
tutti.property.fishingOperation=Trait
tutti.property.fishingOperationLocation=Lieu
+tutti.property.fishingOperationNumber=Numéro de trait
tutti.property.fractionName=Fraction
tutti.property.gear=Engin
+tutti.property.gearShootingStartDate=Date de début de traîne
tutti.property.genusSpecies=Nom scientifique
tutti.property.internationalRegistrationCode=Immatriculation internationale (ou nationale si non trouvée)
tutti.property.label=Code
1
0
r919 - trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service
by tchemit@users.forge.codelutin.com 06 May '13
by tchemit@users.forge.codelutin.com 06 May '13
06 May '13
Author: tchemit
Date: 2013-05-06 09:25:47 +0200 (Mon, 06 May 2013)
New Revision: 919
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/919
Log:
improve bessel person api
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/FishingOperationPersistenceServiceImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java
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-06 07:12:10 UTC (rev 918)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-05-06 07:25:47 UTC (rev 919)
@@ -390,7 +390,7 @@
// Create or update a geaPhysicalFeatures for each gears in the cruise
for (Gear gear : source.getGear()) {
- GearPhysicalFeatures guf = gearPhysicalFeaturesDao.getGearPhysicalfeatures(fishingTrip, Integer.valueOf(gear.getId()), true);
+ GearPhysicalFeatures guf = gearPhysicalFeaturesDao.getGearPhysicalfeatures(fishingTrip, gear.getIdAsInt(), true);
notChangedGearPhysicalFeatures.remove(guf);
guf.setStartDate(fishingTrip.getDepartureDateTime());
@@ -432,24 +432,25 @@
if (CollectionUtils.isNotEmpty(source.getHeadOfSortRoom())) {
for (Person person : source.getHeadOfSortRoom()) {
Integer personId = person.getIdAsInt();
- fillVesselPersonFeatures(vesselPersonFeaturesMap,
- personId,
- fishingTrip,
- sortRoomManagerRole);
+ vesselPersonFeaturesPersistenceHelper.fillVesselPersonFeatures(
+ vesselPersonFeaturesMap,
+ personId,
+ fishingTrip,
+ sortRoomManagerRole);
}
}
- // Managers
+ // Head of Mission Managers
List<Person> persons = source.getHeadOfMission();
target.setManagerPerson(load(PersonImpl.class, persons.get(0).getIdAsInt()));
for (int i = 1; i < persons.size(); i++) {
Integer personId = persons.get(i).getIdAsInt();
-
- fillVesselPersonFeatures(vesselPersonFeaturesMap,
- personId,
- fishingTrip,
- scientificCruiseManagerRole);
+ vesselPersonFeaturesPersistenceHelper.fillVesselPersonFeatures(
+ vesselPersonFeaturesMap,
+ personId,
+ fishingTrip,
+ scientificCruiseManagerRole);
}
if (fishingTrip.getVesselPersonFeatures() == null) {
@@ -459,26 +460,6 @@
fishingTrip.getVesselPersonFeatures().addAll(vesselPersonFeaturesMap.values());
}
- public void fillVesselPersonFeatures(Map<Integer, VesselPersonFeatures> vesselPersonFeaturesPerPerson,
- Integer personId,
- FishingTrip fishingTrip,
- VesselPersonRole role) {
-
- VesselPersonFeatures vesselPersonFeatures =
- vesselPersonFeaturesPerPerson.get(personId);
- if (vesselPersonFeatures == null) {
- vesselPersonFeatures = VesselPersonFeatures.Factory.newInstance();
- vesselPersonFeaturesPerPerson.put(personId, vesselPersonFeatures);
- }
-
- PersonImpl person = load(PersonImpl.class, personId);
- vesselPersonFeaturesPersistenceHelper.fillVesselPersonFeatures(
- vesselPersonFeatures,
- fishingTrip,
- person,
- role);
- }
-
public Gear getGearWithCaracteristics(Gear gear, Cruise cruise) {
Preconditions.checkNotNull(cruise);
Preconditions.checkNotNull(cruise.getId(), "Cruise 'id' must not be null or empty");
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-05-06 07:12:10 UTC (rev 918)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-05-06 07:25:47 UTC (rev 919)
@@ -404,9 +404,17 @@
public void deleteFishingOperation(String id) {
Preconditions.checkNotNull(id);
+ Integer fishingOperationId = Integer.valueOf(id);
+
+ fr.ifremer.adagio.core.dao.data.operation.FishingOperation fishingOperation = fishingOperationDao.load(fishingOperationId);
+ if (fishingOperation == null) {
+ throw new DataRetrievalFailureException("Could not retrieve fishing operation with id=" + fishingOperationId);
+ }
+ fishingOperationDao.remove(fishingOperation);
+
attachmentPersistenceService.deleteAllAttachment(
AttachementObjectTypeEnum.OPERATION,
- Integer.valueOf(id));
+ fishingOperationId);
}
//------------------------------------------------------------------------//
@@ -885,7 +893,7 @@
if (CollectionUtils.isNotEmpty(source.getRecorderPerson())) {
for (Person person : source.getRecorderPerson()) {
Integer personId = person.getIdAsInt();
- fillVesselPersonFeatures(vesselPersonFeaturesMap,
+ vesselPersonFeaturesPersistenceHelper.fillVesselPersonFeatures(vesselPersonFeaturesMap,
personId,
target,
recorderPersonRole);
@@ -1257,25 +1265,4 @@
target.getOperationVesselAssociations().clear();
}
}
-
- public void fillVesselPersonFeatures(Map<Integer, VesselPersonFeatures> vesselPersonFeaturesPerPerson,
- Integer personId,
- fr.ifremer.adagio.core.dao.data.operation.FishingOperation fishingOperation,
- VesselPersonRole role) {
-
- boolean create = false;
- VesselPersonFeatures vesselPersonFeatures =
- vesselPersonFeaturesPerPerson.get(personId);
- if (vesselPersonFeatures == null) {
- vesselPersonFeatures = VesselPersonFeatures.Factory.newInstance();
- vesselPersonFeaturesPerPerson.put(personId, vesselPersonFeatures);
- }
-
- PersonImpl person = load(PersonImpl.class, personId);
- vesselPersonFeaturesPersistenceHelper.fillVesselPersonFeatures(
- vesselPersonFeatures,
- fishingOperation,
- person,
- role);
- }
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java 2013-05-06 07:12:10 UTC (rev 918)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/VesselPersonFeaturesPersistenceHelper.java 2013-05-06 07:25:47 UTC (rev 919)
@@ -33,6 +33,7 @@
import org.springframework.stereotype.Component;
import java.util.Date;
+import java.util.Map;
/**
* Helper around {@link VesselPersonFeatures}.
@@ -58,10 +59,19 @@
return load(VesselPersonRoleImpl.class, enumeration.VESSEL_PERSON_ROLE_ID_RECORDER_PERSON);
}
- public void fillVesselPersonFeatures(VesselPersonFeatures vesselPersonFeatures,
+ public void fillVesselPersonFeatures(Map<Integer, VesselPersonFeatures> vesselPersonFeaturesPerPerson,
+ Integer personId,
FishingTrip fishingTrip,
- PersonImpl person,
VesselPersonRole role) {
+
+ VesselPersonFeatures vesselPersonFeatures =
+ vesselPersonFeaturesPerPerson.get(personId);
+ if (vesselPersonFeatures == null) {
+ vesselPersonFeatures = VesselPersonFeatures.Factory.newInstance();
+ vesselPersonFeaturesPerPerson.put(personId, vesselPersonFeatures);
+ }
+
+ PersonImpl person = load(PersonImpl.class, personId);
vesselPersonFeatures.setFishingTrip(fishingTrip);
vesselPersonFeatures.setPerson(person);
vesselPersonFeatures.getVesselPersonRoles().add(role);
@@ -76,10 +86,20 @@
vesselPersonFeatures.setRankOrder((short) 1);
}
- public void fillVesselPersonFeatures(VesselPersonFeatures vesselPersonFeatures,
+ public void fillVesselPersonFeatures(Map<Integer, VesselPersonFeatures> vesselPersonFeaturesPerPerson,
+ Integer personId,
FishingOperation fishingOperation,
- PersonImpl person,
VesselPersonRole role) {
+
+ VesselPersonFeatures vesselPersonFeatures =
+ vesselPersonFeaturesPerPerson.get(personId);
+ if (vesselPersonFeatures == null) {
+ vesselPersonFeatures = VesselPersonFeatures.Factory.newInstance();
+ vesselPersonFeaturesPerPerson.put(personId, vesselPersonFeatures);
+ }
+
+ PersonImpl person = load(PersonImpl.class, personId);
+
vesselPersonFeatures.setOperation(fishingOperation);
vesselPersonFeatures.setPerson(person);
vesselPersonFeatures.getVesselPersonRoles().add(role);
1
0
r918 - trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service
by tchemit@users.forge.codelutin.com 06 May '13
by tchemit@users.forge.codelutin.com 06 May '13
06 May '13
Author: tchemit
Date: 2013-05-06 09:12:10 +0200 (Mon, 06 May 2013)
New Revision: 918
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/918
Log:
attach individual batches to the catch batch
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-05-03 15:49:20 UTC (rev 917)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/IndividualObservationBatchPersistenceServiceImpl.java 2013-05-06 07:12:10 UTC (rev 918)
@@ -29,8 +29,8 @@
import fr.ifremer.adagio.core.dao.administration.programStrategy.Program;
import fr.ifremer.adagio.core.dao.administration.user.DepartmentImpl;
import fr.ifremer.adagio.core.dao.administration.user.PersonImpl;
+import fr.ifremer.adagio.core.dao.data.batch.Batch;
import fr.ifremer.adagio.core.dao.data.batch.CatchBatch;
-import fr.ifremer.adagio.core.dao.data.batch.SortingBatch;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperationImpl;
import fr.ifremer.adagio.core.dao.data.sample.Sample;
import fr.ifremer.adagio.core.dao.data.sample.SampleDao;
@@ -93,13 +93,13 @@
Integer operationId = Integer.valueOf(fishingOperationId);
- // Get Vrac / Species Batch
- SortingBatch vracSpeciesBatch = getBatch(operationId);
+ // Get catch Batch
+ Batch catchBatch = getBatch(operationId);
Iterator<Object[]> list = queryList(
"allFishingOperationSamplesWithBatch",
"fishingOperationId", IntegerType.INSTANCE, operationId,
- "batchId", IntegerType.INSTANCE, vracSpeciesBatch.getId()
+ "batchId", IntegerType.INSTANCE, catchBatch.getId()
);
List<IndividualObservationBatch> result = Lists.newArrayList();
@@ -146,12 +146,11 @@
Preconditions.checkNotNull(fishingOperation);
Preconditions.checkState(!TuttiEntities.isNew(fishingOperation));
- // Get Vrac / Species Batch
- SortingBatch vracSpeciesBatch = getBatch(
- fishingOperation.getIdAsInt());
+ // Get catch Batch
+ Batch catchBatch = getBatch(fishingOperation.getIdAsInt());
Sample sample = Sample.Factory.newInstance();
- beanToEntity(bean, sample, vracSpeciesBatch);
+ beanToEntity(bean, sample, catchBatch);
sampleDao.create(sample);
bean.setId(String.valueOf(sample.getId()));
return bean;
@@ -169,15 +168,15 @@
Preconditions.checkNotNull(fishingOperation);
Preconditions.checkState(!TuttiEntities.isNew(fishingOperation));
- // Get Vrac / Species Batch
- SortingBatch vracSpeciesBatch = getBatch(fishingOperation.getIdAsInt());
+ // Get catch Batch
+ Batch catchBatch = getBatch(fishingOperation.getIdAsInt());
Sample sample = sampleDao.load(bean.getIdAsInt());
if (sample == null) {
throw new DataRetrievalFailureException(
"Could not retrieve sample id: " + bean.getId());
}
- beanToEntity(bean, sample, vracSpeciesBatch);
+ beanToEntity(bean, sample, catchBatch);
sampleDao.update(sample);
return bean;
}
@@ -207,7 +206,9 @@
// -- Internal methods --//
// ------------------------------------------------------------------------//
- protected void beanToEntity(IndividualObservationBatch source, Sample target, SortingBatch vracSpeciesBatch) {
+ protected void beanToEntity(IndividualObservationBatch source,
+ Sample target,
+ Batch vracSpeciesBatch) {
if (TuttiEntities.isNew(source)) {
@@ -317,21 +318,21 @@
}
- protected SortingBatch getBatch(Integer operationId) {
+ protected Batch getBatch(Integer operationId) {
Preconditions.checkNotNull(operationId);
CatchBatch catchBatch = batchHelper.getRootCatchBatchByFishingOperationId(operationId.toString(), false);
-
- // Vrac / Species
- SortingBatch vracSpeciesBatch = batchHelper.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_SPECIES,
- enumeration.PMFM_ID_SORTING_TYPE_2, enumeration.QUALITATIVE_ID_SORTING_TYPE_2_ALIVE_ITEMIZED
- );
- Preconditions.checkNotNull(vracSpeciesBatch);
- return vracSpeciesBatch;
+ return catchBatch;
+// // Vrac / Species
+// SortingBatch vracSpeciesBatch = batchHelper.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_SPECIES,
+// enumeration.PMFM_ID_SORTING_TYPE_2, enumeration.QUALITATIVE_ID_SORTING_TYPE_2_ALIVE_ITEMIZED
+// );
+// Preconditions.checkNotNull(vracSpeciesBatch);
+// return vracSpeciesBatch;
}
protected void fillSampleMeasurements(IndividualObservationBatch batch) {
1
0
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