r683 - 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/java/fr/ifremer/tutti/persistence/entities/data tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-persistence/src/main/resources tutti-persistence/src/main/xmi tutti-persistence/src/test/java/fr/ifremer/tutti/persistence tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service tutti-
Author: tchemit Date: 2013-03-26 18:02:29 +0100 (Tue, 26 Mar 2013) New Revision: 683 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/683 Log: fixes #2213: [TRAIT] - Saisie du navire : on r?\195?\169cup?\195?\168re celui de la campagne fixes #2199: [CAMPAGNE] - Saisie de l'ann?\195?\169e fixes #2201: [CAMPAGNE] - Ports de d?\195?\169part et de retour fixes #2222: Uniformiser la notion de Location Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/AbstractTuttiEntity.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Program.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceWriteTest.java trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java 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/filtered-resources/tutti-help-en.properties trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDataContext.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.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/catches/species/SpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-03-26 17:02:29 UTC (rev 683) @@ -37,14 +37,12 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; 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.ObjectType; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Zone; import org.springframework.transaction.annotation.Transactional; import java.io.File; @@ -79,27 +77,38 @@ /** * @return all available zones (used by a {@link Program}. * @see Program#getZone() - * @see Program#setZone(Zone) + * @see Program#setZone(TuttiLocation) * @since 0.3 */ - List<Zone> getAllProgramZone(); + List<TuttiLocation> getAllProgramZone(); /** * @return all countries (used by a {@link Cruise}). * @see {@link Cruise#getCountry()} - * @see {@link Cruise#setCountry(Country)} + * @see {@link Cruise#setCountry(TuttiLocation)} * @since 0.1 */ - List<Country> getAllCountry(); + List<TuttiLocation> getAllCountry(); /** + * @return all harbours (used by a {@link Cruise}). + * @see {@link Cruise#getDepartureLocation()} + * @see {@link Cruise#setDepartureLocation(TuttiLocation)} + * @see {@link Cruise#getReturnLocation()} + * @see {@link Cruise#setReturnLocation(TuttiLocation)} + * @since 1.2 + */ + + List<TuttiLocation> getAllHarbour(); + + /** * Get the list of location of type strata that match the given zone id. * * @param zoneId id of the parent zone (can not be null) * @return the stratas with given zone id as location parent * @since 1.0 */ - List<FishingOperationLocation> getAllFishingOperationStrata(String zoneId); + List<TuttiLocation> getAllFishingOperationStrata(String zoneId); /** * Get the list of location of type substra that match the given zone id or @@ -110,8 +119,7 @@ * @return the list of localite with given zone id as location parent / or strata * @since 1.0 */ - List<FishingOperationLocation> getAllFishingOperationSubStrata(String zoneId, - String strataId); + List<TuttiLocation> getAllFishingOperationSubStrata(String zoneId, String strataId); /** * Get the list of location of type substra that match the given zone id or @@ -124,14 +132,12 @@ * @return the list of localite with given zone id as location parent / or strata or substrata * @since 1.0 */ - List<FishingOperationLocation> getAllFishingOperationLocation(String zoneId, - String strataId, - String subStrataId); + List<TuttiLocation> getAllFishingOperationLocation(String zoneId, String strataId, String subStrataId); /** * @return all scientific vessels (used by a {@link Cruise}). * @see Cruise#getVessel() - * @see Cruise#setVessel(List) + * @see Cruise#setVessel(Vessel) * @since 0.3 */ List<Vessel> getAllScientificVessel(); @@ -139,7 +145,7 @@ /** * @return all commercial vessels (used by a {@link Cruise}). * @see Cruise#getVessel() - * @see Cruise#setVessel(List) + * @see Cruise#setVessel(Vessel) * @since 0.3 */ List<Vessel> getAllFishingVessel(); Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-03-26 17:02:29 UTC (rev 683) @@ -41,14 +41,12 @@ import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; 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.ObjectType; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Zone; import fr.ifremer.tutti.persistence.service.AccidentalBatchPersistenceService; import fr.ifremer.tutti.persistence.service.AttachmentPersistenceService; import fr.ifremer.tutti.persistence.service.BatchPersistenceService; @@ -164,31 +162,36 @@ //------------------------------------------------------------------------// @Override - public List<Zone> getAllProgramZone() { + public List<TuttiLocation> getAllProgramZone() { return referentialService.getAllProgramZone(); } @Override - public List<Country> getAllCountry() { + public List<TuttiLocation> getAllCountry() { return referentialService.getAllCountry(); } @Override - public List<FishingOperationLocation> getAllFishingOperationStrata(String zoneId) { + public List<TuttiLocation> getAllHarbour() { + return referentialService.getAllHarbour(); + } + + @Override + public List<TuttiLocation> getAllFishingOperationStrata(String zoneId) { return referentialService.getAllFishingOperationStrata(zoneId); } @Override - public List<FishingOperationLocation> getAllFishingOperationSubStrata(String zoneId, - String strataId) { + public List<TuttiLocation> getAllFishingOperationSubStrata(String zoneId, + String strataId) { return referentialService.getAllFishingOperationSubStrata(zoneId, strataId); } @Override - public List<FishingOperationLocation> getAllFishingOperationLocation(String zoneId, - String strataId, - String subStrataId) { + public List<TuttiLocation> getAllFishingOperationLocation(String zoneId, + String strataId, + String subStrataId) { return referentialService.getAllFishingOperationLocation(zoneId, strataId, subStrataId); Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-03-26 17:02:29 UTC (rev 683) @@ -37,14 +37,12 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; 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.ObjectType; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Zone; import java.io.File; import java.io.IOException; @@ -69,31 +67,36 @@ } @Override - public List<Zone> getAllProgramZone() { + public List<TuttiLocation> getAllProgramZone() { throw new RuntimeException("method not implemented"); } @Override - public List<Country> getAllCountry() { + public List<TuttiLocation> getAllCountry() { throw new RuntimeException("method not implemented"); } @Override - public List<FishingOperationLocation> getAllFishingOperationStrata(String zoneId) { + public List<TuttiLocation> getAllHarbour() { throw new RuntimeException("method not implemented"); } @Override - public List<FishingOperationLocation> getAllFishingOperationSubStrata(String zoneId, String strataId) { + public List<TuttiLocation> getAllFishingOperationStrata(String zoneId) { throw new RuntimeException("method not implemented"); } @Override - public List<FishingOperationLocation> getAllFishingOperationLocation(String zoneId, String strataId, String subStrataId) { + public List<TuttiLocation> getAllFishingOperationSubStrata(String zoneId, String strataId) { throw new RuntimeException("method not implemented"); } @Override + public List<TuttiLocation> getAllFishingOperationLocation(String zoneId, String strataId, String subStrataId) { + throw new RuntimeException("method not implemented"); + } + + @Override public List<Vessel> getAllScientificVessel() { throw new RuntimeException("method not implemented"); } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/AbstractTuttiEntity.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/AbstractTuttiEntity.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/AbstractTuttiEntity.java 2013-03-26 17:02:29 UTC (rev 683) @@ -45,10 +45,12 @@ protected String id; + @Override public String getId() { return id; } + @Override public void setId(String id) { this.id = id; } @@ -83,7 +85,7 @@ @Override public int hashCode() { - return id != null ? id.hashCode() : 0; + return id == null ? 0 : id.hashCode(); } @Override Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Program.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Program.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/Program.java 2013-03-26 17:02:29 UTC (rev 683) @@ -24,7 +24,7 @@ * #L% */ -import fr.ifremer.tutti.persistence.entities.referential.Zone; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; public class Program extends AbstractTuttiDataEntity { @@ -40,7 +40,7 @@ protected String description; - protected Zone zone; + protected TuttiLocation zone; public String getName() { return name; @@ -58,11 +58,11 @@ this.description = description; } - public Zone getZone() { + public TuttiLocation getZone() { return zone; } - public void setZone(Zone zone) { + public void setZone(TuttiLocation zone) { this.zone = zone; } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-03-26 17:02:29 UTC (rev 683) @@ -44,18 +44,20 @@ import fr.ifremer.adagio.core.dao.referential.gear.GearDao; import fr.ifremer.adagio.core.dao.referential.location.Location; import fr.ifremer.adagio.core.dao.referential.location.LocationDao; +import fr.ifremer.adagio.core.dao.referential.location.LocationImpl; import fr.ifremer.adagio.core.dao.referential.pmfm.Pmfm; import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmDao; import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmImpl; import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueDao; import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueImpl; import fr.ifremer.adagio.core.dao.referential.vessel.VesselDao; +import fr.ifremer.adagio.core.dao.referential.vessel.VesselImpl; import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.referential.Country; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -66,7 +68,6 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.sql.Timestamp; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collections; @@ -150,7 +151,7 @@ Object[] source = queryUnique( "cruise", "cruiseId", IntegerType.INSTANCE, Integer.valueOf(id), - "countryLocationLevelId", IntegerType.INSTANCE, enumeration.LOCATION_LEVEL_ID_COUNTRY, +// "locationLevelId", IntegerType.INSTANCE, enumeration.LOCATION_LEVEL_ID_HARBOUR, "pmfmIdSurveyPart", IntegerType.INSTANCE, enumeration.PMFM_ID_SURVEY_PART); if (source == null) { @@ -159,41 +160,34 @@ Cruise result = new Cruise(); result.setId(id); - String programCode = (String) source[0]; - Program program = programService.getProgram(programCode); - result.setProgram(program); + int index = 0; - result.setYear((Integer) source[1]); - result.setName((String) source[2]); + // departureLocation + Integer departureLocationId = (Integer) source[index++]; + TuttiLocation departureLocation = referentialService.getLocation(String.valueOf(departureLocationId)); + result.setDepartureLocation(departureLocation); - String countryId = String.valueOf(source[3]); - String countryLabel = (String) source[4]; - String countryName = (String) source[5]; - Country c = new Country(); - c.setId(countryId); - c.setName(countryName); - c.setLabel(countryLabel); - result.setCountry(c); + // returnLocation + Integer returnLocationId = (Integer) source[index++]; + TuttiLocation returnLocation = referentialService.getLocation(String.valueOf(returnLocationId)); + result.setReturnLocation(returnLocation); - Timestamp beginDate = (Timestamp) source[6]; - if (beginDate != null && result.getYear() != null) { - long mili = dateOfYearWithOneMiliSecondInMili(result.getYear()); - // Comparison with getTime() is need, to keep millisecond precision - if (beginDate.getTime() == mili) { - // if BeginDate is fake : set to null (see createCruise for details) - result.setBeginDate(null); - } else { - result.setBeginDate(new Date(beginDate.getTime())); - } - } + // program + String programCode = (String) source[index++]; + Program program = programService.getProgram(programCode); + result.setProgram(program); - result.setEndDate((Date) source[7]); + // name + result.setName((String) source[index++]); - String vesselCode = (String) source[8]; + result.setBeginDate((Date) source[index++]); + result.setEndDate((Date) source[index++]); + + String vesselCode = (String) source[index++]; Vessel vessel = referentialService.getVessel(vesselCode); result.setVessel(vessel); - Integer managerId = (Integer) source[9]; + Integer managerId = (Integer) source[index++]; if (managerId != null && managerId.equals(enumeration.PERSON_ID_UNKNOWN_RECORDER_PERSON)) { result.setHeadOfMission(null); } else { @@ -201,9 +195,9 @@ result.setHeadOfMission(Lists.newArrayList(manager)); } - result.setComment((String) source[10]); + result.setComment((String) source[index++]); - String miscData = (String) source[11]; + String miscData = (String) source[index++]; if (miscData != null && miscData.length() > 0) { // // Retrieve secondary vessels : // int vesselTagIndex = miscData.indexOf(CRUISE_MISC_DATA_VESSELS_TAG); @@ -237,7 +231,6 @@ int sortManagersIndex = miscData.indexOf(CRUISE_MISC_DATA_SORT_MANAGERS_TAG); if (sortManagersIndex != -1) { String sortManagersStr = miscData.substring(sortManagersIndex + CRUISE_MISC_DATA_SORT_MANAGERS_TAG.length()).trim(); - miscData = miscData.substring(0, sortManagersIndex); if (!sortManagersStr.isEmpty()) { String[] managersArray = sortManagersStr.split(","); List<Person> persons = new ArrayList<Person>(); @@ -251,7 +244,7 @@ } // load surverPart - result.setSurveyPart((String) source[12]); + result.setSurveyPart((String) source[index++]); // get secondary gears from fishingOperation (first load from Allegro DB only) if (result.getGear() == null) { @@ -288,6 +281,12 @@ public Cruise createCruise(Cruise bean) { Preconditions.checkNotNull(bean); Preconditions.checkArgument(bean.getId() == null, "Cruise 'id' must be null to call createCruise()."); + Preconditions.checkNotNull(bean.getProgram()); + Preconditions.checkNotNull(bean.getBeginDate()); + Preconditions.checkNotNull(bean.getEndDate()); + Preconditions.checkNotNull(bean.getDepartureLocation()); + Preconditions.checkNotNull(bean.getReturnLocation()); + Preconditions.checkNotNull(bean.getVessel()); ScientificCruise scientificCruise = ScientificCruise.Factory.newInstance(); cruiseToEntity(bean, scientificCruise); @@ -301,6 +300,12 @@ public Cruise saveCruise(Cruise bean) { Preconditions.checkNotNull(bean); Preconditions.checkNotNull(bean.getId(), "Cruise 'id' must not be null or empty to be saved."); + Preconditions.checkNotNull(bean.getProgram()); + Preconditions.checkNotNull(bean.getBeginDate()); + Preconditions.checkNotNull(bean.getEndDate()); + Preconditions.checkNotNull(bean.getDepartureLocation()); + Preconditions.checkNotNull(bean.getReturnLocation()); + Preconditions.checkNotNull(bean.getVessel()); ScientificCruise scientificCruise = scientificCruiseDao.load(Integer.valueOf(bean.getId())); if (scientificCruise == null) { @@ -338,11 +343,7 @@ target.setName(source.getName()); // Program - if (source.getProgram() == null || source.getProgram().getId() == null) { - target.setProgram(null); - } else if (source.getName() != null && source.getProgram().getId() != null) { - target.setProgram(load(ProgramImpl.class, source.getProgram().getId())); - } + target.setProgram(load(ProgramImpl.class, source.getProgram().getId())); // Sort Room Managers if (source.getHeadOfSortRoom() == null || source.getHeadOfSortRoom().size() == 0) { @@ -376,34 +377,13 @@ } // Vessel - if (source.getVessel() == null) { - target.setProgram(null); - } else { - target.setVessel(vesselDao.load(source.getVessel().getId())); - } + target.setVessel(load(VesselImpl.class, source.getVessel().getId())); - // Year - if (source.getYear() == null && source.getBeginDate() == null) { - target.setDepartureDateTime(null); - } else if (source.getYear() != null && source.getBeginDate() == null) { - // Set year into departure date time only if no departure date time has been set - // Add one millisecond to retrieve a 'year saved but no departure date' - target.setDepartureDateTime(dateOfYearWithOneMiliSecond(source.getYear())); - } - // BeginDate - if (source.getYear() == null && source.getBeginDate() == null) { - target.setDepartureDateTime(null); - } else if (source.getBeginDate() != null) { - target.setDepartureDateTime(dateWithNoSecondAndMiliSecond(source.getBeginDate())); - } + target.setDepartureDateTime(dateWithNoSecondAndMiliSecond(source.getBeginDate())); // EndDate - if (source.getEndDate() == null) { - target.setReturnDateTime(null); - } else if (source.getEndDate() != null) { - target.setReturnDateTime(dateWithNoSecondAndMiliSecond(source.getEndDate())); - } + target.setReturnDateTime(dateWithNoSecondAndMiliSecond(source.getEndDate())); // Comment target.setComments(source.getComment()); @@ -447,20 +427,13 @@ fishingTrip.setSynchronizationStatus(target.getSynchronizationStatus()); fishingTrip.setQualityFlag(qualityFlagNotQualified); - if (fishingTrip.getReturnDateTime() == null && fishingTrip.getDepartureDateTime() != null) { - // = departureDateTime + 1ms - fishingTrip.setReturnDateTime(dateWithOneMiliSecond(fishingTrip.getDepartureDateTime())); - } + // DepartureLocation + Location departureLocation = load(LocationImpl.class, Integer.valueOf(source.getDepartureLocation().getId())); + fishingTrip.setDepartureLocation(departureLocation); - // Country - if (source.getCountry() == null || source.getCountry().getId() == null) { - fishingTrip.setDepartureLocation(null); - fishingTrip.setReturnLocation(null); - } else if (source.getCountry() != null && source.getCountry().getId() != null) { - Location locationCountry = locationDao.load(Integer.valueOf(source.getCountry().getId())); - fishingTrip.setDepartureLocation(locationCountry); - fishingTrip.setReturnLocation(locationCountry); - } + // ReturnLocation + Location returnLocation = load(LocationImpl.class, Integer.valueOf(source.getReturnLocation().getId())); + fishingTrip.setReturnLocation(returnLocation); setSurveyMeasurement(fishingTrip, enumeration.PMFM_ID_SURVEY_PART, null, source.getSurveyPart(), null); Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-03-26 17:02:29 UTC (rev 683) @@ -63,8 +63,8 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; @@ -306,21 +306,21 @@ // Strata : Integer strataId = (Integer) source[colIndex++]; if (strataId != null) { - FishingOperationLocation strata = referentialService.getFishingOperationLocation(strataId.toString()); + TuttiLocation strata = referentialService.getLocation(strataId.toString()); result.setStrata(strata); } // Sub Strata : Integer subStrataId = (Integer) source[colIndex++]; if (subStrataId != null) { - FishingOperationLocation subStrata = referentialService.getFishingOperationLocation(subStrataId.toString()); + TuttiLocation subStrata = referentialService.getLocation(subStrataId.toString()); result.setSubStrata(subStrata); } // Localite : Integer localiteId = (Integer) source[colIndex++]; if (localiteId != null) { - FishingOperationLocation localite = referentialService.getFishingOperationLocation(localiteId.toString()); + TuttiLocation localite = referentialService.getLocation(localiteId.toString()); result.setLocation(localite); } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceImpl.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceImpl.java 2013-03-26 17:02:29 UTC (rev 683) @@ -32,7 +32,7 @@ import fr.ifremer.adagio.core.dao.referential.location.LocationDao; import fr.ifremer.adagio.core.dao.referential.taxon.TaxonGroupTypeImpl; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.referential.Zone; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.type.IntegerType; @@ -140,7 +140,7 @@ Preconditions.checkNotNull(bean.getDescription()); if (log.isDebugEnabled()) { - log.debug("Create program with name: " + bean.getName()); + log.debug("Save program with name: " + bean.getName()); } fr.ifremer.adagio.core.dao.administration.programStrategy.Program program = programDao.load(bean.getId()); if (program == null) { @@ -162,7 +162,7 @@ result.setName((String) source[1]); result.setDescription((String) source[2]); if (source[3] != null) { - Zone zone = new Zone(); + TuttiLocation zone = new TuttiLocation(); zone.setId(String.valueOf(source[3])); zone.setLabel((String) source[4]); zone.setName((String) source[5]); Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-03-26 17:02:29 UTC (rev 683) @@ -28,14 +28,12 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; 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.ObjectType; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Zone; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.transaction.annotation.Transactional; @@ -58,28 +56,40 @@ /** * @return all available zones (used by a {@link Program}. * @see Program#getZone() - * @see Program#setZone(Zone) + * @see Program#setZone(TuttiLocation) * @since 0.3 */ @Cacheable(value = "programZones") - List<Zone> getAllProgramZone(); + List<TuttiLocation> getAllProgramZone(); /** * @return all countries (used by a {@link Cruise}). * @see {@link Cruise#getCountry()} - * @see {@link Cruise#setCountry(Country)} + * @see {@link Cruise#setCountry(TuttiLocation)} * @since 0.1 */ - List<Country> getAllCountry(); + @Cacheable(value = "countries") + List<TuttiLocation> getAllCountry(); /** + * @return all harbours (used by a {@link Cruise}). + * @see {@link Cruise#getDepartureLocation()} + * @see {@link Cruise#setDepartureLocation(TuttiLocation)} + * @see {@link Cruise#getReturnLocation()} + * @see {@link Cruise#setReturnLocation(TuttiLocation)} + * @since 1.2 + */ + @Cacheable(value = "harbours") + List<TuttiLocation> getAllHarbour(); + + /** * Get the list of location of type strata that match the given zone id. * * @param zoneId id of the parent zone (can not be null) * @return the stratas with given zone id as location parent * @since 1.0 */ - List<FishingOperationLocation> getAllFishingOperationStrata(String zoneId); + List<TuttiLocation> getAllFishingOperationStrata(String zoneId); /** * Get the list of location of type substra that match the given zone id or @@ -90,7 +100,7 @@ * @return the list of localite with given zone id as location parent / or strata * @since 1.0 */ - List<FishingOperationLocation> getAllFishingOperationSubStrata(String zoneId, String strataId); + List<TuttiLocation> getAllFishingOperationSubStrata(String zoneId, String strataId); /** * Get the list of location of type substra that match the given zone id or @@ -103,21 +113,12 @@ * @return the list of localite with given zone id as location parent / or strata or substrata * @since 1.0 */ - List<FishingOperationLocation> getAllFishingOperationLocation(String zoneId, String strataId, String subStrataId); + List<TuttiLocation> getAllFishingOperationLocation(String zoneId, String strataId, String subStrataId); /** - * Get a location by id (location could be of any type : strata, substrata, localite, etc.). - * - * @param id the id of locations to load - * @return the locations with given ids - * @since 1.0 - */ - FishingOperationLocation getFishingOperationLocation(String id); - - /** * @return all scientific vessels (used by a {@link Cruise}). * @see Cruise#getVessel() - * @see Cruise#setVessel(List) + * @see Cruise#setVessel(Vessel) * @since 0.3 */ List<Vessel> getAllScientificVessel(); @@ -125,7 +126,7 @@ /** * @return all commercial vessels (used by a {@link Cruise}). * @see Cruise#getVessel() - * @see Cruise#setVessel(List) + * @see Cruise#setVessel(Vessel) * @since 0.3 */ @Cacheable(value = "fishingVessels") @@ -154,6 +155,15 @@ List<Species> getAllSpecies(); /** + * Get a location by id . + * + * @param id the id of location to load + * @return the location for the given id, or {@code null} if not found + * @since 1.0 + */ + TuttiLocation getLocation(String id); + + /** * Obtain a species given his referenceTaxonId. * * @param referenceTaxonId id of the reference taxon of the species to load Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-03-26 17:02:29 UTC (rev 683) @@ -39,15 +39,13 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType; -import fr.ifremer.tutti.persistence.entities.referential.Country; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.ObjectType; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.persistence.entities.referential.Status; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Zone; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Query; @@ -109,48 +107,57 @@ //------------------------------------------------------------------------// @Override - public List<Zone> getAllProgramZone() { + public List<TuttiLocation> getAllProgramZone() { Iterator<Object[]> list = queryListWithStatus( - "allProgramZones", + "allLocationsByLevelAndClassificiation", "locationClassificationId", IntegerType.INSTANCE, enumeration.LOCATION_CLASSIFICATION_ID_SECTOR, "locationLevelId", IntegerType.INSTANCE, enumeration.LOCATION_LEVEL_ID_PROGRAM); - List<Zone> result = Lists.newArrayList(); + List<TuttiLocation> result = Lists.newArrayList(); while (list.hasNext()) { Object[] source = list.next(); - Zone target = new Zone(); - target.setId(String.valueOf(source[0])); - target.setLabel((String) source[1]); - target.setName((String) source[2]); - setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[3], target); + TuttiLocation target = loadLocation(source); result.add(target); } return Collections.unmodifiableList(result); } @Override - public List<Country> getAllCountry() { + public List<TuttiLocation> getAllCountry() { Iterator<Object[]> list = queryListWithStatus( - "allCountries", + "allLocationsByLevelAndClassificiation", + "locationClassificationId", IntegerType.INSTANCE, enumeration.LOCATION_CLASSIFICATION_ID_TERRITORIAL, "locationLevelId", IntegerType.INSTANCE, enumeration.LOCATION_LEVEL_ID_COUNTRY); - List<Country> result = Lists.newArrayList(); + List<TuttiLocation> result = Lists.newArrayList(); while (list.hasNext()) { Object[] source = list.next(); - Country target = new Country(); - target.setId(String.valueOf(source[0])); - target.setLabel((String) source[1]); - target.setName((String) source[2]); - setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[3], target); + TuttiLocation target = loadLocation(source); result.add(target); } return Collections.unmodifiableList(result); } @Override - public List<FishingOperationLocation> getAllFishingOperationStrata(String zoneId) { + public List<TuttiLocation> getAllHarbour() { + Iterator<Object[]> list = queryListWithStatus( + "allLocationsByLevelAndClassificiation", + "locationClassificationId", IntegerType.INSTANCE, enumeration.LOCATION_CLASSIFICATION_ID_TERRITORIAL, + "locationLevelId", IntegerType.INSTANCE, enumeration.LOCATION_LEVEL_ID_HARBOUR); + + List<TuttiLocation> result = Lists.newArrayList(); + while (list.hasNext()) { + Object[] source = list.next(); + TuttiLocation target = loadLocation(source); + result.add(target); + } + return Collections.unmodifiableList(result); + } + + @Override + public List<TuttiLocation> getAllFishingOperationStrata(String zoneId) { Preconditions.checkNotNull(zoneId); - List<FishingOperationLocation> result = getFishingOperationLocationsByParent( + List<TuttiLocation> result = getFishingOperationLocationsByParent( enumeration.LOCATION_LEVEL_ID_STRATA, Integer.valueOf(zoneId), enumeration.LOCATION_LEVEL_ID_PROGRAM); @@ -158,8 +165,8 @@ } @Override - public List<FishingOperationLocation> getAllFishingOperationSubStrata(String zoneId, - String strataId) { + public List<TuttiLocation> getAllFishingOperationSubStrata(String zoneId, + String strataId) { String parentId; Integer parentLocationLevelId; @@ -178,7 +185,7 @@ } Preconditions.checkNotNull(parentId); - List<FishingOperationLocation> result = getFishingOperationLocationsByParent( + List<TuttiLocation> result = getFishingOperationLocationsByParent( enumeration.LOCATION_LEVEL_ID_SUB_STRATA, Integer.valueOf(parentId), parentLocationLevelId); @@ -186,9 +193,9 @@ } @Override - public List<FishingOperationLocation> getAllFishingOperationLocation(String zoneId, - String strataId, - String subStrataId) { + public List<TuttiLocation> getAllFishingOperationLocation(String zoneId, + String strataId, + String subStrataId) { String parentId; Integer parentLocationLevelId; @@ -213,7 +220,7 @@ } Preconditions.checkNotNull(parentId); - List<FishingOperationLocation> result = getFishingOperationLocationsByParent( + List<TuttiLocation> result = getFishingOperationLocationsByParent( enumeration.LOCATION_LEVEL_ID_LOCALITE, Integer.valueOf(parentId), parentLocationLevelId); @@ -221,22 +228,15 @@ } @Override - public FishingOperationLocation getFishingOperationLocation(String id) { + public TuttiLocation getLocation(String id) { Object[] source = queryUnique( - "fishingOperationLocationById", + "locationById", "locationId", IntegerType.INSTANCE, Integer.valueOf(id) ); if (source == null) { return null; } - FishingOperationLocation target = new FishingOperationLocation(); - target.setId(String.valueOf(source[0])); - target.setLabel((String) source[1]); - target.setName((String) source[2]); - target.setLocationLevel((Integer) source[3]); - - setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[4], target); - + TuttiLocation target = loadLocation(source); return target; } @@ -704,7 +704,7 @@ return result; } - protected List<FishingOperationLocation> getFishingOperationLocationsByParent(Integer locationLevelId, Integer parentId, Integer parentLocationLevelId) { + protected List<TuttiLocation> getFishingOperationLocationsByParent(Integer locationLevelId, Integer parentId, Integer parentLocationLevelId) { Iterator<Object[]> sources = queryListWithStatus( "allFishingOperationLocationByParent", "parentId", IntegerType.INSTANCE, parentId, @@ -712,17 +712,10 @@ "locationClassificationId", IntegerType.INSTANCE, enumeration.LOCATION_CLASSIFICATION_ID_SECTOR, "locationLevelId", IntegerType.INSTANCE, locationLevelId ); - List<FishingOperationLocation> result = Lists.newArrayList(); + List<TuttiLocation> result = Lists.newArrayList(); while (sources.hasNext()) { Object[] source = sources.next(); - FishingOperationLocation target = new FishingOperationLocation(); - target.setId(String.valueOf(source[0])); - target.setLabel((String) source[1]); - target.setName((String) source[2]); -// target.setDescription((String)source[3]); - target.setLocationLevel((Integer) source[3]); - - setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[4], target); + TuttiLocation target = loadLocation(source); result.add(target); } return result; @@ -821,6 +814,15 @@ return result; } + protected TuttiLocation loadLocation(Object[] source) { + TuttiLocation target = new TuttiLocation(); + target.setId(String.valueOf(source[0])); + target.setLabel((String) source[1]); + target.setName((String) source[2]); + setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[3], target); + return target; + } + protected Iterator<Object[]> queryListWithStatus(String queryName, Object... params) { Query query = createQuery(queryName, params); Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/TuttiEnumerationFile.java 2013-03-26 17:02:29 UTC (rev 683) @@ -53,6 +53,9 @@ @Value("${GearClassificationId.FAO}") public final Integer GEAR_CLASSIFICIATION_ID_FISHING = null; + @Value("${LocationClassificationId.TERRITORIAL}") + public final Integer LOCATION_CLASSIFICATION_ID_TERRITORIAL = null; + @Value("${LocationClassificationId.SECTOR}") public final Integer LOCATION_CLASSIFICATION_ID_SECTOR = null; @@ -62,6 +65,9 @@ @Value("${LocationLevelId.PAYS_ISO3}") public final Integer LOCATION_LEVEL_ID_COUNTRY = null; + @Value("${LocationLevelId.PORT}") + public final Integer LOCATION_LEVEL_ID_HARBOUR= null; + @Value("${LocationLevelId.LOCALITE}") public final Integer LOCATION_LEVEL_ID_LOCALITE = null; Modified: trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml =================================================================== --- trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml 2013-03-26 17:02:29 UTC (rev 683) @@ -76,6 +76,18 @@ <property name="maxElementsInMemory" value="1"/> <property name="maxElementsOnDisk" value="1"/> </bean> + + <bean id="countriesCache" parent="tuttiAbstractEternalCache"> + <property name="cacheName" value="countries" /> + <property name="maxElementsInMemory" value="1"/> + <property name="maxElementsOnDisk" value="1"/> + </bean> + + <bean id="harboursCache" parent="tuttiAbstractEternalCache"> + <property name="cacheName" value="harbours" /> + <property name="maxElementsInMemory" value="1"/> + <property name="maxElementsOnDisk" value="1"/> + </bean> <bean id="tuttiPmfmsCache" parent="tuttiAbstractEternalCache"> <property name="cacheName" value="pmfms" /> Modified: trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml =================================================================== --- trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/main/resources/queries-override.hbm.xml 2013-03-26 17:02:29 UTC (rev 683) @@ -59,7 +59,7 @@ </query> <!-- [DAT-02] Get all cruises for a given program (to list with no detail) --> - <query name="allCruises"> + <query cacheable="true" name="allCruises"> <![CDATA[ SELECT c.id, @@ -76,7 +76,7 @@ </query> <!-- [DAT-03] Get a detail program --> - <query name="program"> + <query cacheable="true" name="program"> <![CDATA[ SELECT p.code, @@ -104,15 +104,13 @@ </query> <!-- [DAT-04] Get a detail cruise --> - <query name="cruise"> + <query cacheable="true" name="cruise"> <![CDATA[ SELECT + ft.departureLocation.id as departureLocationId, + ft.returnLocation.id as returnLocationId, sc.program.code AS programCode, - year(sc.departureDateTime) AS year, sc.name AS name, - lh.locationHierarchyPk.parent.id AS countryId, - lh.locationHierarchyPk.parent.label AS countryLabel, - lh.locationHierarchyPk.parent.name AS countryName, sc.departureDateTime AS departureDateTime, sc.returnDateTime AS returnDateTime, sc.vessel.code AS vesselCode, @@ -126,19 +124,15 @@ FROM ScientificCruiseImpl sc LEFT OUTER JOIN sc.fishingTrips ft - LEFT OUTER JOIN sc.managerPerson mp, - LocationHierarchyImpl lh + LEFT OUTER JOIN sc.managerPerson mp WHERE sc.id = :cruiseId - AND lh.locationHierarchyPk.parent.locationLevel.id = :countryLocationLevelId - AND lh.locationHierarchyPk.location.id = ft.departureLocation.id ]]> <query-param name="cruiseId" type="java.lang.Integer"/> <query-param name="pmfmIdSurveyPart" type="java.lang.Integer"/> - <query-param name="countryLocationLevelId" type="java.lang.Integer"/> </query> - <query name="allCruiseGears"> + <query cacheable="true" name="allCruiseGears"> <![CDATA[ SELECT gpf.gear.id AS gearId, @@ -163,7 +157,7 @@ <query-param name="pmfmIdTrawlNet" type="java.lang.Integer"/> </query> - <query name="allCruiseSecondaryVessels"> + <query cacheable="true" name="allCruiseSecondaryVessels"> <![CDATA[ SELECT va.operationVesselAssociationPk.vessel.code AS associatedVesselCode @@ -180,7 +174,7 @@ <query-param name="cruiseId" type="java.lang.Integer"/> </query> - <query name="allFishingOperations"> + <query cacheable="true" name="allFishingOperations"> <![CDATA[ SELECT o.id AS id, @@ -204,7 +198,7 @@ <query-param name="pmfmIdMultirigAggregation" type="java.lang.Integer"/> </query> - <query name="fishingOperation"> + <query cacheable="true" name="fishingOperation"> <![CDATA[ SELECT o.name AS name, @@ -237,7 +231,7 @@ <query-param name="locationLevelIdLocalite" type="java.lang.Integer"/> </query> - <query name="fishingOperationRankOrder"> + <query cacheable="true" name="fishingOperationRankOrder"> <![CDATA[ SELECT count(o1.id) + 1 as fishingOperationRankOrder @@ -254,7 +248,7 @@ - <query name="fishingOperationVesselUseFeatures"> + <query cacheable="true" name="fishingOperationVesselUseFeatures"> <![CDATA[ SELECT vum.pmfm.id as pmfmId, @@ -270,7 +264,7 @@ <query-param name="fishingOperationId" type="java.lang.Integer"/> </query> - <query name="fishingOperationGearUseFeatures"> + <query cacheable="true" name="fishingOperationGearUseFeatures"> <![CDATA[ SELECT gum.pmfm.id as pmfmId, @@ -286,7 +280,7 @@ <query-param name="fishingOperationId" type="java.lang.Integer"/> </query> - <query name="updateFishingOperationCatchBatch"> + <query cacheable="true" name="updateFishingOperationCatchBatch"> <![CDATA[ UPDATE FishingOperationImpl o SET o.catchBatch.id=:catchBatchId @@ -297,7 +291,7 @@ <query-param name="catchBatchId" type="java.lang.Integer"/> </query> - <query name="catchBatch"> + <query cacheable="true" name="catchBatch"> <![CDATA[ SELECT cb.id AS catchBatchId, @@ -328,7 +322,7 @@ <query-param name="pmfmIdSortingType" type="java.lang.Integer"/> </query> - <query name="allSpeciesBatchFrequency"> + <query cacheable="true" name="allSpeciesBatchFrequency"> <![CDATA[ SELECT b.id as batchId, @@ -355,7 +349,7 @@ <query-param name="parentBatchId" type="java.lang.Integer"/> </query> - <query name="allAttachment"> + <query cacheable="true" name="allAttachment"> <![CDATA[ SELECT m.objectType.code as attachmentObjectType, @@ -375,7 +369,7 @@ <query-param name="pmfmId" type="java.lang.Integer"/> </query> - <query name="attachment"> + <query cacheable="true" name="attachment"> <![CDATA[ SELECT m.objectType.code as attachmentObjectType, @@ -468,18 +462,14 @@ <query-param name="statusTemporaryCode" type="java.lang.String"/> </query> - <!-- ===================================================================== --> - <!-- === Requete sur référentiels [REF-XXX] === --> - <!-- ===================================================================== --> - - <!-- [REF-01] Get all program zones --> - <query cacheable="true" name="allProgramZones"> + <!-- [REF-T04] Get all locations by level and classification --> + <query cacheable="true" name="allLocationsByLevelAndClassificiation"> <![CDATA[ SELECT - l.id, - l.label, - l.name, - l.status + l.id as locationId, + l.label as locationLabel, + l.name as locationName, + l.status as status FROM LocationImpl l WHERE l.locationLevel.id = :locationLevelId @@ -492,24 +482,26 @@ <query-param name="statusTemporaryCode" type="java.lang.String"/> </query> - <!-- [REF-02] Get all countries --> - <query cacheable="true" name="allCountries"> + <!-- [REF-T05] Get a location by his id --> + <query cacheable="true" name="locationById"> <![CDATA[ SELECT - l.id, - l.label, - l.name, - l.status - FROM LocationImpl l + l.id as locationId, + l.label as locationLabel, + l.name as locationName, + l.status as status + FROM + LocationImpl l WHERE - l.locationLevel.id = :locationLevelId - AND l.status.code IN (:statusValidCode, :statusTemporaryCode) + l.id = :locationId ]]> - <query-param name="locationLevelId" type="java.lang.Integer"/> - <query-param name="statusValidCode" type="java.lang.String"/> - <query-param name="statusTemporaryCode" type="java.lang.String"/> + <query-param name="locationId" type="java.lang.Integer"/> </query> + <!-- ===================================================================== --> + <!-- === Requete sur référentiels [REF-XXX] === --> + <!-- ===================================================================== --> + <!-- [REF-03] Get all fishing operation strata / substrata / localite --> <query cacheable="true" name="allFishingOperationLocationByParent"> <![CDATA[ @@ -517,7 +509,6 @@ l.id as locationId, l.label as locationLabel, l.name as locationName, - l.locationLevel.id as locationLevelId, l.status as status FROM LocationImpl l, @@ -537,43 +528,6 @@ <query-param name="statusValidCode" type="java.lang.String"/> <query-param name="statusTemporaryCode" type="java.lang.String"/> </query> - - <query cacheable="true" name="allFishingOperationLocation"> - <![CDATA[ - SELECT - l.id as locationId, - l.label as locationLabel, - l.name as locationName, - l.locationLevel.id as locationLevelId, - l.status as status - FROM - LocationImpl l - WHERE - l.status.code IN (:statusValidCode, :statusTemporaryCode) - AND l.locationLevel.id = :locationLevelId - AND l.locationClassification.id = :locationClassificationId - ]]> - <query-param name="locationLevelId" type="java.lang.Integer"/> - <query-param name="locationClassificationId" type="java.lang.Integer"/> - <query-param name="statusValidCode" type="java.lang.String"/> - <query-param name="statusTemporaryCode" type="java.lang.String"/> - </query> - - <query cacheable="true" name="fishingOperationLocationById"> - <![CDATA[ - SELECT - l.id as locationId, - l.label as locationLabel, - l.name as locationName, - l.locationLevel.id as locationLevelId, - l.status as status - FROM - LocationImpl l - WHERE - l.id = :locationId - ]]> - <query-param name="locationId" type="java.lang.Integer"/> - </query> <!-- [REF-04] et [REF-05] Get all vessel for a given vesselType --> <query cacheable="true" name="allVessels"> Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo =================================================================== (Binary files differ) Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseFixtures.java 2013-03-26 17:02:29 UTC (rev 683) @@ -90,6 +90,10 @@ return 240; } + public int refNbHarbour() { + return 1896; + } + public int refNbProgramZone() { return 16; } Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/DatabaseResource.java 2013-03-26 17:02:29 UTC (rev 683) @@ -42,6 +42,7 @@ import org.junit.runner.Description; import org.junit.runner.notification.Failure; import org.junit.runners.model.Statement; +import org.nuiton.util.FileUtil; import org.nuiton.util.config.ApplicationConfig; import java.io.BufferedReader; @@ -171,7 +172,7 @@ fixtures = new DatabaseFixtures(); - resourceDirectory = getTestSpecificDirectory(testClass, ""); + resourceDirectory = FileUtil.getTestSpecificDirectory(testClass, "", null, BUILD_TIMESTAMP); RessourceClassLoader loader = new RessourceClassLoader(testClass.getClassLoader()); @@ -349,31 +350,6 @@ return createEmptyDb(externalDbFile, dbName, p); } - public static File getTestSpecificDirectory(Class<?> testClass, - String name) throws IOException { - // Trying to look for the temporary folder to store data for the test - String tempDirPath = System.getProperty("java.io.tmpdir"); - if (tempDirPath == null) { - // can this really occur ? - tempDirPath = ""; - if (log.isWarnEnabled()) { - log.warn("'\"java.io.tmpdir\" not defined"); - } - } - File tempDirFile = new File(tempDirPath); - - // create the directory to store database data - String dataBasePath = testClass.getName() - + File.separator // a directory with the test class name - + name // a sub-directory with the method name - + '_' - + BUILD_TIMESTAMP; // and a timestamp - File databaseFile = new File(tempDirFile, dataBasePath); - FileUtils.forceMkdir(databaseFile); - - return databaseFile; - } - public Connection createEmptyDb(File directory, String dbName) throws SQLException, IOException { Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java 2013-03-26 17:02:29 UTC (rev 683) @@ -39,6 +39,7 @@ import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; @@ -125,9 +126,14 @@ cruise.setId(null); Calendar calendar = new GregorianCalendar(); cruise.setBeginDate(calendar.getTime()); - cruise.setYear(calendar.get(Calendar.YEAR)); calendar.add(Calendar.MONTH, 1); // add one month cruise.setEndDate(calendar.getTime()); + List<TuttiLocation> allHarbour = referentialService.getAllHarbour(); + Assert.assertNotNull(allHarbour); + Assert.assertTrue(allHarbour.size() > 1); + cruise.setDepartureLocation(allHarbour.get(0)); + cruise.setReturnLocation(allHarbour.get(1)); + cruise = cruiseService.createCruise(cruise); // Create a first operation, with no cacth batch : to test CatchBatch insert/update : Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-03-26 17:02:29 UTC (rev 683) @@ -27,12 +27,13 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.DatabaseResource; import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.referential.Country; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; @@ -90,21 +91,14 @@ Calendar calendar = new GregorianCalendar(); cruise.setBeginDate(calendar.getTime()); - cruise.setYear(calendar.get(Calendar.YEAR)); - calendar.add(Calendar.MONTH, 1); // add one month cruise.setEndDate(calendar.getTime()); - Country country = null; - List<Country> countries = referentialService.getAllCountry(); - for (Country aCountry : countries) { - if (aCountry.getLabel() != null && aCountry.getLabel().equals("FRA")) { - country = aCountry; - break; - } - } - assertNotNull("Could not load FRA country", country); - cruise.setCountry(country); + List<TuttiLocation> allHarbour = referentialService.getAllHarbour(); + Assert.assertNotNull(allHarbour); + Assert.assertTrue(allHarbour.size() > 1); + cruise.setDepartureLocation(allHarbour.get(0)); + cruise.setReturnLocation(allHarbour.get(1)); List<Gear> gears = referentialService.getAllFishingGear(); cruise.setGear(gears); @@ -128,6 +122,10 @@ assertNotNull(createdCruise.getId()); assertEquals(cruise.getName(), createdCruise.getName()); assertEquals(cruise.getSurveyPart(), createdCruise.getSurveyPart()); + assertNotNull(createdCruise.getDepartureLocation()); + assertEquals(cruise.getDepartureLocation(), createdCruise.getDepartureLocation()); + assertNotNull(createdCruise.getReturnLocation()); + assertEquals(cruise.getReturnLocation(), createdCruise.getReturnLocation()); if (log.isInfoEnabled()) { log.info("Created cruise: " + createdCruise.getId()); @@ -144,14 +142,16 @@ calendar.set(Calendar.MILLISECOND, 0); assertEquals(calendar.getTime(), reloadedCruise.getEndDate()); assertEquals(cruise.getMultirigNumber(), reloadedCruise.getMultirigNumber()); + assertEquals(cruise.getDepartureLocation(), reloadedCruise.getDepartureLocation()); + assertEquals(cruise.getReturnLocation(), reloadedCruise.getReturnLocation()); // ----------------------------------------------------------------------------- // 2. Test with only mandatory properties // ----------------------------------------------------------------------------- createdCruise.setId(null); createdCruise.setHeadOfMission(null); - createdCruise.setBeginDate(null); - createdCruise.setEndDate(null); +// createdCruise.setBeginDate(cruise.getBeginDate()); +// createdCruise.setEndDate(cruise.getEndDate()); createdCruise.setComment(null); createdCruise.setMultirigNumber(null); @@ -163,20 +163,34 @@ assertNotNull(createdCruise); assertNotNull(createdCruise.getId()); assertEquals(cruise.getName(), createdCruise.getName()); + assertNotNull(createdCruise.getDepartureLocation()); + assertEquals(cruise.getDepartureLocation(), createdCruise.getDepartureLocation()); + assertNotNull(createdCruise.getReturnLocation()); + assertEquals(cruise.getReturnLocation(), createdCruise.getReturnLocation()); // Reload to compare reloadedCruise = service.getCruise(createdCruise.getId()); - assertEquals(createdCruise.getBeginDate(), reloadedCruise.getBeginDate()); - assertEquals(createdCruise.getEndDate(), reloadedCruise.getEndDate()); + calendar.setTime(createdCruise.getBeginDate()); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + assertEquals(calendar.getTime(), reloadedCruise.getBeginDate()); + calendar.setTime(createdCruise.getEndDate()); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + assertEquals(calendar.getTime(), reloadedCruise.getEndDate()); + +// assertEquals(createdCruise.getBeginDate(), reloadedCruise.getBeginDate()); +// assertEquals(createdCruise.getEndDate(), reloadedCruise.getEndDate()); assertEquals(createdCruise.getComment(), reloadedCruise.getComment()); assertEquals(createdCruise.getSurveyPart(), reloadedCruise.getSurveyPart()); + assertEquals(cruise.getDepartureLocation(), reloadedCruise.getDepartureLocation()); + assertEquals(cruise.getReturnLocation(), reloadedCruise.getReturnLocation()); // assertEquals(createdCruise.getMultirigNumber(), reloadedCruise.getMultirigNumber()); assertEquals(1, reloadedCruise.getMultirigNumber(), 0); assertNull(reloadedCruise.getHeadOfMission()); assertNotNull(reloadedCruise.getVessel()); assertEquals(createdCruise.getVessel(), reloadedCruise.getVessel()); - assertEquals(cruise.getCountry().getId(), reloadedCruise.getCountry().getId()); assertNotNull(reloadedCruise.getVessel()); assertNotNull(reloadedCruise.getGear()); assertEquals(gears.size(), reloadedCruise.getGear().size()); @@ -193,10 +207,13 @@ Calendar calendar = new GregorianCalendar(); cruise.setBeginDate(calendar.getTime()); - cruise.setYear(calendar.get(Calendar.YEAR)); - calendar.add(Calendar.MONTH, 1); // add one month cruise.setEndDate(calendar.getTime()); + List<TuttiLocation> allHarbour = referentialService.getAllHarbour(); + Assert.assertNotNull(allHarbour); + Assert.assertTrue(allHarbour.size() > 1); + cruise.setDepartureLocation(allHarbour.get(0)); + cruise.setReturnLocation(allHarbour.get(1)); cruise = service.createCruise(cruise); @@ -207,6 +224,8 @@ // Name : cruise.setName("Unit-test-" + System.currentTimeMillis()); cruise.setSurveyPart("SurveryPart" + cruise.getName()); + cruise.setDepartureLocation(allHarbour.get(1)); + cruise.setReturnLocation(allHarbour.get(0)); // Remove gear, then add another gear Gear previousGear = cruise.getGear(0); @@ -231,6 +250,8 @@ assertEquals(cruise.getSurveyPart(), reloadedCruise.getSurveyPart()); assertNotNull(reloadedCruise.getGear()); assertEquals(cruise.getGear().size(), reloadedCruise.getGear().size()); - assertEquals(cruise.getGear(0).getId(), reloadedCruise.getGear(0).getId()); + assertEquals(cruise.getGear(0), reloadedCruise.getGear(0)); + assertEquals(cruise.getDepartureLocation(), reloadedCruise.getDepartureLocation()); + assertEquals(cruise.getReturnLocation(), reloadedCruise.getReturnLocation()); } } Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java 2013-03-26 17:02:29 UTC (rev 683) @@ -31,9 +31,10 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import org.junit.Assert; import org.junit.Before; import org.junit.ClassRule; import org.junit.Ignore; @@ -88,9 +89,17 @@ cruise = cruiseService.getCruise(dbResource.getFixtures().cruiseId()); cruise.setId(null); cruise.setName("Unit-test-" + System.currentTimeMillis()); - cruise.setBeginDate(new Date()); - cruise.setEndDate(null); + Calendar calendar = new GregorianCalendar(); + cruise.setBeginDate(calendar.getTime()); + + calendar.add(Calendar.MONTH, 1); // add one month + cruise.setEndDate(calendar.getTime()); cruise.setMultirigNumber(2); + List<TuttiLocation> allHarbour = referentialService.getAllHarbour(); + Assert.assertNotNull(allHarbour); + Assert.assertTrue(allHarbour.size() > 1); + cruise.setDepartureLocation(allHarbour.get(0)); + cruise.setReturnLocation(allHarbour.get(1)); // Keep only one gear in the cruise : (need for case n°4) List<Gear> cruiseGears = cruise.getGear(); @@ -223,13 +232,13 @@ fishingOperation.setVesselUseFeatures(environmentCaracteristics); fishingOperation.setGearUseFeatures(gearShootingCaracteristics); - FishingOperationLocation strata = new FishingOperationLocation(); + TuttiLocation strata = new TuttiLocation(); strata.setId(dbResource.getFixtures().strataId()); fishingOperation.setStrata(strata); - FishingOperationLocation subStrata = new FishingOperationLocation(); + TuttiLocation subStrata = new TuttiLocation(); subStrata.setId(dbResource.getFixtures().subStrataId()); fishingOperation.setSubStrata(subStrata); - FishingOperationLocation localite = new FishingOperationLocation(); + TuttiLocation localite = new TuttiLocation(); localite.setId(dbResource.getFixtures().localite()); fishingOperation.setLocation(localite); Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceReadTest.java 2013-03-26 17:02:29 UTC (rev 683) @@ -71,8 +71,10 @@ Assert.assertNotNull(actual.getId()); Assert.assertNotNull(actual.getName()); Assert.assertNotNull(actual.getDescription()); - //comment, because in test database, "CAM-CGFS" could have a location that is not a zone - //Assert.assertNotNull(actual.getZone()); + //FIXME-TC Change to NotNull when CGFS data will be ok + //FIXME-TC See http://forge.codelutin.com/issues/2221 +// Assert.assertNotNull(actual.getZone()); + Assert.assertNull(actual.getZone()); Assert.assertEquals(programCode, actual.getId()); } Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceWriteTest.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceWriteTest.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ProgramPersistenceServiceWriteTest.java 2013-03-26 17:02:29 UTC (rev 683) @@ -26,7 +26,7 @@ import fr.ifremer.tutti.persistence.DatabaseResource; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.referential.Zone; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; @@ -35,6 +35,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; /** @@ -61,7 +62,7 @@ @Test public void createAndSaveProgram(/*Program bean*/) { - List<Zone> zones = referentialService.getAllProgramZone(); + List<TuttiLocation> zones = referentialService.getAllProgramZone(); assertNotNull(zones); assertTrue(zones.size() > 0); @@ -79,18 +80,21 @@ Program createdProgram = service.createProgram(program); assertNotNull(createdProgram); assertNotNull(createdProgram.getId()); - assertNotNull(createdProgram.getComment()); + assertNull(createdProgram.getComment()); + assertNotNull(createdProgram.getDescription()); + assertNotNull(createdProgram.getZone()); assertEquals(program.getName(), createdProgram.getName()); assertEquals(program.getDescription(), createdProgram.getDescription()); // Reload program and compare Program reloadedProgram = service.getProgram(createdProgram.getId()); assertNotNull(reloadedProgram); - assertEquals(createdProgram.getId(), reloadedProgram.getId()); + assertEquals(createdProgram, reloadedProgram); + assertNull(reloadedProgram.getComment()); assertEquals(program.getName(), reloadedProgram.getName()); assertEquals(program.getDescription(), reloadedProgram.getDescription()); assertNotNull(program.getZone()); - assertEquals(program.getZone().getId(), reloadedProgram.getZone().getId()); + assertEquals(program.getZone(), reloadedProgram.getZone()); // Modify program program.setId(createdProgram.getId()); @@ -109,8 +113,9 @@ assertEquals(program.getId(), reloadedProgram.getId()); assertEquals(program.getName(), reloadedProgram.getName()); assertEquals(program.getDescription(), reloadedProgram.getDescription()); + assertNull(reloadedProgram.getComment()); assertNotNull(program.getZone()); - assertEquals(program.getZone().getId(), reloadedProgram.getZone().getId()); + assertEquals(program.getZone(), reloadedProgram.getZone()); } } Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java =================================================================== --- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceReadTest.java 2013-03-26 17:02:29 UTC (rev 683) @@ -31,14 +31,12 @@ import fr.ifremer.tutti.persistence.entities.TuttiEntities; 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.ObjectType; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Zone; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Assert; @@ -90,17 +88,23 @@ @Test public void getAllProgramZone() { - List<Zone> result = service.getAllProgramZone(); + List<TuttiLocation> result = service.getAllProgramZone(); assertResultList(result, fixtures.refNbProgramZone()); } @Test public void getAllCountry() { - List<Country> result = service.getAllCountry(); + List<TuttiLocation> result = service.getAllCountry(); assertResultList(result, fixtures.refNbCountry()); } @Test + public void getAllHarbour() { + List<TuttiLocation> result = service.getAllHarbour(); + assertResultList(result, fixtures.refNbHarbour()); + } + + @Test public void getAllObjectType() { List<ObjectType> result = service.getAllObjectType(); assertResultList(result, fixtures.refNbObjectType()); @@ -108,14 +112,14 @@ @Test public void getObjectType() { - ObjectType result = service.getObjectType(fixtures.objectTypeCode()); + ObjectType result = service.getObjectType(fixtures.objectTypeCode()); Assert.assertNotNull(result); } @Test public void getAllFishingOperationStrata(/*String zoneId*/) { String zoneId = dbResource.getFixtures().zoneId(); - List<FishingOperationLocation> result = + List<TuttiLocation> result = service.getAllFishingOperationStrata(zoneId); assertResultList(result, fixtures.refNbStrata()); } @@ -123,7 +127,7 @@ @Test public void getAllFishingOperationSubStrata(/*String zoneId, String strataId*/) { String zoneId = dbResource.getFixtures().zoneId(); - List<FishingOperationLocation> result = + List<TuttiLocation> result = service.getAllFishingOperationSubStrata(zoneId, null); assertResultList(result, 76); @@ -136,7 +140,7 @@ @Test public void getAllFishingOperationLocation(/*String zoneId, String strataId, String subStrataId*/) { String zoneId = dbResource.getFixtures().zoneId(); - List<FishingOperationLocation> result = + List<TuttiLocation> result = service.getAllFishingOperationLocation(zoneId, null, null); assertResultList(result, fixtures.refNbLocalite()); Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2013-03-26 17:02:29 UTC (rev 683) @@ -33,13 +33,11 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; 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.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Zone; import org.nuiton.util.decorator.Decorator; import org.nuiton.util.decorator.DecoratorProvider; @@ -91,14 +89,12 @@ @Override protected void loadDecorators() { - registerTuttiDecorator(Zone.class, "${label}$s#${name}$s", SEPARATOR, " - "); + registerTuttiDecorator(TuttiLocation.class, "${label}$s#${name}$s", SEPARATOR, " - "); registerTuttiDecorator(Cruise.class, "${name}$s", SEPARATOR, " - "); registerTuttiDecorator(TuttiProtocol.class, "${name}$s", SEPARATOR, " - "); registerTuttiDecorator(FishingOperation.class, "${stationNumber}$s#${fishingOperationNumber}$s#${multirigAggregation}$s#${gearShootingStartDate}$td/%4$tm/%4$tY", SEPARATOR, " - "); - registerTuttiDecorator(Country.class, "${label}$s#${name}$s", SEPARATOR, " - "); registerTuttiDecorator(Gear.class, "${label}$s#${name}$s", SEPARATOR, " - "); registerTuttiDecorator(Person.class, "${firstName}$s#${lastName}$s#${department}$s", SEPARATOR, " "); - registerTuttiDecorator(FishingOperationLocation.class, "${label}$s#${name}$s", SEPARATOR, " - "); registerTuttiDecorator(Caracteristic.class, "${parameterName}$s#${matrixName}$s#${fractionName}$s#${methodName}$s", SEPARATOR, " - "); registerTuttiDecorator(Caracteristic.class, CARACTERISTIC_PARAMETER_ONLY, "${parameterName}$s", SEPARATOR, " - "); // registerMultiJXPathDecorator(Caracteristic.class, CARACTERISTIC_WITH_UNIT, "${parameterName}$s#${matrixName}$s#${fractionName}$s#${methodName}$s (${unit}$s)", SEPARATOR, " - "); Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-03-26 17:02:29 UTC (rev 683) @@ -44,14 +44,12 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; 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.ObjectType; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Zone; import fr.ifremer.tutti.persistence.service.TuttiPersistenceServiceLocator; import fr.ifremer.tutti.service.config.TuttiServiceConfig; import org.apache.commons.io.IOUtils; @@ -330,16 +328,21 @@ } @Override - public List<Zone> getAllProgramZone() { + public List<TuttiLocation> getAllProgramZone() { return driver.getAllProgramZone(); } @Override - public List<Country> getAllCountry() { + public List<TuttiLocation> getAllCountry() { return driver.getAllCountry(); } @Override + public List<TuttiLocation> getAllHarbour() { + return driver.getAllHarbour(); + } + + @Override public List<Gear> getAllScientificGear() { return driver.getAllScientificGear(); } @@ -360,17 +363,17 @@ } @Override - public List<FishingOperationLocation> getAllFishingOperationStrata(String zoneId) { + public List<TuttiLocation> getAllFishingOperationStrata(String zoneId) { return driver.getAllFishingOperationStrata(zoneId); } @Override - public List<FishingOperationLocation> getAllFishingOperationSubStrata(String zoneId, String strataId) { + public List<TuttiLocation> getAllFishingOperationSubStrata(String zoneId, String strataId) { return driver.getAllFishingOperationSubStrata(zoneId, strataId); } @Override - public List<FishingOperationLocation> getAllFishingOperationLocation(String zoneId, String strataId, String subStrataId) { + public List<TuttiLocation> getAllFishingOperationLocation(String zoneId, String strataId, String subStrataId) { return driver.getAllFishingOperationLocation(zoneId, strataId, subStrataId); } Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-03-26 17:02:29 UTC (rev 683) @@ -1,35 +1,12 @@ -### -# #%L -# Tutti :: UI -# $Id$ -# $HeadURL$ -# %% -# Copyright (C) 2012 - 2013 Ifremer -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program. If not, see -# <http://www.gnu.org/licenses/gpl-3.0.html>. -# #L% -### #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Mon Mar 25 16:24:40 CET 2013 -tutti.createBenthosBatch.action.addSpecies.help= -tutti.createBenthosBatch.action.cancel.help= -tutti.createBenthosBatch.action.save.help= -tutti.createBenthosBatch.field.batchWeight.help= -tutti.createBenthosBatch.field.sortedUnsortedCategory.help= -tutti.createBenthosBatch.field.species.help= -tutti.createBenthosBatch.help= +#Tue Mar 26 16:11:47 CET 2013 +tutti.createBenthosBatch.action.addSpecies.help=createBenthosBatch.html\#actions +tutti.createBenthosBatch.action.cancel.help=createBenthosBatch.html\#actions +tutti.createBenthosBatch.action.save.help=createBenthosBatch.html\#actions +tutti.createBenthosBatch.field.batchWeight.help=createBenthosBatch.html\#fields +tutti.createBenthosBatch.field.sortedUnsortedCategory.help=createBenthosBatch.html\#fields +tutti.createBenthosBatch.field.species.help=createBenthosBatch.html\#fields +tutti.createBenthosBatch.help=createBenthosBatch.html tutti.createSpeciesBatch.action.addSpecies.help=createSpeciesBatch.html\#actions tutti.createSpeciesBatch.action.cancel.help=createSpeciesBatch.html\#actions tutti.createSpeciesBatch.action.save.help=createSpeciesBatch.html\#actions @@ -45,31 +22,31 @@ tutti.dbManager.action.openDb.help=dbManager.html\#actions tutti.dbManager.action.upgradeDb.help=dbManager.html\#actions tutti.dbManager.help=dbManager.html -tutti.editBenthosBatch.action.createBatch.help= -tutti.editBenthosBatch.action.removeBatch.help= -tutti.editBenthosBatch.action.renameBatch.help= -tutti.editBenthosBatch.action.splitBatch.help= -tutti.editBenthosBatch.field.benthosTotalInertWeight.help= -tutti.editBenthosBatch.field.benthosTotalLivingNotItemizedWeight.help= -tutti.editBenthosBatch.field.benthosTotalSampleSortedWeight.help= -tutti.editBenthosBatch.field.benthosTotalSortedWeight.help= -tutti.editBenthosBatch.field.benthosTotalUnsortedWeight.help= -tutti.editBenthosBatch.field.benthosTotalWeight.help= -tutti.editBenthosBatch.filterBatch.help= +tutti.editBenthosBatch.action.createBatch.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.action.removeBatch.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.action.renameBatch.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.action.splitBatch.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalInertWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalLivingNotItemizedWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalSampleSortedWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalSortedWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalUnsortedWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.filterBatch.help=editBenthosBatch.html\#fields tutti.editBenthosBatch.help=editBenthosBatch.html -tutti.editBenthosFrequencies.action.cancel.help= -tutti.editBenthosFrequencies.action.generate.help= -tutti.editBenthosFrequencies.action.save.help= -tutti.editBenthosFrequencies.field.lengthStepCaracteristic.help= -tutti.editBenthosFrequencies.field.maxStep.help= -tutti.editBenthosFrequencies.field.minStep.help= -tutti.editBenthosFrequencies.field.mode.autoGen.help= -tutti.editBenthosFrequencies.field.mode.rafale.help= -tutti.editBenthosFrequencies.field.mode.simple.help= -tutti.editBenthosFrequencies.field.mode.simpleCounting.help= -tutti.editBenthosFrequencies.field.rafaleStep.help= -tutti.editBenthosFrequencies.field.simpleCounting.help= -tutti.editBenthosFrequencies.field.step.help= +tutti.editBenthosFrequencies.action.cancel.help=editBenthosFrequencies.html\#actions +tutti.editBenthosFrequencies.action.generate.help=editBenthosFrequencies.html\#actions +tutti.editBenthosFrequencies.action.save.help=editBenthosFrequencies.html\#actions +tutti.editBenthosFrequencies.field.lengthStepCaracteristic.help=editBenthosFrequencies.html\#fields +tutti.editBenthosFrequencies.field.maxStep.help=editBenthosFrequencies.html\#fields +tutti.editBenthosFrequencies.field.minStep.help=editBenthosFrequencies.html\#fields +tutti.editBenthosFrequencies.field.mode.autoGen.help=editBenthosFrequencies.html\#fields +tutti.editBenthosFrequencies.field.mode.rafale.help=editBenthosFrequencies.html\#fields +tutti.editBenthosFrequencies.field.mode.simple.help=editBenthosFrequencies.html\#fields +tutti.editBenthosFrequencies.field.mode.simpleCounting.help=editBenthosFrequencies.html\#fields +tutti.editBenthosFrequencies.field.rafaleStep.help=editBenthosFrequencies.html\#fields +tutti.editBenthosFrequencies.field.simpleCounting.help=editBenthosFrequencies.html\#fields +tutti.editBenthosFrequencies.field.step.help=editBenthosFrequencies.html\#fields tutti.editCatchBatch.action.cancelEditCatchBatch.help=editCatchBatch.html\#actions tutti.editCatchBatch.action.computeWeights.help=editCatchBatch.html\#actions tutti.editCatchBatch.action.importPupitri.help=editCatchBatch.html\#actions @@ -96,6 +73,7 @@ tutti.editCruise.field.beginDate.help=editCruise.html\#fields tutti.editCruise.field.comment.help=editCruise.html\#fields tutti.editCruise.field.country.help=editCruise.html\#fields +tutti.editCruise.field.departureLocation.help=editCruise.html\#fields tutti.editCruise.field.endDate.help=editCruise.html\#fields tutti.editCruise.field.gear.help=editCruise.html\#fields tutti.editCruise.field.headOfMission.help=editCruise.html\#fields @@ -103,6 +81,7 @@ tutti.editCruise.field.multirigNumber.help=editCruise.html\#fields tutti.editCruise.field.name.help=editCruise.html\#fields tutti.editCruise.field.program.help=editCruise.html\#fields +tutti.editCruise.field.returnLocation.help=editCruise.html\#fields tutti.editCruise.field.surveyPart.help=editCruise.html\#fields tutti.editCruise.field.vessel.help=editCruise.html\#fields tutti.editCruise.field.year.help=editCruise.html\#fields @@ -144,22 +123,22 @@ tutti.editProgram.field.name.help=editProgram.html\#fields tutti.editProgram.field.zone.help=editProgram.html\#fields tutti.editProgram.help=editProgram.html -tutti.editProtocol.action.addBenthosProtocol.help= +tutti.editProtocol.action.addBenthosProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.addSpeciesProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.closeEditProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.exportProtocolAllCaracteristic.help=editProtocol.html\#actions -tutti.editProtocol.action.exportProtocolBenthos.help= +tutti.editProtocol.action.exportProtocolBenthos.help=editProtocol.html\#actions tutti.editProtocol.action.exportProtocolCaracteristic.tip=editProtocol.html\#actions tutti.editProtocol.action.exportProtocolSpecies.help=editProtocol.html\#actions -tutti.editProtocol.action.importProtocolBenthos.help= +tutti.editProtocol.action.importProtocolBenthos.help=editProtocol.html\#actions tutti.editProtocol.action.importProtocolCaracteristic.help=editProtocol.html\#actions tutti.editProtocol.action.importProtocolSpecies.help=editProtocol.html\#actions -tutti.editProtocol.action.removeBenthosProtocol.help= +tutti.editProtocol.action.removeBenthosProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.removeSpeciesProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.saveProtocol.help=editProtocol.html\#actions -tutti.editProtocol.action.selectOtherBenthos.help= +tutti.editProtocol.action.selectOtherBenthos.help=editProtocol.html\#actions tutti.editProtocol.action.selectOtherSpecies.help=editProtocol.html\#actions -tutti.editProtocol.field.benthos.help= +tutti.editProtocol.field.benthos.help=editProtocol.html\#fields tutti.editProtocol.field.comment.help=editProtocol.html\#fields tutti.editProtocol.field.gearUseFeature.help=editProtocol.html\#fields tutti.editProtocol.field.lengthClasses.help=editProtocol.html\#fields @@ -243,13 +222,13 @@ tutti.selectCruise.field.program.help=selectCruise.html\#fields tutti.selectCruise.field.protocol.help=selectCruise.html\#fields tutti.selectCruise.help=selectCruise.html -tutti.splitBenthosBatch.action.cancel.help= -tutti.splitBenthosBatch.action.save.help= -tutti.splitBenthosBatch.field.batchWeightField.help= -tutti.splitBenthosBatch.field.categoryField.help= -tutti.splitBenthosBatch.field.sampleWeightField.help= -tutti.splitBenthosBatch.field.speciesField.help= -tutti.splitBenthosBatch.help= +tutti.splitBenthosBatch.action.cancel.help=splitBenthosBatch.html\#actions +tutti.splitBenthosBatch.action.save.help=splitBenthosBatch.html\#actions +tutti.splitBenthosBatch.field.batchWeightField.help=splitBenthosBatch.html\#fields +tutti.splitBenthosBatch.field.categoryField.help=splitBenthosBatch.html\#fields +tutti.splitBenthosBatch.field.sampleWeightField.help=splitBenthosBatch.html\#fields +tutti.splitBenthosBatch.field.speciesField.help=splitBenthosBatch.html\#fields +tutti.splitBenthosBatch.help=splitBenthosBatch.html tutti.splitSpeciesBatch.action.cancel.help=splitSpeciesBatch.html\#actions tutti.splitSpeciesBatch.action.save.help=splitSpeciesBatch.html\#actions tutti.splitSpeciesBatch.field.batchWeightField.help=splitSpeciesBatch.html\#fields Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-03-26 17:02:29 UTC (rev 683) @@ -1,28 +1,5 @@ -### -# #%L -# Tutti :: UI -# $Id$ -# $HeadURL$ -# %% -# Copyright (C) 2012 - 2013 Ifremer -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program. If not, see -# <http://www.gnu.org/licenses/gpl-3.0.html>. -# #L% -### #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Mon Mar 25 16:24:40 CET 2013 +#Tue Mar 26 16:11:47 CET 2013 tutti.createBenthosBatch.action.addSpecies.help=createBenthosBatch.html\#actions tutti.createBenthosBatch.action.cancel.help=createBenthosBatch.html\#actions tutti.createBenthosBatch.action.save.help=createBenthosBatch.html\#actions @@ -51,12 +28,12 @@ tutti.editBenthosBatch.action.removeSubBatch.help=editBenthosBatch.html\#actions tutti.editBenthosBatch.action.renameBatch.help=editBenthosBatch.html\#actions tutti.editBenthosBatch.action.splitBatch.help=editBenthosBatch.html\#actions -tutti.editBenthosBatch.field.benthosTotalInertWeight.help= -tutti.editBenthosBatch.field.benthosTotalLivingNotItemizedWeight.help= -tutti.editBenthosBatch.field.benthosTotalSampleSortedWeight.help= -tutti.editBenthosBatch.field.benthosTotalSortedWeight.help= -tutti.editBenthosBatch.field.benthosTotalUnsortedWeight.help= -tutti.editBenthosBatch.field.benthosTotalWeight.help= +tutti.editBenthosBatch.field.benthosTotalInertWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalLivingNotItemizedWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalSampleSortedWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalSortedWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalUnsortedWeight.help=editBenthosBatch.html\#fields +tutti.editBenthosBatch.field.benthosTotalWeight.help=editBenthosBatch.html\#fields tutti.editBenthosBatch.field.speciesTotalInertWeight.help=editBenthosBatch.html\#fields tutti.editBenthosBatch.field.speciesTotalLivingNotItemizedWeight.help=editBenthosBatch.html\#fields tutti.editBenthosBatch.field.speciesTotalSampleSortedWeight.help=editBenthosBatch.html\#fields @@ -105,6 +82,7 @@ tutti.editCruise.field.beginDate.help=editCruise.html\#fields tutti.editCruise.field.comment.help=editCruise.html\#fields tutti.editCruise.field.country.help=editCruise.html\#fields +tutti.editCruise.field.departureLocation.help=editCruise.html\#fields tutti.editCruise.field.endDate.help=editCruise.html\#fields tutti.editCruise.field.gear.help=editCruise.html\#fields tutti.editCruise.field.headOfMission.help=editCruise.html\#fields @@ -112,6 +90,7 @@ tutti.editCruise.field.multirigNumber.help=editCruise.html\#fields tutti.editCruise.field.name.help=editCruise.html\#fields tutti.editCruise.field.program.help=editCruise.html\#fields +tutti.editCruise.field.returnLocation.help=editCruise.html\#fields tutti.editCruise.field.surveyPart.help=editCruise.html\#fields tutti.editCruise.field.vessel.help=editCruise.html\#fields tutti.editCruise.field.year.help=editCruise.html\#fields @@ -153,22 +132,22 @@ tutti.editProgram.field.name.help=editProgram.html\#fields tutti.editProgram.field.zone.help=editProgram.html\#fields tutti.editProgram.help=editProgram.html -tutti.editProtocol.action.addBenthosProtocol.help= +tutti.editProtocol.action.addBenthosProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.addSpeciesProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.closeEditProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.exportProtocolAllCaracteristic.help=editProtocol.html\#actions -tutti.editProtocol.action.exportProtocolBenthos.help= +tutti.editProtocol.action.exportProtocolBenthos.help=editProtocol.html\#actions tutti.editProtocol.action.exportProtocolCaracteristic.tip=editProtocol.html\#actions tutti.editProtocol.action.exportProtocolSpecies.help=editProtocol.html\#actions -tutti.editProtocol.action.importProtocolBenthos.help= +tutti.editProtocol.action.importProtocolBenthos.help=editProtocol.html\#actions tutti.editProtocol.action.importProtocolCaracteristic.help=editProtocol.html\#actions tutti.editProtocol.action.importProtocolSpecies.help=editProtocol.html\#actions -tutti.editProtocol.action.removeBenthosProtocol.help= +tutti.editProtocol.action.removeBenthosProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.removeSpeciesProtocol.help=editProtocol.html\#actions tutti.editProtocol.action.saveProtocol.help=editProtocol.html\#actions -tutti.editProtocol.action.selectOtherBenthos.help= +tutti.editProtocol.action.selectOtherBenthos.help=editProtocol.html\#actions tutti.editProtocol.action.selectOtherSpecies.help=editProtocol.html\#actions -tutti.editProtocol.field.benthos.help= +tutti.editProtocol.field.benthos.help=editProtocol.html\#fields tutti.editProtocol.field.comment.help=editProtocol.html\#fields tutti.editProtocol.field.gearUseFeature.help=editProtocol.html\#fields tutti.editProtocol.field.lengthClasses.help=editProtocol.html\#fields Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDataContext.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDataContext.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDataContext.java 2013-03-26 17:02:29 UTC (rev 683) @@ -158,6 +158,7 @@ } public List<Caracteristic> getCaracteristics() { + checkOpened(); if (caracteristics == null) { if (log.isInfoEnabled()) { log.info("Loading allCaracteristic"); @@ -168,6 +169,7 @@ } public List<Caracteristic> getLengthStepCaracteristics() { + checkOpened(); if (lengthStepCaracteristics == null) { if (uiContext.isProtocolFilled()) { @@ -196,6 +198,7 @@ } public List<Species> getReferentSpeciesWithSurveyCode() { + checkOpened(); if (referentSpeciesWithSurveyCode == null) { if (uiContext.isProtocolFilled()) { @@ -233,6 +236,7 @@ } public List<Species> getReferentBenthosWithSurveyCode() { + checkOpened(); if (referentBenthosWithSurveyCode == null) { if (uiContext.isProtocolFilled()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-03-26 17:02:29 UTC (rev 683) @@ -63,24 +63,9 @@ #nameField { text: {model.getName()}; - _validatorLabel : {_("tutti.editCruise.field.name")}; + _validatorLabel: {_("tutti.editCruise.field.name")}; } -#yearLabel { - text: "tutti.editCruise.field.year"; - labelFor: {yearField}; - toolTipText: "tutti.editCruise.field.year.tip"; - _help: {"tutti.editCruise.field.year.help"}; -} - -#yearField { - property: year; - model: {model.getYear()}; - useFloat: false; - numberPattern: {INT_4_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editCruise.field.year")}; -} - #surveyPartLabel { text: "tutti.editCruise.field.surveyPart"; labelFor: {surveyPartField}; @@ -90,22 +75,35 @@ #surveyPartField { text: {model.getSurveyPart()}; - _validatorLabel : {_("tutti.editCruise.field.surveyPart")}; + _validatorLabel: {_("tutti.editCruise.field.surveyPart")}; } -#countryLabel { - text: "tutti.editCruise.field.country"; - labelFor: {countryComboBox}; - toolTipText: "tutti.editCruise.field.country.tip"; - _help: {"tutti.editCruise.field.country.help"}; +#departureLocationLabel { + text: "tutti.editCruise.field.departureLocation"; + labelFor: {departureLocationComboBox}; + toolTipText: "tutti.editCruise.field.departureLocation.tip"; + _help: {"tutti.editCruise.field.departureLocation.help"}; } -#countryComboBox { - property: country; - selectedItem: {model.getCountry()}; - _validatorLabel : {_("tutti.editCruise.field.country")}; +#departureLocationComboBox { + property: departureLocation; + selectedItem: {model.getDepartureLocation()}; + _validatorLabel: {_("tutti.editCruise.field.departureLocation")}; } +#returnLocationLabel { + text: "tutti.editCruise.field.returnLocation"; + labelFor: {returnLocationComboBox}; + toolTipText: "tutti.editCruise.field.returnLocation.tip"; + _help: {"tutti.editCruise.field.returnLocation.help"}; +} + +#returnLocationComboBox { + property: returnLocation; + selectedItem: {model.getReturnLocation()}; + _validatorLabel: {_("tutti.editCruise.field.returnLocation")}; +} + #programLabel { text: "tutti.editCruise.field.program"; labelFor: {programComboBox}; @@ -116,7 +114,7 @@ #programComboBox { property: program; selectedItem: {model.getProgram()}; - _validatorLabel : {_("tutti.editCruise.field.program")}; + _validatorLabel: {_("tutti.editCruise.field.program")}; } #beginDateLabel { @@ -128,7 +126,7 @@ #beginDateField { date: {model.getBeginDate()}; - _validatorLabel : {_("tutti.editCruise.field.beginDate")}; + _validatorLabel: {_("tutti.editCruise.field.beginDate")}; } #endDateLabel { @@ -140,7 +138,7 @@ #endDateField { date: {model.getEndDate()}; - _validatorLabel : {_("tutti.editCruise.field.endDate")}; + _validatorLabel: {_("tutti.editCruise.field.endDate")}; } #multirigNumberLabel { @@ -155,7 +153,7 @@ model: {model.getMultirigNumber()}; useFloat: false; numberPattern: {INT_1_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editCruise.field.multirigNumber")}; + _validatorLabel: {_("tutti.editCruise.field.multirigNumber")}; } #filterVesselLabel { @@ -190,19 +188,25 @@ buttonGroup: "filterVesselType"; } +#vesselLabel { + text: "tutti.editCruise.field.vessel"; + labelFor: {vesselComboBox}; + toolTipText: "tutti.editCruise.field.vessel.tip"; + _help: {"tutti.editCruise.field.vessel.help"}; +} + #vesselComboBox { - border: {BorderFactory.createTitledBorder(_("tutti.editCruise.field.vessel"))}; property: vessel; selectedItem: {model.getVessel()}; toolTipText: "tutti.editCruise.field.vessel.tip"; - _validatorLabel : {_("tutti.editCruise.field.vessel")}; + _validatorLabel: {_("tutti.editCruise.field.vessel")}; _help: {"tutti.editCruise.field.vessel.help"}; } #gearList { property: gear; border: {BorderFactory.createTitledBorder(_("tutti.editCruise.field.gear"))}; - _validatorLabel : {_("tutti.editCruise.field.gear")}; + _validatorLabel: {_("tutti.editCruise.field.gear")}; toolTipText: "tutti.editCruise.field.gear.tip"; _help: {"tutti.editCruise.field.gear.help"}; } @@ -210,7 +214,7 @@ #headOfMissionList { property: headOfMission; border: {BorderFactory.createTitledBorder(_("tutti.editCruise.field.headOfMission"))}; - _validatorLabel : {_("tutti.editCruise.field.headOfMission")}; + _validatorLabel: {_("tutti.editCruise.field.headOfMission")}; toolTipText: "tutti.editCruise.field.headOfMission.tip"; _help: {"tutti.editCruise.field.headOfMission.help"}; } @@ -218,7 +222,7 @@ #headOfSortRoomList { property: headOfSortRoom; border: {BorderFactory.createTitledBorder(_("tutti.editCruise.field.headOfSortRoom"))}; - _validatorLabel : {_("tutti.editCruise.field.headOfSortRoom")}; + _validatorLabel: {_("tutti.editCruise.field.headOfSortRoom")}; toolTipText: "tutti.editCruise.field.headOfSortRoom.tip"; _help: {"tutti.editCruise.field.headOfSortRoom.help"}; } @@ -231,7 +235,7 @@ #commentField { text: {model.getComment()}; - _validatorLabel : {_("tutti.editCruise.field.comment")}; + _validatorLabel: {_("tutti.editCruise.field.comment")}; } #saveButton { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-03-26 17:02:29 UTC (rev 683) @@ -26,32 +26,25 @@ <import> fr.ifremer.tutti.persistence.entities.data.Program - fr.ifremer.tutti.persistence.entities.referential.Country + fr.ifremer.tutti.persistence.entities.referential.TuttiLocation fr.ifremer.tutti.persistence.entities.referential.Gear fr.ifremer.tutti.persistence.entities.referential.Person fr.ifremer.tutti.persistence.entities.referential.Vessel - fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.TuttiHelpBroker fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.attachment.ButtonAttachment jaxx.runtime.swing.editor.NumberEditor jaxx.runtime.swing.editor.bean.BeanFilterableComboBox - jaxx.runtime.swing.editor.bean.BeanListHeader jaxx.runtime.swing.editor.bean.BeanDoubleList org.jdesktop.swingx.JXDatePicker - javax.swing.DefaultListModel javax.swing.JSeparator - javax.swing.ListSelectionModel javax.swing.SwingConstants - java.awt.Dimension - static org.nuiton.i18n.I18n._ - static jaxx.runtime.SwingUtil.getStringValue </import> <script><![CDATA[ @@ -77,11 +70,11 @@ <BeanValidator id='validator' bean='model' uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> <field name='program' component='programComboBox'/> - <field name='year' component='yearField'/> <field name='surveyPart' component='surveyPartField'/> <field name='name' component='nameField'/> <field name='multirigNumber' component='multirigNumberField'/> - <field name='country' component='countryComboBox'/> + <field name='departureLocation' component='departureLocationComboBox'/> + <field name='returnLocation' component='returnLocationComboBox'/> <field name='beginDate' component='beginDateField'/> <field name='endDate' component='endDateField'/> <field name='vessel' component='vesselComboBox'/> @@ -101,36 +94,68 @@ <Table fill='both' constraints='BorderLayout.CENTER'> - <!-- cruise program / year / program part / name --> + <!-- cruise program / survey part --> <row> <cell anchor='west'> <JLabel id='programLabel'/> </cell> - <cell weightx='1'> + <cell weightx='0.3'> <BeanFilterableComboBox id='programComboBox' constructorParams='this' genericType='Program'/> </cell> - <cell anchor='west'> - <JLabel id='yearLabel'/> - </cell> - <cell weightx='1'> - <NumberEditor id='yearField' constructorParams='this'/> - </cell> <cell> <JLabel id='surveyPartLabel'/> </cell> - <cell weightx='1'> + <cell weightx='0.3'> <JTextField id='surveyPartField' onKeyReleased='handler.setText(event, "surveyPart")'/> </cell> </row> - <!-- cruise name --> + <!-- departure harbour / begin date --> <row> + <cell anchor='west'> + <JLabel id='departureLocationLabel'/> + </cell> <cell> + <BeanFilterableComboBox id='departureLocationComboBox' + constructorParams='this' + genericType='TuttiLocation'/> + </cell> + <cell> + <JLabel id='beginDateLabel'/> + </cell> + <cell> + <JXDatePicker id='beginDateField' + onActionPerformed='handler.setDate(event, "beginDate")'/> + </cell> + </row> + + <!-- landing harbour / end date --> + <row> + <cell anchor='west'> + <JLabel id='returnLocationLabel'/> + </cell> + <cell> + <BeanFilterableComboBox id='returnLocationComboBox' + constructorParams='this' + genericType='TuttiLocation'/> + </cell> + <cell> + <JLabel id='endDateLabel'/> + </cell> + <cell> + <JXDatePicker id='endDateField' + onActionPerformed='handler.setDate(event, "endDate")'/> + </cell> + </row> + + <!-- cruise name / multirigNumber --> + <row> + <cell> <JLabel id='nameLabel'/> </cell> - <cell weightx='0.3'> + <cell> <JTextField id='nameField' onKeyReleased='handler.setText(event, "name")'/> </cell> @@ -138,47 +163,29 @@ <JButton id='generateNameButton' onActionPerformed='handler.generateCampaignName()'/> </cell> - <cell> - <JLabel id='multirigNumberLabel'/> - </cell> - <cell weightx='0.3'> - <NumberEditor id='multirigNumberField' constructorParams='this'/> - </cell> </row> - <!-- cruise country / begin date / end date --> + <!-- cruise name / multirigNumber --> <row> <cell> - <JLabel id='countryLabel'/> + <JLabel id='multirigNumberLabel'/> </cell> - <cell weightx='0.3'> - <BeanFilterableComboBox id='countryComboBox' constructorParams='this' - genericType='Country'/> - </cell> <cell> - <JLabel id='beginDateLabel'/> + <NumberEditor id='multirigNumberField' constructorParams='this'/> </cell> - <cell weightx='0.3'> - <JXDatePicker id='beginDateField' - onActionPerformed='handler.setDate(event, "beginDate")'/> + <cell columns="2"> + <JLabel/> </cell> - <cell> - <JLabel id='endDateLabel'/> - </cell> - <cell weightx='0.3'> - <JXDatePicker id='endDateField' - onActionPerformed='handler.setDate(event, "endDate")'/> - </cell> </row> <!-- cruise vessel / gear --> <row> - <cell columns='6'> + <cell columns='4'> <JSeparator constructorParams='SwingConstants.HORIZONTAL'/> </cell> </row> <row> - <cell columns='6'> + <cell columns='4'> <JPanel id='vesselFilterPane'> <JLabel id='filterVesselLabel'/> <JRadioButton id='filterVesselAllButton' @@ -190,26 +197,25 @@ </JPanel> </cell> </row> - <row weighty='0.3'> - <!--cell> + <row> + <cell> <JLabel id='vesselLabel'/> - </cell--> - <cell weightx='0.3' columns="3"> - <JPanel layout='{new BorderLayout()}'> - <BeanFilterableComboBox id='vesselComboBox' constructorParams='this' - genericType='Vessel' - constraints='BorderLayout.NORTH'/> - </JPanel> + </cell> + <cell columns="3"> + <BeanFilterableComboBox id='vesselComboBox' constructorParams='this' + genericType='Vessel'/> </cell> - <cell columns="3"> + </row> + <row weighty='0.3'> + <cell columns="4"> <BeanDoubleList id='gearList' genericType='Gear'/> </cell> </row> <!-- cruise headOfMission / headOfSortRoom --> <row weighty='0.3'> - <cell columns='6'> + <cell columns='4'> <JPanel layout='{new GridLayout(1, 0)}'> <BeanDoubleList id='headOfMissionList' genericType='Person'/> <BeanDoubleList id='headOfSortRoomList' genericType='Person'/> @@ -219,7 +225,7 @@ <!-- cruise comment --> <row weighty='0.3'> - <cell columns='6'> + <cell columns='4'> <JScrollPane id='commentPane' onFocusGained='commentField.requestFocus()'> <JTextArea id='commentField' @@ -230,7 +236,7 @@ <!-- Form Actions --> <row> - <cell columns='6'> + <cell columns='4'> <JPanel layout='{new GridLayout(1, 0)}'> <JButton id='closeButton'/> <JButton id='saveButton'/> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-03-26 17:02:29 UTC (rev 683) @@ -181,10 +181,14 @@ persistenceService.getAllProgram(), model.getProgram()); - initBeanFilterableComboBox(ui.getCountryComboBox(), - persistenceService.getAllCountry(), - model.getCountry()); + initBeanFilterableComboBox(ui.getDepartureLocationComboBox(), + persistenceService.getAllHarbour(), + model.getDepartureLocation()); + initBeanFilterableComboBox(ui.getReturnLocationComboBox(), + persistenceService.getAllHarbour(), + model.getReturnLocation()); + initBeanFilterableComboBox(ui.getVesselComboBox(), allVesselList, model.getVessel()); @@ -210,7 +214,6 @@ model.setModify(model.isCreate()); registerValidators(validator); - } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java 2013-03-26 17:02:29 UTC (rev 683) @@ -29,9 +29,9 @@ import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.referential.Country; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware; @@ -39,6 +39,7 @@ import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; +import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.List; @@ -59,8 +60,10 @@ public static final String PROPERTY_COMMENT = "comment"; - public static final String PROPERTY_COUNTRY = "country"; + public static final String PROPERTY_DEPARTURE_LOCATION = "departureLocation"; + public static final String PROPERTY_LANDING_LOCATION = "returnLocation"; + public static final String PROPERTY_SURVEY_PART = "surveyPart"; public static final String PROPERTY_VESSEL = "vessel"; @@ -71,8 +74,6 @@ public static final String PROPERTY_HEAD_OF_SORT_ROOM = "headOfSortRoom"; - public static final String PROPERTY_YEAR = "year"; - public static final String PROPERTY_MULTIRIG_NUMBER = "multirigNumber"; public static final String PROPERTY_BEGIN_DATE = "beginDate"; @@ -91,8 +92,10 @@ protected Program program; - protected Country country; + protected TuttiLocation departureLocation; + protected TuttiLocation returnLocation; + protected String name; protected String surveyPart; @@ -107,8 +110,6 @@ protected String comment; - protected Integer year; - protected Integer multirigNumber; protected Date beginDate; @@ -161,16 +162,26 @@ firePropertyChange(PROPERTY_COMMENT, oldValue, comment); } - public Country getCountry() { - return country; + public TuttiLocation getDepartureLocation() { + return departureLocation; } - public void setCountry(Country country) { - Object oldValue = getCountry(); - this.country = country; - firePropertyChange(PROPERTY_COUNTRY, oldValue, country); + public void setDepartureLocation(TuttiLocation departureLocation) { + Object oldValue = getDepartureLocation(); + this.departureLocation = departureLocation; + firePropertyChange(PROPERTY_DEPARTURE_LOCATION, oldValue, departureLocation); } + public TuttiLocation getReturnLocation() { + return returnLocation; + } + + public void setReturnLocation(TuttiLocation returnLocation) { + Object oldValue = getReturnLocation(); + this.returnLocation = returnLocation; + firePropertyChange(PROPERTY_LANDING_LOCATION, oldValue, returnLocation); + } + public String getSurveyPart() { return surveyPart; } @@ -179,16 +190,6 @@ Object oldValue = getSurveyPart(); this.surveyPart = surveyPart; firePropertyChange(PROPERTY_SURVEY_PART, oldValue, surveyPart); - } - - public Integer getYear() { - return year; - } - - public void setYear(Integer year) { - Object oldValue = getYear(); - this.year = year; - firePropertyChange(PROPERTY_YEAR, oldValue, year); firePropertyChange(PROPERTY_CAN_GENERATE_NAME, null, isCanGenerateName()); } @@ -210,6 +211,7 @@ Object oldValue = getBeginDate(); this.beginDate = beginDate; firePropertyChange(PROPERTY_BEGIN_DATE, oldValue, beginDate); + firePropertyChange(PROPERTY_CAN_GENERATE_NAME, null, isCanGenerateName()); } public Date getEndDate() { @@ -289,12 +291,20 @@ } public boolean isCanGenerateName() { - return program != null && year != null; + return program != null && beginDate != null; } public static final String CRUISE_NAME_FORMAT = "%1$s_%2$s"; public String getGeneratedCampaignName() { + int year; + if (beginDate == null) { + year = 0; + } else { + Calendar c = Calendar.getInstance(); + c.setTime(beginDate); + year = c.get(Calendar.YEAR); + } String result = String.format(CRUISE_NAME_FORMAT, program.getName(), year); if (StringUtils.isNotEmpty(surveyPart)) { result += "_" + surveyPart; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-03-26 17:02:29 UTC (rev 683) @@ -55,7 +55,7 @@ beanType: {Program.class}; selectedItem: {model.getProgram()}; enabled: {!programCombobox.isEmpty()}; - _validatorLabel : {_("tutti.selectCruise.field.program")}; + _validatorLabel: {_("tutti.selectCruise.field.program")}; } #editProgramButton { @@ -89,7 +89,7 @@ property: cruise; selectedItem: {model.getCruise()}; enabled: {!cruiseCombobox.isEmpty()}; - _validatorLabel : {_("tutti.selectCruise.field.cruise")}; + _validatorLabel: {_("tutti.selectCruise.field.cruise")}; } #editCruiseButton { @@ -124,7 +124,7 @@ property: protocol; selectedItem: {model.getProtocol()}; enabled: {!protocolCombobox.isEmpty()}; - _validatorLabel : {_("tutti.selectCruise.field.protocol")}; + _validatorLabel: {_("tutti.selectCruise.field.protocol")}; } #newProtocolComboBox { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-03-26 17:02:29 UTC (rev 683) @@ -31,8 +31,8 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; 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.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.content.operation.catches.ComputeWeightsAction; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; @@ -398,17 +398,15 @@ } else { //if (!bean.equals(editFishingOperationUIModel.getFishingOperation()) || handler.isAModelModified()) { - FishingOperationLocation strata = bean.getStrata(); - FishingOperationLocation subStrata = bean.getSubStrata(); - FishingOperationLocation location = bean.getLocation(); + TuttiLocation strata = bean.getStrata(); + TuttiLocation subStrata = bean.getSubStrata(); + TuttiLocation location = bean.getLocation(); Cruise cruise = bean.getCruise(); if (cruise != null) { + // update gear universe ui.getGearComboBox().setData(Lists.newArrayList(cruise.getGear())); - - // update vessel universe - ui.getVesselComboBox().setData(Lists.newArrayList(cruise.getVessel())); } editFishingOperationUIModel.fromBean(bean); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-03-26 17:02:29 UTC (rev 683) @@ -89,7 +89,7 @@ #stationNumberField { text: {model.getStationNumber()}; - _validatorLabel : {_("tutti.editFishingOperation.field.stationNumber")}; + _validatorLabel: {_("tutti.editFishingOperation.field.stationNumber")}; _selectOnFocus: {true}; } @@ -105,7 +105,7 @@ model: {model.getFishingOperationNumber()}; useFloat: false; numberPattern: {INT_6_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editFishingOperation.field.fishingOperationNumber")}; + _validatorLabel: {_("tutti.editFishingOperation.field.fishingOperationNumber")}; } #strataLabel { @@ -118,7 +118,7 @@ #strataComboBox { property: strata; selectedItem: {model.getStrata()}; - _validatorLabel : {_("tutti.editFishingOperation.field.strata")}; + _validatorLabel: {_("tutti.editFishingOperation.field.strata")}; } #subStrataLabel { @@ -131,7 +131,7 @@ #subStrataComboBox { property: subStrata; selectedItem: {model.getSubStrata()}; - _validatorLabel : {_("tutti.editFishingOperation.field.subStrata")}; + _validatorLabel: {_("tutti.editFishingOperation.field.subStrata")}; } #locationLabel { @@ -144,33 +144,33 @@ #locationComboBox { property: location; selectedItem: {model.getLocation()}; - _validatorLabel : {_("tutti.editFishingOperation.field.location")}; + _validatorLabel: {_("tutti.editFishingOperation.field.location")}; } #gearLongitudeLabel { text: {handler.getGearLongitudeLabelText(handler.getConfig().getCoordinateEditorType())}; - actionIcon: "coordinates"; + actionIcon: coordinates; toolTipText: "tutti.editFishingOperation.field.gearLongitude.tip"; _help: {"tutti.editFishingOperation.field.gearLongitude.help"}; } #gearLatitudeLabel { text: {handler.getGearLatitudeLabelText(handler.getConfig().getCoordinateEditorType())}; - actionIcon: "coordinates"; + actionIcon: coordinates; toolTipText: "tutti.editFishingOperation.field.gearLatitude.tip"; _help: {"tutti.editFishingOperation.field.gearLatitude.help"}; } #gearDateLabel { text: "tutti.editFishingOperation.field.gearDate"; - actionIcon: "calendar"; + actionIcon: calendar; toolTipText: "tutti.editFishingOperation.field.gearDate.tip"; _help: {"tutti.editFishingOperation.field.gearDate.help"}; } #gearTimeLabel { text: "tutti.editFishingOperation.field.gearTime"; - actionIcon: "time"; + actionIcon: time; toolTipText: "tutti.editFishingOperation.field.gearTime.tip"; _help: {"tutti.editFishingOperation.field.gearTime.help"}; } @@ -197,22 +197,20 @@ #vesselLabel { text: "tutti.editFishingOperation.field.vessel"; - labelFor: {vesselComboBox}; - actionIcon: "vessel"; + labelFor: {vesselField}; + actionIcon: vessel; toolTipText: "tutti.editFishingOperation.field.vessel.tip"; _help: {"tutti.editFishingOperation.field.vessel.help"}; } -#vesselComboBox { - property: vessel; - selectedItem: {model.getVessel()}; - _validatorLabel : {_("tutti.editFishingOperation.field.vessel")}; +#vesselField { + text: {handler.decorateVessel(model.getVessel())}; } #gearLabel { text: "tutti.editFishingOperation.field.gear"; labelFor: {gearComboBox}; - actionIcon: "gear"; + actionIcon: gear; toolTipText: "tutti.editFishingOperation.field.gear.tip"; _help: {"tutti.editFishingOperation.field.gear.help"}; } @@ -220,7 +218,7 @@ #gearComboBox { property: gear; selectedItem: {model.getGear()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gear")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gear")}; } #multirigAggregationLabel { @@ -232,7 +230,7 @@ #multirigAggregationField { text: {model.getMultirigAggregation()}; - _validatorLabel : {_("tutti.editFishingOperation.field.multirigAggregation")}; + _validatorLabel: {_("tutti.editFishingOperation.field.multirigAggregation")}; } .degree { @@ -272,32 +270,32 @@ property: gearShootingStartLongitudeDegree; model: {model.getGearShootingStartLongitudeDegree()}; numberPattern: {SIGNED_INT_3_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLongitudeDegree")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLongitudeDegree")}; } #gearShootingStartLongitudeDMSMinuteField { property: gearShootingStartLongitudeMinute; model: {model.getGearShootingStartLongitudeMinute()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLongitudeMinute")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLongitudeMinute")}; } #gearShootingStartLongitudeDMSSecondField { property: gearShootingStartLongitudeSecond; model: {model.getGearShootingStartLongitudeSecond()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLongitudeSecond")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLongitudeSecond")}; } #gearShootingStartLongitudeDMDDegreeField { property: gearShootingStartLongitudeDegree; model: {model.getGearShootingStartLongitudeDegree()}; numberPattern: {SIGNED_INT_3_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLongitudeDegree")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLongitudeDegree")}; } #gearShootingStartLongitudeDMDMinuteField { property: gearShootingStartLongitudeDecimalMinute; model: {model.getGearShootingStartLongitudeDecimalMinute()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLongitudeMinute")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLongitudeMinute")}; } #gearShootingStartLongitudeDDField { @@ -306,7 +304,7 @@ showReset: false; useFloat: true; useSign: true; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLongitude")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLongitude")}; } #gearShootingStartLatitudePanel { @@ -319,32 +317,32 @@ property: gearShootingStartLatitudeDegree; model: {model.getGearShootingStartLatitudeDegree()}; numberPattern: {SIGNED_INT_2_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLatitudeDegree")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLatitudeDegree")}; } #gearShootingStartLatitudeDMSMinuteField { property: gearShootingStartLatitudeMinute; model: {model.getGearShootingStartLatitudeMinute()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLatitudeMinute")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLatitudeMinute")}; } #gearShootingStartLatitudeDMSSecondField { property: gearShootingStartLatitudeSecond; model: {model.getGearShootingStartLatitudeSecond()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLatitudeSecond")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLatitudeSecond")}; } #gearShootingStartLatitudeDMDDegreeField { property: gearShootingStartLatitudeDegree; model: {model.getGearShootingStartLatitudeDegree()}; numberPattern: {SIGNED_INT_2_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLatitudeDegree")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLatitudeDegree")}; } #gearShootingStartLatitudeDMDMinuteField { property: gearShootingStartLatitudeDecimalMinute; model: {model.getGearShootingStartLatitudeDecimalMinute()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLatitudeMinute")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLatitudeMinute")}; } #gearShootingStartLatitudeDDField { @@ -353,12 +351,12 @@ showReset: false; useFloat: true; useSign: true; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartLatitude")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartLatitude")}; } #gearShootingStartDateField { date: {model.getGearShootingStartDate()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingStartDate")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingStartDate")}; } #gearShootingStartTimeField { @@ -376,32 +374,32 @@ property: gearShootingEndLongitudeDegree; model: {model.getGearShootingEndLongitudeDegree()}; numberPattern: {SIGNED_INT_3_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLongitudeDegree")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLongitudeDegree")}; } #gearShootingEndLongitudeDMSMinuteField { property: gearShootingEndLongitudeMinute; model: {model.getGearShootingEndLongitudeMinute()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLongitudeMinute")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLongitudeMinute")}; } #gearShootingEndLongitudeDMSSecondField { property: gearShootingEndLongitudeSecond; model: {model.getGearShootingEndLongitudeSecond()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLongitudeSecond")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLongitudeSecond")}; } #gearShootingEndLongitudeDMDDegreeField { property: gearShootingEndLongitudeDegree; model: {model.getGearShootingEndLongitudeDegree()}; numberPattern: {SIGNED_INT_3_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLongitudeDegree")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLongitudeDegree")}; } #gearShootingEndLongitudeDMDMinuteField { property: gearShootingEndLongitudeDecimalMinute; model: {model.getGearShootingEndLongitudeDecimalMinute()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLongitudeMinute")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLongitudeMinute")}; } #gearShootingEndLongitudeDDField { @@ -410,7 +408,7 @@ showReset: false; useFloat: true; useSign: true; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLongitude")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLongitude")}; } #gearShootingEndLatitudePanel { @@ -423,32 +421,32 @@ property: gearShootingEndLatitudeDegree; model: {model.getGearShootingEndLatitudeDegree()}; numberPattern: {SIGNED_INT_2_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLatitudeDegree")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLatitudeDegree")}; } #gearShootingEndLatitudeDMSMinuteField { property: gearShootingEndLatitudeMinute; model: {model.getGearShootingEndLatitudeMinute()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLatitudeMinute")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLatitudeMinute")}; } #gearShootingEndLatitudeDMSSecondField { property: gearShootingEndLatitudeSecond; model: {model.getGearShootingEndLatitudeSecond()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLatitudeSecond")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLatitudeSecond")}; } #gearShootingEndLatitudeDMDDegreeField { property: gearShootingEndLatitudeDegree; model: {model.getGearShootingEndLatitudeDegree()}; numberPattern: {SIGNED_INT_2_DIGITS_PATTERN}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLatitudeDegree")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLatitudeDegree")}; } #gearShootingEndLatitudeDMDMinuteField { property: gearShootingEndLatitudeDecimalMinute; model: {model.getGearShootingEndLatitudeDecimalMinute()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLatitudeMinute")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLatitudeMinute")}; } #gearShootingEndLatitudeDDField { @@ -457,12 +455,12 @@ showReset: false; useFloat: true; useSign: true; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndLatitude")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndLatitude")}; } #gearShootingEndDateField { date: {model.getGearShootingEndDate()}; - _validatorLabel : {_("tutti.editFishingOperation.field.gearShootingEndDate")}; + _validatorLabel: {_("tutti.editFishingOperation.field.gearShootingEndDate")}; } #gearShootingEndTimeField { @@ -474,7 +472,7 @@ floatable: false; borderPainted: false; opaque: false; - _validatorLabel : {_("tutti.editFishingOperation.field.fishingOperationValidity")}; + _validatorLabel: {_("tutti.editFishingOperation.field.fishingOperationValidity")}; toolTipText: "tutti.editFishingOperation.field.fishingOperationValid.tip"; _help: {"tutti.editFishingOperation.field.fishingOperationValid.help"}; } @@ -517,7 +515,7 @@ numberPattern: {INT_6_DIGITS_PATTERN}; enabled: {!model.isFishingOperationRectiligne()}; toolTipText: {handler.getTrawlDistanceTooltipText(model.getTrawlDistance())}; - _validatorLabel : {_("tutti.editFishingOperation.field.trawlDistance")}; + _validatorLabel: {_("tutti.editFishingOperation.field.trawlDistance")}; } #durationLabel { @@ -530,13 +528,13 @@ #durationField { text: {handler.getDuration(model.getGearShootingStartDate(), model.getGearShootingEndDate())}; enabled: false; - _validatorLabel : {_("tutti.editFishingOperation.field.duration")}; + _validatorLabel: {_("tutti.editFishingOperation.field.duration")}; } #recorderPersonList { property: recorderPerson; border: {BorderFactory.createTitledBorder(_("tutti.editFishingOperation.field.recorderPerson"))}; - _validatorLabel : {_("tutti.editFishingOperation.field.recorderPerson")}; + _validatorLabel: {_("tutti.editFishingOperation.field.recorderPerson")}; toolTipText: "tutti.editFishingOperation.field.recorderPerson.tip"; _help: {"tutti.editFishingOperation.field.recorderPerson.help"}; } @@ -549,7 +547,7 @@ #commentField { text: {model.getComment()}; - _validatorLabel : {_("tutti.editFishingOperation.field.comment")}; + _validatorLabel: {_("tutti.editFishingOperation.field.comment")}; } #resetValidStateButton { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-03-26 17:02:29 UTC (rev 683) @@ -25,7 +25,7 @@ decorator='help' implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditFishingOperationUIModel, EditFishingOperationUIHandler>'> <import> - fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation + fr.ifremer.tutti.persistence.entities.referential.TuttiLocation fr.ifremer.tutti.persistence.entities.referential.Gear fr.ifremer.tutti.persistence.entities.referential.Person fr.ifremer.tutti.persistence.entities.referential.Vessel @@ -77,7 +77,6 @@ <field name='comment' component='commentPane'/> <field name='recorderPerson' component='recorderPersonList'/> <field name='trawlDistance' component='trawlDistanceField'/> - <field name='vessel' component='vesselComboBox'/> <field name='gear' component='gearComboBox'/> <field name='multirigAggregation' component='multirigAggregationField'/> <field name='gearShootingStartLatitude' @@ -195,7 +194,7 @@ <cell weightx='0.3'> <BeanFilterableComboBox id='strataComboBox' constructorParams='this' - genericType='FishingOperationLocation'/> + genericType='TuttiLocation'/> </cell> <cell> <JLabel id='subStrataLabel'/> @@ -203,7 +202,7 @@ <cell weightx='0.3'> <BeanFilterableComboBox id='subStrataComboBox' constructorParams='this' - genericType='FishingOperationLocation'/> + genericType='TuttiLocation'/> </cell> <cell> <JLabel id='locationLabel'/> @@ -211,7 +210,7 @@ <cell weightx='0.3'> <BeanFilterableComboBox id='locationComboBox' constructorParams='this' - genericType='FishingOperationLocation'/> + genericType='TuttiLocation'/> </cell> </row> @@ -466,9 +465,7 @@ <JLabel id='vesselLabel'/> </cell> <cell weightx="1.0" fill="both"> - <BeanFilterableComboBox id='vesselComboBox' - constructorParams='this' - genericType='Vessel'/> + <JLabel id='vesselField'/> </cell> </row> <row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-03-26 17:02:29 UTC (rev 683) @@ -31,11 +31,10 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.persistence.entities.referential.Zone; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.fishing.AbstractCaracteristicTabUIModel; @@ -187,7 +186,7 @@ @Override public void propertyChange(PropertyChangeEvent evt) { EditFishingOperationUIModel source = (EditFishingOperationUIModel) evt.getSource(); - FishingOperationLocation newStrata = (FishingOperationLocation) evt.getNewValue(); + TuttiLocation newStrata = (TuttiLocation) evt.getNewValue(); onSelectedStrata(source, newStrata); } }); @@ -196,7 +195,7 @@ @Override public void propertyChange(PropertyChangeEvent evt) { EditFishingOperationUIModel source = (EditFishingOperationUIModel) evt.getSource(); - FishingOperationLocation newStrata = (FishingOperationLocation) evt.getNewValue(); + TuttiLocation newStrata = (TuttiLocation) evt.getNewValue(); onSelectedSubStrata(source, newStrata); } }); @@ -249,10 +248,6 @@ people, model.getRecorderPerson()); - initBeanFilterableComboBox(ui.getVesselComboBox(), - Lists.<Vessel>newArrayList(), - null); - initBeanFilterableComboBox(ui.getGearComboBox(), Lists.<Gear>newArrayList(), null); @@ -266,25 +261,25 @@ Preconditions.checkNotNull(program, "Could not find program in ui context"); - Zone zone = program.getZone(); + TuttiLocation zone = program.getZone(); - FishingOperationLocation strata = model.getStrata(); + TuttiLocation strata = model.getStrata(); String strataId = strata == null ? null : strata.getId(); - FishingOperationLocation subStrata = model.getSubStrata(); + TuttiLocation subStrata = model.getSubStrata(); String substrataId = subStrata == null ? null : subStrata.getId(); - FishingOperationLocation location = model.getLocation(); + TuttiLocation location = model.getLocation(); String zoneId = zone.getId(); - List<FishingOperationLocation> stratas = + List<TuttiLocation> stratas = persistenceService.getAllFishingOperationStrata(zoneId); - List<FishingOperationLocation> subStratas = + List<TuttiLocation> subStratas = persistenceService.getAllFishingOperationSubStrata(zoneId, strataId); - List<FishingOperationLocation> locations = + List<TuttiLocation> locations = persistenceService.getAllFishingOperationLocation(zoneId, strataId, substrataId); initBeanFilterableComboBox(ui.getStrataComboBox(), stratas, strata); @@ -543,7 +538,7 @@ //------------------------------------------------------------------------// protected void onSelectedStrata(EditFishingOperationUIModel model, - FishingOperationLocation newStrata) { + TuttiLocation newStrata) { // reset substrata value model.setSubStrata(null); @@ -551,15 +546,15 @@ // reset sub strata combo ui.getSubStrataComboBox().setData(null); - Zone zone = getDataContext().getProgram().getZone(); + TuttiLocation zone = getDataContext().getProgram().getZone(); String zoneId = zone.getId(); String strataId = newStrata == null ? null : newStrata.getId(); - List<FishingOperationLocation> subStrata = + List<TuttiLocation> subStrata = persistenceService.getAllFishingOperationSubStrata(zoneId, strataId); - List<FishingOperationLocation> location = + List<TuttiLocation> location = persistenceService.getAllFishingOperationLocation(zoneId, strataId, null); ui.getSubStrataComboBox().setData(subStrata); @@ -585,22 +580,22 @@ } protected void onSelectedSubStrata(EditFishingOperationUIModel model, - FishingOperationLocation newSubStrata) { + TuttiLocation newSubStrata) { // reset localite value model.setLocation(null); // reset localite combo ui.getLocationComboBox().setData(null); - Zone zone = getDataContext().getProgram().getZone(); + TuttiLocation zone = getDataContext().getProgram().getZone(); String zoneId = zone.getId(); - FishingOperationLocation strata = model.getStrata(); + TuttiLocation strata = model.getStrata(); String subStrataId = newSubStrata == null ? null : newSubStrata.getId(); String strataId = strata == null ? null : strata.getId(); - List<FishingOperationLocation> location = + List<TuttiLocation> location = persistenceService.getAllFishingOperationLocation(zoneId, strataId, subStrataId); ui.getLocationComboBox().setData(location); @@ -648,4 +643,15 @@ getModel().removeAllAttachment(getModel().getAttachment()); getModel().addAllAttachment(attachments); } + + public String decorateVessel(Vessel vessel) { + String result; + if (vessel == null) { + result = ""; + } else { + result = "<html><strong>" + decorate(vessel) + + "</strong></html>"; + } + return result; + } } 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 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-03-26 17:02:29 UTC (rev 683) @@ -30,9 +30,9 @@ import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.spatial.SexagecimalPosition; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; @@ -153,10 +153,12 @@ protected Integer fishingOperationNumber; - protected FishingOperationLocation strata; + protected TuttiLocation strata; - protected FishingOperationLocation subStrata; + protected TuttiLocation subStrata; + protected TuttiLocation location; + protected SexagecimalPosition gearShootingStartLatitudeAsSexagecimal; protected SexagecimalPosition gearShootingStartLongitudeAsSexagecimal; @@ -183,8 +185,6 @@ protected Boolean fishingOperationValid; - protected FishingOperationLocation location; - protected String comment; protected List<Person> recorderPerson = Lists.newArrayList(); @@ -315,21 +315,21 @@ firePropertyChange(PROPERTY_FISHING_OPERATION_NUMBER, oldValue, fishingOperationNumber); } - public FishingOperationLocation getStrata() { + public TuttiLocation getStrata() { return strata; } - public void setStrata(FishingOperationLocation strata) { + public void setStrata(TuttiLocation strata) { Object oldValue = getStrata(); this.strata = strata; firePropertyChange(PROPERTY_STRATA, oldValue, strata); } - public FishingOperationLocation getSubStrata() { + public TuttiLocation getSubStrata() { return subStrata; } - public void setSubStrata(FishingOperationLocation subStrata) { + public void setSubStrata(TuttiLocation subStrata) { Object oldValue = getSubStrata(); this.subStrata = subStrata; firePropertyChange(PROPERTY_SUB_STRATA, oldValue, subStrata); @@ -686,11 +686,11 @@ firePropertyChange(PROPERTY_FISHING_OPERATION_VALID, oldValue, fishingOperationValid); } - public FishingOperationLocation getLocation() { + public TuttiLocation getLocation() { return location; } - public void setLocation(FishingOperationLocation location) { + public void setLocation(TuttiLocation location) { Object oldValue = getLocation(); this.location = location; firePropertyChange(PROPERTY_LOCATION, oldValue, location); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-03-26 17:02:29 UTC (rev 683) @@ -385,6 +385,13 @@ initUI(ui); +// SwingUtil.applyDataBinding( +// ui, +// SpeciesBatchUI.BINDING_CREATE_SPECIES_MELAG_MENU_ENABLED, +// SpeciesBatchUI.BINDING_REMOVE_SPECIES_BATCH_MENU_ENABLED, +// SpeciesBatchUI.BINDING_REMOVE_SPECIES_SUB_BATCH_MENU_ENABLED, +// SpeciesBatchUI.BINDING_RENAME_SPECIES_BATCH_MENU_ENABLED); + Map<Integer, SampleCategoryEnum> categoryEnumMap = SampleCategoryEnum.toIdMapping(); @@ -548,6 +555,7 @@ } }); + recomputeBatchActionEnable(); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-03-26 17:02:29 UTC (rev 683) @@ -49,7 +49,7 @@ #nameField { text: {model.getName()}; - _validatorLabel : {_("tutti.editProgram.field.name")}; + _validatorLabel: {_("tutti.editProgram.field.name")}; } #descriptionPane { @@ -60,7 +60,7 @@ #descriptionField { text: {getStringValue(model.getDescription())}; - _validatorLabel : {_("tutti.editProgram.field.description")}; + _validatorLabel: {_("tutti.editProgram.field.description")}; } #zoneLabel { @@ -73,7 +73,7 @@ #zoneComboBox { property: zone; selectedItem: {model.getZone()}; - _validatorLabel : {_("tutti.editProgram.field.zone")}; + _validatorLabel: {_("tutti.editProgram.field.zone")}; } #saveButton { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-03-26 17:02:29 UTC (rev 683) @@ -25,17 +25,13 @@ implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditProgramUIModel, EditProgramUIHandler>'> <import> - fr.ifremer.tutti.persistence.entities.referential.Zone + fr.ifremer.tutti.persistence.entities.referential.TuttiLocation - fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.TuttiHelpBroker fr.ifremer.tutti.ui.swing.util.TuttiUI jaxx.runtime.swing.editor.bean.BeanFilterableComboBox - java.awt.Dimension - javax.swing.ListSelectionModel - static org.nuiton.i18n.I18n._ static jaxx.runtime.SwingUtil.getStringValue </import> @@ -90,7 +86,7 @@ </cell> <cell> <BeanFilterableComboBox id='zoneComboBox' constructorParams='this' - genericType='Zone'/> + genericType='TuttiLocation'/> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel.java 2013-03-26 17:02:29 UTC (rev 683) @@ -25,7 +25,7 @@ */ import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.referential.Zone; +import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -52,7 +52,7 @@ protected String description; - protected Zone zone; + protected TuttiLocation zone; private List<Program> existingPrograms; @@ -88,11 +88,11 @@ firePropertyChange(PROPERTY_COMMENT, oldValue, description); } - public Zone getZone() { + public TuttiLocation getZone() { return zone; } - public void setZone(Zone zone) { + public void setZone(TuttiLocation zone) { Object oldValue = getZone(); this.zone = zone; firePropertyChange(PROPERTY_ZONE, oldValue, zone); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-26 17:02:29 UTC (rev 683) @@ -705,7 +705,7 @@ protected String decorate(Object object, String context) { String result = ""; if (object != null) { - getDecorator(object.getClass(), context).toString(object); + result = getDecorator(object.getClass(), context).toString(object); } return result; } Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml 2013-03-26 17:02:29 UTC (rev 683) @@ -39,12 +39,18 @@ </field-validator> </field> - <field name="year"> + <field name="departureLocation"> <field-validator type="required" short-circuit="true"> - <message>tutti.validator.error.cruise.year.required</message> + <message>tutti.validator.error.cruise.departureLocation.required</message> </field-validator> </field> + <field name="returnLocation"> + <field-validator type="required" short-circuit="true"> + <message>tutti.validator.error.cruise.returnLocation.required</message> + </field-validator> + </field> + <field name="multirigNumber"> <field-validator type="required" short-circuit="true"> <message>tutti.validator.error.cruise.multirigNumber.required</message> @@ -77,13 +83,6 @@ </field-validator> </field> - - <field name="country"> - <field-validator type="required" short-circuit="true"> - <message>tutti.validator.error.cruise.country.required</message> - </field-validator> - </field> - <field name="vessel"> <field-validator type="required" short-circuit="true"> <message>tutti.validator.error.cruise.vessel.required</message> Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-03-26 17:02:29 UTC (rev 683) @@ -338,6 +338,8 @@ tutti.editCruise.field.comment.tip= tutti.editCruise.field.country= tutti.editCruise.field.country.tip= +tutti.editCruise.field.departureLocation= +tutti.editCruise.field.departureLocation.tip= tutti.editCruise.field.endDate= tutti.editCruise.field.endDate.tip= tutti.editCruise.field.gear= @@ -352,6 +354,8 @@ tutti.editCruise.field.name.tip= tutti.editCruise.field.program= tutti.editCruise.field.program.tip= +tutti.editCruise.field.returnLocation= +tutti.editCruise.field.returnLocation.tip= tutti.editCruise.field.surveyPart= tutti.editCruise.field.surveyPart.tip= tutti.editCruise.field.vessel= @@ -975,6 +979,7 @@ tutti.validator.error.cruise.beginDate.required= tutti.validator.error.cruise.country.required= tutti.validator.error.cruise.dates.endBeforeStart= +tutti.validator.error.cruise.departureLocation.required= tutti.validator.error.cruise.endDate.required= tutti.validator.error.cruise.gear.required= tutti.validator.error.cruise.headOfMission.required= @@ -982,6 +987,7 @@ tutti.validator.error.cruise.multirigNumber.required= tutti.validator.error.cruise.name.required= tutti.validator.error.cruise.program.required= +tutti.validator.error.cruise.returnLocation.required= tutti.validator.error.cruise.vessel.required= tutti.validator.error.cruise.year.required= tutti.validator.error.fishingOperation.catcher.required= Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-03-26 16:47:05 UTC (rev 682) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-03-26 17:02:29 UTC (rev 683) @@ -347,8 +347,8 @@ tutti.editCruise.field.beginDate.tip= tutti.editCruise.field.comment=Commentaire tutti.editCruise.field.comment.tip= -tutti.editCruise.field.country=Pays -tutti.editCruise.field.country.tip= +tutti.editCruise.field.departureLocation=Port de départ +tutti.editCruise.field.departureLocation.tip= tutti.editCruise.field.endDate=Date de fin tutti.editCruise.field.endDate.tip= tutti.editCruise.field.gear=Engin(s) @@ -363,12 +363,12 @@ tutti.editCruise.field.name.tip= tutti.editCruise.field.program=Série tutti.editCruise.field.program.tip= +tutti.editCruise.field.returnLocation=Port d'arrivée +tutti.editCruise.field.returnLocation.tip= tutti.editCruise.field.surveyPart=Série partielle tutti.editCruise.field.surveyPart.tip= -tutti.editCruise.field.vessel=Navire(s) +tutti.editCruise.field.vessel=Navire tutti.editCruise.field.vessel.tip= -tutti.editCruise.field.year=Année -tutti.editCruise.field.year.tip= tutti.editCruise.filterVessel.tip= tutti.editCruise.filterVesselType=Filtre \: tutti.editCruise.filterVesselType.all=Tout @@ -983,6 +983,7 @@ tutti.validator.error.cruise.beginDate.required=La date de début est obligatoire tutti.validator.error.cruise.country.required=Le pays est obligatoire tutti.validator.error.cruise.dates.endBeforeStart=La date de fin doit être après la date de début +tutti.validator.error.cruise.departureLocation.required=Le port d'embarquement est obligatoire tutti.validator.error.cruise.endDate.required=La date de fin est obligatoire tutti.validator.error.cruise.gear.required=Au moins un engin doit être sélectionné tutti.validator.error.cruise.headOfMission.required=Au moins un chef de mission doit être sélectionné @@ -990,6 +991,7 @@ tutti.validator.error.cruise.multirigNumber.required=Le nombre de poche est obligatoire tutti.validator.error.cruise.name.required=Le nom de la campagne est obligatoire tutti.validator.error.cruise.program.required=La série est obligatoire +tutti.validator.error.cruise.returnLocation.required=Le port de débarquement est obligatoire tutti.validator.error.cruise.vessel.required=Au moins un bateau doit être sélectionné tutti.validator.error.cruise.year.required=L'année est obligatoire tutti.validator.error.fishingOperation.catcher.required=Au moins un saisisseur est obligatoire
participants (1)
-
tchemit@users.forge.codelutin.com