Tutti-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- 4058 discussions
See <http://ci.nuiton.org/jenkins/job/tutti/608/changes>
Changes:
[Tony Chemit] refs #1875: [IMP/EXP] - Export des données de campagne : format générique (debut)
------------------------------------------
[...truncated 151 lines...]
main:
[mkdir] Created dir: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/s…>
[INFO] Executed tasks
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-testResources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ tutti-persistence ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 7 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-testResources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-testCompile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ tutti-persistence ---
[INFO] Compiling 34 source files to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/t…>
mojoSucceeded org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-testCompile)
mojoStarted org.apache.maven.plugins:maven-surefire-plugin:2.14(default-test)
[INFO]
[INFO] --- maven-surefire-plugin:2.14:test (default-test) @ tutti-persistence ---
[INFO] Surefire report directory: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/s…>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocolsTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.353 sec
Running fr.ifremer.tutti.persistence.service.CruisePersistenceServiceReadTest
2013-04-05 16:46:56,302 0 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.CruisePersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.002 sec
Running fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceReadTest
2013-04-05 16:46:56,312 10 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeServiceImplTest
2013-04-05 16:46:56,331 29 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeServiceImplTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeServiceImplUpTodateTest
2013-04-05 16:46:56,337 35 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeServiceImplUpTodateTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeServiceCopyTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeHelperTest
2013-04-05 16:46:56,347 45 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeHelperTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.AccidentalBatchPersistenceServiceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.SpeciesBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceWriteTest
2013-04-05 16:46:56,358 56 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.005 sec
Running fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.MarineLitterBatchPersistenceServiceWriteTest
2013-04-05 16:46:56,362 60 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.MarineLitterBatchPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.BenthosBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.MarineLitterBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.BenthosBatchPersistenceServiceWriteTest
2013-04-05 16:46:56,367 65 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.BenthosBatchPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceReadTest
2013-04-05 16:46:56,373 71 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.AttachmentPersistenceServiceWriteTest
2013-04-05 16:46:56,380 78 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.AttachmentPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceWriteTest
2013-04-05 16:46:56,388 86 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.SpeciesBatchPersistenceServiceWriteTest
2013-04-05 16:46:56,391 89 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.SpeciesBatchPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.CruisePersistenceServiceWriteTest
2013-04-05 16:46:56,398 96 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.CruisePersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.TuttiEnumerationFileTest
2013-04-05 16:46:56,400 98 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.TuttiEnumerationFileTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.PlanktonBatchPersistenceServiceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.PlanktonBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.ProtocolPersistenceServiceWriteTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest
2013-04-05 16:46:56,435 133 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/dbEmpty, test [class fr.ifremer.tutti.persistence.service.ReferentialPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.001 sec
Running fr.ifremer.tutti.persistence.service.AccidentalBatchPersistenceServiceReadTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest
2013-04-05 16:46:56,447 145 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.ProgramPersistenceServiceReadTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest
2013-04-05 16:46:56,453 151 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.FishingOperationPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceWriteTest
2013-04-05 16:46:56,455 153 [main] WARN fr.ifremer.tutti.persistence.DatabaseResource - Could not find db at src/test/db, test [class fr.ifremer.tutti.persistence.service.CatchBatchPersistenceServiceWriteTest] is skipped.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Results :
Tests run: 30, Failures: 0, Errors: 0, Skipped: 28
mojoSucceeded org.apache.maven.plugins:maven-surefire-plugin:2.14(default-test)
[JENKINS] Recording test results
mojoStarted org.apache.maven.plugins:maven-jar-plugin:2.4(default-jar)
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ tutti-persistence ---
[INFO] Building jar: <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/t…>
mojoSucceeded org.apache.maven.plugins:maven-jar-plugin:2.4(default-jar)
mojoStarted org.apache.maven.plugins:maven-site-plugin:3.2(attach-descriptor)
[INFO]
[INFO] --- maven-site-plugin:3.2:attach-descriptor (attach-descriptor) @ tutti-persistence ---
mojoSucceeded org.apache.maven.plugins:maven-site-plugin:3.2(attach-descriptor)
mojoStarted org.apache.maven.plugins:maven-install-plugin:2.4(default-install)
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ tutti-persistence ---
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/t…> to /var/local/maven/data/repository/fr/ifremer/tutti/tutti-persistence/1.3-SNAPSHOT/tutti-persistence-1.3-SNAPSHOT.jar
[INFO] Installing <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml> to /var/local/maven/data/repository/fr/ifremer/tutti/tutti-persistence/1.3-SNAPSHOT/tutti-persistence-1.3-SNAPSHOT.pom
mojoSucceeded org.apache.maven.plugins:maven-install-plugin:2.4(default-install)
projectSucceeded fr.ifremer.tutti:tutti-persistence:1.3-SNAPSHOT
projectStarted fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: Service 1.3-SNAPSHOT
[INFO] ------------------------------------------------------------------------
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-service ---
[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target>
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
mojoStarted org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (check-project-files) @ tutti-service ---
mojoSucceeded org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserJava (scan-sources) @ tutti-service ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserValidation (scan-sources) @ tutti-service ---
[INFO] Load rules file validation.rules
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(get)
[INFO] Copying tutti-service.properties to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/gener…>
[INFO] Copying tutti-service.properties to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/gener…>
[INFO]
[INFO] --- i18n-maven-plugin:2.5:get (get) @ tutti-service ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(get)
forkedProjectSucceeded fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:gen (scan-sources) @ tutti-service ---
[WARNING] bundle fr_FR contains 2/99 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 103/103 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 14 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ tutti-service ---
[INFO] Compiling 38 source files to <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/target/class…>
[INFO] -------------------------------------------------------------
mojoFailed org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/src/main/jav…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
[INFO] 1 error
[INFO] -------------------------------------------------------------
projectFailed fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
sessionEnded
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Tutti ............................................. SUCCESS [6.860s]
[INFO] Tutti :: Persistence .............................. SUCCESS [19.695s]
[INFO] Tutti :: Service .................................. FAILURE [1.812s]
[INFO] Tutti :: UI ....................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.053s
[INFO] Finished at: Fri Apr 05 16:47:01 CEST 2013
[INFO] Final Memory: 36M/139M
[INFO] ------------------------------------------------------------------------
Projects to build: [MavenProject: fr.ifremer:tutti:1.3-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-persistence:1.3-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml,> MavenProject: fr.ifremer.tutti:tutti-ui-swing:1.3-SNAPSHOT @ <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml]>
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-service/builds/2013-04-05_16-46-26/archive/fr.ifremer.tutti/tutti-service/1.3-SNAPSHOT/tutti-service-1.3-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-ui-swing/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-ui-swing/builds/2013-04-05_16-46-26/archive/fr.ifremer.tutti/tutti-ui-swing/1.3-SNAPSHOT/tutti-ui-swing-1.3-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-04-05_16-46-26/archive/fr.ifremer/tutti/1.3-SNAPSHOT/tutti-1.3-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/target/tutti-1.3-SNAPSHOT-…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer$tutti/builds/2013-04-05_16-46-26/archive/fr.ifremer/tutti/1.3-SNAPSHOT/tutti-1.3-SNAPSHOT-site_fr.xml
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/pom.xml> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-04-05_16-46-26/archive/fr.ifremer.tutti/tutti-persistence/1.3-SNAPSHOT/tutti-persistence-1.3-SNAPSHOT.pom
[JENKINS] Archiving <http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-persistence/target/t…> to /var/local/jenkins/data/jobs/tutti/modules/fr.ifremer.tutti$tutti-persistence/builds/2013-04-05_16-46-26/archive/fr.ifremer.tutti/tutti-persistence/1.3-SNAPSHOT/tutti-persistence-1.3-SNAPSHOT.jar
Waiting for Jenkins to finish collecting data
mavenExecutionResult exceptions not empty
message : Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project tutti-service: Compilation failure
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/src/main/jav…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
cause : Compilation failure
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/src/main/jav…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
Stack trace :
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project tutti-service: Compilation failure
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/src/main/jav…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:158)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:100)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:66)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
<http://ci.nuiton.org/jenkins/job/tutti/ws/trunk2/tutti-service/src/main/jav…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:729)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 27 more
Sending e-mails to: tutti-commits(a)list.forge.codelutin.com chemit(a)codelutin.com
channel stopped
1
2
06 Apr '13
See <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/608/c…>
Changes:
[Tony Chemit] refs #1875: [IMP/EXP] - Export des données de campagne : format générique (debut)
------------------------------------------
projectStarted fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Tutti :: Service 1.3-SNAPSHOT
[INFO] ------------------------------------------------------------------------
mojoStarted org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ tutti-service ---
[INFO] Deleting <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/ws/ta…>
mojoSucceeded org.apache.maven.plugins:maven-clean-plugin:2.5(default-clean)
mojoStarted org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
[INFO]
[INFO] --- maven-enforcer-plugin:1.2:enforce (check-project-files) @ tutti-service ---
mojoSucceeded org.apache.maven.plugins:maven-enforcer-plugin:1.2(check-project-files)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserJava (scan-sources) @ tutti-service ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:parserValidation (scan-sources) @ tutti-service ---
[INFO] Load rules file validation.rules
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
forkedProjectStarted fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(get)
[INFO] Copying tutti-service.properties to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/ws/ta…>
[INFO] Copying tutti-service.properties to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/ws/ta…>
[INFO]
[INFO] --- i18n-maven-plugin:2.5:get (get) @ tutti-service ---
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(get)
forkedProjectSucceeded fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
mojoStarted org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
[INFO]
[INFO] --- i18n-maven-plugin:2.5:gen (scan-sources) @ tutti-service ---
[WARNING] bundle fr_FR contains 2/99 empty entries! (use -Di18n.showEmpty to see these entries)
[WARNING] bundle en_GB contains 103/103 empty entries! (use -Di18n.showEmpty to see these entries)
mojoSucceeded org.nuiton.i18n:i18n-maven-plugin:2.5(scan-sources)
mojoStarted org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tutti-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 14 resources
mojoSucceeded org.apache.maven.plugins:maven-resources-plugin:2.6(default-resources)
mojoStarted org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ tutti-service ---
[INFO] Compiling 38 source files to <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/ws/ta…>
[INFO] -------------------------------------------------------------
mojoFailed org.apache.maven.plugins:maven-compiler-plugin:2.5.1(default-compile)[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.nuiton.org/jenkins/job/tutti/fr.ifremer.tutti$tutti-service/ws/sr…>:[62,15] error: constructor SurveyExportRow in class SurveyExportRow cannot be applied to given types;
[INFO] 1 error
[INFO] -------------------------------------------------------------
projectFailed fr.ifremer.tutti:tutti-service:1.3-SNAPSHOT
1
2
06 Apr '13
Author: tchemit
Date: 2013-04-06 13:30:17 +0200 (Sat, 06 Apr 2013)
New Revision: 744
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/744
Log:
move SampleCategory to entities module (we will create a flat SpeciesBatch for validation / export /edit purposes)
Added:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
Copied: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java (from rev 742, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java)
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java (rev 0)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SampleCategory.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -0,0 +1,146 @@
+package fr.ifremer.tutti.persistence.entities.data;
+
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+
+import java.io.Serializable;
+
+/**
+ * Represents a sample category value in the species / benthos batch.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.3
+ */
+public class SampleCategory<C extends Serializable> implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Sample category type.
+ *
+ * @since 0.3
+ */
+ protected SampleCategoryEnum categoryType;
+
+ /**
+ * Sample category value.
+ *
+ * @since 0.3
+ */
+ protected C categoryValue;
+
+ /**
+ * Sample category weight.
+ *
+ * @since 0.3
+ */
+ protected Float categoryWeight;
+
+ /**
+ * Sample computed weight.
+ *
+ * @since 1.0
+ */
+ protected Float computedWeight;
+
+ /**
+ * Is this sample a subsample ?
+ * Available only if the category is the finest category of the row
+ *
+ * @since 1.0
+ */
+ protected boolean subSample;
+
+ /**
+ * Has the row only one frequency ?
+ * Available only if the category is the finest category of the row
+ *
+ * @since 1.0
+ */
+ protected boolean onlyOneFrequency;
+
+ public static <C extends Serializable> SampleCategory<C> newSample(SampleCategoryEnum categoryType) {
+ SampleCategory<C> result = new SampleCategory<C>();
+ result.setCategoryType(categoryType);
+ return result;
+ }
+
+ protected SampleCategory() {
+ }
+
+ public SampleCategoryEnum getCategoryType() {
+ return categoryType;
+ }
+
+ public void setCategoryType(SampleCategoryEnum categoryType) {
+ this.categoryType = categoryType;
+ }
+
+ public C getCategoryValue() {
+ return categoryValue;
+ }
+
+ public void setCategoryValue(C categoryValue) {
+ this.categoryValue = categoryValue;
+ }
+
+ public Float getCategoryWeight() {
+ return categoryWeight;
+ }
+
+ public void setCategoryWeight(Float categoryWeight) {
+ this.categoryWeight = categoryWeight;
+ }
+
+ public Float getComputedWeight() {
+ return computedWeight;
+ }
+
+ public void setComputedWeight(Float computedWeight) {
+ this.computedWeight = computedWeight;
+ }
+
+ public boolean isSubSample() {
+ return subSample;
+ }
+
+ public void setSubSample(boolean subSample) {
+ this.subSample = subSample;
+ }
+
+ public boolean hasOnlyOneFrequency() {
+ return onlyOneFrequency;
+ }
+
+ public void setOnlyOneFrequency(boolean onlyOneFrequency) {
+ this.onlyOneFrequency = onlyOneFrequency;
+ }
+
+ public boolean isValid() {
+ return categoryValue != null;
+ }
+
+ public boolean isEmpty() {
+ return categoryValue == null
+ && categoryWeight == null
+ && computedWeight == null;
+ }
+
+ public boolean isEmptyOrValid() {
+ return isEmpty() || isValid();
+ }
+
+ public Float getNotNullWeight() {
+ Float result = categoryWeight;
+ if (result == null) {
+ result = computedWeight;
+ }
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return new ReflectionToStringBuilder(this).
+ appendSuper(super.toString()).
+ toString();
+ }
+}
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -1,171 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.operation.catches;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-
-import java.io.Serializable;
-
-/**
- * Represents a sample category value in the species batch table.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 0.3
- */
-public class SampleCategory<C extends Serializable> implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Sample category type.
- *
- * @since 0.3
- */
- protected SampleCategoryEnum categoryType;
-
- /**
- * Sample category value.
- *
- * @since 0.3
- */
- protected C categoryValue;
-
- /**
- * Sample category weight.
- *
- * @since 0.3
- */
- protected Float categoryWeight;
-
- /**
- * Sample computed weight.
- *
- * @since 1.0
- */
- protected Float computedWeight;
-
- /**
- * Is this sample a subsample ?
- * Available only if the category is the finest category of the row
- *
- * @since 1.0
- */
- protected boolean subSample;
-
- /**
- * Has the row only one frequency ?
- * Available only if the category is the finest category of the row
- *
- * @since 1.0
- */
- protected boolean onlyOneFrequency;
-
- public static <C extends Serializable> SampleCategory<C> newSample(SampleCategoryEnum categoryType) {
- SampleCategory<C> result = new SampleCategory<C>();
- result.setCategoryType(categoryType);
- return result;
- }
-
- protected SampleCategory() {
- }
-
- public SampleCategoryEnum getCategoryType() {
- return categoryType;
- }
-
- public void setCategoryType(SampleCategoryEnum categoryType) {
- this.categoryType = categoryType;
- }
-
- public C getCategoryValue() {
- return categoryValue;
- }
-
- public void setCategoryValue(C categoryValue) {
- this.categoryValue = categoryValue;
- }
-
- public Float getCategoryWeight() {
- return categoryWeight;
- }
-
- public void setCategoryWeight(Float categoryWeight) {
- this.categoryWeight = categoryWeight;
- }
-
- public Float getComputedWeight() {
- return computedWeight;
- }
-
- public void setComputedWeight(Float computedWeight) {
- this.computedWeight = computedWeight;
- }
-
- public boolean isSubSample() {
- return subSample;
- }
-
- public void setSubSample(boolean subSample) {
- this.subSample = subSample;
- }
-
- public boolean hasOnlyOneFrequency() {
- return onlyOneFrequency;
- }
-
- public void setOnlyOneFrequency(boolean onlyOneFrequency) {
- this.onlyOneFrequency = onlyOneFrequency;
- }
-
- public boolean isValid() {
- return categoryValue != null;
- }
-
- public boolean isEmpty() {
- return categoryValue == null
- && categoryWeight == null
- && computedWeight == null;
- }
-
- public boolean isEmptyOrValid() {
- return isEmpty() || isValid();
- }
-
- public Float getNotNullWeight() {
- Float result = categoryWeight;
- if (result == null) {
- result = computedWeight;
- }
- return result;
- }
-
- @Override
- public String toString() {
- return new ReflectionToStringBuilder(this).
- appendSuper(super.toString()).
- toString();
- }
-}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.swing.editor.NumberEditor;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -34,7 +34,7 @@
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency.BenthosFrequencyRowModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -27,7 +27,7 @@
import com.google.common.collect.Sets;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryColumnIdentifier;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -41,7 +41,7 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryComponent;
import fr.ifremer.tutti.ui.swing.content.operation.catches.TableViewMode;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.create.CreateBenthosBatchUI;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchRowModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -26,7 +26,7 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchUIModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import org.nuiton.util.beans.Binder;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -32,7 +32,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUI;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -34,7 +34,7 @@
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchTableModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -27,7 +27,7 @@
import com.google.common.collect.Sets;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryColumnIdentifier;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -26,7 +26,7 @@
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import java.io.Serializable;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-04-06 11:27:27 UTC (rev 743)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-04-06 11:30:17 UTC (rev 744)
@@ -32,7 +32,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategory;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategory;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
1
0
r743 - in trunk/tutti-service/src/main: java/fr/ifremer/tutti/service java/fr/ifremer/tutti/service/catches java/fr/ifremer/tutti/service/export resources/fr/ifremer/tutti/persistence/entities/data
by tchemit@users.forge.codelutin.com 06 Apr '13
by tchemit@users.forge.codelutin.com 06 Apr '13
06 Apr '13
Author: tchemit
Date: 2013-04-06 13:27:27 +0200 (Sat, 06 Apr 2013)
New Revision: 743
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/743
Log:
refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique (prepareation des imports)
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -24,13 +24,23 @@
* #L%
*/
+import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.entities.TuttiEntity;
+import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.util.csv.Common;
+import org.nuiton.util.csv.ExportModel;
+import org.nuiton.util.csv.ExportableColumn;
+import org.nuiton.util.csv.ValueFormatter;
import org.nuiton.util.csv.ValueParserFormatter;
+import org.nuiton.util.csv.ext.AbstractExportModel;
import org.nuiton.util.csv.ext.AbstractImportExportModel;
+import org.nuiton.util.csv.ext.RepeatableExport;
+import org.nuiton.util.decorator.Decorator;
+import java.io.Writer;
import java.text.ParseException;
+import java.util.Collections;
import java.util.Date;
import java.util.Map;
import java.util.Set;
@@ -49,6 +59,24 @@
super(separator);
}
+ public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator) {
+ return newColumnForExportByDecorator(headerName, propertyName, decorator, null);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator, String defaultNullValue) {
+ DecoatorPropertyFormatter<T> valueFormatter = newDecoratorFormatter(decorator, defaultNullValue);
+ return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName) {
+ return newColumnForExport(headerName, propertyName, formatterPropertyName, null);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName, String defaultNullValue) {
+ BeanPropertyFormatter<T> valueFormatter = newBeanFormatter(formatterPropertyName, defaultNullValue);
+ return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter);
+ }
+
public <E extends TuttiEntity> void newForeignKeyColumn(String headerName, String propertyName, Class<E> entityType, String foreignKeyName, Map<String, E> universe) {
newMandatoryColumn(headerName, propertyName, newForeignKeyValue(entityType, foreignKeyName, universe));
}
@@ -70,6 +98,36 @@
}
}
+ public static abstract class AbstractTuttiExportModel<M> extends AbstractExportModel<M> {
+
+ public AbstractTuttiExportModel(char separator) {
+ super(separator);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator) {
+ return newColumnForExportByDecorator(headerName, propertyName, decorator, null);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExportByDecorator(String headerName, String propertyName, Decorator<T> decorator, String defaultNullValue) {
+ DecoatorPropertyFormatter<T> valueFormatter = newDecoratorFormatter(decorator, defaultNullValue);
+ return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName) {
+ return newColumnForExport(headerName, propertyName, formatterPropertyName, null);
+ }
+
+ public <T> ExportableColumn<M, T> newColumnForExport(String headerName, String propertyName, String formatterPropertyName, String defaultNullValue) {
+ BeanPropertyFormatter<T> valueFormatter = newBeanFormatter(formatterPropertyName, defaultNullValue);
+ return modelBuilder.newColumnForExport(headerName, propertyName, valueFormatter);
+ }
+
+ public <E extends TuttiEntity> ForeignKeyValue<E> newForeignKeyValue(Class<E> type, String propertyName, Map<String, E> universe) {
+ return new ForeignKeyValue<E>(type, propertyName, universe);
+ }
+
+ }
+
public static class StringParserFormatter extends Common.NullableParserFormatter<String> {
public StringParserFormatter(String defaultValue, boolean nullAllowed) {
@@ -189,6 +247,80 @@
public static final ValueParserFormatter<Date> TIME =
new DateValue("HH:mm:ss");
+ public static <E> BeanPropertyFormatter<E> newBeanFormatter(String propertyName,
+ String defaultNullValue) {
+ return new BeanPropertyFormatter<E>(propertyName, defaultNullValue);
+ }
+
+ public static class BeanPropertyFormatter<E> implements ValueFormatter<E> {
+
+ protected final String defaultNullValue;
+
+ protected String propertyName;
+
+ BeanPropertyFormatter(String propertyName, String defaultNullValue) {
+ this.propertyName = propertyName;
+ this.defaultNullValue = defaultNullValue;
+ }
+
+ @Override
+ public String format(E value) {
+ if (value == null) {
+ return defaultNullValue;
+ }
+ try {
+ return (String) BeanUtilsBean.getInstance().getPropertyUtils().getNestedProperty(value, propertyName);
+ } catch (Exception e) {
+ throw new TuttiTechnicalException("Could not format value", e);
+ }
+ }
+ }
+
+ public static <E> DecoatorPropertyFormatter<E> newDecoratorFormatter(Decorator<E> decorator,
+ String defaultNullValue) {
+ return new DecoatorPropertyFormatter<E>(decorator, defaultNullValue);
+ }
+
+ public static class DecoatorPropertyFormatter<E> implements ValueFormatter<E> {
+
+ protected final String defaultNullValue;
+
+ protected Decorator<E> decorator;
+
+ DecoatorPropertyFormatter(Decorator<E> decorator, String defaultNullValue) {
+ this.decorator = decorator;
+ this.defaultNullValue = defaultNullValue;
+ }
+
+ @Override
+ public String format(E value) {
+ if (value == null) {
+ return defaultNullValue;
+ }
+ try {
+ return decorator.toString(value);
+ } catch (Exception e) {
+ throw new TuttiTechnicalException("Could not format value", e);
+ }
+ }
+ }
+
+ public static <E> TuttiRepeatableExport<E> newRepeatableExport(ExportModel<E> model) {
+ return new TuttiRepeatableExport<E>(model);
+ }
+
+ public static class TuttiRepeatableExport<E> extends RepeatableExport<E> {
+
+ public TuttiRepeatableExport(ExportModel<E> model) {
+ super(model, Collections.<E>emptyList(), true);
+ }
+
+ public void write(Iterable<E> data, Writer writer) throws Exception {
+ this.data = data;
+ write(writer);
+ }
+ }
+
protected TuttiCsvUtil() {
// no instance
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.service.catches;
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.TuttiBusinessException;
import fr.ifremer.tutti.persistence.entities.data.*;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,80 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+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.data.SpeciesBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+import java.util.List;
+
+/**
+ * Model of a catch export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class CatchExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<CatchExportRow> {
+
+ public CatchExportModel(char separator) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
+
+//FIXME newColumnForExport("Pays", Cruise.PROPERTY_VESSEL);
+ newColumnForExport("Zone_Etude", "programeZoneName");
+ newColumnForExport("Id_Sismer", Cruise.PROPERTY_NAME);
+ newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("Heure_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION);
+ newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("Heure_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION);
+//FIXME newColumnForExport("Responsable_Serie", Cruise.PROPERTY_HEAD_OF_MISSION);
+ newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION);
+ newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
+ newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT);
+ }
+
+ public void prepareRows(List<CatchExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation,
+ BatchContainer<SpeciesBatch> rootSpeciesBatch) {
+ CatchExportRow row = new CatchExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ rows.add(row);
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,80 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.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.Vessel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a catch export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class CatchExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public Vessel getVessel() {
+ return cruise.getVessel();
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/CatchExportRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,91 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+import java.util.List;
+
+/**
+ * Model of a operation export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class OperationExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<OperationExportRow> {
+
+ public OperationExportModel(char separator) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER);
+
+ newColumnForExport("Engin", Cruise.PROPERTY_GEAR, Gear.PROPERTY_NAME);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
+ newColumnForExport("DateDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("HeureDeb_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_START_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("LatDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LATITUDE);
+ newColumnForExport("LongDeb", FishingOperation.PROPERTY_GEAR_SHOOTING_START_LONGITUDE);
+ newColumnForExport("DateFin_Op", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("HeureFin_OP", FishingOperation.PROPERTY_GEAR_SHOOTING_END_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("LatFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LATITUDE);
+ newColumnForExport("LongFin", FishingOperation.PROPERTY_GEAR_SHOOTING_END_LONGITUDE);
+//FIXME newColumnForExport("Duree", FishingOperation.PROPERTY_);
+ newColumnForExport("Strate", FishingOperation.PROPERTY_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
+ newColumnForExport("Sous-Strate", FishingOperation.PROPERTY_SUB_STRATA, TuttiLocation.PROPERTY_NAME, "NA");
+ newColumnForExport("Localite", FishingOperation.PROPERTY_LOCATION, TuttiLocation.PROPERTY_NAME, "NA");
+//FIXME newColumnForExport("Rectangle_CIEM",);
+ newColumnForExport("Validite_OP", FishingOperation.PROPERTY_FISHING_OPERATION_VALID);
+ newColumnForExport("Rectiligne", FishingOperation.PROPERTY_FISHING_OPERATION_RECTILIGNE);
+ newColumnForExport("Distance", FishingOperation.PROPERTY_TRAWL_DISTANCE);
+//FIXME newColumnForExport("Ouv_Verticale",);
+//FIXME newColumnForExport("Ouv_Horizontale_Ailes",);
+//FIXME newColumnForExport("Ouv_Horizontale_Panneaux",);
+ newColumnForExport("Commentaire", FishingOperation.PROPERTY_COMMENT);
+
+ }
+
+ public void prepareRows(List<OperationExportRow> rows,
+ Cruise cruise,
+ List<FishingOperation> operations) {
+
+ for (FishingOperation operation : operations) {
+
+ OperationExportRow row = new OperationExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ rows.add(row);
+ }
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,138 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a operation export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class OperationExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public Gear getGear() {
+ return fishingOperation.getGear();
+ }
+
+ public Vessel getVessel() {
+ return cruise.getVessel();
+ }
+
+ public Date getGearShootingStartDate() {
+ return fishingOperation.getGearShootingStartDate();
+ }
+
+ public Float getGearShootingStartLatitude() {
+ return fishingOperation.getGearShootingStartLatitude();
+ }
+
+ public Float getGearShootingStartLongitude() {
+ return fishingOperation.getGearShootingStartLongitude();
+ }
+
+ public Date getGearShootingEndDate() {
+ return fishingOperation.getGearShootingEndDate();
+ }
+
+ public Float getGearShootingEndLatitude() {
+ return fishingOperation.getGearShootingEndLatitude();
+ }
+
+ public Float getGearShootingEndLongitude() {
+ return fishingOperation.getGearShootingEndLongitude();
+ }
+
+ public TuttiLocation getStrata() {
+ return fishingOperation.getStrata();
+ }
+
+ public TuttiLocation getSubStrata() {
+ return fishingOperation.getSubStrata();
+ }
+
+ public TuttiLocation getLocation() {
+ return fishingOperation.getLocation();
+ }
+
+ public Boolean getFishingOperationValid() {
+ return fishingOperation.getFishingOperationValid();
+ }
+
+ public boolean isFishingOperationRectiligne() {
+ return fishingOperation.isFishingOperationRectiligne();
+ }
+
+ public Float getTrawlDistance() {
+ return fishingOperation.getTrawlDistance();
+ }
+
+ public String getComment() {
+ return fishingOperation.getComment();
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/OperationExportRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,87 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.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.Caracteristic;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Model of a parameter export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class ParameterExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<ParameterExportRow> {
+
+
+ public ParameterExportModel(char separator, DecoratorService decoratorService) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Id_Operation", FishingOperation.PROPERTY_STATION_NUMBER);
+ newColumnForExport("NumOrdre_Station", FishingOperation.PROPERTY_FISHING_OPERATION_NUMBER);
+
+ newColumnForExport("Code_PMFM", ParameterExportRow.PROPERTY_CARACTERISTIC, Caracteristic.PROPERTY_ID);
+ newColumnForExportByDecorator("Libelle_PMFm", ParameterExportRow.PROPERTY_CARACTERISTIC, decoratorService.getDecoratorByType(Caracteristic.class));
+ newColumnForExport("Valeur", ParameterExportRow.PROPERTY_VALUE);
+ }
+
+ public void prepareRows(List<ParameterExportRow> rows,
+ Cruise cruise,
+ FishingOperation operation) {
+
+ for (Map.Entry<Caracteristic, Serializable> entry : operation.getGearUseFeatures().entrySet()) {
+ Caracteristic caracteristic = entry.getKey();
+
+ ParameterExportRow row = new ParameterExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setCaracteristic(caracteristic);
+ row.setValue(entry.getValue());
+ rows.add(row);
+ }
+ for (Map.Entry<Caracteristic, Serializable> entry : operation.getVesselUseFeatures().entrySet()) {
+ Caracteristic caracteristic = entry.getKey();
+
+ ParameterExportRow row = new ParameterExportRow();
+ row.setCruise(cruise);
+ row.setFishingOperation(operation);
+ row.setCaracteristic(caracteristic);
+ row.setValue(entry.getValue());
+ rows.add(row);
+ }
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -0,0 +1,100 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.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.Caracteristic;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A row in a parameter export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class ParameterExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_CARACTERISTIC = "caracteristic";
+ public static final String PROPERTY_VALUE = "value";
+
+
+ protected Cruise cruise;
+
+ protected FishingOperation fishingOperation;
+
+ protected Caracteristic caracteristic;
+
+ private Serializable value;
+
+ public void setCruise(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ this.fishingOperation = fishingOperation;
+ }
+
+ public void setCaracteristic(Caracteristic caracteristic) {
+ this.caracteristic = caracteristic;
+ }
+
+ public void setValue(Serializable value) {
+ this.value = value;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public Program getProgram() {
+ return cruise.getProgram();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getStationNumber() {
+ return fishingOperation.getStationNumber();
+ }
+
+ public Integer getFishingOperationNumber() {
+ return fishingOperation.getFishingOperationNumber();
+ }
+
+ public Caracteristic getCaracteristic() {
+ return caracteristic;
+ }
+
+ public Serializable getValue() {
+ return value;
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/ParameterExportRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -25,41 +25,46 @@
*/
import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.service.TuttiCsvUtil;
+import java.util.List;
+
/**
* Model of a survey export.
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.3
*/
-public class SurveyExportModel extends TuttiCsvUtil.AbstractTuttiImportExportModel<SurveyExportRow> {
+public class SurveyExportModel extends TuttiCsvUtil.AbstractTuttiExportModel<SurveyExportRow> {
public SurveyExportModel(char separator) {
super(separator);
newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
- newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM, Program.PROPERTY_NAME);
newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
- newColumnForExport("Navire", Cruise.PROPERTY_VESSEL);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL, Vessel.PROPERTY_NAME);
//FIXME newColumnForExport("Pays", Cruise.PROPERTY_VESSEL);
- newColumnForExport("Zone_Etude", "programeZoneName");
+ newColumnForExport("Zone_Etude", Program.PROPERTY_ZONE, TuttiLocation.PROPERTY_NAME);
newColumnForExport("Id_Sismer", Cruise.PROPERTY_NAME);
newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
newColumnForExport("Heure_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.TIME);
- newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION);
+ newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION, TuttiLocation.PROPERTY_NAME);
newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
newColumnForExport("Heure_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.TIME);
- newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION);
+ newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION, TuttiLocation.PROPERTY_NAME);
//FIXME newColumnForExport("Responsable_Serie", Cruise.PROPERTY_HEAD_OF_MISSION);
- newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION);
- newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
+// newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION);
+// newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT);
}
- @Override
- public SurveyExportRow newEmptyInstance() {
- return new SurveyExportRow();
+ public void prepareRows(List<SurveyExportRow> rows, Cruise cruise) {
+ SurveyExportRow row = new SurveyExportRow();
+ row.setCruise(cruise);
+ rows.add(row);
}
-
}
\ No newline at end of file
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -25,7 +25,10 @@
*/
import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.Program;
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 java.io.Serializable;
import java.util.Date;
@@ -43,7 +46,7 @@
protected Cruise cruise;
- public SurveyExportRow(Cruise cruise) {
+ public void setCruise(Cruise cruise) {
this.cruise = cruise;
}
@@ -51,20 +54,20 @@
return cruise.getBeginDate();
}
- public String getProgram() {
- return cruise.getProgram().getName();
+ public Program getProgram() {
+ return cruise.getProgram();
}
public String getSurveyPart() {
return cruise.getSurveyPart();
}
- public String getProgramZone() {
- return cruise.getProgram().getZone().getName();
+ public TuttiLocation getProgramZone() {
+ return cruise.getProgram().getZone();
}
- public String getVessel() {
- return cruise.getVessel().getName();
+ public Vessel getVessel() {
+ return cruise.getVessel();
}
public String getCountry() {
@@ -77,16 +80,16 @@
return cruise.getName();
}
- public String getDepartureLocation() {
- return cruise.getDepartureLocation().getName();
+ public TuttiLocation getDepartureLocation() {
+ return cruise.getDepartureLocation();
}
public Date getEndDate() {
return cruise.getEndDate();
}
- public String getReturnLocation() {
- return cruise.getReturnLocation().getName();
+ public TuttiLocation getReturnLocation() {
+ return cruise.getReturnLocation();
}
public String getComment() {
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-06 11:27:27 UTC (rev 743)
@@ -30,25 +30,22 @@
import com.google.common.io.Files;
import fr.ifremer.tutti.TuttiIOUtil;
import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.DecoratorService;
import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
import fr.ifremer.tutti.service.TuttiServiceContext;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.csv.Export;
-import org.nuiton.util.csv.ExportModel;
-import org.nuiton.util.csv.ext.RepeatableExport;
import java.io.BufferedWriter;
-import java.io.Closeable;
import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.Writer;
-import java.util.Collections;
import java.util.List;
/**
@@ -66,10 +63,16 @@
protected PersistenceService persistenceService;
+ protected DecoratorService decoratorService;
+
+ protected char csvSeparator;
+
@Override
public void setServiceContext(TuttiServiceContext context) {
super.setServiceContext(context);
persistenceService = getService(PersistenceService.class);
+ decoratorService = getService(DecoratorService.class);
+ csvSeparator = context.getConfig().getCsvSeparator();
}
public void exportCruise(String cruiseId, File exportFile) {
@@ -80,43 +83,24 @@
Cruise cruise = persistenceService.getCruise(cruiseId);
Preconditions.checkNotNull(cruise);
- File basedir = context.getConfig().newTempFile("exportCruise-" + cruiseId);
+ List<FishingOperation> operations =
+ persistenceService.getAllFishingOperation(cruiseId);
+ File basedir = context.getConfig().newTempFile(
+ "exportCruise-" + cruiseId);
+
File surveyFile = new File(basedir, "survey.csv");
exportSurvey(surveyFile, cruise);
- File parameterFile = new File(basedir, "parameter.csv");
File operationFile = new File(basedir, "operation.csv");
- File catchesFile = new File(basedir, "catch.csv");
+ exportOperations(operationFile, cruise, operations);
- SurveyExportModel operationExportModel = null;
- SurveyExportModel parameterExportModel = null;
- SurveyExportModel catchExportModel = null;
+ File parameterFile = new File(basedir, "parameter.csv");
+ exportParameters(parameterFile, cruise, operations);
- OperationWriter operationWriter = null;
+ File catchesFile = new File(basedir, "catch.csv");
+ exportCatches(catchesFile, cruise, operations);
- try {
- operationWriter = new OperationWriter(
- operationFile,
- parameterFile,
- catchesFile,
- operationExportModel,
- parameterExportModel,
- catchExportModel);
-
- List<FishingOperation> operations =
- persistenceService.getAllFishingOperation(cruiseId);
-
- for (FishingOperation operation : operations) {
- exportOperation(operationWriter, cruise, operation);
- }
- operationWriter.close();
- } catch (Exception e) {
- throw new TuttiTechnicalException(
- "Could not export operations", e);
- } finally {
- IOUtils.closeQuietly(operationWriter);
- }
TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip");
}
@@ -126,17 +110,16 @@
log.info("Will export survey to file: " + file);
}
- SurveyExportModel csvModel =
- new SurveyExportModel(context.getConfig().getCsvSeparator());
-
- SurveyExportRow row = new SurveyExportRow(cruise);
- List<SurveyExportRow> rows = Lists.newArrayList((row));
-
BufferedWriter writer = null;
try {
writer = Files.newWriter(file, Charsets.UTF_8);
- Export export = Export.newExport(csvModel, rows);
+ SurveyExportModel model = new SurveyExportModel(csvSeparator);
+
+ List<SurveyExportRow> rows = Lists.newArrayList();
+ model.prepareRows(rows, cruise);
+
+ Export export = Export.newExport(model, rows);
export.write(writer);
writer.close();
} catch (Exception e) {
@@ -147,106 +130,103 @@
}
}
- protected void exportOperation(OperationWriter operationWriter,
- Cruise cruise,
- FishingOperation operation) throws Exception {
+ protected void exportOperations(File file,
+ Cruise cruise,
+ List<FishingOperation> operations) {
if (log.isInfoEnabled()) {
- log.info("Will export operation: " + operation.getId());
+ log.info("Will export operations to file: " + file);
}
- operationWriter.exportOperation(cruise, operation);
- operationWriter.exportParameter(cruise, operation);
- operationWriter.exportCatch(cruise, operation);
- }
+ BufferedWriter writer = null;
+ try {
+ writer = Files.newWriter(file, Charsets.UTF_8);
+ OperationExportModel model =
+ new OperationExportModel(csvSeparator);
- class OperationWriter implements Closeable {
+ List<OperationExportRow> rows = Lists.newArrayList();
+ model.prepareRows(rows, cruise, operations);
- final BufferedWriter operationWriter;
+ Export export = Export.newExport(model, rows);
+ export.write(writer);
+ writer.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export operations to file: " + file, e);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+ }
- final BufferedWriter parameterWriter;
+ protected void exportParameters(File file,
+ Cruise cruise,
+ List<FishingOperation> operations) {
- final BufferedWriter catchWriter;
+ if (log.isInfoEnabled()) {
+ log.info("Will export parameters to file: " + file);
+ }
- final TuttiRepeatableExport<SurveyExportRow> operationExporter;
+ BufferedWriter writer = null;
+ try {
+ writer = Files.newWriter(file, Charsets.UTF_8);
- final TuttiRepeatableExport<SurveyExportRow> parameterExporter;
+ ParameterExportModel model =
+ new ParameterExportModel(csvSeparator,
+ decoratorService);
- final TuttiRepeatableExport<SurveyExportRow> catchExporter;
+ TuttiCsvUtil.TuttiRepeatableExport<ParameterExportRow> export =
+ TuttiCsvUtil.newRepeatableExport(model);
- OperationWriter(File operationFile,
- File parameterFile,
- File catchesFile,
- SurveyExportModel operationExportModel,
- SurveyExportModel parameterExportModel,
- SurveyExportModel catchExportModel) {
-
- try {
-
- operationWriter = Files.newWriter(operationFile, Charsets.UTF_8);
- parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8);
- catchWriter = Files.newWriter(catchesFile, Charsets.UTF_8);
- } catch (FileNotFoundException e) {
- throw new TuttiTechnicalException(e);
+ for (FishingOperation operation : operations) {
+ List<ParameterExportRow> rows = Lists.newArrayList();
+ model.prepareRows(rows, cruise, operation);
+ export.write(rows, writer);
}
- operationExporter = new TuttiRepeatableExport<SurveyExportRow>(operationExportModel);
- parameterExporter = new TuttiRepeatableExport<SurveyExportRow>(parameterExportModel);
- catchExporter = new TuttiRepeatableExport<SurveyExportRow>(catchExportModel);
+
+ writer.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export parameters to file: " + file, e);
+ } finally {
+ IOUtils.closeQuietly(writer);
}
+ }
- void exportOperation(Cruise cruise, FishingOperation operation) throws Exception {
+ protected void exportCatches(File file,
+ Cruise cruise,
+ List<FishingOperation> operations) {
- SurveyExportRow row = new SurveyExportRow(cruise);
- List<SurveyExportRow> rows = Lists.newArrayList((row));
- operationExporter.write(rows, operationWriter);
+ if (log.isInfoEnabled()) {
+ log.info("Will export catches to file: " + file);
}
- void exportParameter(Cruise cruise, FishingOperation operation) throws Exception {
+ BufferedWriter writer = null;
+ try {
+ writer = Files.newWriter(file, Charsets.UTF_8);
- SurveyExportRow row = new SurveyExportRow(cruise);
- List<SurveyExportRow> rows = Lists.newArrayList((row));
- parameterExporter.write(rows, parameterWriter);
- }
+ CatchExportModel model = new CatchExportModel(csvSeparator);
- void exportCatch(Cruise cruise, FishingOperation operation) throws Exception {
- SurveyExportRow row = new SurveyExportRow(cruise);
- List<SurveyExportRow> rows = Lists.newArrayList((row));
- catchExporter.write(rows, catchWriter);
- }
+ TuttiCsvUtil.TuttiRepeatableExport<CatchExportRow> export =
+ TuttiCsvUtil.newRepeatableExport(model);
- @Override
- public void close() throws IOException {
- try {
- if (operationWriter != null) {
- operationWriter.close();
- }
- } finally {
+ for (FishingOperation operation : operations) {
- try {
- if (parameterWriter != null) {
- parameterWriter.close();
- }
- } catch (IOException e) {
+ BatchContainer<SpeciesBatch> rootSpeciesBatch =
+ persistenceService.getRootSpeciesBatch(operation.getId());
- if (catchWriter != null) {
- catchWriter.close();
- }
- }
+ List<CatchExportRow> rows = Lists.newArrayList();
+ model.prepareRows(rows, cruise, operation, rootSpeciesBatch);
+ export.write(rows, writer);
}
- }
- }
- class TuttiRepeatableExport<E> extends RepeatableExport<E> {
-
- public TuttiRepeatableExport(ExportModel<E> model) {
- super(model, Collections.<E>emptyList(), true);
+ writer.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export catches to file: " + file, e);
+ } finally {
+ IOUtils.closeQuietly(writer);
}
-
- public void write(Iterable<E> data, Writer writer) throws Exception {
- this.data = data;
- write(writer);
- }
}
}
Modified: trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml
===================================================================
--- trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml 2013-04-05 17:17:13 UTC (rev 742)
+++ trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml 2013-04-06 11:27:27 UTC (rev 743)
@@ -1,4 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ Tutti :: Service
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2012 - 2013 Ifremer
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
Property changes on: trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r742 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing: content/operation content/operation/catches/accidental content/operation/catches/benthos content/operation/catches/marinelitter content/operation/catches/plankton content/operation/catches/species util/comment util/table
by kmorin@users.forge.codelutin.com 05 Apr '13
by kmorin@users.forge.codelutin.com 05 Apr '13
05 Apr '13
Author: kmorin
Date: 2013-04-05 19:17:13 +0200 (Fri, 05 Apr 2013)
New Revision: 742
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/742
Log:
fixes #2239 [CAPTURE] mauvaise d?\195?\169tection des changements
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.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/accidental/AccidentalBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx
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/util/comment/CommentCellEditor.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -33,6 +33,8 @@
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.sort.TableSortController;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import java.awt.Component;
@@ -54,29 +56,6 @@
super(parentUi.getHandler().getContext(), ui, properties);
}
- public final void saveSelectedRowIfRequired(FocusEvent event) {
-
- Component oppositeComponent = event.getOppositeComponent();
-
- JXTable parentContainer = null;
-
- if (oppositeComponent != null) {
-
- // check out if still on table
- parentContainer = SwingUtil.getParentContainer(
- oppositeComponent, JXTable.class);
- }
-
- if (parentContainer == null) {
-
- // out of the table can save
- if (getModel().getFishingOperation() != null) {
-
- saveSelectedRowIfNeeded();
- }
- }
- }
-
/**
* To clear the table selection.
* <p/>
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-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -431,12 +431,12 @@
firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE_SECOND, oldValue, second);
}
-// public void setGearShootingEndTime(Date gearShootingEndDate) {
-// Object oldValue = getGearShootingEndDate();
-// if (oldValue != null) {
-// setGearShootingEndDate(gearShootingEndDate);
-// }
-// }
+ public void setGearShootingEndTime(Date gearShootingEndDate) {
+ Object oldValue = getGearShootingEndDate();
+ if (oldValue != null) {
+ setGearShootingEndDate(gearShootingEndDate);
+ }
+ }
public String getValidationContext() {
return validationContext;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-04-05 17:17:13 UTC (rev 742)
@@ -63,7 +63,7 @@
constructorParams='"tuttihelp.editAccidentalBatch.help"'/>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'/>
+ <JXTable id='table'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -128,6 +128,7 @@
Object oldValue,
Object newValue) {
recomputeRowValidState(row);
+ saveSelectedRowIfNeeded();
}
@Override
@@ -144,7 +145,9 @@
log.info("Row " + row + " was modified, will save it");
}
+ rowMonitor.setBean(null);
saveRow(row);
+ rowMonitor.setBean(row);
// clear modified flag on the monitor
rowMonitor.clearModified();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-04-05 17:17:13 UTC (rev 742)
@@ -162,7 +162,7 @@
</Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'
+ <JXTable id='table'
onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -283,6 +283,8 @@
recomputeRowValidState(row);
}
+ saveSelectedRowIfNeeded();
+
// when row valid state has changed, recompute action enabled states
recomputeBatchActionEnable();
}
@@ -303,7 +305,9 @@
"[ Captures - Benthos ] " +
"Sauvegarde des modifications de " + row + '.');
+ rowMonitor.setBean(null);
saveRow(row);
+ rowMonitor.setBean(row);
// clear modified flag on the monitor
rowMonitor.clearModified();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-05 17:17:13 UTC (rev 742)
@@ -106,8 +106,8 @@
</Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
- onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
+ <JXTable id='table'
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -175,6 +175,8 @@
Object newValue) {
recomputeRowValidState(row);
+ saveSelectedRowIfNeeded();
+
// when row valid state has changed, recompute action enabled states
recomputeBatchActionEnable();
}
@@ -190,7 +192,9 @@
log.info("Row " + row + " was modified, will save it");
}
+ rowMonitor.setBean(null);
saveRow(row);
+ rowMonitor.setBean(row);
// clear modified flag on the monitor
rowMonitor.clearModified();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx 2013-04-05 17:17:13 UTC (rev 742)
@@ -94,8 +94,7 @@
</Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table'
- onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
+ <JXTable id='table'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -62,7 +62,7 @@
public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_VALUE = "sortedUnsortedCategoryValue";
- public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT = "sortedUnsortedCategoryComputedWeight";
+ public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT = "sortedUnsortedCategoryWeight";
public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_COMPUTED_WEIGHT = "sortedUnsortedCategoryComputedWeight";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-04-05 17:17:13 UTC (rev 742)
@@ -162,7 +162,7 @@
</Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'
+ <JXTable id='table'
onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
</JScrollPane>
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-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -293,6 +293,8 @@
recomputeRowValidState(row);
}
+ saveSelectedRowIfNeeded();
+
// when row valid state has changed, recompute action enabled states
recomputeBatchActionEnable();
}
@@ -313,7 +315,9 @@
"[ Captures - Espèces ] " +
"Sauvegarde des modifications de " + row + '.');
+ rowMonitor.setBean(null);
saveRow(row);
+ rowMonitor.setBean(row);
// clear modified flag on the monitor
rowMonitor.clearModified();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/comment/CommentCellEditor.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/comment/CommentCellEditor.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/comment/CommentCellEditor.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -109,7 +109,7 @@
@Override
public boolean shouldSelectCell(EventObject anEvent) {
- return false;
+ return true;
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-04-05 14:34:01 UTC (rev 741)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-04-05 17:17:13 UTC (rev 742)
@@ -362,7 +362,7 @@
}
// save selected entry if required
- saveSelectedRowIfNeeded();
+// saveSelectedRowIfNeeded();
if (log.isDebugEnabled()) {
log.debug("Will monitor entry: " + newRow);
@@ -506,7 +506,6 @@
R row = rowMonitor.getBean();
if (row != null) {
-
saveSelectedRowIfRequired(rowMonitor, row);
}
}
1
0
r741 - in trunk/tutti-service/src/main/java/fr/ifremer/tutti/service: . export
by tchemit@users.forge.codelutin.com 05 Apr '13
by tchemit@users.forge.codelutin.com 05 Apr '13
05 Apr '13
Author: tchemit
Date: 2013-04-05 16:34:01 +0200 (Fri, 05 Apr 2013)
New Revision: 741
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/741
Log:
refs #1875: [IMP/EXP] - Export des donn?\195?\169es de campagne : format g?\195?\169n?\195?\169rique (debut)
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
Modified:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-05 14:19:05 UTC (rev 740)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiCsvUtil.java 2013-04-05 14:34:01 UTC (rev 741)
@@ -31,6 +31,7 @@
import org.nuiton.util.csv.ext.AbstractImportExportModel;
import java.text.ParseException;
+import java.util.Date;
import java.util.Map;
import java.util.Set;
@@ -40,7 +41,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class TuttiCsvUtil {
+public class TuttiCsvUtil extends Common {
public static abstract class AbstractTuttiImportExportModel<M> extends AbstractImportExportModel<M> {
@@ -179,6 +180,15 @@
}
}
+ public static final ValueParserFormatter<Date> YEAR =
+ new DateValue("yyyy");
+
+ public static final ValueParserFormatter<Date> DAY_EMPTY_TIME =
+ new DateValue("dd/MM/yyyy 00:00:00");
+
+ public static final ValueParserFormatter<Date> TIME =
+ new DateValue("HH:mm:ss");
+
protected TuttiCsvUtil() {
// no instance
}
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java 2013-04-05 14:34:01 UTC (rev 741)
@@ -0,0 +1,65 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.service.TuttiCsvUtil;
+
+/**
+ * Model of a survey export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class SurveyExportModel extends TuttiCsvUtil.AbstractTuttiImportExportModel<SurveyExportRow> {
+
+ public SurveyExportModel(char separator) {
+ super(separator);
+
+ newColumnForExport("Annee", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.YEAR);
+ newColumnForExport("Serie", Cruise.PROPERTY_PROGRAM);
+ newColumnForExport("Serie_Partielle", Cruise.PROPERTY_SURVEY_PART);
+ newColumnForExport("Navire", Cruise.PROPERTY_VESSEL);
+//FIXME newColumnForExport("Pays", Cruise.PROPERTY_VESSEL);
+ newColumnForExport("Zone_Etude", "programeZoneName");
+ newColumnForExport("Id_Sismer", Cruise.PROPERTY_NAME);
+ newColumnForExport("Date_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("Heure_Deb_Campagne", Cruise.PROPERTY_BEGIN_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Port_Deb_Campagne", Cruise.PROPERTY_DEPARTURE_LOCATION);
+ newColumnForExport("Date_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.DAY_EMPTY_TIME);
+ newColumnForExport("Heure_Fin_Campagne", Cruise.PROPERTY_END_DATE, TuttiCsvUtil.TIME);
+ newColumnForExport("Port_Fin_Campagne", Cruise.PROPERTY_RETURN_LOCATION);
+//FIXME newColumnForExport("Responsable_Serie", Cruise.PROPERTY_HEAD_OF_MISSION);
+ newColumnForExport("Chef_Mission", Cruise.PROPERTY_HEAD_OF_MISSION);
+ newColumnForExport("Resp_Salle_Tri", Cruise.PROPERTY_HEAD_OF_SORT_ROOM);
+ newColumnForExport("Commentaire", Cruise.PROPERTY_COMMENT);
+ }
+
+ @Override
+ public SurveyExportRow newEmptyInstance() {
+ return new SurveyExportRow();
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java 2013-04-05 14:34:01 UTC (rev 741)
@@ -0,0 +1,103 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.referential.Person;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * A row in a survey export.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class SurveyExportRow implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Cruise cruise;
+
+ public SurveyExportRow(Cruise cruise) {
+ this.cruise = cruise;
+ }
+
+ public Date getBeginDate() {
+ return cruise.getBeginDate();
+ }
+
+ public String getProgram() {
+ return cruise.getProgram().getName();
+ }
+
+ public String getSurveyPart() {
+ return cruise.getSurveyPart();
+ }
+
+ public String getProgramZone() {
+ return cruise.getProgram().getZone().getName();
+ }
+
+ public String getVessel() {
+ return cruise.getVessel().getName();
+ }
+
+ public String getCountry() {
+ //FIXME
+ return null;
+ }
+
+ public String getName() {
+ //FIXME
+ return cruise.getName();
+ }
+
+ public String getDepartureLocation() {
+ return cruise.getDepartureLocation().getName();
+ }
+
+ public Date getEndDate() {
+ return cruise.getEndDate();
+ }
+
+ public String getReturnLocation() {
+ return cruise.getReturnLocation().getName();
+ }
+
+ public String getComment() {
+ return cruise.getComment();
+ }
+
+ public List<Person> getHeadOfMission() {
+ return cruise.getHeadOfMission();
+ }
+
+ public List<Person> getHeadOfSortRoom() {
+ return cruise.getHeadOfSortRoom();
+ }
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/SurveyExportRow.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java 2013-04-05 14:34:01 UTC (rev 741)
@@ -0,0 +1,252 @@
+package fr.ifremer.tutti.service.export;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.io.Files;
+import fr.ifremer.tutti.TuttiIOUtil;
+import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.service.AbstractTuttiService;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiServiceContext;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.csv.Export;
+import org.nuiton.util.csv.ExportModel;
+import org.nuiton.util.csv.ext.RepeatableExport;
+
+import java.io.BufferedWriter;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * To export data in the generic format.
+ * <p/>
+ * See http://forge.codelutin.com/issues/1875.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class TuttiExportService extends AbstractTuttiService {
+
+ private static final Log log =
+ LogFactory.getLog(TuttiExportService.class);
+
+ protected PersistenceService persistenceService;
+
+ @Override
+ public void setServiceContext(TuttiServiceContext context) {
+ super.setServiceContext(context);
+ persistenceService = getService(PersistenceService.class);
+ }
+
+ public void exportCruise(String cruiseId, File exportFile) {
+
+ Preconditions.checkNotNull(cruiseId);
+ Preconditions.checkNotNull(exportFile);
+
+ Cruise cruise = persistenceService.getCruise(cruiseId);
+ Preconditions.checkNotNull(cruise);
+
+ File basedir = context.getConfig().newTempFile("exportCruise-" + cruiseId);
+
+ File surveyFile = new File(basedir, "survey.csv");
+ exportSurvey(surveyFile, cruise);
+
+ File parameterFile = new File(basedir, "parameter.csv");
+ File operationFile = new File(basedir, "operation.csv");
+ File catchesFile = new File(basedir, "catch.csv");
+
+ SurveyExportModel operationExportModel = null;
+ SurveyExportModel parameterExportModel = null;
+ SurveyExportModel catchExportModel = null;
+
+ OperationWriter operationWriter = null;
+
+ try {
+ operationWriter = new OperationWriter(
+ operationFile,
+ parameterFile,
+ catchesFile,
+ operationExportModel,
+ parameterExportModel,
+ catchExportModel);
+
+ List<FishingOperation> operations =
+ persistenceService.getAllFishingOperation(cruiseId);
+
+ for (FishingOperation operation : operations) {
+ exportOperation(operationWriter, cruise, operation);
+ }
+ operationWriter.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export operations", e);
+ } finally {
+ IOUtils.closeQuietly(operationWriter);
+ }
+ TuttiIOUtil.zip(basedir, exportFile, "Could not create export zip");
+ }
+
+ protected void exportSurvey(File file, Cruise cruise) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export survey to file: " + file);
+ }
+
+ SurveyExportModel csvModel =
+ new SurveyExportModel(context.getConfig().getCsvSeparator());
+
+ SurveyExportRow row = new SurveyExportRow(cruise);
+ List<SurveyExportRow> rows = Lists.newArrayList((row));
+
+ BufferedWriter writer = null;
+ try {
+ writer = Files.newWriter(file, Charsets.UTF_8);
+
+ Export export = Export.newExport(csvModel, rows);
+ export.write(writer);
+ writer.close();
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not export survey to file: " + file, e);
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+ }
+
+ protected void exportOperation(OperationWriter operationWriter,
+ Cruise cruise,
+ FishingOperation operation) throws Exception {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export operation: " + operation.getId());
+ }
+
+ operationWriter.exportOperation(cruise, operation);
+ operationWriter.exportParameter(cruise, operation);
+ operationWriter.exportCatch(cruise, operation);
+ }
+
+
+ class OperationWriter implements Closeable {
+
+ final BufferedWriter operationWriter;
+
+ final BufferedWriter parameterWriter;
+
+ final BufferedWriter catchWriter;
+
+ final TuttiRepeatableExport<SurveyExportRow> operationExporter;
+
+ final TuttiRepeatableExport<SurveyExportRow> parameterExporter;
+
+ final TuttiRepeatableExport<SurveyExportRow> catchExporter;
+
+ OperationWriter(File operationFile,
+ File parameterFile,
+ File catchesFile,
+ SurveyExportModel operationExportModel,
+ SurveyExportModel parameterExportModel,
+ SurveyExportModel catchExportModel) {
+
+ try {
+
+ operationWriter = Files.newWriter(operationFile, Charsets.UTF_8);
+ parameterWriter = Files.newWriter(parameterFile, Charsets.UTF_8);
+ catchWriter = Files.newWriter(catchesFile, Charsets.UTF_8);
+ } catch (FileNotFoundException e) {
+ throw new TuttiTechnicalException(e);
+ }
+ operationExporter = new TuttiRepeatableExport<SurveyExportRow>(operationExportModel);
+ parameterExporter = new TuttiRepeatableExport<SurveyExportRow>(parameterExportModel);
+ catchExporter = new TuttiRepeatableExport<SurveyExportRow>(catchExportModel);
+ }
+
+ void exportOperation(Cruise cruise, FishingOperation operation) throws Exception {
+
+ SurveyExportRow row = new SurveyExportRow(cruise);
+ List<SurveyExportRow> rows = Lists.newArrayList((row));
+ operationExporter.write(rows, operationWriter);
+ }
+
+ void exportParameter(Cruise cruise, FishingOperation operation) throws Exception {
+
+ SurveyExportRow row = new SurveyExportRow(cruise);
+ List<SurveyExportRow> rows = Lists.newArrayList((row));
+ parameterExporter.write(rows, parameterWriter);
+ }
+
+ void exportCatch(Cruise cruise, FishingOperation operation) throws Exception {
+ SurveyExportRow row = new SurveyExportRow(cruise);
+ List<SurveyExportRow> rows = Lists.newArrayList((row));
+ catchExporter.write(rows, catchWriter);
+ }
+
+ @Override
+ public void close() throws IOException {
+ try {
+ if (operationWriter != null) {
+ operationWriter.close();
+ }
+ } finally {
+
+ try {
+ if (parameterWriter != null) {
+ parameterWriter.close();
+ }
+ } catch (IOException e) {
+
+ if (catchWriter != null) {
+ catchWriter.close();
+ }
+ }
+ }
+ }
+ }
+
+ class TuttiRepeatableExport<E> extends RepeatableExport<E> {
+
+ public TuttiRepeatableExport(ExportModel<E> model) {
+ super(model, Collections.<E>emptyList(), true);
+ }
+
+ public void write(Iterable<E> data, Writer writer) throws Exception {
+ this.data = data;
+ write(writer);
+ }
+ }
+
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/export/TuttiExportService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r740 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol
by kmorin@users.forge.codelutin.com 05 Apr '13
by kmorin@users.forge.codelutin.com 05 Apr '13
05 Apr '13
Author: kmorin
Date: 2013-04-05 16:19:05 +0200 (Fri, 05 Apr 2013)
New Revision: 740
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/740
Log:
fixes #2232 [CAPTURE] - Import/Export PUPITRI : ne pas demander le fichier pupitri ?\195?\160 ce stade
fixes #1868 [CAPTURE] - Import/Export PUPITRI
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportPupitriAction.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportPupitriAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportPupitriAction.java 2013-04-05 13:36:16 UTC (rev 739)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportPupitriAction.java 2013-04-05 14:19:05 UTC (rev 740)
@@ -68,8 +68,7 @@
file = TuttiUIUtil.chooseFile(
getContext().getMainUI(),
_("tutti.editProtocol.title.choose.speciesExportFile"),
- _("tutti.editProtocol.action.chooseProtocolSpeciesFile"),
- "^.*\\.ibts", _("tutti.common.file.ibts")
+ _("tutti.editProtocol.action.chooseProtocolSpeciesFile")
);
if (file == null) {
@@ -77,9 +76,6 @@
doAction = false;
} else {
- // add extension if missing
- file = TuttiIOUtil.addExtensionIfMissing(file, ".ibts");
-
// ask user to confirm overwrite.
doAction = getHandler().askOverwriteFile(file);
}
1
0
05 Apr '13
Author: kmorin
Date: 2013-04-05 15:36:16 +0200 (Fri, 05 Apr 2013)
New Revision: 739
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/739
Log:
fixes #2230 [PROTOCOLE] - erreur ?\195?\160 l'import d'un .csv
refs #2232 [CAPTURE] - Import/Export PUPITRI : ne pas demander le fichier pupitri ?\195?\160 ce stade
fixes #2237 [CAPTURE] Ne pas prendre en compte les poids de tr?\195?\169mie et carrousel pour l'?\195?\169l?\195?\169vation
refs #1868 [CAPTURE] - Import/Export PUPITRI
refs #2079: [CONTROLE] - Contr?\195?\180le / Validation apr?\195?\168s la saisie
Added:
trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml
Modified:
trunk/pom.xml
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/ValidationService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportService.java
trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/Program-error-validation.xml
trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
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/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/CreateBenthosMelagAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/CreateSpeciesMelagAction.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/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolBenthosAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/pom.xml 2013-04-05 13:36:16 UTC (rev 739)
@@ -270,11 +270,6 @@
</dependency>
<!-- swing widgets -->
- <dependency>
- <groupId>org.nuiton</groupId>
- <artifactId>nuiton-widgets</artifactId>
- <version>1.1.1</version>
- </dependency>
<dependency>
<groupId>org.swinglabs.swingx</groupId>
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -128,6 +128,10 @@
return Multimaps.index(list, GET_TAXON_ID);
}
+ public static Multimap<String, Species> splitByRefTaxCode(Iterable<Species> list) {
+ return Multimaps.index(list, GET_REF_TAX_CODE);
+ }
+
public static final Function<Species, String> GET_TAXON_ID = new Function<Species, String>() {
@Override
public String apply(Species input) {
@@ -135,6 +139,13 @@
}
};
+ public static final Function<Species, String> GET_REF_TAX_CODE = new Function<Species, String>() {
+ @Override
+ public String apply(Species input) {
+ return String.valueOf(input.getRefTaxCode());
+ }
+ };
+
public static final Function<TuttiEntity, String> GET_ID = new Function<TuttiEntity, String>() {
@Override
public String apply(TuttiEntity input) {
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-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -60,6 +60,8 @@
public static final String BY_NAME = "byName";
+ public static final String ONLY_NAME = "onlyName";
+
public static final String SEPARATOR = "#";
/** Delegate decorator provider. */
@@ -112,6 +114,7 @@
});
registerDecorator(new VesselDecorator());
registerDecorator(new ProgramDecorator());
+ registerTuttiDecorator(Program.class, ONLY_NAME, "${name}$s", SEPARATOR, " - ");
registerDecorator(new SpeciesDecorator());
registerDecorator(FROM_PROTOCOL, new SpeciesFromProtocolDecorator());
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/ValidationService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/ValidationService.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/ValidationService.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -27,6 +27,7 @@
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.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import org.nuiton.validator.NuitonValidator;
import org.nuiton.validator.NuitonValidatorFactory;
@@ -63,4 +64,10 @@
NuitonValidatorResult result = validator.validate(fishingOperation);
return result;
}
+
+ public NuitonValidatorResult validateSpeciesBatch(SpeciesBatch speciesBatch) {
+ NuitonValidator<SpeciesBatch> validator = NuitonValidatorFactory.newValidator(SpeciesBatch.class);
+ NuitonValidatorResult result = validator.validate(speciesBatch);
+ return result;
+ }
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/TuttiWeightComputingService.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -1,44 +1,18 @@
package fr.ifremer.tutti.service.catches;
-/*
- * #%L
- * Tutti :: Service
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
import fr.ifremer.tutti.TuttiBusinessException;
-import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
-import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
-import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.SortedUnsortedEnum;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
-import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
+import fr.ifremer.tutti.persistence.entities.data.*;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.service.AbstractTuttiService;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.ValidationService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.validator.NuitonValidatorResult;
+import javax.swing.*;
import java.util.List;
import static org.nuiton.i18n.I18n._;
@@ -54,15 +28,18 @@
protected PersistenceService persistenceService;
+ protected ValidationService validationService;
+
@Override
public void setServiceContext(TuttiServiceContext context) {
super.setServiceContext(context);
persistenceService = getService(PersistenceService.class);
+ validationService = getService(ValidationService.class);
}
public void computeCatchBatchWeights(CatchBatch catchBatch,
- BatchContainer<SpeciesBatch> rootSpeciesBatch,
- BatchContainer<SpeciesBatch> rootBenthosBatch) {
+ BatchContainer<SpeciesBatch> rootSpeciesBatch,
+ BatchContainer<SpeciesBatch> rootBenthosBatch) {
// Species
Float speciesTotalComputedSortedWeight = 0f;
@@ -173,15 +150,11 @@
catchBatch.setBenthosTotalComputedWeight(benthosTotalWeight);
// Catch
- Float carrouselWeight = catchBatch.getCatchTotalSortedCarousselWeight();
Float totalUnsortedWeight = catchBatch.getSpeciesTotalUnsortedComputedWeight() +
catchBatch.getBenthosTotalUnsortedComputedWeight();
- Float totalSortedWeight;
- if (carrouselWeight != null) {
- totalSortedWeight = carrouselWeight;
- } else {
- totalSortedWeight = speciesTotalSortedWeight + benthosTotalSortedWeight;
- }
+
+ Float totalSortedWeight = speciesTotalSortedWeight + benthosTotalSortedWeight;
+
catchBatch.setCatchTotalSortedComputedWeight(totalSortedWeight);
catchBatch.setCatchTotalUnsortedComputedWeight(totalUnsortedWeight);
@@ -193,10 +166,11 @@
+ totalSortedWeight)) {
throw new TuttiBusinessException(_("tutti.service.catches.computeWeights.error.incoherentTotal"));
+ } else {
+ catchBatch.setCatchTotalRejectedComputedWeight(totalWeight
+ - totalUnsortedWeight
+ - totalSortedWeight);
}
- catchBatch.setCatchTotalRejectedComputedWeight(totalWeight
- - totalUnsortedWeight
- - totalSortedWeight);
} else if (totalWeight == null) {
if (rejectedWeight == null) {
@@ -204,8 +178,8 @@
catchBatch.setCatchTotalRejectedComputedWeight(0f);
}
catchBatch.setCatchTotalComputedWeight(totalUnsortedWeight
- + totalSortedWeight
- + rejectedWeight);
+ + totalSortedWeight
+ + rejectedWeight);
} else if (!totalWeight.equals(totalUnsortedWeight + totalSortedWeight + rejectedWeight)) {
throw new TuttiBusinessException(_("tutti.service.catches.computeWeights.error.incoherentTotal"));
@@ -220,7 +194,8 @@
if (rootSpeciesBatch != null) {
List<SpeciesBatch> roots = rootSpeciesBatch.getChildren();
- for (SpeciesBatch batch : roots) {
+ for (int i = 0; i < roots.size(); i++) {
+ SpeciesBatch batch = roots.get(i);
computeSpeciesBatch(batch);
}
}
@@ -235,7 +210,8 @@
List<SpeciesBatch> roots = rootBenthosBatch.getChildren();
- for (SpeciesBatch batch : roots) {
+ for (int i = 0; i < roots.size(); i++) {
+ SpeciesBatch batch = roots.get(i);
computeSpeciesBatch(batch);
}
@@ -247,6 +223,12 @@
Float categoryWeight = batch.getSampleCategoryWeight();
Float rowWeight = batch.getWeight();
+ NuitonValidatorResult validation = validationService.validateSpeciesBatch(batch);
+ if (!validation.isValid()) {
+ List<String> messages = validation.getErrorMessages(SpeciesBatch.PROPERTY_WEIGHT);
+ throw new TuttiBusinessException(_(messages.get(0)));
+ }
+
List<SpeciesBatch> children = batch.getChildBatchs();
// if the row is not a leaf
if (batch.sizeChildBatchs() > 0) {
@@ -262,23 +244,6 @@
}
if (sum != null) {
-// if (categoryWeight == null) {
-// finestCategory.setComputedWeight(sum);
-// for (SpeciesBatchRowModel child : children) {
-// child.getFinestCategory().setSubSample(false);
-// }
-//
-// } else if (categoryWeight < sum) {
-// throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentParentCategoryWeight"));
-//
-// } else {
-// boolean subSample = categoryWeight > sum;
-// for (SpeciesBatchRowModel child : children) {
-// child.getFinestCategory().setSubSample(subSample);
-// }
-// sum = categoryWeight;
-// }
-// result = sum;
if (categoryWeight == null) {
batch.setSampleCategoryComputedWeight(sum);
@@ -316,7 +281,7 @@
}
if (categoryWeight == null && rowWeight != null) {
- throw new TuttiBusinessException(_("tutti.service.catches.computeWeights.error.incoherentRowWeightCategory"));
+// throw new TuttiBusinessException(_("tutti.service.catches.computeWeights.error.incoherentRowWeightCategory"));
} else if (categoryWeight == null && frequencyWeight != null) {
// if the category weight is null and the frequencies have a weight,
@@ -325,7 +290,7 @@
result = frequencyWeight;
} else if (frequencyWeight != null
- && !frequencyWeight.equals(categoryWeight)) {
+ && !frequencyWeight.equals(categoryWeight)) {
// if the weight of the frequencies is different from the category
// weight, then set the weight of the sample
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportService.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/TuttiPupitriImportExportService.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -27,13 +27,11 @@
import com.google.common.base.Charsets;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Multimaps;
+import com.google.common.collect.*;
import com.google.common.io.Files;
import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
@@ -49,6 +47,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.service.AbstractTuttiService;
import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiDataContext;
import fr.ifremer.tutti.service.TuttiServiceContext;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.FileUtils;
@@ -62,10 +61,7 @@
import java.io.File;
import java.io.IOException;
import java.io.Reader;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* @author kmorin <kmorin(a)codelutin.com>
@@ -78,6 +74,8 @@
protected PersistenceService persistenceService;
+ protected TuttiDataContext dataContext;
+
protected CaracteristicQualitativeValue sortedCaracteristic;
protected CaracteristicQualitativeValue unsortedCaracteristic;
@@ -96,6 +94,7 @@
public void setServiceContext(TuttiServiceContext context) {
super.setServiceContext(context);
persistenceService = getService(PersistenceService.class);
+ dataContext = context.getDataContext();
// get the sorted/unsorted caracteristics
Caracteristic sortedUnsortedcaracteristic =
@@ -113,22 +112,29 @@
bigCaracteristic = SizeEnum.BIG.getValue(sizeCaracteristic);
}
- public void importPupitri(File trunkFile,
+ /**
+ *
+ * @param trunkFile
+ * @param carrouselFile
+ * @param operation
+ * @param catchBatch
+ * @return the number of rows of the .car file which have not been imported
+ */
+ public int importPupitri(File trunkFile,
File carrouselFile,
- File speciesFile,
FishingOperation operation,
- CatchBatch catchBatch,
- List<Species> referentSpecies) {
+ CatchBatch catchBatch) {
importPupitriTrunk(trunkFile, operation, catchBatch);
- importPupitriCarrousel(carrouselFile, speciesFile, operation, catchBatch, referentSpecies);
+ int result = importPupitriCarrousel(carrouselFile, operation, catchBatch);
addFileAsAttachment(trunkFile, catchBatch);
addFileAsAttachment(carrouselFile, catchBatch);
- addFileAsAttachment(speciesFile, catchBatch);
persistenceService.saveCatchBatch(catchBatch);
+
+ return result;
}
protected void addFileAsAttachment(File f, CatchBatch catchBatch) {
@@ -213,66 +219,43 @@
}
- protected void importPupitriCarrousel(File carrouselFile,
- File speciesFile,
+ protected int importPupitriCarrousel(File carrouselFile,
FishingOperation operation,
- CatchBatch catchBatch,
- List<Species> referentSpecies) {
+ CatchBatch catchBatch) {
if (log.isInfoEnabled()) {
log.info("Will import pupitri operation [" + operation.toString() +
"] carrousel from file: " + carrouselFile);
}
+ int result = 0;
Reader reader = null;
File fileWithHeaders = null;
- Import<SpeciesRow> speciesImporter = null;
Import<CarrouselRow> carrouselImporter = null;
-
- char speciesSeparator = ';';
- SpeciesRowModel speciesCsvModel = new SpeciesRowModel(speciesSeparator);
char carrouselSeparator = ',';
CarrouselRowModel carrouselCsvModel = new CarrouselRowModel(carrouselSeparator);
try {
- // import the species
- String[] header = new String[]{
- SpeciesRow.PROPERTY_CODE_FIRST_PART,
- SpeciesRow.PROPERTY_CODE_SECOND_PART,
- SpeciesRow.PROPERTY_SCIENTIFIC_NAME
- };
- fileWithHeaders = createFileWithHeaders(speciesFile, header, speciesSeparator);
- reader = Files.newReader(fileWithHeaders, Charsets.UTF_8);
- speciesImporter = Import.newImport(speciesCsvModel, reader);
-
// get the map of species by survey code
- Multimap<String, Species> speciesBySurveyCode =
- Multimaps.index(referentSpecies, new Function<Species, String>() {
- @Override
- public String apply(Species input) {
- String surveyCode = String.valueOf(input.getSurveyCode());
- int end = Math.min(surveyCode.length(), 7);
- return surveyCode.substring(0, end);
- }
- });
- // keep only the species whose survey code and name are the same
- // in theimported file and the referent species
- Map<String, Species> speciesMap = Maps.newHashMap();
- for (SpeciesRow bean : speciesImporter) {
- String code = bean.getCodeFirstPart() + bean.getCodeSecondPart();
- Collection<Species> speciesCollection = speciesBySurveyCode.get(code.trim());
- for (Species species : speciesCollection) {
- if (species.getName().equals(bean.getScientificName())) {
- speciesMap.put(code, species);
- break;
- }
- }
- }
+ ListMultimap<String, Species> speciesBySurveyCode = ArrayListMultimap.create();
+ speciesBySurveyCode.putAll(
+ Multimaps.index(dataContext.getReferentSpeciesWithSurveyCode(),
+ new Function<Species, String>() {
+ @Override
+ public String apply(Species input) {
+ String surveyCode = String.valueOf(input.getSurveyCode());
+ int end = Math.min(surveyCode.length(), 7);
+ return surveyCode.substring(0, end);
+ }
+ })
+ );
+ speciesBySurveyCode.putAll(TuttiEntities.splitByRefTaxCode(dataContext.getReferentSpecies()));
+
// import the batches
- header = new String[]{
+ String[] header = new String[]{
CarrouselRow.PROPERTY_FILE_ORIGIN,
CarrouselRow.PROPERTY_DATE,
CarrouselRow.PROPERTY_TIME,
@@ -296,13 +279,15 @@
Float carrouselSortedWeight = 0f;
List<PupitriCatch> catches = Lists.newArrayList();
+ Set<String> notFoundSpecies = Sets.newHashSet();
+
for (CarrouselRow bean : carrouselImporter) {
// is the bean from the current operation and rig ?
if (bean.getOperationCode().equals(operationNumber)
&& bean.getRigNumber().equals(rigNumber)) {
String speciesId = bean.getSpeciesId();
- Species species = speciesMap.get(speciesId);
+ List<Species> speciesList = speciesBySurveyCode.get(speciesId);
Float beanWeight = bean.getWeight();
if (beanWeight < 0f) {
beanWeight = 0f;
@@ -318,8 +303,9 @@
carrouselSortedWeight += beanWeight;
}
- if (species != null) {
+ if (!CollectionUtils.isEmpty(speciesList)) {
+ Species species = speciesList.get(0);
PupitriCatch pupitriCatch = new PupitriCatch(species, sorted);
int catchIndex = catches.indexOf(pupitriCatch);
if (catchIndex >= 0) {
@@ -328,9 +314,13 @@
catches.add(pupitriCatch);
}
pupitriCatch.addToSign(bean.getSign(), beanWeight);
+
+ } else {
+ notFoundSpecies.add(speciesId);
}
}
}
+ result = notFoundSpecies.size();
catchBatch.setCatchTotalSortedCarousselWeight(carrouselSortedWeight);
BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId());
@@ -398,7 +388,6 @@
}
carrouselImporter.close();
- speciesImporter.close();
reader.close();
} catch (Exception e) {
@@ -406,10 +395,11 @@
} finally {
IOUtils.closeQuietly(carrouselImporter);
- IOUtils.closeQuietly(speciesImporter);
IOUtils.closeQuietly(reader);
FileUtils.deleteQuietly(fileWithHeaders);
}
+
+ return result;
}
public void exportSpecies(List<Species> species, File target) {
Modified: trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/Program-error-validation.xml
===================================================================
--- trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/Program-error-validation.xml 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/Program-error-validation.xml 2013-04-05 13:36:16 UTC (rev 739)
@@ -36,7 +36,7 @@
<field-validator type="collectionUniqueKey" short-circuit="true">
<param name="collectionFieldName">existingPrograms</param>
- <param name="keys">name, zone</param>
+ <param name="keys">name</param>
<param name="againstMe">true</param>
<param name="nullValueSkipped">true</param>
<message>tutti.validator.error.program.existingKey</message>
Added: trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml
===================================================================
--- trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml (rev 0)
+++ trunk/tutti-service/src/main/resources/fr/ifremer/tutti/persistence/entities/data/SpeciesBatch-error-validation.xml 2013-04-05 13:36:16 UTC (rev 739)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="weight">
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ !(sampleCategoryWeight == null && weight != null) ]]>
+ </param>
+ <message>tutti.service.catches.computeWeights.error.incoherentRowWeightCategory</message>
+ </field-validator>
+
+ <field-validator type="fieldexpression" short-circuit="true">
+ <param name="expression">
+ <![CDATA[ weight == null || sampleCategoryWeight == null || weight <= sampleCategoryWeight ]]>
+ </param>
+ <message>tutti.service.catches.computeWeights.error.incoherentSampleWeight</message>
+ </field-validator>
+ </field>
+
+</validators>
\ No newline at end of file
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_en_GB.properties 2013-04-05 13:36:16 UTC (rev 739)
@@ -52,6 +52,7 @@
tutti.service.catches.computeWeights.error.incoherentParentCategoryWeight=
tutti.service.catches.computeWeights.error.incoherentRowWeightCategory=
tutti.service.catches.computeWeights.error.incoherentRowWeightFrequency=
+tutti.service.catches.computeWeights.error.incoherentSampleWeight=
tutti.service.catches.computeWeights.error.incoherentSpeciesTotalSorted=
tutti.service.catches.computeWeights.error.incoherentTotal=
tutti.validator.error.comment.too.long=
@@ -97,5 +98,6 @@
tutti.validator.error.program.zone.required=
tutti.validator.error.protocol.name.alreadyUsed=
tutti.validator.error.protocol.name.required=
+tutti.validator.error.speciesBatch.species.required=
tutti.validator.warning.latitude.outOfBounds=
tutti.validator.warning.longitude.outOfBounds=
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2013-04-05 13:36:16 UTC (rev 739)
@@ -7,7 +7,6 @@
tutti.config.option.tmp.directory.description=Répertoire temporaire utilisée par l'application (est nettoyé à chaque démarrage de l'application).
tutti.config.option.version.description=Version courante de l'application
tutti.config.service=Configuration des services de Tutti
-tutti.editCatchBatch.action.computeWeights.error.incoherentParentCategoryWeight=
tutti.property.attachment=Pièce jointe
tutti.property.caracteristic=Caractéristique
tutti.property.country=Pays
@@ -49,6 +48,7 @@
tutti.service.catches.computeWeights.error.incoherentParentCategoryWeight=Le poids de la catégorie est différent de la somme des poids de ses sous-catégories
tutti.service.catches.computeWeights.error.incoherentRowWeightCategory=Le poids de la catégorie ne peut pas être nul si le poids de sous-échantillonage est renseigné
tutti.service.catches.computeWeights.error.incoherentRowWeightFrequency=Le poids total des mensurations est différent du poids du sous-échantillon
+tutti.service.catches.computeWeights.error.incoherentSampleWeight=Le poids de sous-échantillonage est supérieur au poids de la catégorie
tutti.service.catches.computeWeights.error.incoherentSpeciesTotalSorted=Le poids total Vrac des espèces est inférieur à la somme des poids Vrac triés, inerte trié et vivant non détaillé trié
tutti.service.catches.computeWeights.error.incoherentTotal=Le poids total de la capture ne correspond pas à la somme des poids totaux Vrac, Hors Vrac et non triés
tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
@@ -89,10 +89,11 @@
tutti.validator.error.longitude.start.required=La longitude de début de traîne est obligatoire
tutti.validator.error.program.description.required=La description de la série est obligatoire
tutti.validator.error.program.description.too.long=Taille de la description trop longue (limitée à %s caractères)
-tutti.validator.error.program.existingKey=Le couple nom/zone existe déjà
+tutti.validator.error.program.existingKey=Le nom du programme est déjà utilisé
tutti.validator.error.program.name.required=Le nom de la série est obligatoire
tutti.validator.error.program.zone.required=La zone de la série est obligatoire
tutti.validator.error.protocol.name.alreadyUsed=Le nom du protocol est déjà utilisé
tutti.validator.error.protocol.name.required=Le nom du protocol est obligatoire
+tutti.validator.error.speciesBatch.species.required=
tutti.validator.warning.latitude.outOfBounds=La Latitude doit être comprise entre -90.0 et 90.0
tutti.validator.warning.longitude.outOfBounds=La longitude doit être comprise entre -180.0 et 180.0
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-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-05 13:36:16 UTC (rev 739)
@@ -22,7 +22,7 @@
# #L%
###
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Thu Apr 04 20:09:11 CEST 2013
+#Fri Mar 29 10:09:57 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
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-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-04-05 13:36:16 UTC (rev 739)
@@ -22,7 +22,7 @@
# #L%
###
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Thu Apr 04 20:09:11 CEST 2013
+#Fri Mar 29 10:09:57 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
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -35,6 +35,7 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.TuttiDataContext;
import fr.ifremer.tutti.service.TuttiServiceContext;
+import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService;
import fr.ifremer.tutti.service.pupitri.TuttiPupitriImportExportService;
import fr.ifremer.tutti.service.referential.TuttiReferentialImportExportService;
@@ -517,6 +518,10 @@
return serviceContext.getService(TuttiReferentialImportExportService.class);
}
+ public TuttiWeightComputingService getTuttiWeightComputingService() {
+ return serviceContext.getService(TuttiWeightComputingService.class);
+ }
+
public boolean useRealPersistenceService() {
return isDbExist() && isDbLoaded();
}
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-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -33,6 +33,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.Person;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+import fr.ifremer.tutti.service.DecoratorService;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.CloseableUI;
@@ -181,7 +182,8 @@
initBeanFilterableComboBox(ui.getProgramComboBox(),
persistenceService.getAllProgram(),
- model.getProgram());
+ model.getProgram(),
+ DecoratorService.ONLY_NAME);
initBeanFilterableComboBox(ui.getDepartureLocationComboBox(),
persistenceService.getAllHarbour(),
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -25,8 +25,13 @@
* #L%
*/
+import com.google.common.collect.Lists;
import fr.ifremer.tutti.TuttiBusinessException;
+import fr.ifremer.tutti.persistence.entities.data.BatchContainer;
+import fr.ifremer.tutti.persistence.entities.data.CatchBatch;
import fr.ifremer.tutti.persistence.entities.data.SortedUnsortedEnum;
+import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
+import fr.ifremer.tutti.service.catches.TuttiWeightComputingService;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency.BenthosFrequencyRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel;
@@ -53,121 +58,23 @@
@Override
protected void doAction() throws Exception {
- EditCatchesUIModel model = getModel();
+ TuttiWeightComputingService tuttiWeightComputingService = getContext().getTuttiWeightComputingService();
- computeSpeciesBatches();
- computeBenthosBatches();
-
- Float speciesTotalSortedWeight = model.getSpeciesTotalSortedWeight();
- if (speciesTotalSortedWeight == null) {
- speciesTotalSortedWeight = model.getSpeciesTotalSortedComputedWeight();
- }
-
- Float benthosTotalSortedWeight = model.getBenthosTotalSortedWeight();
- if (benthosTotalSortedWeight == null) {
- benthosTotalSortedWeight = model.getBenthosTotalSortedComputedWeight();
- }
-
- Float carrouselWeight = model.getCatchTotalSortedCarousselWeight();
- Float totalUnsortedWeight = model.getSpeciesTotalUnsortedComputedWeight() +
- model.getBenthosTotalUnsortedComputedWeight();
- Float totalSortedWeight;
- if (carrouselWeight != null) {
- totalSortedWeight = carrouselWeight;
- } else {
- totalSortedWeight = speciesTotalSortedWeight + benthosTotalSortedWeight;
- }
- model.setCatchTotalSortedComputedWeight(totalSortedWeight);
- model.setCatchTotalUnsortedComputedWeight(totalUnsortedWeight);
-
- Float totalWeight = model.getCatchTotalWeight();
- Float rejectedWeight = model.getCatchTotalRejectedWeight();
-
- if (rejectedWeight == null && totalWeight != null) {
- if (!totalWeight.equals(totalUnsortedWeight
- + totalSortedWeight)) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentTotal"));
-
- } else {
- model.setCatchTotalRejectedComputedWeight(totalWeight
- - totalUnsortedWeight
- - totalSortedWeight);
- }
-
- } else if (totalWeight == null) {
- if (rejectedWeight == null) {
- rejectedWeight = 0f;
- model.setCatchTotalRejectedComputedWeight(0f);
- }
- model.setCatchTotalComputedWeight(totalUnsortedWeight
- + totalSortedWeight
- + rejectedWeight);
-
- } else if (!totalWeight.equals(totalUnsortedWeight + totalSortedWeight + rejectedWeight)) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentTotal"));
- }
- }
-
- @Override
- public void postSuccessAction() {
- super.postSuccessAction();
-
- getUI().repaint();
- }
-
- //------------------------------------------------------------------------//
- //-- Internal methods --//
- //------------------------------------------------------------------------//
-
- protected void computeSpeciesBatches() {
EditCatchesUIModel model = getModel();
- Float totalSortedWeight = 0f;
- Float totalUnsortedWeight = 0f;
+ BatchContainer<SpeciesBatch> computedSpeciesBatches =
+ tuttiWeightComputingService.getComputedSpeciesBatches(model.getFishingOperation());
+ Float totalSpeciesSortedWeight = computeSpeciesBatches(computedSpeciesBatches);
- List<SpeciesBatchRowModel> roots = getUI().getSpeciesTabContent().getModel().getRows();
- for (int i = 0; i < roots.size(); i++) {
- SpeciesBatchRowModel row = roots.get(i);
- if (row.isBatchRoot()) {
- Float weight = computeSpeciesBatch(row);
- if (weight == null) {
- AbstractSelectTableAction.doSelectCell(getUI().getSpeciesTabContent().getTable(), i, 1);
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.noWeight"));
- }
- if (SortedUnsortedEnum.SORTED.matchValue(row.getSortedUnsortedCategory().getCategoryValue())) {
- totalSortedWeight += weight;
- } else {
- totalUnsortedWeight += weight;
- }
- }
- }
+ BatchContainer<SpeciesBatch> computedBenthosBatches =
+ tuttiWeightComputingService.getComputedBenthosBatches(model.getFishingOperation());
+ Float totalBenthosSortedWeight = computeBenthosBatches(computedBenthosBatches);
- Number inertWeight = model.getSpeciesTotalInertWeight();
- if (inertWeight != null) {
- totalSortedWeight += inertWeight.floatValue();
- } else {
- model.setSpeciesTotalInertComputedWeight(0f);
- }
-
- Number livingNotItemizedWeight = model.getSpeciesTotalLivingNotItemizedWeight();
- if (livingNotItemizedWeight != null) {
- totalSortedWeight += livingNotItemizedWeight.floatValue();
- } else {
- model.setSpeciesTotalLivingNotItemizedComputedWeight(0f);
- }
-
- model.setSpeciesTotalSampleSortedComputedWeight(totalSortedWeight);
-
- Float speciesTotalSortedWeight = model.getSpeciesTotalSortedWeight();
Float rate = getConfig().getDifferenceRateBetweenSortedAndTotalWeights();
- if (speciesTotalSortedWeight == null) {
- speciesTotalSortedWeight = totalSortedWeight;
- model.setSpeciesTotalSortedComputedWeight(totalSortedWeight);
+ if (model.getSpeciesTotalSortedWeight() != null
+ && model.getSpeciesTotalSortedWeight() >= totalSpeciesSortedWeight
+ && model.getSpeciesTotalSortedWeight() < (1 + rate / 100) * totalSpeciesSortedWeight) {
- } else if (speciesTotalSortedWeight < totalSortedWeight) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentSpeciesTotalSorted"));
-
- } else if (speciesTotalSortedWeight < (1 + rate / 100) * totalSortedWeight) {
// Si le "Poids total VRAC" est saisi est que sa valeur
// est supérieure de moins de x% (x en configuration)
// du "Poids total Vrac trié", demander confirmation que
@@ -179,175 +86,20 @@
_("tutti.editCatchBatch.action.computeWeights.replaceTotalSortedWeight.help"));
int answer = JOptionPane.showConfirmDialog(getContext().getActionUI(),
- htmlMessage,
- _("tutti.editCatchBatch.action.computeWeights.replaceTotalSortedWeight.title"),
- JOptionPane.YES_NO_OPTION,
- JOptionPane.QUESTION_MESSAGE);
+ htmlMessage,
+ _("tutti.editCatchBatch.action.computeWeights.replaceTotalSortedWeight.title"),
+ JOptionPane.YES_NO_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
if (answer == JOptionPane.NO_OPTION) {
model.setSpeciesTotalSortedWeight(null);
- speciesTotalSortedWeight = totalSortedWeight;
- model.setSpeciesTotalSortedComputedWeight(totalSortedWeight);
+ model.setSpeciesTotalSortedComputedWeight(totalSpeciesSortedWeight);
}
}
+ if (model.getBenthosTotalSortedWeight() != null
+ && model.getBenthosTotalSortedWeight() >= totalBenthosSortedWeight
+ && model.getBenthosTotalSortedWeight() < (1 + rate / 100) * totalSpeciesSortedWeight) {
- model.setSpeciesTotalUnsortedComputedWeight(totalUnsortedWeight);
-
- Float totalWeight = totalUnsortedWeight + speciesTotalSortedWeight;
- model.setSpeciesTotalComputedWeight(totalWeight);
- }
-
- protected Float computeSpeciesBatch(SpeciesBatchRowModel row) {
- SampleCategory finestCategory = row.getFinestCategory();
-
- Float result = null;
- Float categoryWeight = finestCategory.getCategoryWeight();
- Float rowWeight = row.getWeight();
-
- List<SpeciesBatchRowModel> children = row.getChildBatch();
- // if the row is not a leaf
- if (!row.isBatchLeaf()) {
- Float sum = 0f;
- // make the sum of the children weights
- for (SpeciesBatchRowModel child : children) {
- Float weight = computeSpeciesBatch(child);
- if (weight == null) {
- sum = null;
- break;
- }
- sum += weight;
- }
-
- if (sum != null) {
- if (categoryWeight == null) {
- finestCategory.setComputedWeight(sum);
- for (SpeciesBatchRowModel child : children) {
- child.getFinestCategory().setSubSample(false);
- }
-
- } else if (categoryWeight < sum) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentParentCategoryWeight"));
-
- } else {
- boolean subSample = categoryWeight > sum;
- for (SpeciesBatchRowModel child : children) {
- child.getFinestCategory().setSubSample(subSample);
- }
- sum = categoryWeight;
- }
- result = sum;
- }
-
- } else {// the row is a leaf
- row.setComputedWeight(null);
-
- List<SpeciesFrequencyRowModel> frequency = row.getFrequency();
-
- if (CollectionUtils.isNotEmpty(frequency)) {
- // if there are frequencies, then compute their weight
- Float frequencyWeight = 0f;
- for (SpeciesFrequencyRowModel frequencyModel : frequency) {
- Float w = frequencyModel.getWeight();
- if (w == null) {
-
- // can't sum when a null value appears
- frequencyWeight = null;
- break;
-
- } else if (frequencyWeight != null) {
-
- // still can sum weights
- frequencyWeight += w;
- }
- }
-
- if (categoryWeight == null && rowWeight != null) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentRowWeightCategory"));
-
- } else if (categoryWeight == null && frequencyWeight != null) {
- // if the category weight is null and the frequencies have a weight,
- // then this weight is the result
- finestCategory.setComputedWeight(frequencyWeight);
- result = frequencyWeight;
-
- } else if (frequencyWeight != null
- && !frequencyWeight.equals(categoryWeight)) {
-
- // if the weight of the frequencies is different from the category
- // weight, then set the weight of the sample
- if (frequencyWeight > categoryWeight) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentCategoryWeight"));
-
- } else if (rowWeight == null) {
- row.setComputedWeight(frequencyWeight);
-
- } else if (!rowWeight.equals(frequencyWeight)) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentRowWeightFrequency"));
- }
- result = categoryWeight;
-
- } else {
- result = categoryWeight;
- }
-
- } else {
- result = categoryWeight;
- }
- }
-
- return result;
- }
-
- protected void computeBenthosBatches() {
-
- EditCatchesUIModel model = getModel();
-
- Float totalSortedWeight = 0f;
- Float totalUnsortedWeight = 0f;
-
- List<BenthosBatchRowModel> roots = getUI().getBenthosTabContent().getModel().getRows();
- for (int i = 0; i < roots.size(); i++) {
- BenthosBatchRowModel row = roots.get(i);
- if (row.isBatchRoot()) {
- Float weight = computeBenthosBatch(row);
- if (weight == null) {
- AbstractSelectTableAction.doSelectCell(getUI().getBenthosTabContent().getTable(), i, 1);
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.noWeight"));
- }
- if (SortedUnsortedEnum.SORTED.matchValue(row.getSortedUnsortedCategory().getCategoryValue())) {
- totalSortedWeight += weight;
- } else {
- totalUnsortedWeight += weight;
- }
- }
- }
-
- Number inertWeight = model.getBenthosTotalInertWeight();
- if (inertWeight != null) {
- totalSortedWeight += inertWeight.floatValue();
- } else {
- model.setBenthosTotalInertComputedWeight(0f);
- }
-
- Number livingNotItemizedWeight = model.getBenthosTotalLivingNotItemizedWeight();
- if (livingNotItemizedWeight != null) {
- totalSortedWeight += livingNotItemizedWeight.floatValue();
- } else {
- model.setBenthosTotalLivingNotItemizedComputedWeight(0f);
- }
-
- model.setBenthosTotalSampleSortedComputedWeight(totalSortedWeight);
-
- Float benthosTotalSortedWeight = model.getBenthosTotalSortedWeight();
- Float rate = getConfig().getDifferenceRateBetweenSortedAndTotalWeights();
- if (benthosTotalSortedWeight == null) {
- benthosTotalSortedWeight = totalSortedWeight;
- model.setBenthosTotalSortedComputedWeight(totalSortedWeight);
-
- } else if (benthosTotalSortedWeight < totalSortedWeight) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentSpeciesTotalSorted"));
-
- } else if (benthosTotalSortedWeight < (1 + rate / 100) * totalSortedWeight) {
// Si le "Poids total VRAC" est saisi est que sa valeur
// est supérieure de moins de x% (x en configuration)
// du "Poids total Vrac trié", demander confirmation que
@@ -359,122 +111,95 @@
_("tutti.editCatchBatch.action.computeWeights.replaceTotalSortedWeight.help"));
int answer = JOptionPane.showConfirmDialog(getContext().getActionUI(),
- htmlMessage,
- _("tutti.editCatchBatch.action.computeWeights.replaceTotalSortedWeight.title"),
- JOptionPane.YES_NO_OPTION,
- JOptionPane.QUESTION_MESSAGE);
+ htmlMessage,
+ _("tutti.editCatchBatch.action.computeWeights.replaceTotalSortedWeight.title"),
+ JOptionPane.YES_NO_OPTION,
+ JOptionPane.QUESTION_MESSAGE);
if (answer == JOptionPane.NO_OPTION) {
- model.setSpeciesTotalSortedWeight(null);
- benthosTotalSortedWeight = totalSortedWeight;
- model.setBenthosTotalSortedComputedWeight(totalSortedWeight);
+ model.setBenthosTotalSortedWeight(null);
+ model.setBenthosTotalSortedComputedWeight(totalBenthosSortedWeight);
}
}
- model.setBenthosTotalUnsortedComputedWeight(totalUnsortedWeight);
+ boolean modified = model.isModify();
+ CatchBatch catchBatch = model.toBean();
+ tuttiWeightComputingService.computeCatchBatchWeights(catchBatch,
+ computedSpeciesBatches,
+ computedBenthosBatches);
+ model.setCatchBatch(catchBatch);
+ model.fromBean(catchBatch);
+ model.setModify(modified);
+ }
- Float totalWeight = totalUnsortedWeight + benthosTotalSortedWeight;
- model.setBenthosTotalComputedWeight(totalWeight);
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+
+ getUI().repaint();
}
- protected Float computeBenthosBatch(BenthosBatchRowModel row) {
- SampleCategory finestCategory = row.getFinestCategory();
+ //------------------------------------------------------------------------//
+ //-- Internal methods --//
+ //------------------------------------------------------------------------//
- Float result = null;
- Float categoryWeight = finestCategory.getCategoryWeight();
- Float rowWeight = row.getWeight();
+ protected Float computeSpeciesBatches(BatchContainer<SpeciesBatch> computedSpeciesBatches) {
+ Float totalSortedWeight = 0f;
- List<BenthosBatchRowModel> children = row.getChildBatch();
- // if the row is not a leaf
- if (!row.isBatchLeaf()) {
- Float sum = 0f;
- // make the sum of the children weights
- for (BenthosBatchRowModel child : children) {
- Float weight = computeBenthosBatch(child);
- if (weight == null) {
- sum = null;
- break;
- }
- sum += weight;
+ List<SpeciesBatchRowModel> rows = Lists.newArrayList();
+ List<SpeciesBatch> children = computedSpeciesBatches.getChildren();
+ int rowIndex = 0;
+ for (SpeciesBatch batch : children) {
+ SpeciesBatchRowModel row = getUI().getSpeciesTabContent().getHandler().loadBatch(batch, null, rows);
+ Float weight = row.getSortedUnsortedCategoryWeight();
+ if (weight == null) {
+ weight = row.getSortedUnsortedCategoryComputedWeight();
}
+ if (weight == null) {
+ AbstractSelectTableAction.doSelectCell(getUI().getSpeciesTabContent().getTable(), rowIndex, 1);
+ throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.noWeight"));
- if (sum != null) {
- if (categoryWeight == null) {
- finestCategory.setComputedWeight(sum);
- for (BenthosBatchRowModel child : children) {
- child.getFinestCategory().setSubSample(false);
- }
-
- } else if (categoryWeight < sum) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentParentCategoryWeight"));
-
- } else {
- boolean subSample = categoryWeight > sum;
- for (BenthosBatchRowModel child : children) {
- child.getFinestCategory().setSubSample(subSample);
- }
- sum = categoryWeight;
- }
- result = sum;
+ } else if (SortedUnsortedEnum.SORTED.matchValue(
+ row.getSortedUnsortedCategoryValue())) {
+ totalSortedWeight += weight;
}
+ rowIndex++;
+ if (row.getChildBatch() != null) {
+ rowIndex += row.getChildBatch().size();
+ }
+ }
+ getUI().getSpeciesTabContent().getModel().setRows(rows);
- } else {// the row is a leaf
- row.setComputedWeight(null);
+ return totalSortedWeight;
+ }
- List<BenthosFrequencyRowModel> frequency = row.getFrequency();
+ protected Float computeBenthosBatches(BatchContainer<SpeciesBatch> computedBenthosBatches) {
+ Float totalSortedWeight = 0f;
- if (CollectionUtils.isNotEmpty(frequency)) {
- // if there are frequencies, then compute their weight
- Float frequencyWeight = 0f;
- for (BenthosFrequencyRowModel frequencyModel : frequency) {
- Float w = frequencyModel.getWeight();
- if (w == null) {
+ List<BenthosBatchRowModel> rows = Lists.newArrayList();
+ List<SpeciesBatch> children = computedBenthosBatches.getChildren();
+ int rowIndex = 0;
+ for (SpeciesBatch batch : children) {
+ BenthosBatchRowModel row = getUI().getBenthosTabContent().getHandler().loadBatch(batch, null, rows);
+ Float weight = row.getSortedUnsortedCategoryWeight();
+ if (weight == null) {
+ weight = row.getSortedUnsortedCategoryComputedWeight();
+ }
+ if (weight == null) {
+ AbstractSelectTableAction.doSelectCell(getUI().getBenthosTabContent().getTable(), rowIndex, 1);
+ throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.noWeight"));
- // can't sum when a null value appears
- frequencyWeight = null;
- break;
-
- } else if (frequencyWeight != null) {
-
- // still can sum weights
- frequencyWeight += w;
- }
- }
-
- if (categoryWeight == null && rowWeight != null) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentRowWeightCategory"));
-
- } else if (categoryWeight == null && frequencyWeight != null) {
- // if the category weight is null and the frequencies have a weight,
- // then this weight is the result
- finestCategory.setComputedWeight(frequencyWeight);
- result = frequencyWeight;
-
- } else if (frequencyWeight != null
- && !frequencyWeight.equals(categoryWeight)) {
-
- // if the weight of the frequencies is different from the category
- // weight, then set the weight of the sample
- if (frequencyWeight > categoryWeight) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentCategoryWeight"));
-
- } else if (rowWeight == null) {
- row.setComputedWeight(frequencyWeight);
-
- } else if (!rowWeight.equals(frequencyWeight)) {
- throw new TuttiBusinessException(_("tutti.editCatchBatch.action.computeWeights.error.incoherentRowWeightFrequency"));
- }
- result = categoryWeight;
-
- } else {
- result = categoryWeight;
- }
-
- } else {
- result = categoryWeight;
+ } else if (SortedUnsortedEnum.SORTED.matchValue(
+ row.getSortedUnsortedCategoryValue())) {
+ totalSortedWeight += weight;
}
+ rowIndex++;
+ if (row.getChildBatch() != null) {
+ rowIndex += row.getChildBatch().size();
+ }
}
+ getUI().getBenthosTabContent().getModel().setRows(rows);
- return result;
+ return totalSortedWeight;
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-04-05 13:36:16 UTC (rev 739)
@@ -105,6 +105,10 @@
_computed: true;
}
+#tremieCarrouselRow {
+ visible: {model.getFishingOperation().getVessel() != null && model.getFishingOperation().getVessel().getId().equals(handler.getConfig().getTremieCarousselVesselId())};
+}
+
#catchTotalSortedTremisWeightLabel {
text: "tutti.editCatchBatch.field.catchTotalSortedTremisWeight";
toolTipText: {"tutti.editCatchBatch.field.catchTotalSortedTremisWeight.tip"};
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-05 13:36:16 UTC (rev 739)
@@ -100,9 +100,6 @@
<CardLayout2Ext id='marineLitterTabPanelLayout'
constructorParams='this, "marineLitterTabPanel"'/>
- <CardLayout2Ext id='catchTotalSortedWeightPanelLayout'
- constructorParams='this, "catchTotalSortedWeightPanel"'/>
-
<TuttiHelpBroker id='broker' constructorParams='"tutti.editCatchBatch.help"'/>
<JToolBar id='catchesCaracteristicsTabToolBar'>
@@ -138,33 +135,32 @@
<JLabel id='catchTotalSortedWeightLabel'/>
</cell>
<cell columns='4' weightx='1.0'>
- <JPanel id='catchTotalSortedWeightPanel'>
- <JTextField id='catchTotalSortedWeightField'
- constraints='EditCatchesUIHandler.CLASSIC_VESSEL'/>
- <Table
- constraints='EditCatchesUIHandler.CAROUSSEL_TREMIE_VESSEL'
- fill='both'>
- <row>
- <cell anchor='west'>
- <JLabel
- id='catchTotalSortedCarousselWeightLabel'/>
- </cell>
- <cell weightx='1.0'>
- <JTextField
- id='catchTotalSortedCarousselWeightField'/>
- </cell>
- <cell anchor='west'>
- <JLabel id='catchTotalSortedTremisWeightLabel'/>
- </cell>
- <cell weightx='1.0'>
- <JTextField
- id='catchTotalSortedTremisWeightField'/>
- </cell>
- </row>
- </Table>
- </JPanel>
+ <JTextField id='catchTotalSortedWeightField'/>
</cell>
</row>
+ <row>
+ <cell columns='5'>
+ <Table fill='both' id='tremieCarrouselRow'>
+ <row>
+ <cell anchor='west'>
+ <JLabel
+ id='catchTotalSortedCarousselWeightLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <JTextField
+ id='catchTotalSortedCarousselWeightField'/>
+ </cell>
+ <cell anchor='west'>
+ <JLabel id='catchTotalSortedTremisWeightLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <JTextField
+ id='catchTotalSortedTremisWeightField'/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
<!--Poids total hors vrac-->
<row>
<cell>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -123,14 +123,6 @@
setCustomTab(2, ui.getBenthosTabContent().getModel());
setCustomTab(3, ui.getMarineLitterTabContent().getModel());
- getParentUi().getFishingOperationTabContent().getModel()
- .addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_VESSEL, new PropertyChangeListener() {
-
- public void propertyChange(PropertyChangeEvent evt) {
- Vessel vessel = (Vessel) evt.getNewValue();
- selectCatchTotalSortedWeightPanel(vessel);
- }
- });
}
@Override
@@ -407,15 +399,4 @@
}
}
- public void selectCatchTotalSortedWeightPanel(Vessel vessel) {
- String card;
- String carousselTremieVesselId = getConfig().getTremieCarousselVesselId();
- if (vessel != null && vessel.getId().equals(carousselTremieVesselId)) {
- card = CAROUSSEL_TREMIE_VESSEL;
- } else {
- card = CLASSIC_VESSEL;
- }
- ui.getCatchTotalSortedWeightPanelLayout().setSelected(card);
- }
-
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -54,8 +54,6 @@
protected File importedCarrouselFile;
- protected File importedSpeciesFile;
-
protected ImportPupitriPopupUI importPupitriDialog;
protected TuttiProtocol currentProtocol;
@@ -80,25 +78,11 @@
@Override
protected boolean prepareAction() throws Exception {
- boolean result;
+ boolean result = true;
+ currentProtocol = getDataContext().getProtocol();
- if (!getContext().isProtocolFilled()) {
- result = false;
-
- } else {
- currentProtocol = getDataContext().getProtocol();
- result = currentProtocol != null && !currentProtocol.getSpecies().isEmpty();
- }
-
- if (!result) {
- JOptionPane.showMessageDialog(getContext().getActionUI(),
- _("tutti.editCatchBatch.action.importPupitri.noProtocol.message"),
- _("tutti.editCatchBatch.action.importPupitri.noProtocol.title"),
- JOptionPane.ERROR_MESSAGE);
- }
-
SpeciesBatchUIModel speciesBatchUIModel = getUI().getSpeciesTabContent().getModel();
- if (result && speciesBatchUIModel.getRowCount() > 0) {
+ if (speciesBatchUIModel.getRowCount() > 0) {
String htmlMessage = String.format(
AbstractTuttiUIHandler.CONFIRMATION_FORMAT,
_("tutti.editCatchBatch.action.importPupitri.existingData.message"),
@@ -117,10 +101,8 @@
importPupitriDialog.open();
importedTrunkFile = importPupitriDialog.getTrunkFile().getSelectedFile();
importedCarrouselFile = importPupitriDialog.getCarrouselFile().getSelectedFile();
- importedSpeciesFile = importPupitriDialog.getSpeciesFile().getSelectedFile();
result = importedTrunkFile != null
- && importedCarrouselFile != null
- && importedSpeciesFile != null;
+ && importedCarrouselFile != null;
}
return result;
@@ -136,27 +118,21 @@
FishingOperation operation = model.getFishingOperation();
CatchBatch catchBatch = model.getCatchBatch();
- // import trunk
- pupitriImportExportService.importPupitri(importedTrunkFile,
- importedCarrouselFile,
- importedSpeciesFile,
- operation,
- catchBatch,
- getDataContext().getReferentSpeciesWithSurveyCode());
+ // import
+ int rejectedSpeciesNb =
+ pupitriImportExportService.importPupitri(importedTrunkFile,
+ importedCarrouselFile,
+ operation,
+ catchBatch);
String fishingOperationText = getEditAction().getFishingOperationTitle(operation);
getEditAction().loadCatchBatch(operation, fishingOperationText, true);
+ sendMessage(_("tutti.editCatchBatch.action.importPupitri.success", getUI().getSpeciesTabContent().getModel().getRootNumber(), rejectedSpeciesNb));
}
@Override
- public void postSuccessAction() {
- super.postSuccessAction();
- sendMessage("TODO");
- }
-
- @Override
protected void releaseAction() {
super.releaseAction();
importedTrunkFile = null;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUI.css 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUI.css 2013-04-05 13:36:16 UTC (rev 739)
@@ -51,18 +51,6 @@
acceptAllFileFilterUsed: false;
}
-#speciesFileLabel {
- text: "tutti.importPupitri.field.speciesFile";
- labelFor: {carrouselFile};
-}
-
-#speciesFile {
- directoryEnabled: false;
- exts: {_("tutti.importPupitri.speciesFile.extension")};
- extsDescription: {_("tutti.importPupitri.speciesFile.extension.description")};
- acceptAllFileFilterUsed: false;
-}
-
#cancelButton {
actionIcon: cancel;
text: "tutti.common.cancel";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUI.jaxx 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUI.jaxx 2013-04-05 13:36:16 UTC (rev 739)
@@ -81,15 +81,6 @@
</row>
<row>
- <cell>
- <JLabel id='speciesFileLabel'/>
- </cell>
- <cell weightx='1'>
- <FileEditor id='speciesFile'/>
- </cell>
- </row>
-
- <row>
<cell columns='2'>
<JPanel layout='{new GridLayout(1,0)}'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUIHandler.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriPopupUIHandler.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -67,7 +67,6 @@
protected void resetFields() {
ui.getTrunkFile().setSelectedFile((String) null);
ui.getCarrouselFile().setSelectedFile((String) null);
- ui.getSpeciesFile().setSelectedFile((String) null);
}
public void open() {
@@ -83,8 +82,7 @@
public void validate() {
if (ui.getTrunkFile().getSelectedFile() != null
- && ui.getCarrouselFile().getSelectedFile() != null
- && ui.getSpeciesFile().getSelectedFile() != null) {
+ && ui.getCarrouselFile().getSelectedFile() != null) {
ui.dispose();
} else {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategory.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -154,6 +154,14 @@
return isEmpty() || isValid();
}
+ public Float getNotNullWeight() {
+ Float result = categoryWeight;
+ if (result == null) {
+ result = computedWeight;
+ }
+ return result;
+ }
+
@Override
public String toString() {
return new ReflectionToStringBuilder(this).
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -68,7 +68,7 @@
public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT = "sortedUnsortedCategoryWeight";
- public static final String PROPERTY_SORTED_UNSORTED_COMPUTED_WEIGHT = "sortedUnsortedComputedWeight";
+ public static final String PROPERTY_SORTED_UNSORTED_CATEGORY_COMPUTED_WEIGHT = "sortedUnsortedComputedWeight";
public static final String PROPERTY_SIZE_CATEGORY = "sizeCategory";
@@ -76,22 +76,30 @@
public static final String PROPERTY_SIZE_CATEGORY_WEIGHT = "sizeCategoryWeight";
+ public static final String PROPERTY_SIZE_CATEGORY_COMPUTED_WEIGHT = "sexCategoryComputedWeight";
+
public static final String PROPERTY_SEX_CATEGORY = "sexCategory";
public static final String PROPERTY_SEX_CATEGORY_VALUE = "sexCategoryValue";
public static final String PROPERTY_SEX_CATEGORY_WEIGHT = "sexCategoryWeight";
+ public static final String PROPERTY_SEX_CATEGORY_COMPUTED_WEIGHT = "sexCategoryComputedWeight";
+
public static final String PROPERTY_MATURITY_CATEGORY = "maturityCategory";
public static final String PROPERTY_MATURITY_CATEGORY_VALUE = "maturityCategoryValue";
+ public static final String PROPERTY_MATURITY_CATEGORY_COMPUTED_WEIGHT = "maturityCategoryComputedWeight";
+
public static final String PROPERTY_MATURITY_CATEGORY_WEIGHT = "maturityCategoryWeight";
public static final String PROPERTY_AGE_CATEGORY = "ageCategory";
public static final String PROPERTY_AGE_CATEGORY_VALUE = "ageCategoryValue";
+ public static final String PROPERTY_AGE_CATEGORY_COMPUTED_WEIGHT = "ageCategoryComputedWeight";
+
public static final String PROPERTY_AGE_CATEGORY_WEIGHT = "ageCategoryWeight";
public static final String PROPERTY_WEIGHT = "weight";
@@ -349,10 +357,12 @@
Object oldCategory = getSortedUnsortedCategory();
Object oldValue = getSortedUnsortedCategoryValue();
Object oldWeight = getSortedUnsortedCategoryWeight();
+ Object oldComputedWeight = getSortedUnsortedCategoryComputedWeight();
this.sortedUnsortedCategory = sortedUnsortedCategory;
firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY, oldCategory, sortedUnsortedCategory);
firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY_VALUE, oldValue, getSortedUnsortedCategoryValue());
firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT, oldWeight, getSortedUnsortedCategoryWeight());
+ firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY_COMPUTED_WEIGHT, oldComputedWeight, getSortedUnsortedCategoryComputedWeight());
}
public CaracteristicQualitativeValue getSortedUnsortedCategoryValue() {
@@ -369,6 +379,16 @@
firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY_WEIGHT, oldValue, sortedUnsortedCategoryWeight);
}
+ public Float getSortedUnsortedCategoryComputedWeight() {
+ return sortedUnsortedCategory.getComputedWeight();
+ }
+
+ public void setSortedUnsortedCategoryComputedWeight(Float sortedUnsortedCategoryComputedWeight) {
+ Object oldValue = getSortedUnsortedCategoryComputedWeight();
+ sortedUnsortedCategory.setComputedWeight(sortedUnsortedCategoryComputedWeight);
+ firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY_COMPUTED_WEIGHT, oldValue, sortedUnsortedCategoryComputedWeight);
+ }
+
//------------------------------------------------------------------------//
//-- Size category --//
//------------------------------------------------------------------------//
@@ -381,10 +401,12 @@
Object oldCategory = getSizeCategory();
Object oldValue = getSizeCategoryValue();
Object oldWeight = getSizeCategoryWeight();
+ Object oldComputedWeight = getSizeCategoryComputedWeight();
this.sizeCategory = sizeCategory;
firePropertyChange(PROPERTY_SIZE_CATEGORY, oldCategory, sizeCategory);
firePropertyChange(PROPERTY_SIZE_CATEGORY_VALUE, oldValue, getSizeCategoryValue());
firePropertyChange(PROPERTY_SIZE_CATEGORY_WEIGHT, oldWeight, getSizeCategoryWeight());
+ firePropertyChange(PROPERTY_SIZE_CATEGORY_COMPUTED_WEIGHT, oldComputedWeight, getSizeCategoryComputedWeight());
}
public CaracteristicQualitativeValue getSizeCategoryValue() {
@@ -401,6 +423,16 @@
firePropertyChange(PROPERTY_SIZE_CATEGORY_WEIGHT, oldValue, sizeCategoryWeight);
}
+ public Float getSizeCategoryComputedWeight() {
+ return sizeCategory.getComputedWeight();
+ }
+
+ public void setSizeCategoryComputedWeight(Float sizeCategoryComputedWeight) {
+ Object oldValue = getSizeCategoryComputedWeight();
+ this.sizeCategory.setComputedWeight(sizeCategoryComputedWeight);
+ firePropertyChange(PROPERTY_SIZE_CATEGORY_COMPUTED_WEIGHT, oldValue, sizeCategoryComputedWeight);
+ }
+
//------------------------------------------------------------------------//
//-- Sex category --//
//------------------------------------------------------------------------//
@@ -413,10 +445,12 @@
Object oldCategory = getSexCategory();
Object oldValue = getSexCategoryValue();
Object oldWeight = getSexCategoryWeight();
+ Object oldComputedWeight = getSexCategoryComputedWeight();
this.sexCategory = sexCategory;
firePropertyChange(PROPERTY_SEX_CATEGORY, oldCategory, sexCategory);
firePropertyChange(PROPERTY_SEX_CATEGORY_VALUE, oldValue, getSexCategoryValue());
firePropertyChange(PROPERTY_SEX_CATEGORY_WEIGHT, oldWeight, getSexCategoryWeight());
+ firePropertyChange(PROPERTY_SEX_CATEGORY_COMPUTED_WEIGHT, oldComputedWeight, getSexCategoryComputedWeight());
}
public CaracteristicQualitativeValue getSexCategoryValue() {
@@ -433,6 +467,16 @@
firePropertyChange(PROPERTY_SEX_CATEGORY_WEIGHT, oldValue, sexCategoryWeight);
}
+ public Float getSexCategoryComputedWeight() {
+ return sexCategory.getComputedWeight();
+ }
+
+ public void setSexCategoryComputedWeight(Float sexCategoryComputedWeight) {
+ Object oldValue = getSexCategoryComputedWeight();
+ this.sexCategory.setComputedWeight(sexCategoryComputedWeight);
+ firePropertyChange(PROPERTY_SEX_CATEGORY_COMPUTED_WEIGHT, oldValue, sexCategoryComputedWeight);
+ }
+
//------------------------------------------------------------------------//
//-- Maturity category --//
//------------------------------------------------------------------------//
@@ -445,10 +489,12 @@
Object oldCategory = getMaturityCategory();
Object oldValue = getMaturityCategoryValue();
Object oldWeight = getMaturityCategoryWeight();
+ Object oldComputedWeight = getMaturityCategoryComputedWeight();
this.maturityCategory = maturityCategory;
firePropertyChange(PROPERTY_MATURITY_CATEGORY, oldCategory, maturityCategory);
firePropertyChange(PROPERTY_MATURITY_CATEGORY_VALUE, oldValue, getMaturityCategoryValue());
firePropertyChange(PROPERTY_MATURITY_CATEGORY_WEIGHT, oldWeight, getMaturityCategoryWeight());
+ firePropertyChange(PROPERTY_MATURITY_CATEGORY_COMPUTED_WEIGHT, oldComputedWeight, getMaturityCategoryComputedWeight());
}
public CaracteristicQualitativeValue getMaturityCategoryValue() {
@@ -465,6 +511,16 @@
firePropertyChange(PROPERTY_MATURITY_CATEGORY_WEIGHT, oldValue, maturityCategoryWeight);
}
+ public Float getMaturityCategoryComputedWeight() {
+ return maturityCategory.getComputedWeight();
+ }
+
+ public void setMaturityCategoryComputedWeight(Float maturityCategoryComputedWeight) {
+ Object oldValue = getMaturityCategoryComputedWeight();
+ this.maturityCategory.setComputedWeight(maturityCategoryComputedWeight);
+ firePropertyChange(PROPERTY_MATURITY_CATEGORY_COMPUTED_WEIGHT, oldValue, maturityCategoryComputedWeight);
+ }
+
//------------------------------------------------------------------------//
//-- Age category --//
//------------------------------------------------------------------------//
@@ -477,11 +533,12 @@
Object oldCategory = getAgeCategory();
Object oldValue = getAgeCategoryValue();
Object oldWeight = getAgeCategoryWeight();
+ Object oldComputedWeight = getAgeCategoryComputedWeight();
this.ageCategory = ageCategory;
-
firePropertyChange(PROPERTY_AGE_CATEGORY, oldCategory, ageCategory);
firePropertyChange(PROPERTY_AGE_CATEGORY_VALUE, oldValue, getAgeCategoryValue());
firePropertyChange(PROPERTY_AGE_CATEGORY_WEIGHT, oldWeight, getAgeCategoryWeight());
+ firePropertyChange(PROPERTY_AGE_CATEGORY_COMPUTED_WEIGHT, oldComputedWeight, getAgeCategoryComputedWeight());
}
public Float getAgeCategoryValue() {
@@ -498,6 +555,16 @@
firePropertyChange(PROPERTY_AGE_CATEGORY_WEIGHT, oldValue, ageCategoryWeight);
}
+ public Float getAgeCategoryComputedWeight() {
+ return ageCategory.getComputedWeight();
+ }
+
+ public void setAgeCategoryComputedWeight(Float ageCategoryComputedWeight) {
+ Object oldValue = getAgeCategoryComputedWeight();
+ ageCategory.setComputedWeight(ageCategoryComputedWeight);
+ firePropertyChange(PROPERTY_AGE_CATEGORY_COMPUTED_WEIGHT, oldValue, ageCategoryComputedWeight);
+ }
+
//------------------------------------------------------------------------//
//-- Navigation properties --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -983,7 +983,7 @@
}
}
- protected BenthosBatchRowModel loadBatch(SpeciesBatch aBatch,
+ public BenthosBatchRowModel loadBatch(SpeciesBatch aBatch,
BenthosBatchRowModel parentRow,
List<BenthosBatchRowModel> rows) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/CreateBenthosMelagAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/CreateBenthosMelagAction.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/CreateBenthosMelagAction.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -72,12 +72,9 @@
tableModel.getEntry(selectedRowIndex);
Float sampleWeight = null;
- if (selectedRow.getFinestCategory().getCategoryWeight() != null) {
- alreadyKnownWeights += selectedRow.getFinestCategory().getCategoryWeight();
+ if (selectedRow.getFinestCategory().getNotNullWeight() != null) {
+ alreadyKnownWeights += selectedRow.getFinestCategory().getNotNullWeight();
- } else if (selectedRow.getFinestCategory().getComputedWeight() != null) {
- alreadyKnownWeights += selectedRow.getFinestCategory().getComputedWeight();
-
} else if (selectedRow.getWeight() != null) {
sampleWeight = selectedRow.getWeight();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/CreateSpeciesMelagAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/CreateSpeciesMelagAction.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/CreateSpeciesMelagAction.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -72,12 +72,9 @@
tableModel.getEntry(selectedRowIndex);
Float sampleWeight = null;
- if (selectedRow.getFinestCategory().getCategoryWeight() != null) {
- alreadyKnownWeights += selectedRow.getFinestCategory().getCategoryWeight();
+ if (selectedRow.getFinestCategory().getNotNullWeight() != null) {
+ alreadyKnownWeights += selectedRow.getFinestCategory().getNotNullWeight();
- } else if (selectedRow.getFinestCategory().getComputedWeight() != null) {
- alreadyKnownWeights += selectedRow.getFinestCategory().getComputedWeight();
-
} else if (selectedRow.getWeight() != null) {
sampleWeight = selectedRow.getWeight();
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-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -742,7 +742,9 @@
}
}
- public void splitBatch(SampleCategoryEnum sampleCategoryEnum, List<SplitSpeciesBatchRowModel> rows) {
+ public void splitBatch(SampleCategoryEnum sampleCategoryEnum,
+ List<SplitSpeciesBatchRowModel> rows,
+ Float totalRowWeight) {
JXTable table = getTable();
// get selected row
@@ -753,6 +755,9 @@
// Create rows in batch table model
+ Float parentWeight = parentBatch.getFinestCategory().getNotNullWeight();
+ boolean subSample = parentWeight != null && totalRowWeight != null
+ && parentWeight > totalRowWeight;
List<SpeciesBatchRowModel> newBatches = Lists.newArrayList();
for (SplitSpeciesBatchRowModel row : rows) {
if (row.isValid()) {
@@ -764,8 +769,11 @@
newBatch,
sampleCategoryEnum,
row.getCategoryValue(),
- row.getWeight());
+ row.getWeight(),
+ null);
+ newBatch.getFinestCategory().setSubSample(subSample);
+
recomputeRowValidState(newBatch);
newBatches.add(newBatch);
@@ -991,7 +999,7 @@
}
}
- protected SpeciesBatchRowModel loadBatch(SpeciesBatch aBatch,
+ public SpeciesBatchRowModel loadBatch(SpeciesBatch aBatch,
SpeciesBatchRowModel parentRow,
List<SpeciesBatchRowModel> rows) {
@@ -1026,7 +1034,8 @@
newRow,
sampleCategoryEnum,
aBatch.getSampleCategoryValue(),
- aBatch.getSampleCategoryWeight());
+ aBatch.getSampleCategoryWeight(),
+ aBatch.getSampleCategoryComputedWeight());
rows.add(newRow);
@@ -1037,10 +1046,28 @@
List<SpeciesBatchRowModel> batchChilds = Lists.
newArrayListWithCapacity(aBatch.sizeChildBatchs());
+ Float childrenWeights = 0f;
for (SpeciesBatch childBatch : aBatch.getChildBatchs()) {
SpeciesBatchRowModel childRow = loadBatch(childBatch, newRow, rows);
+ if (childrenWeights != null) {
+ Float weight = childRow.getFinestCategory().getNotNullWeight();
+ if (weight == null) {
+ childrenWeights = null;
+ } else {
+ childrenWeights += weight;
+ }
+ }
+
batchChilds.add(childRow);
}
+
+ Float rowWeight = newRow.getFinestCategory().getNotNullWeight();
+ boolean subSample = rowWeight != null && childrenWeights != null
+ && childrenWeights < rowWeight;
+ for (SpeciesBatchRowModel childRow : batchChilds) {
+ childRow.getFinestCategory().setSubSample(subSample);
+ }
+
newRow.setChildBatch(batchChilds);
}
@@ -1051,7 +1078,8 @@
SpeciesBatchRowModel newRow,
SampleCategoryEnum sampleCategoryEnum,
Serializable categoryValue,
- Float categoryWeight) {
+ Float categoryWeight,
+ Float categoryComputedWeight) {
// get sample category from his type
SampleCategory sampleCategory =
@@ -1060,6 +1088,7 @@
// fill it
sampleCategory.setCategoryValue(categoryValue);
sampleCategory.setCategoryWeight(categoryWeight);
+ sampleCategory.setComputedWeight(categoryComputedWeight);
// push it back to row as his *main* sample category
newRow.setSampleCategory(sampleCategory);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -304,7 +304,8 @@
if (model.isValid()) {
parent.getSpeciesTabContent().getHandler().splitBatch(
model.getSelectedCategory(),
- model.getRows());
+ model.getRows(),
+ model.getSampleWeight());
}
// close dialog
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolBenthosAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolBenthosAction.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolBenthosAction.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -119,8 +119,10 @@
// update rows in model
model.setBenthosRow(rows);
+ getHandler().getBenthosTableModel().setRows(rows);
+
int nbSynonym = 0;
- for (SpeciesProtocol speciesProtocol : protocol.getSpecies()) {
+ for (SpeciesProtocol speciesProtocol : protocol.getBenthos()) {
if (!speciesProtocol.isMadeFromAReferentTaxon()) {
nbSynonym++;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-04-05 13:36:16 UTC (rev 739)
@@ -119,6 +119,8 @@
// update rows in model
model.setSpeciesRow(rows);
+ getHandler().getSpeciesTableModel().setRows(rows);
+
int nbSynonym = 0;
for (SpeciesProtocol speciesProtocol : protocol.getSpecies()) {
if (!speciesProtocol.isMadeFromAReferentTaxon()) {
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-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-05 13:36:16 UTC (rev 739)
@@ -310,6 +310,7 @@
tutti.editCatchBatch.action.importPupitri.mnemonic=
tutti.editCatchBatch.action.importPupitri.noProtocol.message=
tutti.editCatchBatch.action.importPupitri.noProtocol.title=
+tutti.editCatchBatch.action.importPupitri.success=
tutti.editCatchBatch.action.importPupitri.tip=
tutti.editCatchBatch.action.saveCatchBatch=
tutti.editCatchBatch.action.saveCatchBatch.mnemonic=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-04 19:49:47 UTC (rev 738)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-05 13:36:16 UTC (rev 739)
@@ -108,7 +108,7 @@
tutti.createBenthosBatch.field.sortedUnsortedCategory.tip=
tutti.createBenthosBatch.field.species=Espèce du lot
tutti.createBenthosBatch.field.species.tip=
-tutti.createBenthosBatch.title=Créer un lôt
+tutti.createBenthosBatch.title=Créer un lot
tutti.createBenthosMelag.action.cancel=Annuler
tutti.createBenthosMelag.action.cancel.mnemonic=A
tutti.createBenthosMelag.action.cancel.tip=Annuler la création du MELAG
@@ -319,6 +319,7 @@
tutti.editCatchBatch.action.importPupitri.mnemonic=I
tutti.editCatchBatch.action.importPupitri.noProtocol.message=
tutti.editCatchBatch.action.importPupitri.noProtocol.title=
+tutti.editCatchBatch.action.importPupitri.success=
tutti.editCatchBatch.action.importPupitri.tip=Import Pupitri
tutti.editCatchBatch.action.saveCatchBatch=Sauver
tutti.editCatchBatch.action.saveCatchBatch.mnemonic=S
@@ -1101,4 +1102,4 @@
tutti.vesselUseFeatureTable.action.removeCaracteristic.tip=Supprimer la caractéristique
tutti.vesselUseFeatureTable.table.header.key=Caractéristique
tutti.vesselUseFeatureTable.table.header.value=Valeur
-tutti.vesselUseFeatureTable.title=Hydrologie et paramètres environnementaux
+tutti.vesselUseFeatureTable.title=Autres paramètres
1
0
r738 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/operation/catches java/fr/ifremer/tutti/ui/swing/util java/fr/ifremer/tutti/ui/swing/util/attachment resources/i18n
by tchemit@users.forge.codelutin.com 04 Apr '13
by tchemit@users.forge.codelutin.com 04 Apr '13
04 Apr '13
Author: tchemit
Date: 2013-04-04 21:49:47 +0200 (Thu, 04 Apr 2013)
New Revision: 738
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/738
Log:
fixes #2242: [ERGO] - Impossible de t?\195?\169l?\195?\169charger une pi?\195?\168ce-jointe
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-04 19:09:48 UTC (rev 737)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-04 19:49:47 UTC (rev 738)
@@ -352,10 +352,10 @@
</tab>
<tab id='marineLitterTab' title='tutti.label.tab.marineLitter'>
<JPanel id='marineLitterTabPanel'>
- <JXTitledPanel id='marineLitterTabFishingOperationReminderLabel'>
+ <JXTitledPanel id='marineLitterTabFishingOperationReminderLabel'
+ constraints='EditCatchesUIHandler.MAIN_CARD'>
<MarineLitterBatchUI id='marineLitterTabContent'
- constructorParams='this'
- constraints='EditCatchesUIHandler.MAIN_CARD'/>
+ constructorParams='this'/>
</JXTitledPanel>
<JXTitledPanel id='marineLitterTabCreateBatchReminderLabel'
constraints='EditCatchesUIHandler.CREATE_BATCH_CARD'>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-04-04 19:09:48 UTC (rev 737)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-04-04 19:49:47 UTC (rev 738)
@@ -37,6 +37,7 @@
import org.jdesktop.swingx.decorator.Highlighter;
import org.nuiton.util.FileUtil;
+import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import java.awt.Color;
@@ -96,6 +97,34 @@
}
/**
+ * Sauver un fichier via un sélecteur graphique de fichiers.
+ *
+ * @param parent le component swing appelant le controle
+ * @param title le titre du dialogue de sélection
+ * @param buttonLabel le label du boutton d'acceptation
+ * @param filters les filtres + descriptions sur le sélecteur de
+ * fichiers
+ * @return le fichier choisi ou le fichier incoming si l'opération a été
+ * annulée
+ */
+ public static File saveFile(String filename,
+ Component parent,
+ String title,
+ String buttonLabel,
+ String... filters) {
+
+ File file = saveFile(filename, title, buttonLabel, parent, filters);
+ if (log.isDebugEnabled()) {
+ log.debug(title + " : " + file);
+ }
+ if (file != null) {
+ Preconditions.checkState(!file.isDirectory());
+ FileUtil.setCurrentDirectory(file.getParentFile());
+ }
+ return file;
+ }
+
+ /**
* Choisir un répertoire via un sélecteur graphique de fichiers.
*
* @param parent le component swing appelant le controle
@@ -305,4 +334,87 @@
}
}
+ //TODO Move this to jaxx (but not to nuiton-utils)
+
+ /**
+ * Retourne le nom du fichier entre dans la boite de dialogue.
+ * Si le bouton annuler est utilisé, ou qu'il y a une erreur retourne null.
+ *
+ * @param title le titre de la boite de dialogue
+ * @param approvalText le label du boutton d'acceptation
+ * @param parent le component parent du dialog
+ * @param patternOrDescriptionFilters les filtres a utiliser, les chaines doivent etre données
+ * par deux, le pattern du filtre + la description du filtre
+ * @return le fichier accepté, ou null si rien n'est chois ou l'utilisateur a annulé
+ */
+ public static File saveFile(String filename,
+ String title,
+ String approvalText,
+ Component parent,
+ String... patternOrDescriptionFilters) {
+
+ if (patternOrDescriptionFilters.length % 2 != 0) {
+ throw new IllegalArgumentException(
+ "Arguments must be (pattern, description) couple");
+ }
+ javax.swing.filechooser.FileFilter[] filters =
+ new javax.swing.filechooser.FileFilter[
+ patternOrDescriptionFilters.length / 2];
+ for (int i = 0; i < filters.length; i++) {
+ String pattern = patternOrDescriptionFilters[i * 2];
+ String description = patternOrDescriptionFilters[i * 2 + 1];
+ filters[i] = new FileUtil.PatternChooserFilter(pattern, description);
+ }
+ File result;
+ result = saveFile(filename, title, approvalText, parent, filters);
+ return result;
+ }
+
+ //TODO Move this to jaxx (but not to nuiton-utils)
+
+ /**
+ * Retourne le nom du fichier entre dans la boite de dialogue.
+ * Si le bouton annuler est utilisé, ou qu'il y a une erreur retourne null.
+ *
+ * @param title le titre de la boite de dialogue
+ * @param approvalText le label du boutton d'acceptation
+ * @param parent le component parent du dialog
+ * @param filters les filtres a ajouter
+ * @return le fichier accepté, ou null si rien n'est chois ou l'utilisateur a annulé
+ */
+ public static File saveFile(String filename,
+ String title,
+ String approvalText,
+ Component parent,
+ javax.swing.filechooser.FileFilter... filters) {
+ File selectedFile = new File(FileUtil.getCurrentDirectory(), filename);
+ JFileChooser chooser = new JFileChooser(selectedFile);
+
+ chooser.setDialogType(JFileChooser.SAVE_DIALOG);
+ chooser.setSelectedFile(selectedFile);
+ if (filters.length > 0) {
+ if (filters.length == 1) {
+ chooser.setFileFilter(filters[0]);
+ } else {
+ for (javax.swing.filechooser.FileFilter filter : filters) {
+ chooser.addChoosableFileFilter(filter);
+ }
+ }
+ }
+ chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
+ chooser.setDialogTitle(title);
+
+ File result = null;
+
+ int returnVal = chooser.showDialog(parent, approvalText);
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ result = chooser.getSelectedFile();
+ if (result != null) {
+ FileUtil.setCurrentDirectory(result);
+ result = result.getAbsoluteFile();
+ }
+ }
+ return result;
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUI.jaxx 2013-04-04 19:09:48 UTC (rev 737)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUI.jaxx 2013-04-04 19:49:47 UTC (rev 738)
@@ -21,7 +21,8 @@
<http://www.gnu.org/licenses/gpl-3.0.html>.
#L%
-->
-<JDialog id='attachmentDialog' layout='{new BorderLayout()}'>
+<JDialog id='attachmentDialog' layout='{new BorderLayout()}'
+ implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<TuttiUIContext, AttachmentEditorUIHandler>'>
<import>
fr.ifremer.tutti.ui.swing.TuttiUIContext
@@ -31,6 +32,19 @@
javax.swing.JComponent
</import>
+ <!-- if true, display the form to add attachments
+ and the button to remove existing attachments -->
+ <Boolean id='editable' javaBean='true'/>
+
+ <!-- bean property -->
+ <AttachmentModelAware id='bean' javaBean='null'/>
+
+ <TuttiUIContext id='model'
+ initializer='getContextValue(TuttiUIContext.class)'/>
+
+ <AttachmentEditorUIHandler id='handler'
+ initializer='getContextValue(AttachmentEditorUIHandler.class)'/>
+
<script><![CDATA[
public AttachmentEditorUI(TuttiUIContext context) {
@@ -54,16 +68,6 @@
}
]]></script>
- <!-- if true, display the form to add attachments
- and the button to remove existing attachments -->
- <Boolean id='editable' javaBean='true'/>
-
- <!-- bean property -->
- <AttachmentModelAware id='bean' javaBean='null'/>
-
- <AttachmentEditorUIHandler id='handler'
- initializer='getContextValue(AttachmentEditorUIHandler.class)'/>
-
<JXTitledPanel id='attachmentBody' constraints='BorderLayout.CENTER'>
<JScrollPane id='attachmentBodyScrollPane'>
<Table id='mainPanel'>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2013-04-04 19:09:48 UTC (rev 737)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2013-04-04 19:49:47 UTC (rev 738)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.TuttiIOUtil;
import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.service.PersistenceService;
@@ -33,7 +34,7 @@
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.ComponentMover;
import jaxx.runtime.swing.ComponentResizer;
-import org.apache.commons.io.FileUtils;
+import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -51,7 +52,6 @@
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.File;
-import java.io.IOException;
import java.util.List;
import static org.nuiton.i18n.I18n._;
@@ -61,7 +61,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.2
*/
-public class AttachmentEditorUIHandler {
+public class AttachmentEditorUIHandler extends AbstractTuttiUIHandler<TuttiUIContext, AttachmentEditorUI> {
/** Logger. */
private static final Log log =
@@ -79,15 +79,18 @@
public AttachmentEditorUIHandler(TuttiUIContext context,
AttachmentEditorUI ui) {
+ super(context, ui);
this.context = context;
this.ui = ui;
this.persistenceService = context.getPersistenceService();
}
- protected void beforeInitUI() {
+ @Override
+ public void beforeInitUI() {
}
- protected void afterInitUI() {
+ @Override
+ public void afterInitUI() {
ui.getFile().setDialogOwner(ui);
ui.pack();
@@ -151,6 +154,15 @@
ui.getAttachmentBody().setRightDecoration(jToolBar);
}
+ @Override
+ public void onCloseUI() {
+ }
+
+ @Override
+ public SwingValidator<TuttiUIContext> getValidator() {
+ return null;
+ }
+
protected Action closeAction;
protected Action openAction;
@@ -253,46 +265,53 @@
}
try {
File attachmentFile = persistenceService.getAttachmentFile(attachment.getId());
- File file = TuttiUIUtil.chooseFile(ui,
- _("tutti.attachmentEditor.saveAttachment.title"),
- _("tutti.attachmentEditor.saveAttachment.button"));
+ File file = TuttiUIUtil.saveFile(
+ attachment.getName(),
+ ui,
+ _("tutti.attachmentEditor.saveAttachment.title"),
+ _("tutti.attachmentEditor.saveAttachment.button"));
if (file != null) {
- if (file.exists()) {
- String htmlMessage = String.format(
- AbstractTuttiUIHandler.CONFIRMATION_FORMAT,
- _("tutti.attachmentEditor.saveAttachment.warning.message"),
- _("tutti.attachmentEditor.saveAttachment.warning.help"));
-
- int answer = JOptionPane.showConfirmDialog(ui,
- htmlMessage,
- _("tutti.attachmentEditor.saveAttachment.warning.title"),
- JOptionPane.YES_NO_OPTION,
- JOptionPane.WARNING_MESSAGE);
-
- if (answer == JOptionPane.NO_OPTION) {
- return;
- }
+ boolean checkOverwrite = askOverwriteFile(file);
+ if (checkOverwrite) {
+ TuttiIOUtil.copyFile(attachmentFile, file, "Error while saving attachment");
+ context.showInformationMessage(
+ _("tutti.attachmentEditor.saveAttachment.success.message", file.getName()));
}
- FileUtils.copyFile(attachmentFile, file);
- TuttiUIUtil.showSuccessMessage(ui,
- _("tutti.attachmentEditor.saveAttachment.success.title"),
- _("tutti.attachmentEditor.saveAttachment.success.message", file.getName()));
+// if (file.exists()) {
+// String htmlMessage = String.format(
+// AbstractTuttiUIHandler.CONFIRMATION_FORMAT,
+// _("tutti.attachmentEditor.saveAttachment.warning.message"),
+// _("tutti.attachmentEditor.saveAttachment.warning.help"));
+//
+// int answer = JOptionPane.showConfirmDialog(ui,
+// htmlMessage,
+// _("tutti.attachmentEditor.saveAttachment.warning.title"),
+// JOptionPane.YES_NO_OPTION,
+// JOptionPane.WARNING_MESSAGE);
+//
+// if (answer == JOptionPane.NO_OPTION) {
+// return;
+// }
+// }
+// FileUtils.copyFile(attachmentFile, file);
+// context.showInformationMessage(
+// _("tutti.attachmentEditor.saveAttachment.success.message", file.getName()));
}
if (hackDialog) {
ui.setAlwaysOnTop(true);
}
- } catch (IOException e) {
- if (log.isErrorEnabled()) {
- log.error("Error while saving attachment", e);
- }
- JOptionPane.showMessageDialog(
- ui,
- _("tutti.attachmentEditor.saveAttachment.fail.message"),
- _("tutti.attachmentEditor.saveAttachment.fail.title"),
- JOptionPane.ERROR_MESSAGE
- );
+// } catch (IOException e) {
+// if (log.isErrorEnabled()) {
+// log.error("Error while saving attachment", e);
+// }
+// JOptionPane.showMessageDialog(
+// ui,
+// _("tutti.attachmentEditor.saveAttachment.fail.message"),
+// _("tutti.attachmentEditor.saveAttachment.fail.title"),
+// JOptionPane.ERROR_MESSAGE
+// );
} finally {
if (hackDialog) {
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-04-04 19:09:48 UTC (rev 737)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-04 19:49:47 UTC (rev 738)
@@ -27,12 +27,12 @@
tutti.attachmentEditor.field.fileComment=Commentaire
tutti.attachmentEditor.field.fileName=Nom
tutti.attachmentEditor.none.tip=Pas de pièce-jointes
-tutti.attachmentEditor.saveAttachment.button=Choisir
+tutti.attachmentEditor.saveAttachment.button=Enregistrer
tutti.attachmentEditor.saveAttachment.fail.message=Une erreur est survenue lors de la sauvegarde du fichier.
tutti.attachmentEditor.saveAttachment.fail.title=Erreur de sauvegarde.
tutti.attachmentEditor.saveAttachment.success.message=Le fichier %s a été sauvegardé sur votre machine.
tutti.attachmentEditor.saveAttachment.success.title=Sauvegarde réussie.
-tutti.attachmentEditor.saveAttachment.title=Choisir un fichier
+tutti.attachmentEditor.saveAttachment.title=Sauver la pièce-jointe
tutti.attachmentEditor.saveAttachment.warning.help=Que voulez-vous faire ?<ul><li><strong>Non</strong> pour annuler la sauvegarde</li><li><strong>Oui</strong> pour écraser le fichier existant</li></ul>
tutti.attachmentEditor.saveAttachment.warning.message=Vous êtes sur le point d'écraser un fichier existant.
tutti.attachmentEditor.saveAttachment.warning.title=Fichier existant
1
0
04 Apr '13
Author: tchemit
Date: 2013-04-04 21:09:48 +0200 (Thu, 04 Apr 2013)
New Revision: 737
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/737
Log:
fixes #1865: [MACRODECHET] - Gestion de la saisie des Macrod?\195?\169chets
add xml prolog on every validation file
fixes #2233: [TECH] d?\195?\169marage 1.2 sans dossier data : erreur
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel-error-validation.xml
Removed:
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/program/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/
Modified:
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/RemoveMarineLitterBatchAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel-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-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-04 19:09:48 UTC (rev 737)
@@ -1,5 +1,28 @@
+###
+# #%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
-#Wed Apr 03 18:09:43 CEST 2013
+#Thu Apr 04 20:09:11 CEST 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
@@ -7,6 +30,12 @@
tutti.createBenthosBatch.field.sortedUnsortedCategory.help=createBenthosBatch.html\#fields
tutti.createBenthosBatch.field.species.help=createBenthosBatch.html\#fields
tutti.createBenthosBatch.help=createBenthosBatch.html
+tutti.createMarineLitterBatch.action.cancel.help=
+tutti.createMarineLitterBatch.action.save.help=
+tutti.createMarineLitterBatch.field.marineLitterCategory.help=
+tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help=
+tutti.createMarineLitterBatch.field.number.help=
+tutti.createMarineLitterBatch.help=
tutti.createSpeciesBatch.action.addSpecies.help=createSpeciesBatch.html\#actions
tutti.createSpeciesBatch.action.cancel.help=createSpeciesBatch.html\#actions
tutti.createSpeciesBatch.action.save.help=createSpeciesBatch.html\#actions
@@ -118,6 +147,8 @@
tutti.editFishingOperation.field.trawlDistance.help=editFishingOperation.html\#fields
tutti.editFishingOperation.field.vessel.help=editFishingOperation.html\#fields
tutti.editFishingOperation.help=editFishingOperation.html
+tutti.editMarineLitterBatch.action.createBatch.help=
+tutti.editMarineLitterBatch.action.removeBatch.help=
tutti.editMarineLitterBatch.field.marineLitterTotalWeight.help=
tutti.editProgram.action.cancelProgram.help=editProgram.html\#actions
tutti.editProgram.action.saveProgram.help=editProgram.html\#actions
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-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-04-04 19:09:48 UTC (rev 737)
@@ -1,5 +1,28 @@
+###
+# #%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
-#Wed Apr 03 18:09:43 CEST 2013
+#Thu Apr 04 20:09:11 CEST 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
@@ -7,6 +30,12 @@
tutti.createBenthosBatch.field.sortedUnsortedCategory.help=createBenthosBatch.html\#fields
tutti.createBenthosBatch.field.species.help=createBenthosBatch.html\#fields
tutti.createBenthosBatch.help=createBenthosBatch.html
+tutti.createMarineLitterBatch.action.cancel.help=
+tutti.createMarineLitterBatch.action.save.help=
+tutti.createMarineLitterBatch.field.marineLitterCategory.help=
+tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help=
+tutti.createMarineLitterBatch.field.number.help=
+tutti.createMarineLitterBatch.help=
tutti.createSpeciesBatch.action.addSpecies.help=createSpeciesBatch.html\#actions
tutti.createSpeciesBatch.action.cancel.help=createSpeciesBatch.html\#actions
tutti.createSpeciesBatch.action.save.help=createSpeciesBatch.html\#actions
@@ -127,6 +156,8 @@
tutti.editFishingOperation.field.trawlDistance.help=editFishingOperation.html\#fields
tutti.editFishingOperation.field.vessel.help=editFishingOperation.html\#fields
tutti.editFishingOperation.help=editFishingOperation.html
+tutti.editMarineLitterBatch.action.createBatch.help=
+tutti.editMarineLitterBatch.action.removeBatch.help=
tutti.editMarineLitterBatch.field.marineLitterTotalWeight.help=
tutti.editProgram.action.cancelProgram.help=editProgram.html\#actions
tutti.editProgram.action.saveProgram.help=editProgram.html\#actions
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-04-04 19:09:48 UTC (rev 737)
@@ -45,7 +45,11 @@
import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI;
import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUIHandler;
import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI;
-import fr.ifremer.tutti.ui.swing.util.*;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
+import fr.ifremer.tutti.ui.swing.util.CloseableUI;
+import fr.ifremer.tutti.ui.swing.util.RemoveablePropertyChangeListener;
+import fr.ifremer.tutti.ui.swing.util.TuttiUI;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI;
import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
@@ -56,8 +60,12 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.i18n.I18n;
-import javax.swing.*;
-import java.awt.*;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JToolBar;
+import java.awt.Cursor;
import java.beans.PropertyChangeEvent;
import java.net.URL;
import java.util.Locale;
@@ -127,7 +135,9 @@
@Override
public void propertyChange(PropertyChangeEvent evt) {
Boolean newvalue = (Boolean) evt.getNewValue();
- getUI().getBody().setVisible(newvalue != null && newvalue);
+ if (getUI() != null && getUI().getBody() != null) {
+ getUI().getBody().setVisible(newvalue != null && newvalue);
+ }
}
});
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-04-04 19:09:48 UTC (rev 737)
@@ -267,6 +267,10 @@
_computed: true;
}
+#marineLitterTabPanel {
+ layout:{marineLitterTabPanelLayout};
+}
+
#marineLitterTable {
border: {BorderFactory.createTitledBorder(_("tutti.editCatchBatch.legend.marineLitter"))};
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-04 19:09:48 UTC (rev 737)
@@ -31,6 +31,7 @@
fr.ifremer.tutti.ui.swing.content.operation.catches.accidental.AccidentalBatchUI
fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.BenthosBatchUI
fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUI
+ fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create.CreateMarineLitterBatchUI
fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency.BenthosFrequencyUI
fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.create.CreateBenthosBatchUI
fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchUI
@@ -96,6 +97,9 @@
<CardLayout2Ext id='benthosTabPanelLayout'
constructorParams='this, "benthosTabPanel"'/>
+ <CardLayout2Ext id='marineLitterTabPanelLayout'
+ constructorParams='this, "marineLitterTabPanel"'/>
+
<CardLayout2Ext id='catchTotalSortedWeightPanelLayout'
constructorParams='this, "catchTotalSortedWeightPanel"'/>
@@ -347,11 +351,20 @@
</JPanel>
</tab>
<tab id='marineLitterTab' title='tutti.label.tab.marineLitter'>
- <JXTitledPanel id='marineLitterTabFishingOperationReminderLabel'>
- <MarineLitterBatchUI id='marineLitterTabContent'
- constructorParams='this'/>
- </JXTitledPanel>
+ <JPanel id='marineLitterTabPanel'>
+ <JXTitledPanel id='marineLitterTabFishingOperationReminderLabel'>
+ <MarineLitterBatchUI id='marineLitterTabContent'
+ constructorParams='this'
+ constraints='EditCatchesUIHandler.MAIN_CARD'/>
+ </JXTitledPanel>
+ <JXTitledPanel id='marineLitterTabCreateBatchReminderLabel'
+ constraints='EditCatchesUIHandler.CREATE_BATCH_CARD'>
+ <CreateMarineLitterBatchUI id='marineLitterTabCreateBatch'
+ constructorParams='this'/>
+ </JXTitledPanel>
+ </JPanel>
</tab>
+
<tab id='planktonTab' title='tutti.label.tab.plancton'>
<!--JXTitledPanel id='planktonTabFishingOperationReminderLabel'>
<PlanktonBatchUI id='planktonTabContent' constructorParams='this'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-04-04 19:09:48 UTC (rev 737)
@@ -374,6 +374,39 @@
}
}
+ public void setMarineLitterSelectedCard(String card) {
+ JPanel panel = ui.getMarineLitterTabPanel();
+ CardLayout2Ext layout = (CardLayout2Ext) panel.getLayout();
+ if (!card.equals(layout.getSelected())) {
+ layout.setSelected(card);
+
+ JPanel actionPanel = getUI().getCreateFishingOperationActions();
+ if (MAIN_CARD.equals(card)) {
+ registerValidators();
+ actionPanel.setVisible(true);
+ } else {
+ actionPanel.setVisible(false);
+ TuttiUI tuttiUi = null;
+ JXTitledPanel titlePanel = null;
+ String title = "";
+ switch (card) {
+ case CREATE_BATCH_CARD:
+ tuttiUi = ui.getMarineLitterTabCreateBatch();
+ titlePanel = ui.getMarineLitterTabCreateBatchReminderLabel();
+ title = n_("tutti.createMarineLitterBatch.title");
+ break;
+ }
+
+ if (tuttiUi != null) {
+ registerValidators(tuttiUi.getHandler().getValidator());
+ }
+ if (titlePanel != null) {
+ titlePanel.setTitle(ui.getMarineLitterTabCreateBatchReminderLabel().getTitle() + " - " + _(title));
+ }
+ }
+ }
+ }
+
public void selectCatchTotalSortedWeightPanel(Vessel vessel) {
String card;
String carousselTremieVesselId = getConfig().getTremieCarousselVesselId();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchTableModel.java 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchTableModel.java 2013-04-04 19:09:48 UTC (rev 737)
@@ -69,7 +69,7 @@
n_("tutti.editMarineLitterBatch.table.header.file.tip"));
public MarineLitterBatchTableModel(TableColumnModelExt columnModel) {
- super(columnModel, true, true);
+ super(columnModel, false, false);
setNoneEditableCols();
}
@@ -82,20 +82,4 @@
result.setValid(false);
return result;
}
-
- @Override
- protected boolean isCellEditable(int rowIndex,
- int columnIndex,
- ColumnIdentifier<MarineLitterBatchRowModel> propertyName) {
- boolean cellEditable = super.isCellEditable(rowIndex,
- columnIndex,
- propertyName);
- if (ATTACHMENT == propertyName) {
-
- // only editable if row exists
- MarineLitterBatchRowModel entry = getEntry(rowIndex);
- cellEditable = entry.getObjectId() != null;
- }
- return cellEditable;
- }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css 2013-04-04 19:09:48 UTC (rev 737)
@@ -69,7 +69,16 @@
sortable: false;
}
-#removeSpeciesBatchMenu {
+#createMarineLitterBatchButton {
+ actionIcon: batch-create;
+ text: "tutti.editMarineLitterBatch.action.createBatch";
+ toolTipText: "tutti.editMarineLitterBatch.action.createBatch.tip";
+ i18nMnemonic: "tutti.editMarineLitterBatch.action.createBatch.mnemonic";
+ /*enabled: {model.isCreateBatchEnabled()};*/
+ _help: {"tutti.editMarineLitterBatch.action.createBatch.help"};
+}
+
+#removeMarineLitterBatchMenu {
actionIcon: batch-delete;
text: "tutti.editMarineLitterBatch.action.removeBatch";
toolTipText: "tutti.editMarineLitterBatch.action.removeBatch.tip";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-04 19:09:48 UTC (rev 737)
@@ -90,10 +90,23 @@
constructorParams='this'/>
</cell>
</row>
+
+ <!-- Toolbar / Filter -->
+ <row>
+ <cell columns="2">
+ <JPanel id='tableToolbar' layout='{new BorderLayout()}'>
+ <JPanel layout='{new GridLayout(1,0)}'
+ constraints='BorderLayout.WEST'>
+ <JButton id='createMarineLitterBatchButton'
+ onActionPerformed='handler.createBatch()'/>
+ </JPanel>
+ </JPanel>
+ </cell>
+ </row>
</Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table'
+ <JXTable id='table' onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'
onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
</JScrollPane>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-04-04 19:09:48 UTC (rev 737)
@@ -33,8 +33,11 @@
import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchTableModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create.CreateMarineLitterBatchUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create.CreateMarineLitterBatchUIModel;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
@@ -42,6 +45,8 @@
import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer;
import fr.ifremer.tutti.ui.swing.util.comment.CommentCellEditor;
import fr.ifremer.tutti.ui.swing.util.comment.CommentCellRenderer;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
+import jaxx.runtime.SwingUtil;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -178,35 +183,17 @@
protected void saveSelectedRowIfRequired(TuttiBeanMonitor<MarineLitterBatchRowModel> rowMonitor,
MarineLitterBatchRowModel row) {
- if (row != null) {
+ if (row != null && row.isValid() && rowMonitor.wasModified()) {
- if (row.isValid()) {
- // there is a valid bean attached to the monitor
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + row + " was modified, will save it");
+ }
- if (rowMonitor.wasModified()) {
+ saveRow(row);
- // monitored bean was modified, save it
- if (log.isInfoEnabled()) {
- log.info("Row " + row + " was modified, will save it");
- }
-
- saveRow(row);
-
- // clear modified flag on the monitor
- rowMonitor.clearModified();
- }
- } else {
-
- // row is not valid can not save it
-
- MarineLitterBatch batch = row.toBean();
-
- if (!TuttiEntities.isNew(batch)) {
-
- // remove this
- persistenceService.deleteMarineLitterBatch(batch.getId());
- }
- }
+ // clear modified flag on the monitor
+ rowMonitor.clearModified();
}
}
@@ -389,6 +376,36 @@
//-- Public methods --//
//------------------------------------------------------------------------//
+ public void createBatch() {
+
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ CreateMarineLitterBatchUI createBatchEditor = parent.getMarineLitterTabCreateBatch();
+
+ createBatchEditor.getHandler().openUI();
+ parent.getHandler().setMarineLitterSelectedCard(EditCatchesUIHandler.CREATE_BATCH_CARD);
+ }
+
+ public void addBatch(CreateMarineLitterBatchUIModel model) {
+ if (model.isValid()) {
+
+ MarineLitterBatchTableModel tableModel = getTableModel();
+
+ MarineLitterBatchRowModel newRow = tableModel.createNewRow();
+ newRow.setMarineLitterCategory(model.getMarineLitterCategory());
+ newRow.setMarineLitterSizeCategory(model.getMarineLitterSizeCategory());
+ newRow.setNumber(model.getNumber());
+
+ recomputeRowValidState(newRow);
+
+ saveRow(newRow);
+
+ tableModel.addNewRow(newRow);
+ AbstractSelectTableAction.doSelectCell(getTable(), tableModel.getRowCount() - 1, 0);
+ }
+
+ recomputeBatchActionEnable();
+ }
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
@@ -402,9 +419,7 @@
if (rowIndex != -1) {
// there is a selected row
-
enableRemove = true;
-
}
MarineLitterBatchUIModel model = getModel();
model.setRemoveBatchEnabled(enableRemove);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/RemoveMarineLitterBatchAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/RemoveMarineLitterBatchAction.java 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/RemoveMarineLitterBatchAction.java 2013-04-04 19:09:48 UTC (rev 737)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.persistence.TuttiPersistence;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/RemoveMarineLitterBatchAction.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css 2013-04-04 19:09:48 UTC (rev 737)
@@ -0,0 +1,94 @@
+/*
+ * #%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%
+ */
+BeanFilterableComboBox {
+ showReset: true;
+ i18nPrefix: "tutti.property.";
+ bean: {model};
+}
+
+NumberEditor {
+ autoPopup: {handler.getConfig().isAutoPopupNumberEditor()};
+ showPopupButton: {handler.getConfig().isShowNumberEditorButton()};
+ showReset: true;
+}
+
+#createMarineLitterBatchTopPanel {
+ _help: {"tutti.createMarineLitterBatch.help"};
+}
+
+#marineLitterCategoryLabel {
+ text: "tutti.createMarineLitterBatch.field.marineLitterCategory";
+ toolTipText: "tutti.createMarineLitterBatch.field.marineLitterCategory.tip";
+ labelFor: {marineLitterCategoryComboBox};
+ _help: {"tutti.createMarineLitterBatch.field.marineLitterCategory.help"};
+}
+
+#marineLitterCategoryComboBox {
+ property: marineLitterCategory;
+ selectedItem: {model.getMarineLitterCategory()};
+}
+
+#marineLitterSizeCategoryLabel {
+ text: "tutti.createMarineLitterBatch.field.marineLitterSizeCategory";
+ toolTipText: "tutti.createMarineLitterBatch.field.marineLitterSizeCategory.tip";
+ labelFor: {marineLitterSizeCategoryComboBox};
+ _help: {"tutti.createMarineLitterBatch.field.marineLitterSizeCategory.help"};
+}
+
+#marineLitterSizeCategoryComboBox {
+ property: marineLitterSizeCategory;
+ selectedItem: {model.getMarineLitterSizeCategory()};
+}
+
+#numberLabel {
+ text: "tutti.createMarineLitterBatch.field.number";
+ toolTipText: "tutti.createMarineLitterBatch.field.number.tip";
+ labelFor: {numberField};
+ _help: {"tutti.createMarineLitterBatch.field.number.help"};
+}
+
+#numberField {
+ property: number;
+ model: {model.getNumber()};
+ useFloat: true;
+ numberPattern: {DECIMAL3_PATTERN};
+ bean: {model};
+}
+
+#saveButton {
+ actionIcon: save;
+ text: "tutti.createMarineLitterBatch.action.save";
+ toolTipText: "tutti.createMarineLitterBatch.action.save.tip";
+ i18nMnemonic: "tutti.createMarineLitterBatch.action.save.mnemonic";
+ enabled: {model.isValid()};
+ _help: {"tutti.createMarineLitterBatch.action.save.help"};
+}
+
+#cancelButton {
+ actionIcon: cancel;
+ text: "tutti.createMarineLitterBatch.action.cancel";
+ toolTipText: "tutti.createMarineLitterBatch.action.cancel.tip";
+ i18nMnemonic: "tutti.createMarineLitterBatch.action.cancel.mnemonic";
+ _help: {"tutti.createMarineLitterBatch.action.cancel.help"};
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx 2013-04-04 19:09:48 UTC (rev 737)
@@ -0,0 +1,112 @@
+<!--
+ #%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%
+ -->
+<JPanel id='createMarineLitterBatchTopPanel' layout='{new BorderLayout()}'
+ decorator='help'
+ implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<CreateMarineLitterBatchUIModel, CreateMarineLitterBatchUIHandler>'>
+ <import>
+ fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue
+
+ fr.ifremer.tutti.ui.swing.TuttiHelpBroker
+ fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI
+ fr.ifremer.tutti.ui.swing.util.TuttiUI
+
+ jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
+ jaxx.runtime.swing.editor.NumberEditor
+
+ static org.nuiton.i18n.I18n._
+ </import>
+
+ <script><![CDATA[
+
+public CreateMarineLitterBatchUI(EditCatchesUI parentUI) {
+ JAXXUtil.initContext(this, parentUI);
+ CreateMarineLitterBatchUIHandler handler = new CreateMarineLitterBatchUIHandler(parentUI, this);
+ setContextValue(handler);
+ handler.beforeInitUI();
+}
+
+protected void $afterCompleteSetup() { handler.afterInitUI(); }
+ ]]></script>
+
+ <CreateMarineLitterBatchUIHandler id='handler'
+ initializer='getContextValue(CreateMarineLitterBatchUIHandler.class)'/>
+
+ <CreateMarineLitterBatchUIModel id='model'
+ initializer='getContextValue(CreateMarineLitterBatchUIModel.class)'/>
+
+ <BeanValidator id='validator' bean='model'
+ uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
+ <field name='marineLitterCategory'
+ component='marineLitterCategoryComboBox'/>
+ <field name='marineLitterSizeCategory'
+ component='marineLitterSizeCategoryComboBox'/>
+ <field name='number' component='numberField'/>
+ </BeanValidator>
+
+ <TuttiHelpBroker id='broker'
+ constructorParams='"tutti.createMarineLitterBatch.help"'/>
+
+ <Table id='configurationPanel' constraints='BorderLayout.CENTER' fill='both'>
+
+ <!-- MarineLitterCategory -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='marineLitterCategoryLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <BeanFilterableComboBox id='marineLitterCategoryComboBox' constructorParams='this'
+ genericType='CaracteristicQualitativeValue'/>
+ </cell>
+ </row>
+
+ <!-- MarineLitterSizeCategory-->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='marineLitterSizeCategoryLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <BeanFilterableComboBox id='marineLitterSizeCategoryComboBox'
+ constructorParams='this'
+ genericType='CaracteristicQualitativeValue'/>
+ </cell>
+ </row>
+
+ <!-- MarineLitter number -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='numberLabel'/>
+ </cell>
+ <cell weightx='1.0' columns='2'>
+ <NumberEditor id='numberField' constructorParams='this'/>
+ </cell>
+ </row>
+
+ </Table>
+
+ <!-- Form Actions -->
+ <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
+ <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ </JPanel>
+</JPanel>
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java 2013-04-04 19:09:48 UTC (rev 737)
@@ -0,0 +1,173 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.TuttiPersistence;
+import fr.ifremer.tutti.persistence.entities.data.SortedUnsortedEnum;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
+import fr.ifremer.tutti.ui.swing.util.Cancelable;
+import fr.ifremer.tutti.ui.swing.util.TuttiUI;
+import fr.ifremer.tutti.ui.swing.util.species.SelectSpeciesUI;
+import fr.ifremer.tutti.ui.swing.util.species.SelectSpeciesUIModel;
+import jaxx.runtime.SwingUtil;
+import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.Dimension;
+import java.util.List;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class CreateMarineLitterBatchUIHandler extends AbstractTuttiUIHandler<CreateMarineLitterBatchUIModel, CreateMarineLitterBatchUI> implements Cancelable {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(CreateMarineLitterBatchUIHandler.class);
+
+ private final TuttiPersistence persistenceService;
+
+ public CreateMarineLitterBatchUIHandler(TuttiUI parentUi,
+ CreateMarineLitterBatchUI ui) {
+ super(parentUi.getHandler().getContext(), ui);
+ this.persistenceService = context.getPersistenceService();
+ }
+
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiUIHandler methods --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public void beforeInitUI() {
+ CreateMarineLitterBatchUIModel model = new CreateMarineLitterBatchUIModel();
+ ui.setContextValue(model);
+ listModelIsModify(model);
+ }
+
+ @Override
+ public void afterInitUI() {
+
+ initUI(ui);
+
+ Caracteristic marineLitterCategoryCaracteristic =
+ persistenceService.getMarineLitterCategoryCaracteristic();
+ initBeanFilterableComboBox(ui.getMarineLitterCategoryComboBox(),
+ marineLitterCategoryCaracteristic.getQualitativeValue(),
+ null);
+
+ Caracteristic marineLitterSizeCategoryCaracteristic =
+ persistenceService.getMarineLitterSizeCategoryCaracteristic();
+
+ initBeanFilterableComboBox(ui.getMarineLitterSizeCategoryComboBox(),
+ marineLitterSizeCategoryCaracteristic.getQualitativeValue(),
+ null);
+
+ listenValidatorValid(ui.getValidator(), getModel());
+ }
+
+ @Override
+ public void onCloseUI() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("closing: " + ui);
+ }
+
+ // evict model from validator
+ ui.getValidator().setBean(null);
+
+ // when canceling always invalid model
+ getModel().setValid(false);
+
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ parent.getHandler().setMarineLitterSelectedCard(EditCatchesUIHandler.MAIN_CARD);
+ }
+
+ @Override
+ public SwingValidator<CreateMarineLitterBatchUIModel> getValidator() {
+ return ui.getValidator();
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Cancelable methods --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public void cancel() {
+ if (log.isInfoEnabled()) {
+ log.info("Cancel UI " + ui);
+ }
+ closeUI(ui);
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
+
+ public void openUI() {
+
+ CreateMarineLitterBatchUIModel model = getModel();
+
+ // connect model to validator
+ ui.getValidator().setBean(model);
+
+ model.reset();
+
+ ui.getMarineLitterCategoryComboBox().requestFocus();
+ }
+
+ public void save() {
+
+ if (log.isInfoEnabled()) {
+ log.info("Save UI " + ui);
+ }
+
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ parent.getMarineLitterTabContent().getHandler().addBatch(getModel());
+
+ // close dialog
+ closeUI(ui);
+ }
+
+ public Species openAddSpeciesDialog(String title, List<Species> species) {
+ SelectSpeciesUI dialogContent = new SelectSpeciesUI(ui);
+ SelectSpeciesUIModel model = dialogContent.getModel();
+ model.setSelectedSpecies(null);
+ model.setSpecies(species);
+
+ openDialog(dialogContent, title, new Dimension(400, 130));
+
+ Species result = model.getSelectedSpecies();
+ return result;
+ }
+
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java 2013-04-04 19:09:48 UTC (rev 737)
@@ -0,0 +1,94 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
+import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
+
+/**
+ * Model to create a new marine litter batch.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.3
+ */
+public class CreateMarineLitterBatchUIModel extends AbstractTuttiBeanUIModel<CreateMarineLitterBatchUIModel, CreateMarineLitterBatchUIModel> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Delegate edit object.
+ *
+ * @since 1.3
+ */
+ protected final MarineLitterBatch editObject =
+ TuttiBeanFactory.newMarineLitterBatch();
+
+ public CreateMarineLitterBatchUIModel() {
+ super(CreateMarineLitterBatchUIModel.class, null, null);
+ }
+
+ public CaracteristicQualitativeValue getMarineLitterCategory() {
+ return editObject.getMarineLitterCategory();
+ }
+
+ public void setMarineLitterCategory(CaracteristicQualitativeValue marineLitterCategory) {
+ Object oldValue = getMarineLitterCategory();
+ editObject.setMarineLitterCategory(marineLitterCategory);
+ firePropertyChange(MarineLitterBatch.PROPERTY_MARINE_LITTER_CATEGORY, oldValue, marineLitterCategory);
+ }
+
+ public CaracteristicQualitativeValue getMarineLitterSizeCategory() {
+ return editObject.getMarineLitterSizeCategory();
+ }
+
+ public void setMarineLitterSizeCategory(CaracteristicQualitativeValue marineLitterSizeCategory) {
+ Object oldValue = getMarineLitterSizeCategory();
+ editObject.setMarineLitterSizeCategory(marineLitterSizeCategory);
+ firePropertyChange(MarineLitterBatch.PROPERTY_MARINE_LITTER_SIZE_CATEGORY, oldValue, marineLitterSizeCategory);
+ }
+
+ public Integer getNumber() {
+ return editObject.getNumber();
+ }
+
+ public void setNumber(Integer number) {
+ Object oldValue = getNumber();
+ editObject.setNumber(number);
+ firePropertyChange(MarineLitterBatch.PROPERTY_NUMBER, oldValue, number);
+ }
+
+ @Override
+ protected CreateMarineLitterBatchUIModel newEntity() {
+ return new CreateMarineLitterBatchUIModel();
+ }
+
+ public void reset() {
+ editObject.setMarineLitterCategory(null);
+ editObject.setMarineLitterSizeCategory(null);
+ editObject.setNumber(null);
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-04-04 19:09:48 UTC (rev 737)
@@ -28,7 +28,6 @@
import com.google.common.collect.Sets;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchTableModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
@@ -38,7 +37,6 @@
import jaxx.runtime.swing.editor.cell.NumberCellEditor;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
@@ -53,13 +51,11 @@
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
-import java.awt.Color;
import java.awt.Component;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-import java.util.Collection;
import java.util.Enumeration;
import java.util.List;
import java.util.Set;
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml 2013-04-04 19:09:48 UTC (rev 737)
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
#%L
Tutti :: UI
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel-error-validation.xml 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIModel-error-validation.xml 2013-04-04 19:09:48 UTC (rev 737)
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
#%L
Tutti :: UI
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel-error-validation.xml 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIModel-error-validation.xml 2013-04-04 19:09:48 UTC (rev 737)
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
#%L
Tutti :: UI
Added: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel-error-validation.xml (rev 0)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel-error-validation.xml 2013-04-04 19:09:48 UTC (rev 737)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%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%
+ -->
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="marineLitterCategory">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required
+ </message>
+ </field-validator>
+ </field>
+
+ <field name="marineLitterSizeCategory">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required
+ </message>
+ </field-validator>
+ </field>
+
+ <field name="number">
+
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createMarineLitterBatch.number.required
+ </message>
+ </field-validator>
+
+ <field-validator type="double" short-circuit="true">
+ <param name="minExclusive">0</param>
+ <message>
+ tutti.validator.error.createMarineLitterBatch.number.invalidValue
+ </message>
+ </field-validator>
+
+ </field>
+</validators>
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel-error-validation.xml
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIModel-error-validation.xml 2013-04-04 19:09:48 UTC (rev 737)
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
#%L
Tutti :: UI
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel-error-validation.xml 2013-04-04 19:09:48 UTC (rev 737)
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
#%L
Tutti :: UI
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel-error-validation.xml 2013-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIModel-error-validation.xml 2013-04-04 19:09:48 UTC (rev 737)
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
<!--
#%L
Tutti :: UI
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-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-04 19:09:48 UTC (rev 737)
@@ -116,6 +116,19 @@
tutti.createBenthosBatch.title=
tutti.createBenthosMelag.error.message=
tutti.createBenthosMelag.error.title=
+tutti.createMarineLitterBatch.action.cancel=
+tutti.createMarineLitterBatch.action.cancel.mnemonic=
+tutti.createMarineLitterBatch.action.cancel.tip=
+tutti.createMarineLitterBatch.action.save=
+tutti.createMarineLitterBatch.action.save.mnemonic=
+tutti.createMarineLitterBatch.action.save.tip=
+tutti.createMarineLitterBatch.field.marineLitterCategory=
+tutti.createMarineLitterBatch.field.marineLitterCategory.tip=
+tutti.createMarineLitterBatch.field.marineLitterSizeCategory=
+tutti.createMarineLitterBatch.field.marineLitterSizeCategory.tip=
+tutti.createMarineLitterBatch.field.number=
+tutti.createMarineLitterBatch.field.number.tip=
+tutti.createMarineLitterBatch.title=
tutti.createSpeciesBatch.action.addSpecies=
tutti.createSpeciesBatch.action.addSpecies.mnemonic=
tutti.createSpeciesBatch.action.addSpecies.tip=
@@ -477,6 +490,12 @@
tutti.editFishingOperation.label.traitReminder.inCreation=
tutti.editFishingOperation.pane.other=
tutti.editFishingOperation.tab.general=
+tutti.editMarineLitterBatch.action.createBatch=
+tutti.editMarineLitterBatch.action.createBatch.mnemonic=
+tutti.editMarineLitterBatch.action.createBatch.tip=
+tutti.editMarineLitterBatch.action.removeBatch=
+tutti.editMarineLitterBatch.action.removeBatch.mnemonic=
+tutti.editMarineLitterBatch.action.removeBatch.tip=
tutti.editMarineLitterBatch.field.marineLitterTotalWeight=
tutti.editMarineLitterBatch.field.marineLitterTotalWeight.tip=
tutti.editMarineLitterBatch.table.header.comment=
@@ -1007,6 +1026,10 @@
tutti.update.jre=
tutti.update.tutti=
tutti.validator.error.comment.too.long=
+tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required=
+tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required=
+tutti.validator.error.createMarineLitterBatch.number.invalidValue=
+tutti.validator.error.createMarineLitterBatch.number.required=
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=
tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=
tutti.validator.error.createSpeciesBatch.species.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-04-04 19:02:11 UTC (rev 736)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-04 19:09:48 UTC (rev 737)
@@ -108,7 +108,7 @@
tutti.createBenthosBatch.field.sortedUnsortedCategory.tip=
tutti.createBenthosBatch.field.species=Espèce du lot
tutti.createBenthosBatch.field.species.tip=
-tutti.createBenthosBatch.title=Créer un lot
+tutti.createBenthosBatch.title=Créer un lôt
tutti.createBenthosMelag.action.cancel=Annuler
tutti.createBenthosMelag.action.cancel.mnemonic=A
tutti.createBenthosMelag.action.cancel.tip=Annuler la création du MELAG
@@ -119,6 +119,19 @@
tutti.createBenthosMelag.error.title=Erreur
tutti.createBenthosMelag.message=Combien pesait le MELAG (kg) ?
tutti.createBenthosMelag.title=Poids du MELAG (kg)
+tutti.createMarineLitterBatch.action.cancel=Annuler
+tutti.createMarineLitterBatch.action.cancel.mnemonic=A
+tutti.createMarineLitterBatch.action.cancel.tip=Annuler la création du lôt macro-déchet
+tutti.createMarineLitterBatch.action.save=Enregistrer
+tutti.createMarineLitterBatch.action.save.mnemonic=E
+tutti.createMarineLitterBatch.action.save.tip=Enregistrer la création du lôt macro-déchet
+tutti.createMarineLitterBatch.field.marineLitterCategory=Catégorie de déchets
+tutti.createMarineLitterBatch.field.marineLitterCategory.tip=
+tutti.createMarineLitterBatch.field.marineLitterSizeCategory=Catégorie de taille
+tutti.createMarineLitterBatch.field.marineLitterSizeCategory.tip=
+tutti.createMarineLitterBatch.field.number=Nombre
+tutti.createMarineLitterBatch.field.number.tip=
+tutti.createMarineLitterBatch.title=Créer un lôt
tutti.createSpeciesBatch.action.addSpecies=...
tutti.createSpeciesBatch.action.addSpecies.mnemonic=.
tutti.createSpeciesBatch.action.addSpecies.tip=Sélectionner une autre espèce
@@ -484,6 +497,12 @@
tutti.editFishingOperation.label.traitReminder.inCreation=en cours de création
tutti.editFishingOperation.pane.other=Autres caractéristiques
tutti.editFishingOperation.tab.general=Trait
+tutti.editMarineLitterBatch.action.createBatch=Créer un lot de déchet
+tutti.editMarineLitterBatch.action.createBatch.mnemonic=C
+tutti.editMarineLitterBatch.action.createBatch.tip=Créer un nouveau lot de déchet
+tutti.editMarineLitterBatch.action.removeBatch=Supprimer la ligne sélectionnée
+tutti.editMarineLitterBatch.action.removeBatch.mnemonic=S
+tutti.editMarineLitterBatch.action.removeBatch.tip=Supprimer la ligne sélectionnée
tutti.editMarineLitterBatch.field.marineLitterTotalWeight=Poids total (Kg)
tutti.editMarineLitterBatch.field.marineLitterTotalWeight.tip=Poids total (Kg)
tutti.editMarineLitterBatch.table.header.comment=Commentaire
@@ -1011,6 +1030,10 @@
tutti.update.jre=Java
tutti.update.tutti=Tutti
tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
+tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required=
+tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required=
+tutti.validator.error.createMarineLitterBatch.number.invalidValue=
+tutti.validator.error.createMarineLitterBatch.number.required=
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif
tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=La catégorie Vrac / Hors Vrac est obligatoire
tutti.validator.error.createSpeciesBatch.species.required=L'espèce est obligatoire
1
0