r92 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities tutti-persistence/src/main/resources/META-INF/services tutti-persistence/src/main/xmi tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence tutti-service/src/main/java/fr/ifremer/tutti/service tutti-ui-swi
Author: tchemit Date: 2012-12-20 00:24:11 +0100 (Thu, 20 Dec 2012) New Revision: 92 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/92 Log: - usage of Caracteristic - remove obsolete beans - refs #1804: Onglet captures (debut de l'?\195?\169cran) - refs #1811: [Protocole] S?\195?\169lection d'un protocole (sauvegarde du protocol et mise ?\195?\160 jour du titre) Added: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml Removed: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUIModel.java Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTreeModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java 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 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2012-12-19 23:24:11 UTC (rev 92) @@ -34,18 +34,13 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Country; +import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory; import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.SeaState; -import fr.ifremer.tutti.persistence.entities.referential.Sex; -import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; import org.nuiton.util.ApplicationConfig; @@ -75,20 +70,32 @@ //-- Referential methods --// //------------------------------------------------------------------------// - List<SortedUnsortedCategory> getAllSortedUnsortedCategory(); + List<Species> getAllSpecies(); - List<WeightCategory> getAllWeightCategory(); + List<FishingOperationLocation> getAllFishingOperationStrata(String zoneId); - List<Sex> getAllSex(); + List<FishingOperationLocation> getAllFishingOperationSubStrata(String locationId); - List<Species> getAllSpecies(); + List<FishingOperationLocation> getAllFishingOperationLocation(String locationId); - List<SeaState> getAllSeaState(); + List<Caracteristic> getAllFishingOperationEnvironmentCaracteristic(); - List<FishingOperationLocation> getAllStrata(); + List<Caracteristic> getAllFishingOperationGearCaracteristic(); - List<BeaufortScale> getAllBeaufortScale(); + List<Caracteristic> getAllFishingOperationHydrologicCaracteristic(); + List<Caracteristic> getAllSpeciesFrequencyCaracteristic(); + + Caracteristic getSizeCategoryCaracteristic(); + + Caracteristic getSexCaracteristic(); + + Caracteristic getSortedUnsortedCaracteristic(); + + Caracteristic getMaturityCaracteristic(); + + Caracteristic getMacroWasteCategoryCaracteristic(); + List<Zone> getAllZone(); List<Country> getAllCountry(); @@ -99,8 +106,6 @@ List<Person> getAllPerson(); - List<MacroWasteCategory> getAllMacroWasteCategory(); - //------------------------------------------------------------------------// //-- Program methods --// //------------------------------------------------------------------------// Added: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java (rev 0) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java 2012-12-19 23:24:11 UTC (rev 92) @@ -0,0 +1,39 @@ +package fr.ifremer.tutti.persistence.entities; + +/* + * #%L + * Tutti :: Persistence API + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; + +import java.util.HashMap; + +/** + * A map (key are {@link Caracteristic}, values are values of caracteristics). + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class CaracteristicMap extends HashMap<Caracteristic, Object> { + private static final long serialVersionUID = 1L; +} Property changes on: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CaracteristicMap.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2012-12-19 23:24:11 UTC (rev 92) @@ -31,6 +31,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.entities.data.FishingOperationAware; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import java.util.Collection; import java.util.Collections; @@ -84,6 +85,10 @@ return new TraitIdPredicate<B>(id); } + public static Predicate<Caracteristic> newCaracteristicCategoryPredicate(String cateogryId) { + return new CaracteristicCategoryPredicate(cateogryId); + } + public static <B extends IdAware> B findById(Iterable<B> beans, String id) { B result = Iterables.tryFind(beans, newIdPredicate(id)).orNull(); @@ -104,6 +109,20 @@ } } + protected static class CaracteristicCategoryPredicate implements Predicate<Caracteristic> { + + private final String id; + + public CaracteristicCategoryPredicate(String id) { + this.id = id; + } + + @Override + public boolean apply(Caracteristic input) { + return id.equals(input.getCategory()); + } + } + protected static class TraitIdPredicate<B extends FishingOperationAware> implements Predicate<B> { private final String id; Modified: trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware =================================================================== --- trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware 2012-12-19 23:24:11 UTC (rev 92) @@ -9,18 +9,12 @@ fr.ifremer.tutti.persistence.entities.data.SpeciesBatch fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol -fr.ifremer.tutti.persistence.entities.referential.BeaufortScale fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue fr.ifremer.tutti.persistence.entities.referential.Country fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation fr.ifremer.tutti.persistence.entities.referential.Gear -fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory -fr.ifremer.tutti.persistence.entities.referential.MeasurementCaracteristic +fr.ifremer.tutti.persistence.entities.referential.Caracteristic fr.ifremer.tutti.persistence.entities.referential.Person -fr.ifremer.tutti.persistence.entities.referential.SeaState -fr.ifremer.tutti.persistence.entities.referential.Sex -fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory fr.ifremer.tutti.persistence.entities.referential.Species fr.ifremer.tutti.persistence.entities.referential.Vessel -fr.ifremer.tutti.persistence.entities.referential.WeightCategory fr.ifremer.tutti.persistence.entities.referential.Zone \ No newline at end of file Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties =================================================================== --- trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2012-12-19 23:24:11 UTC (rev 92) @@ -34,8 +34,11 @@ fr.ifremer.tutti.persistence.entities.data.Cruise.attribute.vessel.stereotype=ordered fr.ifremer.tutti.persistence.entities.data.FishingOperation.attribute.saisisseur.stereotype=ordered +fr.ifremer.tutti.persistence.entities.data.MacroWasteBatch.attribute.macroWasteCategory.stereotype=ordered + fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.gearPmfmId.stereotype=ordered fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.environmentPmfmId.stereotype=ordered fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.hydrologyPmfmId.stereotype=ordered fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.species.stereotype=ordered +fr.ifremer.tutti.persistence.entities.referential.Caracteristic.attribute.qualitativeValue.stereotype=ordered Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo =================================================================== (Binary files differ) Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java =================================================================== --- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java 2012-12-19 23:24:11 UTC (rev 92) @@ -35,18 +35,13 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Country; +import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory; import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.SeaState; -import fr.ifremer.tutti.persistence.entities.referential.Sex; -import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; import org.apache.commons.io.FileUtils; import org.nuiton.util.ApplicationConfig; @@ -91,70 +86,95 @@ //------------------------------------------------------------------------// @Override - public List<SortedUnsortedCategory> getAllSortedUnsortedCategory() { + public List<Species> getAllSpecies() { return null; } @Override - public List<WeightCategory> getAllWeightCategory() { + public List<FishingOperationLocation> getAllFishingOperationStrata(String zoneId) { return null; } @Override - public List<Sex> getAllSex() { + public List<FishingOperationLocation> getAllFishingOperationSubStrata(String locationId) { return null; } @Override - public List<Species> getAllSpecies() { + public List<FishingOperationLocation> getAllFishingOperationLocation(String locationId) { return null; } @Override - public List<SeaState> getAllSeaState() { + public List<Zone> getAllZone() { return null; } @Override - public List<FishingOperationLocation> getAllStrata() { + public List<Country> getAllCountry() { return null; } @Override - public List<BeaufortScale> getAllBeaufortScale() { + public List<Vessel> getAllVessel() { return null; } @Override - public List<Zone> getAllZone() { + public List<Gear> getAllGear() { return null; } @Override - public List<Country> getAllCountry() { + public List<Person> getAllPerson() { return null; } @Override - public List<Vessel> getAllVessel() { + public List<Caracteristic> getAllFishingOperationEnvironmentCaracteristic() { return null; } @Override - public List<Gear> getAllGear() { + public List<Caracteristic> getAllFishingOperationGearCaracteristic() { return null; } @Override - public List<Person> getAllPerson() { + public List<Caracteristic> getAllFishingOperationHydrologicCaracteristic() { return null; } @Override - public List<MacroWasteCategory> getAllMacroWasteCategory() { + public List<Caracteristic> getAllSpeciesFrequencyCaracteristic() { return null; } + @Override + public Caracteristic getSizeCategoryCaracteristic() { + return null; + } + + @Override + public Caracteristic getSexCaracteristic() { + return null; + } + + @Override + public Caracteristic getSortedUnsortedCaracteristic() { + return null; + } + + @Override + public Caracteristic getMaturityCaracteristic() { + return null; + } + + @Override + public Caracteristic getMacroWasteCategoryCaracteristic() { + return null; + } + //------------------------------------------------------------------------// //-- Program methods --// //------------------------------------------------------------------------// Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java =================================================================== --- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java 2012-12-19 23:24:11 UTC (rev 92) @@ -25,24 +25,24 @@ */ import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.IdAware; -import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Country; +import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory; import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.SeaState; -import fr.ifremer.tutti.persistence.entities.referential.Sex; -import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; +import java.util.ArrayList; import java.util.List; import java.util.UUID; +import static fr.ifremer.tutti.persistence.TuttiPersistenceDevImpl.CaracteristicEnum; + /** * TODO * @@ -59,17 +59,99 @@ cache = ArrayListMultimap.create(); - Zone b; - b = new Zone(); - b.setId(UUID.randomUUID().toString()); - b.setName("zone1"); - cache.put(Zone.class, b); + Zone z; + z = new Zone(); + z.setId(UUID.randomUUID().toString()); + z.setName("zone1"); + cache.put(Zone.class, z); - b = new Zone(); - b.setId(UUID.randomUUID().toString()); - b.setName("zone2"); - cache.put(Zone.class, b); + FishingOperationLocation l; + FishingOperationLocation sl; + FishingOperationLocation ssl; + l = new FishingOperationLocation(); + l.setId(UUID.randomUUID().toString()); + l.setName("zone1 - strata1"); + l.setZone(z); + cache.put(FishingOperationLocation.class, l); + + sl = new FishingOperationLocation(); + sl.setId(UUID.randomUUID().toString()); + sl.setName("strat1 - substrata1"); + sl.setParent(l); + cache.put(FishingOperationLocation.class, sl); + + ssl = new FishingOperationLocation(); + ssl.setId(UUID.randomUUID().toString()); + ssl.setName("substrata1 - localite1"); + ssl.setLocalite(true); + ssl.setParent(sl); + cache.put(FishingOperationLocation.class, ssl); + + ssl = new FishingOperationLocation(); + ssl.setId(UUID.randomUUID().toString()); + ssl.setName("substrata1 - localite2"); + ssl.setLocalite(true); + ssl.setParent(sl); + cache.put(FishingOperationLocation.class, ssl); + + sl = new FishingOperationLocation(); + sl.setId(UUID.randomUUID().toString()); + sl.setName("strat1 - substrata2"); + sl.setParent(l); + cache.put(FishingOperationLocation.class, sl); + + ssl = new FishingOperationLocation(); + ssl.setId(UUID.randomUUID().toString()); + ssl.setName("substrata2 - localite1"); + ssl.setLocalite(true); + ssl.setParent(sl); + cache.put(FishingOperationLocation.class, ssl); + + ssl = new FishingOperationLocation(); + ssl.setId(UUID.randomUUID().toString()); + ssl.setName("substrata2 - localite2"); + ssl.setLocalite(true); + ssl.setParent(sl); + cache.put(FishingOperationLocation.class, ssl); + + l = new FishingOperationLocation(); + l.setId(UUID.randomUUID().toString()); + l.setName("zone1 - strata2"); + l.setZone(z); + cache.put(FishingOperationLocation.class, l); + + ssl = new FishingOperationLocation(); + ssl.setId(UUID.randomUUID().toString()); + ssl.setName("strata2 - localite1"); + ssl.setParent(l); + ssl.setLocalite(true); + cache.put(FishingOperationLocation.class, ssl); + + ssl = new FishingOperationLocation(); + ssl.setId(UUID.randomUUID().toString()); + ssl.setName("strata2 - localite2"); + ssl.setParent(l); + ssl.setLocalite(true); + cache.put(FishingOperationLocation.class, ssl); + + z = new Zone(); + z.setId(UUID.randomUUID().toString()); + z.setName("zone2"); + cache.put(Zone.class, z); + + l = new FishingOperationLocation(); + l.setId(UUID.randomUUID().toString()); + l.setName("zone2 - strata1"); + l.setZone(z); + cache.put(FishingOperationLocation.class, l); + + l = new FishingOperationLocation(); + l.setId(UUID.randomUUID().toString()); + l.setName("zone2 - strata2"); + l.setZone(z); + cache.put(FishingOperationLocation.class, l); + Country c; c = new Country(); c.setId(UUID.randomUUID().toString()); @@ -151,60 +233,80 @@ u.setLastName("Brisset"); cache.put(Person.class, u); - BeaufortScale bs; + Caracteristic ca; - bs = new BeaufortScale(); - bs.setId(UUID.randomUUID().toString()); - bs.setName("Calme"); - cache.put(BeaufortScale.class, bs); + ca = createQuantitativeCaracteristic("Beaufort Scale", + CaracteristicEnum.FishingOperationEnvironment.name()); - bs = new BeaufortScale(); - bs.setId(UUID.randomUUID().toString()); - bs.setName("Très légère brise"); - cache.put(BeaufortScale.class, bs); + createCaracteristicQuantitativeValue(ca, "Calme"); + createCaracteristicQuantitativeValue(ca, "Très légère brise"); + createCaracteristicQuantitativeValue(ca, "Petite brise"); + createCaracteristicQuantitativeValue(ca, "Jolie brise"); + createCaracteristicQuantitativeValue(ca, "Vent frais"); + createCaracteristicQuantitativeValue(ca, "Grand frais"); + createCaracteristicQuantitativeValue(ca, "Coup de vent"); + createCaracteristicQuantitativeValue(ca, "Fort coup de vent"); - bs = new BeaufortScale(); - bs.setId(UUID.randomUUID().toString()); - bs.setName("Petite brise"); - cache.put(BeaufortScale.class, bs); + cache.put(Caracteristic.class, ca); - bs = new BeaufortScale(); - bs.setId(UUID.randomUUID().toString()); - bs.setName("Jolie brise"); - cache.put(BeaufortScale.class, bs); + ca = createQuantitativeCaracteristic("Sea State", + CaracteristicEnum.FishingOperationEnvironment.name()); - bs = new BeaufortScale(); - bs.setId(UUID.randomUUID().toString()); - bs.setName("Vent frais"); - cache.put(BeaufortScale.class, bs); + createCaracteristicQuantitativeValue(ca, "Mer calme"); + createCaracteristicQuantitativeValue(ca, "Mer agitée"); + cache.put(Caracteristic.class, ca); - bs = new BeaufortScale(); - bs.setId(UUID.randomUUID().toString()); - bs.setName("Grand frais"); - cache.put(BeaufortScale.class, bs); + createNumberCaracteristic("Wind direction", + CaracteristicEnum.FishingOperationEnvironment.name()); - bs = new BeaufortScale(); - bs.setId(UUID.randomUUID().toString()); - bs.setName("Coup de vent"); - cache.put(BeaufortScale.class, bs); + createNumberCaracteristic("Gear Shooting Start Depth", + CaracteristicEnum.FishingOperationEnvironment.name()); - bs = new BeaufortScale(); - bs.setId(UUID.randomUUID().toString()); - bs.setName("Fort coup de vent"); - cache.put(BeaufortScale.class, bs); + createNumberCaracteristic("Gear Shooting End Depth", + CaracteristicEnum.FishingOperationEnvironment.name()); - SeaState st; + createNumberCaracteristic("Ouverture horizontale", + CaracteristicEnum.FishingOperationGear.name()); + createNumberCaracteristic("Ouverture verticale", + CaracteristicEnum.FishingOperationGear.name()); + createNumberCaracteristic("Longueur funes", + CaracteristicEnum.FishingOperationGear.name()); + createNumberCaracteristic("Longueur bras", + CaracteristicEnum.FishingOperationGear.name()); + createBooleanCaracteristic("Systeme cul ferme", + CaracteristicEnum.FishingOperationGear.name()); + createBooleanCaracteristic("Géométrie mesurée", + CaracteristicEnum.FishingOperationGear.name()); - st = new SeaState(); - st.setId(UUID.randomUUID().toString()); - st.setName("Mer calme"); - cache.put(SeaState.class, st); + createNumberCaracteristic("Gear Shooting Start Surface Temperature", + CaracteristicEnum.FishingOperationHydrologic.name()); + createNumberCaracteristic("Gear Shooting End Surface Temperature", + CaracteristicEnum.FishingOperationHydrologic.name()); + createNumberCaracteristic("Average Surface Temperature", + CaracteristicEnum.FishingOperationHydrologic.name()); - st = new SeaState(); - st.setId(UUID.randomUUID().toString()); - st.setName("Mer agitée"); - cache.put(SeaState.class, st); + createNumberCaracteristic("Gear Shooting Start Bottom Temperature", + CaracteristicEnum.FishingOperationHydrologic.name()); + createNumberCaracteristic("Gear Shooting End Bottom Temperature", + CaracteristicEnum.FishingOperationHydrologic.name()); + createNumberCaracteristic("Average Bottom Temperature", + CaracteristicEnum.FishingOperationHydrologic.name()); + createNumberCaracteristic("Gear Shooting Start Surface Salinity", + CaracteristicEnum.FishingOperationHydrologic.name()); + createNumberCaracteristic("Gear Shooting End Surface Salinity", + CaracteristicEnum.FishingOperationHydrologic.name()); + createNumberCaracteristic("Average Surface Salinity", + CaracteristicEnum.FishingOperationHydrologic.name()); + + createNumberCaracteristic("Gear Shooting Start Bottom Salinity", + CaracteristicEnum.FishingOperationHydrologic.name()); + createNumberCaracteristic("Gear Shooting End Bottom Salinity", + CaracteristicEnum.FishingOperationHydrologic.name()); + createNumberCaracteristic("Average Bottom Salinity", + CaracteristicEnum.FishingOperationHydrologic.name()); + + Species sp; sp = new Species(); @@ -231,122 +333,86 @@ sp.setGenusSpecies("Limande"); cache.put(Species.class, sp); - Sex se; - se = new Sex(); - se.setId(UUID.randomUUID().toString()); - se.setName("Male"); - cache.put(Sex.class, se); + ca = createQuantitativeCaracteristic("MacroWaste", CaracteristicEnum.MacroWasteCategory.name()); - se = new Sex(); - se.setId(UUID.randomUUID().toString()); - se.setName("Femelle"); - cache.put(Sex.class, se); + createCaracteristicQuantitativeValue(ca, "Pneu"); + createCaracteristicQuantitativeValue(ca, "Plastique"); + createCaracteristicQuantitativeValue(ca, "Machine à laver"); + createCaracteristicQuantitativeValue(ca, "Métal"); - se = new Sex(); - se.setId(UUID.randomUUID().toString()); - se.setName("Indéterminé"); - cache.put(Sex.class, se); + ca = createQuantitativeCaracteristic("Sorted / Unsorted Category", CaracteristicEnum.SpeciesSortedUnsorted.name()); - WeightCategory wc; + createCaracteristicQuantitativeValue(ca, "Vrac"); + createCaracteristicQuantitativeValue(ca, "Hors Vrac"); - wc = new WeightCategory(); - wc.setId(UUID.randomUUID().toString()); - wc.setName("Petit"); - cache.put(WeightCategory.class, wc); + ca = createQuantitativeCaracteristic("Species Sex Category", CaracteristicEnum.SpeciesSex.name()); - wc = new WeightCategory(); - wc.setId(UUID.randomUUID().toString()); - wc.setName("Gros"); - cache.put(WeightCategory.class, wc); + createCaracteristicQuantitativeValue(ca, "Male"); + createCaracteristicQuantitativeValue(ca, "Female"); + createCaracteristicQuantitativeValue(ca, "Unknown"); - SortedUnsortedCategory suc; + ca = createQuantitativeCaracteristic("Species Maturity Category", CaracteristicEnum.SpeciesMaturity.name()); - suc = new SortedUnsortedCategory(); - suc.setId(UUID.randomUUID().toString()); - suc.setName("Vrac"); - cache.put(SortedUnsortedCategory.class, suc); + createCaracteristicQuantitativeValue(ca, "0"); + createCaracteristicQuantitativeValue(ca, "1"); + createCaracteristicQuantitativeValue(ca, "2"); - suc = new SortedUnsortedCategory(); - suc.setId(UUID.randomUUID().toString()); - suc.setName("Hors Vrac"); - cache.put(SortedUnsortedCategory.class, suc); + ca = createQuantitativeCaracteristic("Species Size Category", CaracteristicEnum.SpeciesSizeCategory.name()); - MacroWasteCategory mwc; + createCaracteristicQuantitativeValue(ca, "Petit"); + createCaracteristicQuantitativeValue(ca, "Gros"); - mwc = new MacroWasteCategory(); - mwc.setId(UUID.randomUUID().toString()); - mwc.setName("Pneu"); - cache.put(MacroWasteCategory.class, mwc); - - mwc = new MacroWasteCategory(); - mwc.setId(UUID.randomUUID().toString()); - mwc.setName("Plastique"); - cache.put(MacroWasteCategory.class, mwc); - - mwc = new MacroWasteCategory(); - mwc.setId(UUID.randomUUID().toString()); - mwc.setName("Machine à laver"); - cache.put(MacroWasteCategory.class, mwc); - - mwc = new MacroWasteCategory(); - mwc.setId(UUID.randomUUID().toString()); - mwc.setName("Métal"); - cache.put(MacroWasteCategory.class, mwc); } - public List<Zone> zone() { - return getData(Zone.class); + protected void createCaracteristicQuantitativeValue(Caracteristic ca, String name) { + CaracteristicQualitativeValue cqv = new CaracteristicQualitativeValue(); + cqv.setId(UUID.randomUUID().toString()); + cqv.setName(name); + ca.addQualitativeValue(cqv); + cache.put(CaracteristicQualitativeValue.class, cqv); } - public List<Country> country() { - return getData(Country.class); + protected Caracteristic createQuantitativeCaracteristic(String name, String category) { + Caracteristic ca = new Caracteristic(); + ca.setId(UUID.randomUUID().toString()); + ca.setName(name); + ca.setCategory(category); + ca.setQualitativeType(true); + ca.setQualitativeValue(Lists.<CaracteristicQualitativeValue>newArrayList()); + cache.put(Caracteristic.class, ca); + return ca; } - - public List<Vessel> vessel() { - return getData(Vessel.class); + protected Caracteristic createBooleanCaracteristic(String name, String category) { + Caracteristic ca = new Caracteristic(); + ca.setId(UUID.randomUUID().toString()); + ca.setName(name); + ca.setCategory(category); + ca.setBooleanType(true); + cache.put(Caracteristic.class, ca); + return ca; } - public List<Gear> gear() { - return getData(Gear.class); + protected Caracteristic createNumberCaracteristic(String name, String category) { + Caracteristic ca = new Caracteristic(); + ca.setId(UUID.randomUUID().toString()); + ca.setName(name); + ca.setCategory(category); + ca.setNumberType(true); + cache.put(Caracteristic.class, ca); + return ca; } - public List<Person> user() { - return getData(Person.class); + protected Caracteristic createTextCaracteristic(String name, String category) { + Caracteristic ca = new Caracteristic(); + ca.setId(UUID.randomUUID().toString()); + ca.setName(name); + ca.setCategory(category); + ca.setTextType(true); + cache.put(Caracteristic.class, ca); + return ca; } - public List<FishingOperationLocation> strata() { - return getData(FishingOperationLocation.class); - } - - public List<SeaState> seaState() { - return getData(SeaState.class); - } - - public List<BeaufortScale> beaufortScale() { - return getData(BeaufortScale.class); - } - - public List<Species> species() { - return getData(Species.class); - } - - public List<Sex> sex() { - return getData(Sex.class); - } - - public List<WeightCategory> weightCategory() { - return getData(WeightCategory.class); - } - - public List<SortedUnsortedCategory> sortedUnsortedCategory() { - return getData(SortedUnsortedCategory.class); - } - - public List<MacroWasteCategory> macroWasteCategory() { - return getData(MacroWasteCategory.class); - } - public <B extends IdAware> List<B> getData(Class<B> entityType) { List<B> result = (List<B>) cache.get(entityType); return result; Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java =================================================================== --- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2012-12-19 23:24:11 UTC (rev 92) @@ -46,18 +46,13 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Country; +import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory; import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.SeaState; -import fr.ifremer.tutti.persistence.entities.referential.Sex; -import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; @@ -109,6 +104,18 @@ } } + enum CaracteristicEnum { + FishingOperationEnvironment, + FishingOperationGear, + FishingOperationHydrologic, + SpeciesFrequency, + SpeciesSizeCategory, + SpeciesSex, + SpeciesSortedUnsorted, + SpeciesMaturity, + MacroWasteCategory + } + /** * Persistence config. * @@ -174,26 +181,6 @@ //------------------------------------------------------------------------// @Override - public List<SortedUnsortedCategory> getAllSortedUnsortedCategory() { - List<SortedUnsortedCategory> result = - getDataInNewList(SortedUnsortedCategory.class); - return result; - } - - @Override - public List<WeightCategory> getAllWeightCategory() { - List<WeightCategory> result = - getDataInNewList(WeightCategory.class); - return result; - } - - @Override - public List<Sex> getAllSex() { - List<Sex> result = getDataInNewList(Sex.class); - return result; - } - - @Override public List<Species> getAllSpecies() { List<Species> result = getDataInNewList(Species.class); return result; @@ -230,31 +217,86 @@ } @Override - public List<MacroWasteCategory> getAllMacroWasteCategory() { - List<MacroWasteCategory> result = - getDataInNewList(MacroWasteCategory.class); + public List<FishingOperationLocation> getAllFishingOperationStrata(final String zoneId) { + List<FishingOperationLocation> result = Lists.newArrayList(Iterables.filter(getData(FishingOperationLocation.class), new Predicate<FishingOperationLocation>() { + @Override + public boolean apply(FishingOperationLocation input) { + Zone zone = input.getZone(); + return zone != null && zoneId.equals(zone.getId()); + } + })); return result; } @Override - public List<SeaState> getAllSeaState() { - List<SeaState> result = getDataInNewList(SeaState.class); + public List<FishingOperationLocation> getAllFishingOperationSubStrata(final String locationId) { + List<FishingOperationLocation> result = Lists.newArrayList(Iterables.filter(getData(FishingOperationLocation.class), new Predicate<FishingOperationLocation>() { + @Override + public boolean apply(FishingOperationLocation input) { + FishingOperationLocation parent = input.getParent(); + return parent != null && !input.isLocalite() && locationId.equals(parent.getId()); + } + })); return result; } @Override - public List<FishingOperationLocation> getAllStrata() { - List<FishingOperationLocation> result = getDataInNewList(FishingOperationLocation.class); + public List<FishingOperationLocation> getAllFishingOperationLocation(final String locationId) { + List<FishingOperationLocation> result = Lists.newArrayList(Iterables.filter(getData(FishingOperationLocation.class), new Predicate<FishingOperationLocation>() { + @Override + public boolean apply(FishingOperationLocation input) { + FishingOperationLocation parent = input.getParent(); + return parent != null && input.isLocalite() && locationId.equals(parent.getId()); + } + })); return result; } @Override - public List<BeaufortScale> getAllBeaufortScale() { - List<BeaufortScale> result = - getDataInNewList(BeaufortScale.class); - return result; + public List<Caracteristic> getAllFishingOperationEnvironmentCaracteristic() { + return getAllCaracteristicByCategory(CaracteristicEnum.FishingOperationEnvironment.name()); } + @Override + public List<Caracteristic> getAllFishingOperationGearCaracteristic() { + return getAllCaracteristicByCategory(CaracteristicEnum.FishingOperationGear.name()); + } + + @Override + public List<Caracteristic> getAllFishingOperationHydrologicCaracteristic() { + return getAllCaracteristicByCategory(CaracteristicEnum.FishingOperationHydrologic.name()); + } + + @Override + public List<Caracteristic> getAllSpeciesFrequencyCaracteristic() { + return getAllCaracteristicByCategory(CaracteristicEnum.SpeciesFrequency.name()); + } + + @Override + public Caracteristic getSizeCategoryCaracteristic() { + return getCaracteristicByCategory(CaracteristicEnum.SpeciesSizeCategory.name()); + } + + @Override + public Caracteristic getSexCaracteristic() { + return getCaracteristicByCategory(CaracteristicEnum.SpeciesSex.name()); + } + + @Override + public Caracteristic getSortedUnsortedCaracteristic() { + return getCaracteristicByCategory(CaracteristicEnum.SpeciesSortedUnsorted.name()); + } + + @Override + public Caracteristic getMaturityCaracteristic() { + return getCaracteristicByCategory(CaracteristicEnum.SpeciesMaturity.name()); + } + + @Override + public Caracteristic getMacroWasteCategoryCaracteristic() { + return getCaracteristicByCategory(CaracteristicEnum.MacroWasteCategory.name()); + } + //------------------------------------------------------------------------// //-- Program methods --// //------------------------------------------------------------------------// @@ -780,6 +822,25 @@ return result; } + protected List<Caracteristic> getAllCaracteristicByCategory(String categoryId) { + Predicate<Caracteristic> predicate = TuttiEntities.newCaracteristicCategoryPredicate(categoryId); + List<Caracteristic> result = Lists.newArrayList(Iterables.filter(getData(Caracteristic.class), predicate)); + return result; + } + + protected Caracteristic getCaracteristicByCategory(String categoryId) { + Predicate<Caracteristic> predicate = TuttiEntities.newCaracteristicCategoryPredicate(categoryId); + List<Caracteristic> data = getData(Caracteristic.class); + Caracteristic result = null; + for (Caracteristic caracteristic : data) { + if (predicate.apply(caracteristic)) { + result = caracteristic; + break; + } + } + return result; + } + protected <B extends IdAware> B create(Class<B> type, B bean) { Preconditions.checkNotNull(bean, "Can't persist a null bean"); B result = TuttiEntities.newEntity(bean); Modified: trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java =================================================================== --- trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java 2012-12-19 23:24:11 UTC (rev 92) @@ -26,9 +26,10 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.config.TuttiPersistenceDevConfig; +import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; -import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.referential.Country; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -97,7 +98,8 @@ Assert.assertTrue(storageDirectory.exists()); TuttiPersistenceDevFixtures fixtures = new TuttiPersistenceDevFixtures(); - Assert.assertEquals(fixtures.seaState().size(), persistence.getAllSeaState().size()); + Assert.assertEquals(fixtures.getData(Country.class).size(), + persistence.getAllCountry().size()); } @Test @@ -110,12 +112,13 @@ persistence.open(config.getConfig()); TuttiPersistenceDevFixtures fixtures = new TuttiPersistenceDevFixtures(); - Assert.assertEquals(fixtures.seaState().size(), persistence.getAllSeaState().size()); + Assert.assertEquals(fixtures.getData(Country.class).size(), + persistence.getAllCountry().size()); persistence.close(); Assert.assertTrue(storageDirectory.exists()); - Assert.assertEquals(fixtures.seaState().size(), - persistence.getAllSeaState().size()); + Assert.assertEquals(fixtures.getData(Country.class).size(), + persistence.getAllCountry().size()); } @Test 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 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2012-12-19 23:24:11 UTC (rev 92) @@ -29,18 +29,14 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Country; +import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory; import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.SeaState; -import fr.ifremer.tutti.persistence.entities.referential.Sex; -import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; import org.nuiton.util.decorator.Decorator; import org.nuiton.util.decorator.DecoratorProvider; @@ -99,17 +95,12 @@ registerMultiJXPathDecorator(Country.class, "${name}$s", SEPARATOR, " - "); registerMultiJXPathDecorator(Gear.class, "${name}$s", SEPARATOR, " - "); registerMultiJXPathDecorator(Person.class, "${firstName}$s#${lastName}$s", SEPARATOR, " "); - registerMultiJXPathDecorator(BeaufortScale.class, "${name}$s", SEPARATOR, " - "); - registerMultiJXPathDecorator(SeaState.class, "${name}$s", SEPARATOR, " - "); registerMultiJXPathDecorator(FishingOperationLocation.class, "${name}$s", SEPARATOR, " - "); - registerMultiJXPathDecorator(Sex.class, "${name}$s", SEPARATOR, " - "); - registerMultiJXPathDecorator(SortedUnsortedCategory.class, "${name}$s", SEPARATOR, " - "); - registerMultiJXPathDecorator(MacroWasteCategory.class, "${name}$s", SEPARATOR, " - "); + registerMultiJXPathDecorator(Caracteristic.class, "${name}$s", SEPARATOR, " - "); + registerMultiJXPathDecorator(CaracteristicQualitativeValue.class, "${name}$s", SEPARATOR, " - "); registerMultiJXPathDecorator(Species.class, "${codeMemo}$s#${genusSpecies}$s", SEPARATOR, " - "); registerMultiJXPathDecorator(Species.class, SPECIES_BY_CODE, "${codeMemo}$s", SEPARATOR, " - "); registerMultiJXPathDecorator(Species.class, SPECIES_BY_GENUS, "${genusSpecies}$s", SEPARATOR, " - "); - registerMultiJXPathDecorator(WeightCategory.class, BY_NAME, "${name}$s", SEPARATOR, " - "); - registerMultiJXPathDecorator(Sex.class, BY_NAME, "${name}$s", SEPARATOR, " - "); registerMultiJXPathDecorator(Attachment.class, "${name}$s", SEPARATOR, " - "); } }; @@ -130,8 +121,6 @@ n_("tutti.property.country"); n_("tutti.property.gear"); n_("tutti.property.user"); - n_("tutti.property.beaufortScale"); - n_("tutti.property.seaState"); n_("tutti.property.strata"); n_("tutti.property.codeMemo"); n_("tutti.property.genusSpecies"); 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 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2012-12-19 23:24:11 UTC (rev 92) @@ -36,18 +36,13 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Country; +import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory; import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.SeaState; -import fr.ifremer.tutti.persistence.entities.referential.Sex; -import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -136,24 +131,6 @@ //------------------------------------------------------------------------// @Override - public List<SortedUnsortedCategory> getAllSortedUnsortedCategory() { - checkDriverExists(); - return driver.getAllSortedUnsortedCategory(); - } - - @Override - public List<WeightCategory> getAllWeightCategory() { - checkDriverExists(); - return driver.getAllWeightCategory(); - } - - @Override - public List<Sex> getAllSex() { - checkDriverExists(); - return driver.getAllSex(); - } - - @Override public List<Species> getAllSpecies() { checkDriverExists(); return driver.getAllSpecies(); @@ -190,29 +167,77 @@ } @Override - public List<MacroWasteCategory> getAllMacroWasteCategory() { + public List<FishingOperationLocation> getAllFishingOperationStrata(String zoneId) { checkDriverExists(); - return driver.getAllMacroWasteCategory(); + return driver.getAllFishingOperationStrata(zoneId); } @Override - public List<SeaState> getAllSeaState() { + public List<FishingOperationLocation> getAllFishingOperationSubStrata(String locationId) { checkDriverExists(); - return driver.getAllSeaState(); + return driver.getAllFishingOperationSubStrata(locationId); } @Override - public List<FishingOperationLocation> getAllStrata() { + public List<FishingOperationLocation> getAllFishingOperationLocation(String locationId) { checkDriverExists(); - return driver.getAllStrata(); + return driver.getAllFishingOperationLocation(locationId); } @Override - public List<BeaufortScale> getAllBeaufortScale() { + public List<Caracteristic> getAllFishingOperationEnvironmentCaracteristic() { checkDriverExists(); - return driver.getAllBeaufortScale(); + return driver.getAllFishingOperationEnvironmentCaracteristic(); } + @Override + public List<Caracteristic> getAllFishingOperationGearCaracteristic() { + checkDriverExists(); + return driver.getAllFishingOperationGearCaracteristic(); + } + + @Override + public List<Caracteristic> getAllFishingOperationHydrologicCaracteristic() { + checkDriverExists(); + return driver.getAllFishingOperationHydrologicCaracteristic(); + } + + @Override + public List<Caracteristic> getAllSpeciesFrequencyCaracteristic() { + checkDriverExists(); + return driver.getAllSpeciesFrequencyCaracteristic(); + } + + @Override + public Caracteristic getSizeCategoryCaracteristic() { + checkDriverExists(); + return driver.getSizeCategoryCaracteristic(); + } + + @Override + public Caracteristic getSexCaracteristic() { + checkDriverExists(); + return driver.getSexCaracteristic(); + } + + @Override + public Caracteristic getSortedUnsortedCaracteristic() { + checkDriverExists(); + return driver.getSortedUnsortedCaracteristic(); + } + + @Override + public Caracteristic getMaturityCaracteristic() { + checkDriverExists(); + return driver.getMaturityCaracteristic(); + } + + @Override + public Caracteristic getMacroWasteCategoryCaracteristic() { + checkDriverExists(); + return driver.getMacroWasteCategoryCaracteristic(); + } + //------------------------------------------------------------------------// //-- Program methods --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2012-12-19 23:24:11 UTC (rev 92) @@ -35,7 +35,7 @@ import fr.ifremer.tutti.ui.swing.content.home.SelectCruiseUI; import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI; import fr.ifremer.tutti.ui.swing.content.program.EditProgramUI; -import fr.ifremer.tutti.ui.swing.protocol.EditProtocolUI; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.AboutPanel; @@ -83,8 +83,7 @@ @Override public void propertyChange(PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); - if (propertyName.equals(TuttiUIContext.PROPERTY_PROGRAM_ID) || - propertyName.equals(TuttiUIContext.PROPERTY_CRUISE_ID)) { + if (TuttiUIContext.ID_TO_SAVE_PROPERTIES.contains(propertyName)) { // change the ui title changeTitle(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2012-12-19 23:24:11 UTC (rev 92) @@ -28,6 +28,7 @@ import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiService; import fr.ifremer.tutti.service.TuttiServiceContext; @@ -61,6 +62,12 @@ public static final String PROPERTY_PROTOCOL_ID = "protocolId"; + public static final Set<String> ID_TO_SAVE_PROPERTIES = Sets.newHashSet( + PROPERTY_PROGRAM_ID, + PROPERTY_CRUISE_ID, + PROPERTY_PROTOCOL_ID); + + public static final String PROPERTY_SCREEN = "screen"; public static final String PROPERTY_CRUISE_CONTEXT_FILLED = "cruiseContextFilled"; @@ -196,7 +203,6 @@ // always propagate the change firePropertyChange(PROPERTY_PROTOCOL_ID, null, protocolId); - } public void setScreen(TuttiScreen screen) { @@ -219,22 +225,44 @@ setCruiseId(getConfig().getCruiseId()); } + if (protocolId == null) { + + // load it from config + setProtocolId(getConfig().getProtocolId()); + } + //check if programId is sane PersistenceService persistenceService = getService(PersistenceService.class); + if (protocolId != null) { + TuttiProtocol protocol = persistenceService.getProtocol(protocolId); + if (protocol == null) { + + // not found in this db + + if (log.isWarnEnabled()) { + log.warn("Remove invalid protocolId: " + protocolId); + } + + setProtocolId(null); + } + } + if (programId != null) { Program program = persistenceService.getProgram(programId); if (program == null) { // not found in this db - setProgramId(null); - setCruiseId(null); if (log.isWarnEnabled()) { log.warn("Remove invalid programId: " + programId); } + + setProgramId(null); + setCruiseId(null); + } else { if (log.isInfoEnabled()) { @@ -259,11 +287,12 @@ if (campaign == null) { // not found in this db - setCruiseId(null); if (log.isWarnEnabled()) { log.warn("Remove invalid cruiseId: " + cruiseId); } + setCruiseId(null); + } else { if (log.isInfoEnabled()) { @@ -280,13 +309,10 @@ // list when programId or campaingId change to save the configuration addPropertyChangeListener(new PropertyChangeListener() { - Set<String> acceptedProperties = Sets.newHashSet( - PROPERTY_PROGRAM_ID, PROPERTY_CRUISE_ID); - @Override public void propertyChange(PropertyChangeEvent evt) { - if (acceptedProperties.contains(evt.getPropertyName())) { + if (ID_TO_SAVE_PROPERTIES.contains(evt.getPropertyName())) { saveContextToConfig(); } } @@ -315,10 +341,11 @@ protected void saveContextToConfig() { if (log.isInfoEnabled()) { log.info("Save config (programId: " + programId + ", cruiseId: " + - cruiseId + ")"); + cruiseId + ", protocolId: " + protocolId + ")"); } config.setProgramId(programId); config.setCruiseId(cruiseId); + config.setProtocolId(protocolId); config.save(); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2012-12-19 23:24:11 UTC (rev 92) @@ -103,14 +103,14 @@ selectedItem: {model.getSubStrata()}; } -#localiteLabel { - text: "tutti.label.fishingOperation.localite"; - labelFor: {localiteComboBox}; +#locationLabel { + text: "tutti.label.fishingOperation.location"; + labelFor: {locationComboBox}; } -#localiteComboBox { - property: "localite"; - selectedItem: {model.getLocalite()}; +#locationComboBox { + property: "location"; + selectedItem: {model.getLocation()}; } #gearLongitudeLabel { @@ -218,104 +218,6 @@ enabled: {!model.isFishingOperationRectiligne()}; } -#beaufortScaleLabel { - text: "tutti.label.fishingOperation.beaufortScale"; - labelFor: {beaufortScaleComboBox}; -} - -#beaufortScaleComboBox { - property: "beaufortScale"; - selectedItem: {model.getBeaufortScale()}; -} - -#windDirectionLabel { - text: "tutti.label.fishingOperation.windDirection"; - labelFor: {windDirectionField}; -} - -#windDirectionField { - property: "windDirection"; - model: {model.getWindDirection()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#seaStateLabel { - text: "tutti.label.fishingOperation.seaState"; - labelFor: {seaStateComboBox}; -} - -#seaStateComboBox { - property: "seaState"; - selectedItem: {model.getSeaState()}; -} - -#ouvertureHorizontaleLabel { - text: "tutti.label.fishingOperation.ouvertureHorizontale"; - labelFor: {ouvertureHorizontaleField}; -} - -#ouvertureHorizontaleVerticaleLabel { - text: "tutti.label.fishingOperation.ouvertureHorizontaleVerticale"; -} - -#ouvertureHorizontaleField { - property: "ouvertureHorizontale"; - model: {model.getOuvertureHorizontale()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#ouvertureVerticaleLabel { - text: "tutti.label.fishingOperation.ouvertureVerticale"; - labelFor: {ouvertureVerticaleField}; -} - -#ouvertureVerticaleField { - property: "ouvertureVerticale"; - model: {model.getOuvertureVerticale()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#geometrieMesureeCheckBox { - text: "tutti.label.fishingOperation.geometrieMesuree"; - selected: {model.isGeometrieMesuree()}; -} - -#longueurFunesLabel { - text: "tutti.label.fishingOperation.longueurFunes"; - labelFor: {longueurFunesField}; -} - -#longueurFunesBrasLabel { - text: "tutti.label.fishingOperation.longueurFunesBras"; -} - -#longueurFunesField { - property: "longueurFunes"; - model: {model.getLongueurFunes()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#longueurBrasLabel { - text: "tutti.label.fishingOperation.longueurBras"; - labelFor: {longueurBrasField}; -} - -#longueurBrasField { - property: "longueurBras"; - model: {model.getLongueurBras()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#systemeFermetureCulCheckBox { - text: "tutti.label.fishingOperation.systemeFermetureCul"; - selected: {model.isSystemeFermetureCul()}; -} - #dureeLabel { text: "tutti.label.fishingOperation.duree"; labelFor: {dureeField}; @@ -341,150 +243,6 @@ text: {model.getComment()}; } -#gearShootingStartDepthLabel { - text: "tutti.label.fishingOperation.gearShootingStartDepth"; - labelFor: {gearShootingStartDepthField}; -} - -#gearShootingStartDepthField { - property: "gearShootingStartDepth"; - model: {model.getGearShootingStartDepth()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#gearShootingEndDepthLabel { - text: "tutti.label.fishingOperation.gearShootingEndDepth"; - labelFor: {gearShootingEndDepthField}; -} - -#gearShootingEndDepthField { - property: "gearShootingEndDepth"; - model: {model.getGearShootingEndDepth()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#gearShootingStartSurfaceTemperatureLabel { - text: "tutti.label.fishingOperation.gearShootingStartSurfaceTemperature"; - labelFor: {gearShootingStartSurfaceTemperatureField}; -} - -#gearShootingStartSurfaceTemperatureField { - property: "gearShootingStartSurfaceTemperature"; - model: {model.getGearShootingStartSurfaceTemperature()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#gearShootingEndSurfaceTemperatureLabel { - text: "tutti.label.fishingOperation.gearShootingEndSurfaceTemperature"; - labelFor: {gearShootingEndSurfaceTemperatureField}; -} - -#gearShootingEndSurfaceTemperatureField { - property: "gearShootingEndSurfaceTemperature"; - model: {model.getGearShootingEndSurfaceTemperature()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#gearShootingStartBottomTemperatureLabel { - text: "tutti.label.fishingOperation.gearShootingStartBottomTemperature"; - labelFor: {gearShootingStartBottomTemperatureField}; -} - -#gearShootingStartBottomTemperatureField { - property: "gearShootingStartBottomTemperature"; - model: {model.getGearShootingStartBottomTemperature()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#gearShootingEndBottomTemperatureLabel { - text: "tutti.label.fishingOperation.gearShootingEndBottomTemperature"; - labelFor: {gearShootingEndBottomTemperatureField}; -} - -#gearShootingEndBottomTemperatureField { - property: "gearShootingEndBottomTemperature"; - model: {model.getGearShootingEndBottomTemperature()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#averageBottomTemperatureLabel { - text: "tutti.label.fishingOperation.averageBottomTemperature"; - labelFor: {averageBottomTemperatureField}; -} - -#averageBottomTemperatureField { - property: "averageBottomTemperature"; - model: {model.getAverageBottomTemperature()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#gearShootingStartSurfaceSalinityLabel { - text: "tutti.label.fishingOperation.gearShootingStartSurfaceSalinity"; - labelFor: {gearShootingStartSurfaceSalinityField}; -} - -#gearShootingStartSurfaceSalinityField { - property: "gearShootingStartSurfaceSalinity"; - model: {model.getGearShootingStartSurfaceSalinity()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#gearShootingEndSurfaceSalinityLabel { - text: "tutti.label.fishingOperation.gearShootingEndSurfaceSalinity"; - labelFor: {gearShootingEndSurfaceSalinityField}; -} - -#gearShootingEndSurfaceSalinityField { - property: "gearShootingEndSurfaceSalinity"; - model: {model.getGearShootingEndSurfaceSalinity()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#gearShootingStartBottomSalinityLabel { - text: "tutti.label.fishingOperation.gearShootingStartBottomSalinity"; - labelFor: {gearShootingStartBottomSalinityField}; -} - -#gearShootingStartBottomSalinityField { - property: "gearShootingStartBottomSalinity"; - model: {model.getGearShootingStartBottomSalinity()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#gearShootingEndBottomSalinityLabel { - text: "tutti.label.fishingOperation.gearShootingEndBottomSalinity"; - labelFor: {gearShootingEndBottomSalinityField}; -} - -#gearShootingEndBottomSalinityField { - property: "gearShootingEndBottomSalinity"; - model: {model.getGearShootingEndBottomSalinity()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - -#averageBottomSalinityLabel { - text: "tutti.label.fishingOperation.averageBottomSalinity"; - labelFor: {averageBottomSalinityField}; -} - -#averageBottomSalinityField { - property: "averageBottomSalinity"; - model: {model.getAverageBottomSalinity()}; - useFloat: false; - numberPattern: {INT_6_DIGITS_PATTERN}; -} - #noTraitPane { text: "tutti.label.no.fishingOperation.selected"; horizontalAlignment: {JLabel.CENTER}; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2012-12-19 23:24:11 UTC (rev 92) @@ -25,8 +25,6 @@ implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditFishingOperationUIModel, EditFishingOperationUIHandler>'> <import> - fr.ifremer.tutti.persistence.entities.referential.BeaufortScale - fr.ifremer.tutti.persistence.entities.referential.SeaState fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation fr.ifremer.tutti.persistence.entities.data.FishingOperation fr.ifremer.tutti.persistence.entities.referential.Person @@ -69,10 +67,10 @@ ]]></script> <EditFishingOperationUIHandler id='handler' - initializer='getContextValue(EditFishingOperationUIHandler.class)'/> + initializer='getContextValue(EditFishingOperationUIHandler.class)'/> <EditFishingOperationUIModel id='model' - initializer='getContextValue(EditFishingOperationUIModel.class)'/> + initializer='getContextValue(EditFishingOperationUIModel.class)'/> <SwingValidatorMessageTableModel id='errorTableModel'/> @@ -136,10 +134,10 @@ genericType='FishingOperationLocation'/> </cell> <cell> - <JLabel id='localiteLabel'/> + <JLabel id='locationLabel'/> </cell> <cell weightx='0.3'> - <BeanComboBox id='localiteComboBox' constructorParams='this' + <BeanComboBox id='locationComboBox' constructorParams='this' genericType='FishingOperationLocation'/> </cell> </row> @@ -308,8 +306,7 @@ <Table fill='both' id='gearShootingForm'> - <!-- GearShootingStart Depth --> - <row> + <!--row> <cell> <JLabel id='gearShootingStartDepthLabel'/> </cell> @@ -319,7 +316,6 @@ </cell> </row> - <!-- GearShootingEnd Depth --> <row> <cell> <JLabel id='gearShootingEndDepthLabel'/> @@ -330,7 +326,6 @@ </cell> </row> - <!-- Ouverture horizontale --> <row> <cell anchor='west'> <JLabel id='ouvertureHorizontaleLabel'/> @@ -341,7 +336,6 @@ </cell> </row> - <!-- Ouverture verticale --> <row> <cell anchor='west'> <JLabel id='ouvertureVerticaleLabel'/> @@ -352,7 +346,6 @@ </cell> </row> - <!-- Longueur funes --> <row> <cell anchor='west'> <JLabel id='longueurFunesLabel'/> @@ -362,7 +355,6 @@ </cell> </row> - <!-- Longueur bras --> <row> <cell anchor='west'> <JLabel id='longueurBrasLabel'/> @@ -372,7 +364,6 @@ </cell> </row> - <!-- Système de fermeture du cul / Geometrie mesuree --> <row> <cell columns='2'> <JPanel layout='{new GridLayout(1,0)}'> @@ -382,7 +373,7 @@ onItemStateChanged='handler.setBoolean(event, "geometrieMesuree")'/> </JPanel> </cell> - </row> + </row--> </Table> </tab> @@ -390,40 +381,40 @@ title='tutti.label.tab.fishingOperation.environment'> <EnvironmentTabUI id='environmentTabContent' constructorParams='this'/> -<!-- <Table fill='both' id='environmentForm'> + <!-- <Table fill='both' id='environmentForm'> - Beaufort scale - <row> - <cell anchor='west'> - <JLabel id='beaufortScaleLabel'/> - </cell> - <cell weightx='1.0'> - <BeanComboBox id='beaufortScaleComboBox' constructorParams='this' - genericType='BeaufortScale'/> - </cell> - </row> + Beaufort scale + <row> + <cell anchor='west'> + <JLabel id='beaufortScaleLabel'/> + </cell> + <cell weightx='1.0'> + <BeanComboBox id='beaufortScaleComboBox' constructorParams='this' + genericType='BeaufortScale'/> + </cell> + </row> - Wind direction - <row> - <cell anchor='west'> - <JLabel id='windDirectionLabel'/> - </cell> - <cell fill='horizontal'> - <NumberEditor id='windDirectionField' constructorParams='this'/> - </cell> - </row> + Wind direction + <row> + <cell anchor='west'> + <JLabel id='windDirectionLabel'/> + </cell> + <cell fill='horizontal'> + <NumberEditor id='windDirectionField' constructorParams='this'/> + </cell> + </row> - Sea state - <row> - <cell anchor='west'> - <JLabel id='seaStateLabel'/> - </cell> - <cell fill='horizontal'> - <BeanComboBox id='seaStateComboBox' constructorParams='this' - genericType='SeaState'/> - </cell> - </row> - </Table>--> + Sea state + <row> + <cell anchor='west'> + <JLabel id='seaStateLabel'/> + </cell> + <cell fill='horizontal'> + <BeanComboBox id='seaStateComboBox' constructorParams='this' + genericType='SeaState'/> + </cell> + </row> + </Table>--> </tab> <tab id='traitHydrologyTabContent' @@ -431,8 +422,7 @@ <Table fill='both' id='hydrologyForm'> - <!-- GearShootingStartSurfaceTemperature --> - <row> + <!--row> <cell> <JLabel id='gearShootingStartSurfaceTemperatureLabel'/> </cell> @@ -442,7 +432,6 @@ </cell> </row> - <!-- GearShootingEndSurfaceTemperature --> <row> <cell> <JLabel id='gearShootingEndSurfaceTemperatureLabel'/> @@ -453,7 +442,6 @@ </cell> </row> - <!-- GearShootingStartBottomTemperature --> <row> <cell> <JLabel id='gearShootingStartBottomTemperatureLabel'/> @@ -464,7 +452,6 @@ </cell> </row> - <!-- GearShootingEndBottomTemperature --> <row> <cell> <JLabel id='gearShootingEndBottomTemperatureLabel'/> @@ -475,7 +462,6 @@ </cell> </row> - <!-- AverageBottomTemperature --> <row> <cell> <JLabel id='averageBottomTemperatureLabel'/> @@ -486,7 +472,6 @@ </cell> </row> - <!-- GearShootingStartSurfaceSalinity --> <row> <cell> <JLabel id='gearShootingStartSurfaceSalinityLabel'/> @@ -497,7 +482,6 @@ </cell> </row> - <!-- GearShootingEndSurfaceSalinity --> <row> <cell> <JLabel id='gearShootingEndSurfaceSalinityLabel'/> @@ -508,7 +492,6 @@ </cell> </row> - <!-- GearShootingStartBottomSalinity --> <row> <cell> <JLabel id='gearShootingStartBottomSalinityLabel'/> @@ -519,7 +502,6 @@ </cell> </row> - <!-- GearShootingEndBottomSalinity --> <row> <cell> <JLabel id='gearShootingEndBottomSalinityLabel'/> @@ -530,7 +512,6 @@ </cell> </row> - <!-- AverageBottomSalinity --> <row> <cell> <JLabel id='averageBottomSalinityLabel'/> @@ -539,7 +520,7 @@ <NumberEditor id='averageBottomSalinityField' constructorParams='this'/> </cell> - </row> + </row--> </Table> </tab> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2012-12-19 23:24:11 UTC (rev 92) @@ -24,12 +24,17 @@ * #L% */ +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Zone; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUIModel; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -91,6 +96,24 @@ } }); + model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_STRATA, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + EditFishingOperationUIModel source = (EditFishingOperationUIModel) evt.getSource(); + FishingOperationLocation newStrata = (FishingOperationLocation) evt.getNewValue(); + onSelectedStrata(source, newStrata); + } + }); + + model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_SUB_STRATA, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + EditFishingOperationUIModel source = (EditFishingOperationUIModel) evt.getSource(); + FishingOperationLocation newStrata = (FishingOperationLocation) evt.getNewValue(); + onSelectedSubStrata(source, newStrata); + } + }); + listModelIsModify(model); ui.setContextValue(model); @@ -110,23 +133,54 @@ persistenceService.getAllPerson(), model.getSaisisseur()); -// initBeanComboBox(ui.getBeaufortScaleComboBox(), -// persistenceService.getAllBeaufortScale(), -// model.getBeaufortScale()); -// -// initBeanComboBox(ui.getStrataComboBox(), -// persistenceService.getAllStrata(), -// model.getStrata()); -// -// initBeanComboBox(ui.getSeaStateComboBox(), -// persistenceService.getAllSeaState(), -// model.getSeaState()); + String programId = context.getProgramId(); + Program program = persistenceService.getProgram(programId); + Zone zone = program.getZone(); + + FishingOperationLocation strata = model.getStrata(); + + String strataId = strata == null ? null : strata.getId(); + + FishingOperationLocation subStrata = model.getSubStrata(); + String substrataId = subStrata == null ? null : subStrata.getId(); + + FishingOperationLocation location = model.getLocation(); + + List<FishingOperationLocation> stratas = + persistenceService.getAllFishingOperationStrata(zone.getId()); + + List<FishingOperationLocation> subStratas; + + if (strataId == null) { + subStratas = Lists.newArrayList(); + } else { + + // load substratas + subStratas = persistenceService.getAllFishingOperationSubStrata(strataId); + } + + List<FishingOperationLocation> locations; + + if (substrataId == null) { + locations = Lists.newArrayList(); + } else { + + // load localites + locations = persistenceService.getAllFishingOperationLocation(substrataId); + } + + initBeanComboBox(ui.getStrataComboBox(), stratas, strata); + + initBeanComboBox(ui.getSubStrataComboBox(), subStratas, subStrata); + + initBeanComboBox(ui.getLocationComboBox(), locations, location); + model.setEmpty(true); listenValidatorValid(ui.getValidator(), getModel()); - - EnvironmentTabUIModel environmentModel = + + EnvironmentTabUIModel environmentModel = ui.getEnvironmentTabContent().getModel(); environmentModel.addPropertyChangeListener( EditFishingOperationUIModel.PROPERTY_ENVIRONMENT_PARAMETERS, @@ -136,24 +190,24 @@ model.setModify(true); } } - ); + ); environmentModel.setEnvironmentParameters(getDefaultEnvironmentParams()); } - + protected Map<Object, Object> getDefaultEnvironmentParams() { Map<Object, Object> environmentParams = Maps.newHashMap(); environmentParams.put( _(new String("tutti.table.fishing.environment.keys." + EnvironmentTabUIModel.KEY_BEAUFORT_SCALE)), null - ); + ); environmentParams.put( - _(new String("tutti.table.fishing.environment.keys." + EnvironmentTabUIModel.KEY_WIND_DIRECTION)), + _(new String("tutti.table.fishing.environment.keys." + EnvironmentTabUIModel.KEY_WIND_DIRECTION)), null - ); + ); environmentParams.put( _(new String("tutti.table.fishing.environment.keys." + EnvironmentTabUIModel.KEY_SEA_STATE)), null - ); + ); return environmentParams; } @@ -189,7 +243,7 @@ // if new fishingOperation can already cancel his creation model.setModify(!empty && model.isCreate()); - + ui.getEnvironmentTabContent().getModel().setEnvironmentParameters(getDefaultEnvironmentParams()); ui.getEnvironmentTabContent().getHandler().reset(); } @@ -260,4 +314,64 @@ public void setGearShootingEndLongitude(String text) { getModel().setGearShootingEndLongitude(Float.valueOf(text)); } + + protected void onSelectedStrata(EditFishingOperationUIModel model, + FishingOperationLocation newStrata) { + + // reset substrata value + model.setSubStrata(null); + + // reset sub strata combo + ui.getSubStrataComboBox().setData(null); + + if (newStrata == null) { + + // reset strata, keep focus on it + ui.getStrataComboBox().grabFocus(); + + } else { + + // try to load substrata + + List<FishingOperationLocation> subStrata = + persistenceService.getAllFishingOperationSubStrata(newStrata.getId()); + + ui.getSubStrataComboBox().setData(subStrata); + + if (CollectionUtils.isEmpty(subStrata)) { + + // try to load localite + + List<FishingOperationLocation> location = + persistenceService.getAllFishingOperationLocation(newStrata.getId()); + + ui.getLocationComboBox().setData(location); + + ui.getLocationComboBox().grabFocus(); + } + } + } + + protected void onSelectedSubStrata(EditFishingOperationUIModel model, + FishingOperationLocation newSubStrata) { + // reset localite value + model.setLocation(null); + + // reset localite combo + ui.getLocationComboBox().setData(null); + + if (newSubStrata == null) { + + // reset substrata, keep focus on it + ui.getSubStrataComboBox().grabFocus(); + } else { + + // try to load localite + + List<FishingOperationLocation> location = + persistenceService.getAllFishingOperationLocation(newSubStrata.getId()); + + ui.getLocationComboBox().setData(location); + } + } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2012-12-19 23:24:11 UTC (rev 92) @@ -24,10 +24,10 @@ * #L% */ -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; +import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import fr.ird.type.SexagecimalPosition; import org.nuiton.util.beans.Binder; @@ -65,36 +65,14 @@ public static final String PROPERTY_GEAR_SHOOTING_START_DATE = "gearShootingStartDate"; - public static final String PROPERTY_GEAR_SHOOTING_START_DEPTH = "gearShootingStartDepth"; - public static final String PROPERTY_GEAR_SHOOTING_END_LATITUDE = "gearShootingEndLatitude"; public static final String PROPERTY_GEAR_SHOOTING_END_LONGITUDE = "gearShootingEndLongitude"; public static final String PROPERTY_GEAR_SHOOTING_END_DATE = "gearShootingEndDate"; - public static final String PROPERTY_GEAR_SHOOTING_END_DEPTH = "gearShootingEndDepth"; - -// public static final String PROPERTY_BEAUFORT_SCALE = "beaufortScale"; -// -// public static final String PROPERTY_WIND_DIRECTION = "windDirection"; -// -// public static final String PROPERTY_SEA_STATE = "seaState"; - public static final String PROPERTY_ENVIRONMENT_PARAMETERS = "environmentParameters"; - public static final String PROPERTY_OUVERTURE_HORIZONTALE = "ouvertureHorizontale"; - - public static final String PROPERTY_OUVERTURE_VERTICALE = "ouvertureVerticale"; - - public static final String PROPERTY_GEOMETRIE_MESUREE = "geometrieMesuree"; - - public static final String PROPERTY_LONGUEUR_FUNES = "longueurFunes"; - - public static final String PROPERTY_LONGUEUR_BRAS = "longueurBras"; - - public static final String PROPERTY_SYSTEME_FERMETURE_CUL = "systemeFermetureCul"; - public static final String PROPERTY_FISHING_OPERATION_RECTILIGNE = "fishingOperationRectiligne"; public static final String PROPERTY_DISTANCE_CHALUTEE = "distanceChalutee"; @@ -103,32 +81,12 @@ public static final String PROPERTY_FISHING_OPERATION_VALID = "fishingOperationValid"; - public static final String PROPERTY_LOCALITE = "localite"; + public static final String PROPERTY_LOCATION = "location"; public static final String PROPERTY_COMMENT = "comment"; public static final String PROPERTY_SAISISSEUR = "saisisseur"; - public static final String PROPERTY_GEAR_SHOOTING_START_SURFACE_TEMPERATURE = "gearShootingStartSurfaceTemperature"; - - public static final String PROPERTY_GEAR_SHOOTING_END_SURFACE_TEMPERATURE = "gearShootingEndSurfaceTemperature"; - - public static final String PROPERTY_GEAR_SHOOTING_START_BOTTOM_TEMPERATURE = "gearShootingStartBottomTemperature"; - - public static final String PROPERTY_GEAR_SHOOTING_END_BOTTOM_TEMPERATURE = "gearShootingEndBottomTemperature"; - - public static final String PROPERTY_AVERAGE_BOTTOM_TEMPERATURE = "averageBottomTemperature"; - - public static final String PROPERTY_GEAR_SHOOTING_START_SURFACE_SALINITY = "gearShootingStartSurfaceSalinity"; - - public static final String PROPERTY_GEAR_SHOOTING_END_SURFACE_SALINITY = "gearShootingEndSurfaceSalinity"; - - public static final String PROPERTY_GEAR_SHOOTING_START_BOTTOM_SALINITY = "gearShootingStartBottomSalinity"; - - public static final String PROPERTY_GEAR_SHOOTING_END_BOTTOM_SALINITY = "gearShootingEndBottomSalinity"; - - public static final String PROPERTY_AVERAGE_BOTTOM_SALINITY = "averageBottomSalinity"; - protected boolean empty; protected Cruise cruise; @@ -161,8 +119,6 @@ protected Integer gearShootingStartTime; - protected Float gearShootingStartDepth; - protected Float gearShootingEndLatitude; protected Float gearShootingEndLongitude; @@ -171,28 +127,8 @@ protected Integer gearShootingEndTime; - protected Float gearShootingEndDepth; - -// protected BeaufortScale beaufortScale; -// -// protected Integer windDirection; -// -// protected SeaState seaState; - protected Map<Object, Object> environmentParameters; - protected Float ouvertureHorizontale; - - protected Float ouvertureVerticale; - - protected boolean geometrieMesuree; - - protected Float longueurFunes; - - protected Float longueurBras; - - protected boolean systemeFermetureCul; - protected boolean fishingOperationRectiligne; protected Float distanceChalutee; @@ -201,32 +137,12 @@ protected Boolean fishingOperationValid; - protected FishingOperationLocation localite; + protected FishingOperationLocation location; protected String comment; protected List<Person> saisisseur; - protected Float gearShootingStartSurfaceTemperature; - - protected Float gearShootingEndSurfaceTemperature; - - protected Float gearShootingStartBottomTemperature; - - protected Float gearShootingEndBottomTemperature; - - protected Float averageBottomTemperature; - - protected Float gearShootingStartSurfaceSalinity; - - protected Float gearShootingEndSurfaceSalinity; - - protected Float gearShootingStartBottomSalinity; - - protected Float gearShootingEndBottomSalinity; - - protected Float averageBottomSalinity; - protected static Binder<EditFishingOperationUIModel, FishingOperation> toBeanBinder = BinderFactory.newBinder(EditFishingOperationUIModel.class, FishingOperation.class); @@ -336,16 +252,6 @@ firePropertyChange(PROPERTY_GEAR_SHOOTING_START_DATE, oldValue, gearShootingStartDate); } - public Float getGearShootingStartDepth() { - return gearShootingStartDepth; - } - - public void setGearShootingStartDepth(Float gearShootingStartDepth) { - Object oldValue = getGearShootingStartDepth(); - this.gearShootingStartDepth = gearShootingStartDepth; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_DEPTH, oldValue, gearShootingStartDepth); - } - public Float getGearShootingEndLatitude() { return gearShootingEndLatitude; } @@ -376,116 +282,16 @@ firePropertyChange(PROPERTY_GEAR_SHOOTING_END_DATE, oldValue, gearShootingEndDate); } - public Float getGearShootingEndDepth() { - return gearShootingEndDepth; - } - - public void setGearShootingEndDepth(Float gearShootingEndDepth) { - Object oldValue = getGearShootingEndDepth(); - this.gearShootingEndDepth = gearShootingEndDepth; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_DEPTH, oldValue, gearShootingEndDepth); - } - -// public BeaufortScale getBeaufortScale() { -// return beaufortScale; -// } -// -// public void setBeaufortScale(BeaufortScale beaufortScale) { -// Object oldValue = getBeaufortScale(); -// this.beaufortScale = beaufortScale; -// firePropertyChange(PROPERTY_BEAUFORT_SCALE, oldValue, beaufortScale); -// } -// -// public Integer getWindDirection() { -// return windDirection; -// } -// -// public void setWindDirection(Integer windDirection) { -// Object oldValue = getWindDirection(); -// this.windDirection = windDirection; -// firePropertyChange(PROPERTY_WIND_DIRECTION, oldValue, windDirection); -// } -// -// public SeaState getSeaState() { -// return seaState; -// } -// -// public void setSeaState(SeaState seaState) { -// Object oldValue = getSeaState(); -// this.seaState = seaState; -// firePropertyChange(PROPERTY_SEA_STATE, oldValue, seaState); -// } - public Map<Object, Object> getEnvironmentParameters() { return environmentParameters; } - + public void setEnvironmentParameters(Map<Object, Object> environmentParameters) { Object oldValue = getEnvironmentParameters(); this.environmentParameters = environmentParameters; firePropertyChange(PROPERTY_ENVIRONMENT_PARAMETERS, oldValue, environmentParameters); } - public Float getOuvertureHorizontale() { - return ouvertureHorizontale; - } - - public void setOuvertureHorizontale(Float ouvertureHorizontale) { - Object oldValue = getOuvertureHorizontale(); - this.ouvertureHorizontale = ouvertureHorizontale; - firePropertyChange(PROPERTY_OUVERTURE_HORIZONTALE, oldValue, ouvertureHorizontale); - } - - public Float getOuvertureVerticale() { - return ouvertureVerticale; - } - - public void setOuvertureVerticale(Float ouvertureVerticale) { - Object oldValue = getOuvertureVerticale(); - this.ouvertureVerticale = ouvertureVerticale; - firePropertyChange(PROPERTY_OUVERTURE_VERTICALE, oldValue, ouvertureVerticale); - } - - public boolean isGeometrieMesuree() { - return geometrieMesuree; - } - - public void setGeometrieMesuree(boolean geometrieMesuree) { - Object oldValue = isGeometrieMesuree(); - this.geometrieMesuree = geometrieMesuree; - firePropertyChange(PROPERTY_GEOMETRIE_MESUREE, oldValue, geometrieMesuree); - } - - public Float getLongueurFunes() { - return longueurFunes; - } - - public void setLongueurFunes(Float longueurFunes) { - Object oldValue = getLongueurFunes(); - this.longueurFunes = longueurFunes; - firePropertyChange(PROPERTY_LONGUEUR_FUNES, oldValue, longueurFunes); - } - - public Float getLongueurBras() { - return longueurBras; - } - - public void setLongueurBras(Float longueurBras) { - Object oldValue = getLongueurBras(); - this.longueurBras = longueurBras; - firePropertyChange(PROPERTY_LONGUEUR_BRAS, oldValue, longueurBras); - } - - public boolean isSystemeFermetureCul() { - return systemeFermetureCul; - } - - public void setSystemeFermetureCul(boolean systemeFermetureCul) { - Object oldValue = isSystemeFermetureCul(); - this.systemeFermetureCul = systemeFermetureCul; - firePropertyChange(PROPERTY_SYSTEME_FERMETURE_CUL, oldValue, systemeFermetureCul); - } - public boolean isFishingOperationRectiligne() { return fishingOperationRectiligne; } @@ -526,14 +332,14 @@ firePropertyChange(PROPERTY_FISHING_OPERATION_VALID, oldValue, fishingOperationValid); } - public FishingOperationLocation getLocalite() { - return localite; + public FishingOperationLocation getLocation() { + return location; } - public void setLocalite(FishingOperationLocation localite) { - Object oldValue = getLocalite(); - this.localite = localite; - firePropertyChange(PROPERTY_LOCALITE, oldValue, localite); + public void setLocation(FishingOperationLocation location) { + Object oldValue = getLocation(); + this.location = location; + firePropertyChange(PROPERTY_LOCATION, oldValue, location); } public String getComment() { @@ -555,103 +361,4 @@ firePropertyChange(PROPERTY_SAISISSEUR, null, saisisseur); } - public Float getGearShootingStartSurfaceTemperature() { - return gearShootingStartSurfaceTemperature; - } - - public void setGearShootingStartSurfaceTemperature(Float gearShootingStartSurfaceTemperature) { - Object oldValue = getGearShootingStartSurfaceTemperature(); - this.gearShootingStartSurfaceTemperature = gearShootingStartSurfaceTemperature; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_SURFACE_TEMPERATURE, oldValue, gearShootingStartSurfaceTemperature); - } - - public Float getGearShootingEndSurfaceTemperature() { - return gearShootingEndSurfaceTemperature; - } - - public void setGearShootingEndSurfaceTemperature(Float gearShootingEndSurfaceTemperature) { - Object oldValue = getGearShootingEndSurfaceTemperature(); - this.gearShootingEndSurfaceTemperature = gearShootingEndSurfaceTemperature; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_SURFACE_TEMPERATURE, oldValue, gearShootingEndSurfaceTemperature); - } - - public Float getGearShootingStartBottomTemperature() { - return gearShootingStartBottomTemperature; - } - - public void setGearShootingStartBottomTemperature(Float gearShootingStartBottomTemperature) { - Object oldValue = getGearShootingStartBottomTemperature(); - this.gearShootingStartBottomTemperature = gearShootingStartBottomTemperature; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_BOTTOM_TEMPERATURE, oldValue, gearShootingStartBottomTemperature); - } - - public Float getGearShootingEndBottomTemperature() { - return gearShootingEndBottomTemperature; - } - - public void setGearShootingEndBottomTemperature(Float gearShootingEndBottomTemperature) { - Object oldValue = getGearShootingEndBottomTemperature(); - this.gearShootingEndBottomTemperature = gearShootingEndBottomTemperature; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_BOTTOM_TEMPERATURE, oldValue, gearShootingEndBottomTemperature); - } - - public Float getAverageBottomTemperature() { - return averageBottomTemperature; - } - - public void setAverageBottomTemperature(Float averageBottomTemperature) { - Object oldValue = getAverageBottomTemperature(); - this.averageBottomTemperature = averageBottomTemperature; - firePropertyChange(PROPERTY_AVERAGE_BOTTOM_TEMPERATURE, oldValue, averageBottomTemperature); - } - - public Float getGearShootingStartSurfaceSalinity() { - return gearShootingStartSurfaceSalinity; - } - - public void setGearShootingStartSurfaceSalinity(Float gearShootingStartSurfaceSalinity) { - Object oldValue = getGearShootingStartSurfaceSalinity(); - this.gearShootingStartSurfaceSalinity = gearShootingStartSurfaceSalinity; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_SURFACE_SALINITY, oldValue, gearShootingStartSurfaceSalinity); - } - - public Float getGearShootingEndSurfaceSalinity() { - return gearShootingEndSurfaceSalinity; - } - - public void setGearShootingEndSurfaceSalinity(Float gearShootingEndSurfaceSalinity) { - Object oldValue = getGearShootingEndSurfaceSalinity(); - this.gearShootingEndSurfaceSalinity = gearShootingEndSurfaceSalinity; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_SURFACE_SALINITY, oldValue, gearShootingEndSurfaceSalinity); - } - - public Float getGearShootingStartBottomSalinity() { - return gearShootingStartBottomSalinity; - } - - public void setGearShootingStartBottomSalinity(Float gearShootingStartBottomSalinity) { - Object oldValue = getGearShootingStartBottomSalinity(); - this.gearShootingStartBottomSalinity = gearShootingStartBottomSalinity; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_BOTTOM_SALINITY, oldValue, gearShootingStartBottomSalinity); - } - - public Float getGearShootingEndBottomSalinity() { - return gearShootingEndBottomSalinity; - } - - public void setGearShootingEndBottomSalinity(Float gearShootingEndBottomSalinity) { - Object oldValue = getGearShootingEndBottomSalinity(); - this.gearShootingEndBottomSalinity = gearShootingEndBottomSalinity; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_BOTTOM_SALINITY, oldValue, gearShootingEndBottomSalinity); - } - - public Float getAverageBottomSalinity() { - return averageBottomSalinity; - } - - public void setAverageBottomSalinity(Float averageBottomSalinity) { - Object oldValue = getAverageBottomSalinity(); - this.averageBottomSalinity = averageBottomSalinity; - firePropertyChange(PROPERTY_AVERAGE_BOTTOM_SALINITY, oldValue, averageBottomSalinity); - } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.css 2012-12-19 23:24:11 UTC (rev 92) @@ -38,6 +38,10 @@ selectedItem: {model.getSelectedFishingOperation()}; } +#catchesTab { + enabled: {model.getSelectedFishingOperation() != null}; +} + #speciesTab { enabled: {model.getSelectedFishingOperation() != null}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx 2012-12-19 23:24:11 UTC (rev 92) @@ -33,6 +33,7 @@ fr.ifremer.tutti.ui.swing.content.operation.macrowaste.MacroWasteBatchUI fr.ifremer.tutti.ui.swing.content.operation.plankton.PlanktonBatchUI fr.ifremer.tutti.ui.swing.content.operation.species.SpeciesBatchUI + fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI jaxx.runtime.swing.editor.bean.BeanComboBox @@ -76,6 +77,9 @@ <tab id='fishingOperationTab' title='tutti.label.tab.fishingOperation'> <EditFishingOperationUI id='fishingOperationTabContent' constructorParams='this'/> </tab> + <tab id='catchesTab' title='tutti.label.tab.catches'> + <EditCatchesUI id='catchesTabContent' constructorParams='this'/> + </tab> <tab id='speciesTab' title='tutti.label.tab.species'> <SpeciesBatchUI id='speciesTabContent' constructorParams='this'/> </tab> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2012-12-19 23:24:11 UTC (rev 92) @@ -34,6 +34,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Date; @@ -169,8 +171,14 @@ // back to general tab of fishingOperation tabs ui.getFishingOperationTabContent().getFishingOperationTabPane().setSelectedIndex(0); + ui.getTabPane().addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + } + }); // propagate fishingOperation to his tabs ui.getFishingOperationTabContent().selectFishingOperation(fishingOperation); + ui.getCatchesTabContent().selectFishingOperation(fishingOperation); ui.getSpeciesTabContent().selectFishingOperation(fishingOperation); ui.getBenthosTabContent().selectFishingOperation(fishingOperation); ui.getPlanktonTabContent().selectFishingOperation(fishingOperation); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchTableModel.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchTableModel.java 2012-12-19 23:24:11 UTC (rev 92) @@ -41,11 +41,6 @@ private static final long serialVersionUID = 1L; - public static final ColumnIdentifier<BenthosBatchRowModel> SPECIES_TO_CONFIRM = ColumnIdentifier.newId( - BenthosBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM, - n_("tutti.table.benthos.batch.header.toConfirm"), - n_("tutti.table.benthos.batch.header.toConfirm")); - public static final ColumnIdentifier<BenthosBatchRowModel> SPECIES_BY_CODE = ColumnIdentifier.newId( BenthosBatchRowModel.PROPERTY_SPECIES, n_("tutti.table.benthos.batch.header.speciesByCode"), @@ -68,8 +63,8 @@ public static final ColumnIdentifier<BenthosBatchRowModel> SAMPLING_RATIO = ColumnIdentifier.newId( BenthosBatchRowModel.PROPERTY_SAMPLING_RATIO, - n_("tutti.table.benthos.batch.header.elevationRate"), - n_("tutti.table.benthos.batch.header.elevationRate")); + n_("tutti.table.benthos.batch.header.samplingRatio"), + n_("tutti.table.benthos.batch.header.samplingRatio")); public static final ColumnIdentifier<BenthosBatchRowModel> COMMENT = ColumnIdentifier.newId( BenthosBatchRowModel.PROPERTY_COMMENT, @@ -81,6 +76,10 @@ n_("tutti.table.benthos.batch.header.file"), n_("tutti.table.benthos.batch.header.file")); + public static final ColumnIdentifier<BenthosBatchRowModel> SPECIES_TO_CONFIRM = ColumnIdentifier.newId( + BenthosBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM, + n_("tutti.table.benthos.batch.header.toConfirm"), + n_("tutti.table.benthos.batch.header.toConfirm")); public BenthosBatchTableModel(TableColumnModel columnModel) { super(columnModel); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.css 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.css 2012-12-19 23:24:11 UTC (rev 92) @@ -30,8 +30,8 @@ } #totalWeightLabel { - text: "tutti.label.benthos.totalWeight"; - labelFor: {totalWeightField}; + text: "tutti.label.benthos.totalWeight"; + labelFor: {totalWeightField}; } #totalWeightField { @@ -42,8 +42,8 @@ } #sampleTotalWeightLabel { - text: "tutti.label.benthos.sampleTotalWeight"; - labelFor: {totalWeightField}; + text: "tutti.label.benthos.sampleTotalWeight"; + labelFor: {sampleTotalWeightField}; } #sampleTotalWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java 2012-12-19 23:24:11 UTC (rev 92) @@ -117,14 +117,6 @@ DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); - { - // Species to confirm column - - addBooleanColumnToModel(columnModel, - BenthosBatchTableModel.SPECIES_TO_CONFIRM, - getTable()); - } - List<Species> allSpecies = persistenceService.getAllSpecies(); { @@ -186,6 +178,13 @@ n_("tutti.tooltip.attachment.none")), BenthosBatchTableModel.ATTACHMENTS); } + + { // Species to confirm column + + addBooleanColumnToModel(columnModel, + BenthosBatchTableModel.SPECIES_TO_CONFIRM, + getTable()); + } return columnModel; } Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2012-12-19 23:24:11 UTC (rev 92) @@ -0,0 +1,113 @@ + +NumberEditor { + autoPopup: {handler.getConfig().isAutoPopupNumberEditor()}; + showPopupButton: {handler.getConfig().isShowNumberEditorButton()}; + bean: {model}; + showReset: true; +} + +#speciesTotalWeightLabel { + text: "tutti.label.species.speciesTotalWeight"; + labelFor: {speciesTotalWeightField}; +} + +#speciesTotalWeightField { + property: "speciesTotalWeight"; + model: {model.getSpeciesTotalWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#speciesTotalVracWeightLabel { + text: "tutti.label.species.speciesTotalVracWeight"; + labelFor: {speciesTotalVracWeightField}; +} + +#speciesTotalVracWeightField { + property: "speciesTotalVracWeight"; + model: {model.getSpeciesTotalVracWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#speciesSampleVracWeightLabel { + text: "tutti.label.species.speciesSampleVracWeight"; + labelFor: {speciesSampleVracWeightField}; +} + +#speciesSampleVracWeightField { + property: "speciesSampleVracWeight"; + model: {model.getSpeciesSampleVracWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#speciesTotalHorsVracWeightLabel { + text: "tutti.label.species.speciesTotalHorsVracWeight"; + labelFor: {speciesTotalHorsVracWeightField}; +} + +#speciesTotalHorsVracWeightField { + text: {getStringValue(model.getSpeciesTotalHorsVracWeight())}; + editable: false; +} + +#benthosTotalWeightLabel { + text: "tutti.label.benthos.benthosTotalWeight"; + labelFor: {benthosTotalWeightField}; +} + +#benthosTotalWeightField { + property: "benthosTotalWeight"; + model: {model.getBenthosTotalWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#benthosSampleTotalWeightLabel { + text: "tutti.label.benthos.benthosSampleTotalWeight"; + labelFor: {benthosSampleTotalWeightField}; +} + +#benthosSampleTotalWeightField { + property: "benthosSampleTotalWeight"; + model: {model.getBenthosSampleTotalWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#planktonTotalWeightLabel { + text: "tutti.label.plankton.planktontotalWeight"; + labelFor: {planktonTotalWeightField}; +} + +#planktonTotalWeightField { + property: "planktonTotalWeight"; + model: {model.getPlanktonTotalWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#planktonSampleTotalWeightLabel { + text: "tutti.label.plankton.planktonSampleTotalWeight"; + labelFor: {planktonSampleTotalWeightField}; +} + +#planktonSampleTotalWeightField { + property: "planktonSampleTotalWeight"; + model: {model.getPlanktonSampleTotalWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#macroWasteTotalWeightLabel { + text: "tutti.label.macroWaste.macroWasteTotalWeight"; + labelFor: {macroWasteTotalWeightField}; +} + +#macroWasteTotalWeightField { + property: "macroWasteTotalWeight"; + model: {model.getMacroWasteTotalWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2012-12-19 23:24:11 UTC (rev 92) @@ -0,0 +1,98 @@ +<JPanel id='homePanel' layout='{new BorderLayout()}' + implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditCatchesUIModel, EditCatchesUIHandler>'> + + <import> + fr.ifremer.tutti.persistence.entities.data.FishingOperation + + fr.ifremer.tutti.ui.swing.TuttiUIContext + fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI + fr.ifremer.tutti.ui.swing.content.operation.species.SpeciesFrequencyUI + fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI + fr.ifremer.tutti.ui.swing.util.editor.AttachmentEditorUI + + org.jdesktop.swingx.JXTable + + jaxx.runtime.swing.editor.NumberEditor + + jaxx.runtime.validator.swing.SwingValidatorUtil + jaxx.runtime.validator.swing.SwingValidatorMessageTableModel + + javax.swing.ListSelectionModel + + java.awt.Color + + static org.nuiton.i18n.I18n._ + static jaxx.runtime.SwingUtil.getStringValue + </import> + + <script><![CDATA[ + +public EditCatchesUI(FishingOperationsUI parentUI) { + EditCatchesUIHandler handler = new EditCatchesUIHandler(parentUI, this); + setContextValue(handler); + handler.beforeInitUI(); +} + +public void selectFishingOperation(FishingOperation fishingOperation) { handler.selectFishingOperation(fishingOperation); } + +protected void $afterCompleteSetup() { handler.afterInitUI(); } + ]]></script> + + <EditCatchesUIHandler id='handler' + initializer='getContextValue(EditCatchesUIHandler.class)'/> + + <EditCatchesUIModel id='model' + initializer='getContextValue(EditCatchesUIModel.class)'/> + + <SwingValidatorMessageTableModel id='errorTableModel'/> + + <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' + uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> + <field name='speciesTotalWeight' component='speciesTotalWeightField'/> + <field name='speciesTotalVracWeight' component='speciesTotalVracWeightField'/> + <field name='speciesSampleVracWeight' component='speciesSampleVracWeightField'/> + <field name='speciesTotalHorsVracWeight' component='speciesTotalHorsVracWeightField'/> + </BeanValidator> + + <JPanel constraints='BorderLayout.NORTH' layout='{new BorderLayout()}'> + <JLabel id='fishingOperationReminderLabel' + constraints='BorderLayout.NORTH'/> + <JSeparator constraints='BorderLayout.CENTER'/> + + <Table id='form' fill='both' constraints='BorderLayout.SOUTH'> + + <!-- Poids total / Poids total vrac --> + <row> + <cell anchor='west'> + <JLabel id='speciesTotalWeightLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='speciesTotalWeightField' constructorParams='this'/> + </cell> + <cell anchor='west'> + <JLabel id='speciesTotalVracWeightLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='speciesTotalVracWeightField' constructorParams='this'/> + </cell> + </row> + + <!-- Poids échantillonné vrac / Poids total hors vrac --> + <row> + <cell> + <JLabel id='speciesSampleVracWeightLabel'/> + </cell> + <cell> + <NumberEditor id='speciesSampleVracWeightField' constructorParams='this'/> + </cell> + <cell> + <JLabel id='speciesTotalHorsVracWeightLabel'/> + </cell> + <cell> + <JTextField id='speciesTotalHorsVracWeightField'/> + </cell> + </row> + </Table> + </JPanel> + +</JPanel> \ No newline at end of file Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2012-12-19 23:24:11 UTC (rev 92) @@ -0,0 +1,175 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches; + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI; +import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.decorator.Decorator; + +import static org.nuiton.i18n.I18n._; + +/** + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class EditCatchesUIHandler extends AbstractTuttiUIHandler<EditCatchesUIModel> { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(EditCatchesUIHandler.class); + + private final EditCatchesUI ui; + + private final FishingOperationsUI parentUi; + + private final PersistenceService persistenceService; + + /** + * To monitor changes on the fishing operation. + * + * @since 0.2 + */ + private final TuttiBeanMonitor<EditCatchesUIModel> fishingOperationMonitor; + + public EditCatchesUIHandler(FishingOperationsUI parentUi, EditCatchesUI ui) { + super(parentUi.getHandler().getContext()); + this.ui = ui; + this.parentUi = parentUi; + this.persistenceService = context.getService(PersistenceService.class); + this.fishingOperationMonitor = new TuttiBeanMonitor<EditCatchesUIModel>( + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_HORS_VRAC_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_VRAC_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_SAMPLE_VRAC_WEIGHT, + EditCatchesUIModel.PROPERTY_BENTHOS_TOTAL_WEIGHT, + EditCatchesUIModel.PROPERTY_BENTHOS_SAMPLE_TOTAL_WEIGHT, + EditCatchesUIModel.PROPERTY_PLANKTON_TOTAL_WEIGHT, + EditCatchesUIModel.PROPERTY_PLANKTON_SAMPLE_TOTAL_WEIGHT, + EditCatchesUIModel.PROPERTY_MACRO_WASTE_TOTAL_WEIGHT + ); + } + + @Override + public void beforeInitUI() { + + EditCatchesUIModel model = new EditCatchesUIModel(); + + listModelIsModify(model); + + ui.setContextValue(model); + + fishingOperationMonitor.setBean(model); + } + + @Override + public void afterInitUI() { + + initUI(ui); + } + + @Override + public void onCloseUI() { + } + + @Override + protected EditCatchesUIModel getModel() { + return ui.getModel(); + } + + public void selectFishingOperation(FishingOperation bean) { + + if (fishingOperationMonitor.wasModified()) { + + // previous fishingOperation was modified, let's save it + EditCatchesUIModel beanToSave = fishingOperationMonitor.getBean(); + + FishingOperation fishingOperation = beanToSave.toBean(); + + if (log.isInfoEnabled()) { + log.info("FishingOperation " + fishingOperation.getId() + + " was modified, will save it."); + } + + persistenceService.saveFishingOperation(fishingOperation); + } + + boolean empty = bean == null; + + EditCatchesUIModel model = getModel(); + + String fishingoperationText; + + if (empty) { + bean = new FishingOperation(); + model.setFishingOperation(null); + fishingoperationText = ""; + } else { + + Decorator<FishingOperation> decorator = + getDecorator(FishingOperation.class, null); + + fishingoperationText = + _("tutti.label.traitReminder", decorator.toString(bean)); + + if (log.isInfoEnabled()) { + log.info("Get species batch for fishingOperation: " + + bean.getId() + " - " + fishingoperationText); + } + + + model.setFishingOperation(bean); + } + + model.fromBean(bean); + + fishingOperationMonitor.clearModified(); + + ui.getFishingOperationReminderLabel().setText(fishingoperationText); + } + + public void cancel() { + + String id = getModel().getId(); + + if (log.isInfoEnabled()) { + log.info("Cancel edition for fishingOperation: " + id); + } + boolean newBean = StringUtils.isBlank(id); + + if (newBean) { + + // cancel to create a new fishingOperation + parentUi.getHandler().selectFishingOperation(null); + + } else { + + // reselect in ui the fishingOperation + FishingOperation selectedFishingOperation = parentUi.getModel().getSelectedFishingOperation(); + parentUi.getHandler().selectFishingOperation(selectedFishingOperation); + } + } + + public void save() { + + // get fishingOperation to save + FishingOperation toSave = getModel().toBean(); + + if (log.isInfoEnabled()) { + log.info("Save edition for fishingOperation: " + toSave.getId()); + } + + // persist current fishingOperation + parentUi.getHandler().saveFishingOperation(toSave); + + getModel().setModify(false); + } + + public void importPupitri() { + //TODO + } + +} \ No newline at end of file Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2012-12-19 23:24:11 UTC (rev 92) @@ -0,0 +1,167 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches; + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +/** + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class EditCatchesUIModel extends AbstractTuttiBeanUIModel<FishingOperation, EditCatchesUIModel> { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_SPECIES_TOTAL_WEIGHT = "speciesTotalWeight"; + + public static final String PROPERTY_SPECIES_TOTAL_VRAC_WEIGHT = "speciesTotalVracWeight"; + + public static final String PROPERTY_SPECIES_SAMPLE_VRAC_WEIGHT = "speciesSampleVracWeight"; + + public static final String PROPERTY_SPECIES_TOTAL_HORS_VRAC_WEIGHT = "speciesTotalHorsVracWeight"; + + public static final String PROPERTY_BENTHOS_TOTAL_WEIGHT = "benthosTotalWeight"; + + public static final String PROPERTY_BENTHOS_SAMPLE_TOTAL_WEIGHT = "benthosSampleTotalWeight"; + + public static final String PROPERTY_PLANKTON_TOTAL_WEIGHT = "planktonTotalWeight"; + + public static final String PROPERTY_PLANKTON_SAMPLE_TOTAL_WEIGHT = "planktonSampleTotalWeight"; + + public static final String PROPERTY_MACRO_WASTE_TOTAL_WEIGHT = "macroWasteTotalWeight"; + + protected static Binder<EditCatchesUIModel, FishingOperation> toBeanBinder = + BinderFactory.newBinder(EditCatchesUIModel.class, + FishingOperation.class); + + protected static Binder<FishingOperation, EditCatchesUIModel> fromBeanBinder = + BinderFactory.newBinder(FishingOperation.class, EditCatchesUIModel.class); + + protected Float speciesTotalWeight; + + protected Float speciesTotalVracWeight; + + protected Float speciesSampleVracWeight; + + protected Float speciesTotalHorsVracWeight; + + protected Float benthosTotalWeight; + + protected Float benthosSampleTotalWeight; + + protected Float planktonTotalWeight; + + protected Float planktonSampleTotalWeight; + + protected Float macroWasteTotalWeight; + + protected FishingOperation fishingOperation; + + public EditCatchesUIModel() { + super(FishingOperation.class, fromBeanBinder, toBeanBinder); + } + + public FishingOperation getFishingOperation() { + return fishingOperation; + } + + public void setFishingOperation(FishingOperation fishingOperation) { + this.fishingOperation = fishingOperation; + } + + public Float getSpeciesTotalWeight() { + return speciesTotalWeight; + } + + public void setSpeciesTotalWeight(Float speciesTotalWeight) { + Object oldValue = getSpeciesTotalWeight(); + this.speciesTotalWeight = speciesTotalWeight; + firePropertyChange(PROPERTY_SPECIES_TOTAL_WEIGHT, oldValue, speciesTotalWeight); + } + + public Float getSpeciesTotalVracWeight() { + return speciesTotalVracWeight; + } + + public void setSpeciesTotalVracWeight(Float speciesTotalVracWeight) { + Object oldValue = getSpeciesTotalVracWeight(); + this.speciesTotalVracWeight = speciesTotalVracWeight; + firePropertyChange(PROPERTY_SPECIES_TOTAL_VRAC_WEIGHT, oldValue, speciesTotalVracWeight); + } + + public Float getSpeciesSampleVracWeight() { + return speciesSampleVracWeight; + } + + public void setSpeciesSampleVracWeight(Float speciesSampleVracWeight) { + Object oldValue = getSpeciesSampleVracWeight(); + this.speciesSampleVracWeight = speciesSampleVracWeight; + firePropertyChange(PROPERTY_SPECIES_SAMPLE_VRAC_WEIGHT, oldValue, speciesSampleVracWeight); + } + + public Float getSpeciesTotalHorsVracWeight() { + return speciesTotalHorsVracWeight; + } + + public void setSpeciesTotalHorsVracWeight(Float speciesTotalHorsVracWeight) { + Object oldValue = getSpeciesTotalHorsVracWeight(); + this.speciesTotalHorsVracWeight = speciesTotalHorsVracWeight; + firePropertyChange(PROPERTY_SPECIES_TOTAL_HORS_VRAC_WEIGHT, oldValue, speciesTotalHorsVracWeight); + } + + public Float getBenthosTotalWeight() { + return benthosTotalWeight; + } + + public void setBenthosTotalWeight(Float benthosTotalWeight) { + Object oldValue = getBenthosTotalWeight(); + this.benthosTotalWeight = benthosTotalWeight; + firePropertyChange(PROPERTY_BENTHOS_TOTAL_WEIGHT, oldValue, benthosTotalWeight); + } + + public Float getBenthosSampleTotalWeight() { + return benthosSampleTotalWeight; + } + + public void setBenthosSampleTotalWeight(Float benthosSampleTotalWeight) { + Object oldValue = getBenthosSampleTotalWeight(); + this.benthosSampleTotalWeight = benthosSampleTotalWeight; + firePropertyChange(PROPERTY_BENTHOS_SAMPLE_TOTAL_WEIGHT, oldValue, benthosSampleTotalWeight); + } + + public Float getPlanktonTotalWeight() { + return planktonTotalWeight; + } + + public void setPlanktonTotalWeight(Float planktonTotalWeight) { + Object oldValue = getPlanktonTotalWeight(); + this.planktonTotalWeight = planktonTotalWeight; + firePropertyChange(PROPERTY_PLANKTON_TOTAL_WEIGHT, oldValue, planktonTotalWeight); + } + + public Float getPlanktonSampleTotalWeight() { + return planktonSampleTotalWeight; + } + + public void setPlanktonSampleTotalWeight(Float planktonSampleTotalWeight) { + Object oldValue = getPlanktonSampleTotalWeight(); + this.planktonSampleTotalWeight = planktonSampleTotalWeight; + firePropertyChange(PROPERTY_PLANKTON_SAMPLE_TOTAL_WEIGHT, oldValue, planktonSampleTotalWeight); + } + + public Float getMacroWasteTotalWeight() { + return macroWasteTotalWeight; + } + + public void setMacroWasteTotalWeight(Float macroWasteTotalWeight) { + Object oldValue = getMacroWasteTotalWeight(); + this.macroWasteTotalWeight = macroWasteTotalWeight; + firePropertyChange(PROPERTY_MACRO_WASTE_TOTAL_WEIGHT, oldValue, macroWasteTotalWeight); + } + + @Override + protected FishingOperation newEntity() { + return fishingOperation; + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchRowModel.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchRowModel.java 2012-12-19 23:24:11 UTC (rev 92) @@ -26,7 +26,7 @@ import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.MacroWasteBatch; -import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -56,7 +56,7 @@ * * @since 0.2 */ - protected MacroWasteCategory macroWasteCategory; + protected CaracteristicQualitativeValue macroWasteCategory; /** * Observed weight. @@ -96,11 +96,11 @@ fromBean(aBatch); } - public MacroWasteCategory getMacroWasteCategory() { + public CaracteristicQualitativeValue getMacroWasteCategory() { return macroWasteCategory; } - public void setMacroWasteCategory(MacroWasteCategory macroWasteCategory) { + public void setMacroWasteCategory(CaracteristicQualitativeValue macroWasteCategory) { Object oldValue = getMacroWasteCategory(); this.macroWasteCategory = macroWasteCategory; firePropertyChange(PROPERTY_MACRO_WASTE_CATEGORY, oldValue, macroWasteCategory); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.css 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.css 2012-12-19 23:24:11 UTC (rev 92) @@ -30,8 +30,8 @@ } #totalWeightLabel { - text: "tutti.label.macroWaste.totalWeight"; - labelFor: {totalWeightField}; + text: "tutti.label.macroWaste.totalWeight"; + labelFor: {totalWeightField}; } #totalWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java 2012-12-19 23:24:11 UTC (rev 92) @@ -29,7 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MacroWasteBatch; -import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI; @@ -107,12 +107,12 @@ { // MacroWaste Category column - Decorator<MacroWasteCategory> decorator = getDecorator( - MacroWasteCategory.class, null); + Decorator<CaracteristicQualitativeValue> decorator = getDecorator( + CaracteristicQualitativeValue.class, null); addComboDataColumnToModel(columnModel, MacroWasteBatchTableModel.MACRO_WASTE_CATEGORY, - decorator, persistenceService.getAllMacroWasteCategory()); + decorator, persistenceService.getMacroWasteCategoryCaracteristic().getQualitativeValue()); } { // Weight column @@ -292,7 +292,7 @@ rows = null; bean = new FishingOperation(); model.setFishingOperation(null); - fishingoperationText=""; + fishingoperationText = ""; } else { Decorator<FishingOperation> decorator = Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.css 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.css 2012-12-19 23:24:11 UTC (rev 92) @@ -30,8 +30,8 @@ } #totalWeightLabel { - text: "tutti.label.plankton.totalWeight"; - labelFor: {totalWeightField}; + text: "tutti.label.plankton.totalWeight"; + labelFor: {totalWeightField}; } #totalWeightField { @@ -42,8 +42,8 @@ } #sampleTotalWeightLabel { - text: "tutti.label.plankton.sampleTotalWeight"; - labelFor: {totalWeightField}; + text: "tutti.label.plankton.sampleTotalWeight"; + labelFor: {sampleTotalWeightField}; } #sampleTotalWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchRowModel.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchRowModel.java 2012-12-19 23:24:11 UTC (rev 92) @@ -28,10 +28,8 @@ import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; -import fr.ifremer.tutti.persistence.entities.referential.Sex; -import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import org.apache.commons.collections.CollectionUtils; import org.nuiton.util.beans.Binder; @@ -56,11 +54,11 @@ public static final String PROPERTY_SORTED_UNSORTED_CATEGORY = "sortedUnsortedCategory"; - public static final String PROPERTY_WEIGHT_CATEGORY = "weightCategory"; + public static final String PROPERTY_SIZE_CATEGORY = "sizeCategory"; - public static final String PROPERTY_SEX = "sex"; + public static final String PROPERTY_SEX_CATEGORY = "sexCategory"; - public static final String PROPERTY_MATURITY = "maturity"; + public static final String PROPERTY_MATURITY_CATEGORY = "maturityCategory"; public static final String PROPERTY_AGE = "age"; @@ -77,7 +75,7 @@ public static final String PROPERTY_COMPUTED_NUMBER = "computedNumber"; public static final String PROPERTY_COMPUTED_WEIGHT = "computedWeight"; - + public static final String PROPERTY_ATTACHMENTS = "attachments"; /** @@ -99,28 +97,28 @@ * * @since 0.2 */ - protected SortedUnsortedCategory sortedUnsortedCategory; + protected CaracteristicQualitativeValue sortedUnsortedCategory; /** * Weight category (can be null). * * @since 0.2 */ - protected WeightCategory weightCategory; + protected CaracteristicQualitativeValue sizeCategory; /** * Sex (can be null). * * @since 0.2 */ - protected Sex sex; + protected CaracteristicQualitativeValue sexCategory; /** * Maturity (can be null). * * @since 0.2 */ - protected Float maturity; + protected CaracteristicQualitativeValue maturityCategory; /** * Age (can be null). @@ -170,10 +168,10 @@ * @since 0.2 */ protected String comment; - + /** * Attachments - * + * * @since 0.2 */ protected List<Attachment> attachments; @@ -254,44 +252,44 @@ firePropertyChange(PROPERTY_SPECIES_TO_CONFIRM, oldValue, speciesToConfirm); } - public SortedUnsortedCategory getSortedUnsortedCategory() { + public CaracteristicQualitativeValue getSortedUnsortedCategory() { return sortedUnsortedCategory; } - public void setSortedUnsortedCategory(SortedUnsortedCategory sortedUnsortedCategory) { + public void setSortedUnsortedCategory(CaracteristicQualitativeValue sortedUnsortedCategory) { Object oldValue = getSortedUnsortedCategory(); this.sortedUnsortedCategory = sortedUnsortedCategory; firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY, oldValue, sortedUnsortedCategory); } - public WeightCategory getWeightCategory() { - return weightCategory; + public CaracteristicQualitativeValue getSizeCategory() { + return sizeCategory; } - public void setWeightCategory(WeightCategory weightCategory) { - Object oldValue = getWeightCategory(); - this.weightCategory = weightCategory; - firePropertyChange(PROPERTY_WEIGHT_CATEGORY, oldValue, weightCategory); + public void setSizeCategory(CaracteristicQualitativeValue sizeCategory) { + Object oldValue = getSizeCategory(); + this.sizeCategory = sizeCategory; + firePropertyChange(PROPERTY_SIZE_CATEGORY, oldValue, sizeCategory); } - public Sex getSex() { - return sex; + public CaracteristicQualitativeValue getSexCategory() { + return sexCategory; } - public void setSex(Sex sex) { - Object oldValue = getSex(); - this.sex = sex; - firePropertyChange(PROPERTY_SEX, oldValue, sex); + public void setSexCategory(CaracteristicQualitativeValue sexCategory) { + Object oldValue = getSexCategory(); + this.sexCategory = sexCategory; + firePropertyChange(PROPERTY_SEX_CATEGORY, oldValue, sexCategory); } - public Float getMaturity() { - return maturity; + public CaracteristicQualitativeValue getMaturityCategory() { + return maturityCategory; } - public void setMaturity(Float maturity) { - Object oldValue = getMaturity(); - this.maturity = maturity; - firePropertyChange(PROPERTY_MATURITY, oldValue, maturity); + public void setMaturityCategory(CaracteristicQualitativeValue maturityCategory) { + Object oldValue = getMaturityCategory(); + this.maturityCategory = maturityCategory; + firePropertyChange(PROPERTY_MATURITY_CATEGORY, oldValue, maturityCategory); } public Float getAge() { @@ -353,7 +351,7 @@ this.attachments = attachments; firePropertyChange(PROPERTY_ATTACHMENTS, oldValue, attachments); } - + public List<SpeciesFrequencyRowModel> getFrequency() { return frequency; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTableModel.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTableModel.java 2012-12-19 23:24:11 UTC (rev 92) @@ -41,11 +41,6 @@ private static final long serialVersionUID = 1L; - public static final ColumnIdentifier<SpeciesBatchRowModel> SPECIES_TO_CONFIRM = ColumnIdentifier.newId( - SpeciesBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM, - n_("tutti.table.species.batch.header.toConfirm"), - n_("tutti.table.species.batch.header.toConfirm")); - public static final ColumnIdentifier<SpeciesBatchRowModel> SPECIES_BY_CODE = ColumnIdentifier.newId( SpeciesBatchRowModel.PROPERTY_SPECIES, n_("tutti.table.species.batch.header.speciesByCode"), @@ -61,20 +56,20 @@ n_("tutti.table.species.batch.header.sortedUnsortedCategory"), n_("tutti.table.species.batch.header.sortedUnsortedCategory")); - public static final ColumnIdentifier<SpeciesBatchRowModel> WEIGHT_CATEGORY = ColumnIdentifier.newId( - SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY, - n_("tutti.table.species.batch.header.weightCategory"), - n_("tutti.table.species.batch.header.weightCategory")); + public static final ColumnIdentifier<SpeciesBatchRowModel> SIZE_CATEGORY = ColumnIdentifier.newId( + SpeciesBatchRowModel.PROPERTY_SIZE_CATEGORY, + n_("tutti.table.species.batch.header.sizeCategory"), + n_("tutti.table.species.batch.header.sizeCategory")); - public static final ColumnIdentifier<SpeciesBatchRowModel> SEX = ColumnIdentifier.newId( - SpeciesBatchRowModel.PROPERTY_SEX, - n_("tutti.table.species.batch.header.sex"), - n_("tutti.table.species.batch.header.sex")); + public static final ColumnIdentifier<SpeciesBatchRowModel> SEX_CATEGORY = ColumnIdentifier.newId( + SpeciesBatchRowModel.PROPERTY_SEX_CATEGORY, + n_("tutti.table.species.batch.header.sexCategory"), + n_("tutti.table.species.batch.header.sexCategory")); - public static final ColumnIdentifier<SpeciesBatchRowModel> MATURITY = ColumnIdentifier.newId( - SpeciesBatchRowModel.PROPERTY_MATURITY, - n_("tutti.table.species.batch.header.maturity"), - n_("tutti.table.species.batch.header.maturity")); + public static final ColumnIdentifier<SpeciesBatchRowModel> MATURITY_CATEGORY = ColumnIdentifier.newId( + SpeciesBatchRowModel.PROPERTY_MATURITY_CATEGORY, + n_("tutti.table.species.batch.header.maturityCategory"), + n_("tutti.table.species.batch.header.maturityCategory")); public static final ColumnIdentifier<SpeciesBatchRowModel> AGE = ColumnIdentifier.newId( SpeciesBatchRowModel.PROPERTY_AGE, @@ -116,6 +111,10 @@ n_("tutti.table.species.batch.header.file"), n_("tutti.table.species.batch.header.file")); + public static final ColumnIdentifier<SpeciesBatchRowModel> SPECIES_TO_CONFIRM = ColumnIdentifier.newId( + SpeciesBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM, + n_("tutti.table.species.batch.header.toConfirm"), + n_("tutti.table.species.batch.header.toConfirm")); protected final Set<ColumnIdentifier<SpeciesBatchRowModel>> noneEditableColIfNoSpecies; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTreeModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTreeModel.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTreeModel.java 2012-12-19 23:24:11 UTC (rev 92) @@ -28,7 +28,7 @@ import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; -import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import org.apache.commons.collections.CollectionUtils; @@ -197,7 +197,8 @@ SpeciesBatchRowModel row = getNodeToRow(node); if (row != null) { - SortedUnsortedCategory sortedUnsortedCategory = row.getSortedUnsortedCategory(); + CaracteristicQualitativeValue sortedUnsortedCategory = + row.getSortedUnsortedCategory(); if (sortedUnsortedCategory != null && "unsorted".equals(sortedUnsortedCategory.getName())) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.css 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.css 2012-12-19 23:24:11 UTC (rev 92) @@ -30,8 +30,8 @@ } #totalWeightLabel { - text: "tutti.label.species.totalWeight"; - labelFor: {totalWeightField}; + text: "tutti.label.species.totalWeight"; + labelFor: {totalWeightField}; } #totalWeightField { @@ -42,8 +42,8 @@ } #totalVracWeightLabel { - text: "tutti.label.species.totalVracWeight"; - labelFor: {totalVracWeightField}; + text: "tutti.label.species.totalVracWeight"; + labelFor: {totalVracWeightField}; } #totalVracWeightField { @@ -54,8 +54,8 @@ } #sampleVracWeightLabel { - text: "tutti.label.species.sampleVracWeight"; - labelFor: {sampleVracWeightField}; + text: "tutti.label.species.sampleVracWeight"; + labelFor: {sampleVracWeightField}; } #sampleVracWeightField { @@ -66,8 +66,8 @@ } #totalHorsVracWeightLabel { - text: "tutti.label.species.totalHorsVracWeight"; - labelFor: {totalHorsVracWeightField}; + text: "tutti.label.species.totalHorsVracWeight"; + labelFor: {totalHorsVracWeightField}; } #totalHorsVracWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java 2012-12-19 23:24:11 UTC (rev 92) @@ -32,10 +32,9 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; -import fr.ifremer.tutti.persistence.entities.referential.Sex; -import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; @@ -73,9 +72,9 @@ public static final Set<String> SAMPLING_PROPERTIES = Sets.newHashSet( SpeciesBatchRowModel.PROPERTY_SPECIES, SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY, - SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY, - SpeciesBatchRowModel.PROPERTY_SEX, - SpeciesBatchRowModel.PROPERTY_MATURITY, + SpeciesBatchRowModel.PROPERTY_SIZE_CATEGORY, + SpeciesBatchRowModel.PROPERTY_SEX_CATEGORY, + SpeciesBatchRowModel.PROPERTY_MATURITY_CATEGORY, SpeciesBatchRowModel.PROPERTY_AGE); /** @@ -97,9 +96,9 @@ SpeciesBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM, SpeciesBatchRowModel.PROPERTY_SPECIES, SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY, - SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY, - SpeciesBatchRowModel.PROPERTY_SEX, - SpeciesBatchRowModel.PROPERTY_MATURITY, + SpeciesBatchRowModel.PROPERTY_SIZE_CATEGORY, + SpeciesBatchRowModel.PROPERTY_SEX_CATEGORY, + SpeciesBatchRowModel.PROPERTY_MATURITY_CATEGORY, SpeciesBatchRowModel.PROPERTY_AGE, SpeciesBatchRowModel.PROPERTY_WEIGHT, SpeciesBatchRowModel.PROPERTY_COMMENT, @@ -154,14 +153,9 @@ DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); - { - // Species to confirm column + Decorator<CaracteristicQualitativeValue> caracteristicDecorator = + getDecorator(CaracteristicQualitativeValue.class, null); - addBooleanColumnToModel(columnModel, - SpeciesBatchTableModel.SPECIES_TO_CONFIRM, - getTable()); - } - List<Species> allSpecies = persistenceService.getAllSpecies(); { @@ -191,54 +185,52 @@ // SortedUnsortedCategory column - Decorator<SortedUnsortedCategory> decorator = - getDecorator(SortedUnsortedCategory.class, null); + Caracteristic data = + persistenceService.getSortedUnsortedCaracteristic(); - List<SortedUnsortedCategory> data = - persistenceService.getAllSortedUnsortedCategory(); - addComboDataColumnToModel(columnModel, SpeciesBatchTableModel.SORTED_UNSORTED_CATEGORY, - decorator, data); + caracteristicDecorator, + data.getQualitativeValue()); } { - // WeightCategory column + // SizeCategory column - Decorator<WeightCategory> decorator = - getDecorator(WeightCategory.class, - DecoratorService.BY_NAME); + Caracteristic data = + persistenceService.getSizeCategoryCaracteristic(); - List<WeightCategory> data = - persistenceService.getAllWeightCategory(); - addComboDataColumnToModel(columnModel, - SpeciesBatchTableModel.WEIGHT_CATEGORY, - decorator, data); + SpeciesBatchTableModel.SIZE_CATEGORY, + caracteristicDecorator, + data.getQualitativeValue()); } { - // Sex column + // SexCategory column - Decorator<Sex> decorator = - getDecorator(Sex.class, DecoratorService.BY_NAME); + Caracteristic data = persistenceService.getSexCaracteristic(); - List<Sex> data = persistenceService.getAllSex(); - addComboDataColumnToModel(columnModel, - SpeciesBatchTableModel.SEX, - decorator, data); + SpeciesBatchTableModel.SEX_CATEGORY, + caracteristicDecorator, + data.getQualitativeValue()); } { - // Maturity column + // MaturityCategory column - addFloatColumnToModel(columnModel, - SpeciesBatchTableModel.MATURITY, - TuttiUI.DECIMAL3_PATTERN); + Caracteristic data = + persistenceService.getMaturityCaracteristic(); + + + addComboDataColumnToModel(columnModel, + SpeciesBatchTableModel.MATURITY_CATEGORY, + caracteristicDecorator, + data.getQualitativeValue()); } { @@ -302,6 +294,13 @@ n_("tutti.tooltip.attachment.none")), SpeciesBatchTableModel.ATTACHMENTS); } + + { // Species to confirm column + + addBooleanColumnToModel(columnModel, + SpeciesBatchTableModel.SPECIES_TO_CONFIRM, + getTable()); + } return columnModel; } @@ -602,9 +601,9 @@ List<String> samplingOrder = Lists.newArrayList( SpeciesBatchRowModel.PROPERTY_SPECIES, SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY, - SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY, - SpeciesBatchRowModel.PROPERTY_SEX, - SpeciesBatchRowModel.PROPERTY_MATURITY, + SpeciesBatchRowModel.PROPERTY_SIZE_CATEGORY, + SpeciesBatchRowModel.PROPERTY_SEX_CATEGORY, + SpeciesBatchRowModel.PROPERTY_MATURITY_CATEGORY, SpeciesBatchRowModel.PROPERTY_AGE ); @@ -691,7 +690,7 @@ Float totalVrac = 0f; for (SpeciesBatchRowModel batch : getModel().getRows()) { - SortedUnsortedCategory vracHorsVrac = batch.getSortedUnsortedCategory(); + CaracteristicQualitativeValue vracHorsVrac = batch.getSortedUnsortedCategory(); if (vracHorsVrac == null) { Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css (from rev 91, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUI.css) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2012-12-19 23:24:11 UTC (rev 92) @@ -0,0 +1,83 @@ +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +BeanComboBox { + showReset: true; + i18nPrefix: "tutti.property."; + bean: {model}; +} + +#splitPane { + orientation: {JSplitPane.VERTICAL_SPLIT}; + resizeWeight: 0.3; + oneTouchExpandable: true; + continuousLayout: true; +} + +#form { + border: {BorderFactory.createTitledBorder((String)null)}; +} + +#nameLabel { + text: "tutti.label.program.name"; + labelFor: {nameField}; +} + +#nameField { + text: {model.getName()}; +} + +#commentPane { + columnHeaderView: {new JLabel(_("tutti.label.comment"))}; + minimumSize: {new Dimension(10,50)}; +} + +#commentField { + text: {getStringValue(model.getComment())}; +} + +#saveButton { + text: "tutti.action.save"; + enabled: {model.isModify() && model.isValid()}; + actionIcon: "save"; +} + +#cancelButton { + text: "tutti.action.cancel"; + actionIcon: "cancel"; +} + +#messagePanel { + border: {BorderFactory.createTitledBorder(_("tutti.title.messages"))}; + height: 200; + width: 500; +} + +#errorTable { + rowSelectionAllowed: true; + autoCreateRowSorter: true; + autoResizeMode: 2; + cellSelectionEnabled: false; + selectionMode: 0; + model: {errorTableModel}; +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.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/protocol/EditProtocolUI.jaxx (from rev 91, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUI.jaxx) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2012-12-19 23:24:11 UTC (rev 92) @@ -0,0 +1,113 @@ +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<JPanel id='homePanel' layout='{new BorderLayout()}' + implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditProtocolUIModel, EditProtocolUIHandler>'> + + <import> + fr.ifremer.tutti.persistence.entities.referential.Zone + fr.ifremer.tutti.ui.swing.TuttiUIContext + + jaxx.runtime.swing.editor.bean.BeanComboBox + jaxx.runtime.validator.swing.SwingValidatorUtil + jaxx.runtime.validator.swing.SwingValidatorMessageTableModel + + java.awt.Dimension + + static org.nuiton.i18n.I18n._ + static jaxx.runtime.SwingUtil.getStringValue + + </import> + + <script><![CDATA[ + + public EditProtocolUI(TuttiUIContext context) { + EditProtocolUIHandler handler = new EditProtocolUIHandler(context, this); + setContextValue(handler); + handler.beforeInitUI(); + } + + protected void $afterCompleteSetup() { + handler.afterInitUI(); + } + ]]></script> + + <EditProtocolUIHandler id='handler' + initializer='getContextValue(EditProtocolUIHandler.class)'/> + + <EditProtocolUIModel id='model' + initializer='getContextValue(EditProtocolUIModel.class)'/> + + <SwingValidatorMessageTableModel id='errorTableModel'/> + + <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' + uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> + <field name='name' component='nameField'/> + <field name='comment' component='commentField'/> + </BeanValidator> + + <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> + + <Table id='form' fill='both'> + + <!-- protocol name --> + <row> + <cell anchor='west'> + <JLabel id='nameLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='nameField' + onKeyReleased='handler.setText(event, "name")'/> + </cell> + </row> + + <!-- program comment --> + <row weighty='0.8'> + <cell columns='2'> + <JScrollPane id='commentPane' + onFocusGained='commentField.requestFocus()'> + <JTextArea id='commentField' + onKeyReleased='handler.setText(event, "comment")'/> + </JScrollPane> + </cell> + </row> + + <!-- actions --> + <row anchor='south'> + <cell columns='2'> + <JPanel layout='{new GridLayout(1, 0)}'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='saveButton' onActionPerformed='handler.save()'/> + </JPanel> + </cell> + </row> + </Table> + + <!-- validation messages --> + <JPanel id='messagePanel' layout='{new GridLayout()}'> + <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> + <JTable id='errorTable' /> + </JScrollPane> + </JPanel> + </JSplitPane> +</JPanel> \ No newline at end of file Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.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/protocol/EditProtocolUIHandler.java (from rev 91, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUIHandler.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2012-12-19 23:24:11 UTC (rev 92) @@ -0,0 +1,146 @@ +package fr.ifremer.tutti.ui.swing.content.protocol; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer; +import jaxx.runtime.validator.swing.SwingValidatorUtil; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUIModel> { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(EditProtocolUIHandler.class); + + /** + * UI. + * + * @since 0.3 + */ + private final EditProtocolUI ui; + + /** + * Persistence service. + * + * @since 0.3 + */ + private final PersistenceService persistenceService; + + public EditProtocolUIHandler(TuttiUIContext context, EditProtocolUI ui) { + super(context); + this.ui = ui; + persistenceService = context.getService(PersistenceService.class); + } + + @Override + public void beforeInitUI() { + + EditProtocolUIModel model = new EditProtocolUIModel(); + + String protocolId = context.getProtocolId(); + if (protocolId == null) { + + // create new protocol + + if (log.isDebugEnabled()) { + log.debug("Will create a new protocol"); + } + } else { + + // load existing program + TuttiProtocol protocol = + persistenceService.getProtocol(protocolId); + + model.fromBean(protocol); + if (log.isDebugEnabled()) { + log.debug("Will edit protocol: " + protocolId); + } + } + listModelIsModify(model); + ui.setContextValue(model); + } + + @Override + public void afterInitUI() { + + initUI(ui); + + EditProtocolUIModel model = ui.getModel(); + + SwingValidatorUtil.installUI(ui.getErrorTable(), + new SwingValidatorMessageTableRenderer()); + + listenValidatorValid(ui.getValidator(), model); + + // if new protocol can already cancel his creation + model.setModify(model.isCreate()); + } + + @Override + public void onCloseUI() { + } + + @Override + protected EditProtocolUIModel getModel() { + return ui.getModel(); + } + + public void cancel() { + + context.setScreen(TuttiScreen.SELECT_CRUISE); + } + + public void save() { + + EditProtocolUIModel model = ui.getModel(); + + TuttiProtocol bean = model.toBean(); + + TuttiProtocol saved; + if (TuttiEntities.isNew(bean)) { + + saved = persistenceService.createProtocol(bean); + } else { + saved = persistenceService.saveProtocol(bean); + } + + context.setProtocolId(saved.getId()); + + context.setScreen(TuttiScreen.SELECT_CRUISE); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.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/protocol/EditProtocolUIModel.java (from rev 91, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUIModel.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2012-12-19 23:24:11 UTC (rev 92) @@ -0,0 +1,80 @@ +package fr.ifremer.tutti.ui.swing.content.protocol; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +/** + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, EditProtocolUIModel> { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_COMMENT = "comment"; + + public static final String PROPERTY_NAME = "name"; + + protected String name; + + protected String comment; + + protected static Binder<EditProtocolUIModel, TuttiProtocol> toBeanBinder = + BinderFactory.newBinder(EditProtocolUIModel.class, + TuttiProtocol.class); + + protected static Binder<TuttiProtocol, EditProtocolUIModel> fromBeanBinder = + BinderFactory.newBinder(TuttiProtocol.class, EditProtocolUIModel.class); + + + public EditProtocolUIModel() { + super(TuttiProtocol.class, fromBeanBinder, toBeanBinder); + } + + public String getName() { + return name; + } + + public void setName(String name) { + Object oldValue = getName(); + this.name = name; + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + Object oldValue = getComment(); + this.comment = comment; + firePropertyChange(PROPERTY_COMMENT, oldValue, comment); + } + +} \ No newline at end of file Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUI.css 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUI.css 2012-12-19 23:24:11 UTC (rev 92) @@ -1,83 +0,0 @@ -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -BeanComboBox { - showReset: true; - i18nPrefix: "tutti.property."; - bean: {model}; -} - -#splitPane { - orientation: {JSplitPane.VERTICAL_SPLIT}; - resizeWeight: 0.3; - oneTouchExpandable: true; - continuousLayout: true; -} - -#form { - border: {BorderFactory.createTitledBorder((String)null)}; -} - -#nameLabel { - text: "tutti.label.program.name"; - labelFor: {nameField}; -} - -#nameField { - text: {model.getName()}; -} - -#commentPane { - columnHeaderView: {new JLabel(_("tutti.label.comment"))}; - minimumSize: {new Dimension(10,50)}; -} - -#commentField { - text: {getStringValue(model.getComment())}; -} - -#saveButton { - text: "tutti.action.save"; - enabled: {model.isModify() && model.isValid()}; - actionIcon: "save"; -} - -#cancelButton { - text: "tutti.action.cancel"; - actionIcon: "cancel"; -} - -#messagePanel { - border: {BorderFactory.createTitledBorder(_("tutti.title.messages"))}; - height: 200; - width: 500; -} - -#errorTable { - rowSelectionAllowed: true; - autoCreateRowSorter: true; - autoResizeMode: 2; - cellSelectionEnabled: false; - selectionMode: 0; - model: {errorTableModel}; -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUI.jaxx 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUI.jaxx 2012-12-19 23:24:11 UTC (rev 92) @@ -1,113 +0,0 @@ -<!-- - #%L - Tutti :: UI - $Id$ - $HeadURL$ - %% - Copyright (C) 2012 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditProtocolUIModel, EditProtocolUIHandler>'> - - <import> - fr.ifremer.tutti.persistence.entities.referential.Zone - fr.ifremer.tutti.ui.swing.TuttiUIContext - - jaxx.runtime.swing.editor.bean.BeanComboBox - jaxx.runtime.validator.swing.SwingValidatorUtil - jaxx.runtime.validator.swing.SwingValidatorMessageTableModel - - java.awt.Dimension - - static org.nuiton.i18n.I18n._ - static jaxx.runtime.SwingUtil.getStringValue - - </import> - - <script><![CDATA[ - - public EditProtocolUI(TuttiUIContext context) { - EditProtocolUIHandler handler = new EditProtocolUIHandler(context, this); - setContextValue(handler); - handler.beforeInitUI(); - } - - protected void $afterCompleteSetup() { - handler.afterInitUI(); - } - ]]></script> - - <EditProtocolUIHandler id='handler' - initializer='getContextValue(EditProtocolUIHandler.class)'/> - - <EditProtocolUIModel id='model' - initializer='getContextValue(EditProtocolUIModel.class)'/> - - <SwingValidatorMessageTableModel id='errorTableModel'/> - - <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' - uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> - <field name='name' component='nameField'/> - <field name='comment' component='commentField'/> - </BeanValidator> - - <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> - - <Table id='form' fill='both'> - - <!-- protocol name --> - <row> - <cell anchor='west'> - <JLabel id='nameLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='nameField' - onKeyReleased='handler.setText(event, "name")'/> - </cell> - </row> - - <!-- program comment --> - <row weighty='0.8'> - <cell columns='2'> - <JScrollPane id='commentPane' - onFocusGained='commentField.requestFocus()'> - <JTextArea id='commentField' - onKeyReleased='handler.setText(event, "comment")'/> - </JScrollPane> - </cell> - </row> - - <!-- actions --> - <row anchor='south'> - <cell columns='2'> - <JPanel layout='{new GridLayout(1, 0)}'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> - </JPanel> - </cell> - </row> - </Table> - - <!-- validation messages --> - <JPanel id='messagePanel' layout='{new GridLayout()}'> - <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> - <JTable id='errorTable' /> - </JScrollPane> - </JPanel> - </JSplitPane> -</JPanel> \ No newline at end of file Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUIHandler.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUIHandler.java 2012-12-19 23:24:11 UTC (rev 92) @@ -1,146 +0,0 @@ -package fr.ifremer.tutti.ui.swing.protocol; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.TuttiScreen; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; -import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer; -import jaxx.runtime.validator.swing.SwingValidatorUtil; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * TODO - * - * @author tchemit <chemit@codelutin.com> - * @since 0.3 - */ -public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUIModel> { - - /** Logger. */ - private static final Log log = - LogFactory.getLog(EditProtocolUIHandler.class); - - /** - * UI. - * - * @since 0.3 - */ - private final EditProtocolUI ui; - - /** - * Persistence service. - * - * @since 0.3 - */ - private final PersistenceService persistenceService; - - public EditProtocolUIHandler(TuttiUIContext context, EditProtocolUI ui) { - super(context); - this.ui = ui; - persistenceService = context.getService(PersistenceService.class); - } - - @Override - public void beforeInitUI() { - - EditProtocolUIModel model = new EditProtocolUIModel(); - - String protocolId = context.getProtocolId(); - if (protocolId == null) { - - // create new protocol - - if (log.isDebugEnabled()) { - log.debug("Will create a new protocol"); - } - } else { - - // load existing program - TuttiProtocol protocol = - persistenceService.getProtocol(protocolId); - - model.fromBean(protocol); - if (log.isDebugEnabled()) { - log.debug("Will edit protocol: " + protocolId); - } - } - listModelIsModify(model); - ui.setContextValue(model); - } - - @Override - public void afterInitUI() { - - initUI(ui); - - EditProtocolUIModel model = ui.getModel(); - - SwingValidatorUtil.installUI(ui.getErrorTable(), - new SwingValidatorMessageTableRenderer()); - - listenValidatorValid(ui.getValidator(), model); - - // if new protocol can already cancel his creation - model.setModify(model.isCreate()); - } - - @Override - public void onCloseUI() { - } - - @Override - protected EditProtocolUIModel getModel() { - return ui.getModel(); - } - - public void cancel() { - - context.setScreen(TuttiScreen.SELECT_CRUISE); - } - - public void save() { - - EditProtocolUIModel model = ui.getModel(); - - TuttiProtocol bean = model.toBean(); - - TuttiProtocol saved; - if (TuttiEntities.isNew(bean)) { - - saved = persistenceService.createProtocol(bean); - } else { - saved = persistenceService.saveProtocol(bean); - } - - context.setProtocolId(saved.getId()); - - context.setScreen(TuttiScreen.SELECT_CRUISE); - } -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUIModel.java 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/EditProtocolUIModel.java 2012-12-19 23:24:11 UTC (rev 92) @@ -1,80 +0,0 @@ -package fr.ifremer.tutti.ui.swing.protocol; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import org.nuiton.util.beans.Binder; -import org.nuiton.util.beans.BinderFactory; - -/** - * @author tchemit <chemit@codelutin.com> - * @since 0.3 - */ -public class EditProtocolUIModel extends AbstractTuttiBeanUIModel<TuttiProtocol, EditProtocolUIModel> { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_COMMENT = "comment"; - - public static final String PROPERTY_NAME = "name"; - - protected String name; - - protected String comment; - - protected static Binder<EditProtocolUIModel, TuttiProtocol> toBeanBinder = - BinderFactory.newBinder(EditProtocolUIModel.class, - TuttiProtocol.class); - - protected static Binder<TuttiProtocol, EditProtocolUIModel> fromBeanBinder = - BinderFactory.newBinder(TuttiProtocol.class, EditProtocolUIModel.class); - - - public EditProtocolUIModel() { - super(TuttiProtocol.class, fromBeanBinder, toBeanBinder); - } - - public String getName() { - return name; - } - - public void setName(String name) { - Object oldValue = getName(); - this.name = name; - firePropertyChange(PROPERTY_NAME, oldValue, name); - } - - public String getComment() { - return comment; - } - - public void setComment(String comment) { - Object oldValue = getComment(); - this.comment = comment; - firePropertyChange(PROPERTY_COMMENT, oldValue, comment); - } - -} \ No newline at end of file Added: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml (rev 0) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml 2012-12-19 23:24:11 UTC (rev 92) @@ -0,0 +1,35 @@ +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="name"> + <field-validator type="requiredstring" short-circuit="true"> + <message>tutti.validator.error.protocol.name.required</message> + </field-validator> + </field> + +</validators> \ No newline at end of file Property changes on: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native 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 2012-12-19 15:39:51 UTC (rev 91) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2012-12-19 23:24:11 UTC (rev 92) @@ -84,7 +84,7 @@ tutti.label.fishingOperation.gearShootingStartSurfaceTemperature=Temperature de surface début de traine tutti.label.fishingOperation.gearTime=Heure tutti.label.fishingOperation.geometrieMesuree=Géométrie mesurée -tutti.label.fishingOperation.localite=Localité +tutti.label.fishingOperation.location=Localité tutti.label.fishingOperation.longueurBras=Longueur des funes tutti.label.fishingOperation.longueurFunes=Longueur des bras tutti.label.fishingOperation.ouvertureHorizontale=Ouverture horizontale @@ -120,11 +120,16 @@ tutti.label.program.zone=Zone tutti.label.protocol=Protocol de saisie tutti.label.species.sampleVracWeight=Poids total vrac échant. +tutti.label.species.speciesSampleVracWeight=Poids total vrac échantillon +tutti.label.species.speciesTotalHorsVracWeight=Poids total hors vrac +tutti.label.species.speciesTotalVracWeight=Poids total vrac +tutti.label.species.speciesTotalWeight=Poids total tutti.label.species.totalHorsVracWeight=Poids total hors vrac tutti.label.species.totalVracWeight=Poids total vrac tutti.label.species.totalWeight=Poids total tutti.label.tab.accidentel=Captures accidentelles tutti.label.tab.benthos=Benthos +tutti.label.tab.catches=Captures tutti.label.tab.fishingOperation=Trait tutti.label.tab.fishingOperation.environment=Environnement tutti.label.tab.fishingOperation.gearShooting=Mise en oeuvre de l'engin @@ -156,9 +161,9 @@ tutti.table.accidental.batch.header.speciesByGenusCode=Espèce tutti.table.accidental.batch.header.weight=Poids observé tutti.table.benthos.batch.header.comment=Commentaire -tutti.table.benthos.batch.header.elevationRate=Fraction d'élévation tutti.table.benthos.batch.header.file=Pièces jointes tutti.table.benthos.batch.header.sampleWeight=Poids échantillonné +tutti.table.benthos.batch.header.samplingRatio=Fraction d'élévation tutti.table.benthos.batch.header.speciesByCode=Espèce tutti.table.benthos.batch.header.speciesByGenusCode=Espèce tutti.table.benthos.batch.header.toConfirm=A Confirmer @@ -189,15 +194,15 @@ tutti.table.species.batch.header.computedWeight=Poids calculé tutti.table.species.batch.header.elevationRate=Fraction d'élévation tutti.table.species.batch.header.file=Pièces jointes -tutti.table.species.batch.header.maturity=Maturité +tutti.table.species.batch.header.maturityCategory=Maturité tutti.table.species.batch.header.sampleWeight=Poids échantillonné -tutti.table.species.batch.header.sex=Sexe +tutti.table.species.batch.header.sexCategory=Sexe +tutti.table.species.batch.header.sizeCategory=Catégorie Taille tutti.table.species.batch.header.sortedUnsortedCategory=Vrac / Hors Vrac tutti.table.species.batch.header.speciesByCode=Espèce tutti.table.species.batch.header.speciesByGenusCode=Espèce tutti.table.species.batch.header.toConfirm=A Confirmer tutti.table.species.batch.header.weight=Poids -tutti.table.species.batch.header.weightCategory=Catégorie Poids tutti.table.species.frequency.header.computedWeight=Poids calculé tutti.table.species.frequency.header.lengthStep=Classe de taille tutti.table.species.frequency.header.number=Nombre @@ -238,3 +243,4 @@ tutti.validator.error.fishingOperation.stationNumber.required=Le numéro de station est obligatoire tutti.validator.error.program.name.required=Le nom de la série est obligatoire tutti.validator.error.program.zone.required=La zone de la série est obligatoire +tutti.validator.error.protocol.name.required=Le nom du protocol est obligatoire
participants (1)
-
tchemit@users.forge.codelutin.com