Coser-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
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- 1259 discussions
Build failed in Jenkins: coser-nightly » Coser :: Web #11
by admin+ci-codelutin.com@codelutin.com 16 Mar '14
by admin+ci-codelutin.com@codelutin.com 16 Mar '14
16 Mar '14
See <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
Changes:
[Tony CHEMIT] refs #4664 review Result API (using Command pattern), need to finish the web part
------------------------------------------
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Coser :: Web 1.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ coser-web ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (ensure-no-container-api) @ coser-web ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ coser-web ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-redmine-login) @ coser-web ---
[INFO] Exporting server [redmine-forge.codelutin.com] username in ${redmine.username}
[INFO] Exporting server [redmine-forge.codelutin.com] privateKey in ${redmine.apiKey}
[INFO]
[INFO] --- license-maven-plugin:1.6:update-project-license (attach-licenses) @ coser-web ---
[INFO]
[INFO] --- license-maven-plugin:1.6:add-third-party (attach-licenses) @ coser-web ---
[INFO] Load missing file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] Missing file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…> is up-to-date.
[INFO] Writing third-party file to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] Will attach third party file from <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserStruts2 (parseJsp) @ coser-web ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserValidation (parseOthersAndGen) @ coser-web ---
[INFO] Load rules file validation.rules
[INFO] Load rules file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserJava (parseOthersAndGen) @ coser-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:get (get) @ coser-web ---
[INFO] Copying coser-web.properties to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] Copying coser-web.properties to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:bundle (bundle) @ coser-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:collect-i18n-artifacts (collect-i18n-artifacts) @ coser-web ---
[INFO] collected 5 i18n artifacts for locale fr_FR stored in <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] collected 5 i18n artifacts for locale en_GB stored in <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:bundle (bundle) @ coser-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:bundle (bundle) @ coser-web ---
[WARNING] bundle fr_FR contains 1/439 empty entries!
- 0/1 : Can't replace data value. Expected %s but was %s
[WARNING] bundle en_GB contains 37/439 empty entries!
- 0/37 : Can't create project
- 1/37 : Can't find line %s for deletion
- 2/37 : Can't find line %s for undeletion
- 3/37 : Can't read file %s for category %s
- 4/37 : Can't read file '%s'. Check CSV file separator
- 5/37 : Can't replace data value. Expected %s but was %s
- 6/37 : Creating matrix : %d*%d*%d*%d
- 7/37 : Missing file %s
- 8/37 : Missing maturity attribute
- 9/37 : Missing sex attribute
- 10/37 : Missing species name
- 11/37 : Missing stratum name
- 12/37 : Missing survey name
- 13/37 : Missing sweptSurface attribute
- 14/37 : Project %s already exist
- 15/37 : Project %s doesn't exists !
- 16/37 : Selection %s already exists
- 17/37 : Selection %s doesn't exists !
- 18/37 : Species %s doesn't exist in referential
- 19/37 : age attribute is not a valid double
- 20/37 : depth attribute is not a valid double
- 21/37 : haul name is not valid
- 22/37 : lat attribute is not a valid double
- 23/37 : lat must contain at least 4 decimals
- 24/37 : length attribute is not a valid double
- 25/37 : length attribute must be positive
- 26/37 : long attribute is not a valid double
- 27/37 : long must contain at least 4 decimals
- 28/37 : month is not valid (2 digits)
- 29/37 : number attribute is not a valid double
- 30/37 : surface attribute is not a valid double
- 31/37 : surface attribute must be positive
- 32/37 : sweptSurface attribute is not a valid double
- 33/37 : sweptSurface attribute must be positive
- 34/37 : sweptSurface must contain at least 3 decimals
- 35/37 : weight attribute is not a valid double
- 36/37 : year is not valid (4 digits.2 digits)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ coser-web ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 7 resources
[INFO] Copying 2 resources
[INFO] Copying 3 resources
[INFO]
[INFO] --- license-maven-plugin:1.6:update-file-header (update-file-header) @ coser-web ---
[INFO] Will search files to update from root <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] Will search files to update from root <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] - ignore file (detected %%Ignore-License) <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] - ignore file (detected %%Ignore-License) <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] - adding license header on file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] - adding license header on file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] - adding license header on file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] Scan 97 files header done in 518.141ms.
[INFO]
* uptodate header on 92 files.
* add header on 3 files.
* ignore header on 2 files.
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ coser-web ---
[INFO] Compiling 48 source files to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] bootstrap class path not set in conjunction with -source 1.6
[INFO] 1 warning
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[139,29] cannot find symbol
symbol: method getAvailableSpecies(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[154,29] cannot find symbol
symbol: method getAvailableIndicators(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[86,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[95,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[87,39] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[96,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[104,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[94,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[88,23] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[96,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[95,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[96,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[187,79] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[273,75] no suitable method found for requestBuilder(java.util.Locale)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(no instance(s) of type variable(s) R exist so that argument type java.util.Locale conforms to formal parameter type java.lang.Class<R>)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[121,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-we…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[INFO] 19 errors
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
1
1
Build failed in Jenkins: coser-ci » Coser :: Web #22
by admin+ci-codelutin.com@codelutin.com 15 Mar '14
by admin+ci-codelutin.com@codelutin.com 15 Mar '14
15 Mar '14
See <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/22/…>
Changes:
[Tony CHEMIT] refs #4664 review Result API (using Command pattern), need to finish the web part
------------------------------------------
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Coser :: Web 1.5-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/snapshots/org/nuiton/web…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/web/nu…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/snapshots/org/nuiton/web… (2 KB at 40.6 KB/sec)
[INFO] Downloaded: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/web/nu… (2 KB at 14.5 KB/sec)
[INFO] Downloading: http://nexus.nuiton.org/nexus/content/repositories/snapshots/org/nuiton/web…
[INFO] Downloading: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/web/nu…
[INFO] Downloaded: http://nexus.nuiton.org/nexus/content/repositories/snapshots/org/nuiton/web… (822 B at 28.7 KB/sec)
[INFO] Downloaded: https://nexus.nuiton.org/nexus/content/groups/coser-group/org/nuiton/web/nu… (822 B at 7.5 KB/sec)
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ coser-web ---
[INFO] Deleting <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ coser-web ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserStruts2 (parseJsp) @ coser-web ---
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserValidation (parseOthersAndGen) @ coser-web ---
[INFO] Load rules file validation.rules
[INFO] Load rules file <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:parserJava (parseOthersAndGen) @ coser-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:get (get) @ coser-web ---
[INFO] Copying coser-web.properties to <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO] Copying coser-web.properties to <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:gen (parseOthersAndGen) @ coser-web ---
[INFO]
[INFO] >>> i18n-maven-plugin:3.0:bundle (bundle) @ coser-web >>>
[INFO]
[INFO] --- i18n-maven-plugin:3.0:collect-i18n-artifacts (collect-i18n-artifacts) @ coser-web ---
[INFO] collected 5 i18n artifacts for locale fr_FR stored in <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO] collected 5 i18n artifacts for locale en_GB stored in <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO]
[INFO] <<< i18n-maven-plugin:3.0:bundle (bundle) @ coser-web <<<
[INFO]
[INFO] --- i18n-maven-plugin:3.0:bundle (bundle) @ coser-web ---
[WARNING] bundle fr_FR contains 1/439 empty entries!
- 0/1 : Can't replace data value. Expected %s but was %s
[WARNING] bundle en_GB contains 37/439 empty entries!
- 0/37 : Can't create project
- 1/37 : Can't find line %s for deletion
- 2/37 : Can't find line %s for undeletion
- 3/37 : Can't read file %s for category %s
- 4/37 : Can't read file '%s'. Check CSV file separator
- 5/37 : Can't replace data value. Expected %s but was %s
- 6/37 : Creating matrix : %d*%d*%d*%d
- 7/37 : Missing file %s
- 8/37 : Missing maturity attribute
- 9/37 : Missing sex attribute
- 10/37 : Missing species name
- 11/37 : Missing stratum name
- 12/37 : Missing survey name
- 13/37 : Missing sweptSurface attribute
- 14/37 : Project %s already exist
- 15/37 : Project %s doesn't exists !
- 16/37 : Selection %s already exists
- 17/37 : Selection %s doesn't exists !
- 18/37 : Species %s doesn't exist in referential
- 19/37 : age attribute is not a valid double
- 20/37 : depth attribute is not a valid double
- 21/37 : haul name is not valid
- 22/37 : lat attribute is not a valid double
- 23/37 : lat must contain at least 4 decimals
- 24/37 : length attribute is not a valid double
- 25/37 : length attribute must be positive
- 26/37 : long attribute is not a valid double
- 27/37 : long must contain at least 4 decimals
- 28/37 : month is not valid (2 digits)
- 29/37 : number attribute is not a valid double
- 30/37 : surface attribute is not a valid double
- 31/37 : surface attribute must be positive
- 32/37 : sweptSurface attribute is not a valid double
- 33/37 : sweptSurface attribute must be positive
- 34/37 : sweptSurface must contain at least 3 decimals
- 35/37 : weight attribute is not a valid double
- 36/37 : year is not valid (4 digits.2 digits)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ coser-web ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 7 resources
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ coser-web ---
[INFO] Compiling 48 source files to <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] bootstrap class path not set in conjunction with -source 1.6
[INFO] 1 warning
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[139,29] cannot find symbol
symbol: method getAvailableSpecies(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[154,29] cannot find symbol
symbol: method getAvailableIndicators(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[104,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[95,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[121,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[95,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[86,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[88,23] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[96,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[96,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[96,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[94,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[187,79] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[273,75] no suitable method found for requestBuilder(java.util.Locale)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(no instance(s) of type variable(s) R exist so that argument type java.util.Locale conforms to formal parameter type java.lang.Class<R>)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/fr.ifremer.coser$coser-web/ws/…>:[87,39] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[INFO] 19 errors
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
1
1
See <http://ci.codelutin.com/jenkins/job/coser-ci/22/changes>
Changes:
[Tony CHEMIT] refs #4664 review Result API (using Command pattern), need to finish the web part
------------------------------------------
[...truncated 669 lines...]
symbol: method getAvailableIndicators(fr.ifremer.coser.result.CoserRequest)
location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[104,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[95,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[121,40] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[95,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[86,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[88,23] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,53] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,19] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[94,55] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[187,79] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[273,75] no suitable method found for requestBuilder(java.util.Locale)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(no instance(s) of type variable(s) R exist so that argument type java.util.Locale conforms to formal parameter type java.lang.Class<R>)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[87,39] no suitable method found for requestBuilder()
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
[INFO] 19 errors
[INFO] -------------------------------------------------------------
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Coser ............................................. SUCCESS [ 2.395 s]
[INFO] Coser :: Business ................................. SUCCESS [ 15.142 s]
[INFO] Coser :: UI ....................................... SUCCESS [ 11.669 s]
[INFO] Coser :: Web ...................................... FAILURE [ 1.148 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 31.830 s
[INFO] Finished at: 2014-03-12T18:55:30+01:00
[INFO] Final Memory: 89M/1466M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project coser-web: Compilation failure: Compilation failure:
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[139,29] cannot find symbol
[ERROR] symbol: method getAvailableSpecies(fr.ifremer.coser.result.CoserRequest)
[ERROR] location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[154,29] cannot find symbol
[ERROR] symbol: method getAvailableIndicators(fr.ifremer.coser.result.CoserRequest)
[ERROR] location: variable resultService of type fr.ifremer.coser.result.CoserResultEngine
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[104,19] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[95,40] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[121,40] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[95,53] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[86,19] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[88,23] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,55] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,53] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[96,19] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[94,55] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[43,16] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[187,79] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[273,75] no suitable method found for requestBuilder(java.util.Locale)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (no instance(s) of type variable(s) R exist so that argument type java.util.Locale conforms to formal parameter type java.lang.Class<R>)
[ERROR] <http://ci.codelutin.com/jenkins/job/coser-ci/ws/trunk/coser-web/src/main/ja…>:[87,39] no suitable method found for requestBuilder()
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.util.Locale,java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] method fr.ifremer.coser.web.actions.common.CoserAction.<R>requestBuilder(java.lang.Class<R>) is not applicable
[ERROR] (cannot instantiate from arguments because actual and formal argument lists differ in length)
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project coser-web: Compilation failure
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
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:108)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.jvnet.hudson.maven3.launcher.Maven31Launcher.main(Maven31Launcher.java:132)
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:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
at jenkins.maven3.agent.Maven31Main.launch(Maven31Main.java:181)
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:606)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:134)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:69)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:328)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:858)
at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 30 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :coser-web
Sending e-mails to: coser-commits(a)list.forge.codelutin.com chemit+codelutin-ci(a)codelutin.com
channel stopped
1
1
15 Mar '14
Author: tchemit
Date: 2014-03-15 16:11:29 +0100 (Sat, 15 Mar 2014)
New Revision: 1146
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1146
Log:
refs-90 #4664
Added:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserApplicationContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserApplicationContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommandFactory.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultGraphCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultGraphCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultGraphCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultGraphCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestExtractTypeListAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryResultTypeAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryTypeAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultGraphRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultGraphRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/FileResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/MapResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/VoidResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Charts.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorageWalker.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java
Removed:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesListMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesMap.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java
trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java
trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserApplicationContext.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserApplicationContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserApplicationContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,89 @@
+package fr.ifremer.coser;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserCommandFactory;
+import fr.ifremer.coser.result.CoserMainRepositoryProvider;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Extracts;
+import fr.ifremer.coser.result.util.Reports;
+
+import java.util.ServiceLoader;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserApplicationContext {
+
+ /**
+ * @return application configuration
+ */
+ CoserBusinessConfig getConfig();
+
+ /**
+ * @return all types of {@link ResultRepositoryType} found via the {@link ServiceLoader} mecanism
+ */
+ Set<ResultRepositoryType> getRepositoryTypes();
+
+ /**
+ * @return repository provider
+ */
+ CoserMainRepositoryProvider getRepositoryProvider();
+
+ /**
+ * @return factory of command
+ */
+ CoserCommandFactory getCommandFactory();
+
+ /**
+ * @return indicator map
+ */
+ IndicatorMap getIndicatorMap();
+
+ /**
+ * @return zone map
+ */
+ ZoneMap getZoneMap();
+
+ /**
+ * @return reports helper
+ */
+ Reports getReports();
+
+ /**
+ * @return charts helper
+ */
+ Charts getCharts();
+
+ /**
+ * @return extracts helper
+ */
+ Extracts getExtracts();
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,49 +0,0 @@
-package fr.ifremer.coser;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.coser.bean.IndicatorMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
-import fr.ifremer.coser.result.repository.ResultRepositoryType;
-
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public interface CoserServiceContext {
-
- CoserBusinessConfig getConfig();
-
- Set<ResultRepositoryType> getResultRepositoryTypes();
-
- Set<ResultRepositoryProvider<?>> getResultRepositoryProviders();
-
- IndicatorMap getIndicatorsMap();
-
- ZoneMap getZonesMap();
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,38 @@
+package fr.ifremer.coser;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import java.io.File;
+
+/**
+ * Created on 3/14/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserServiceContext {
+
+ CoserApplicationContext getApplicationContext();
+
+ File getTemporaryDirectory();
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserApplicationContext.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserApplicationContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserApplicationContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,171 @@
+package fr.ifremer.coser;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserCommandFactory;
+import fr.ifremer.coser.result.CoserMainRepositoryProvider;
+import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Extracts;
+import fr.ifremer.coser.result.util.Reports;
+import org.nuiton.config.ArgumentsParserException;
+
+import java.util.ServiceLoader;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DefaultCoserApplicationContext implements CoserApplicationContext {
+
+ /**
+ * Application configuration.
+ */
+ protected CoserBusinessConfig config;
+
+ /**
+ * Result repository types (loaded by service loader).
+ */
+ protected Set<ResultRepositoryType> repositoryTypes;
+
+ /**
+ * Result repository provider.
+ */
+ protected CoserMainRepositoryProvider repositoryProvider;
+
+ /**
+ * Factory of commands.
+ */
+ protected CoserCommandFactory commandFactory;
+
+ /**
+ * Cache of indicator definition.
+ */
+ protected IndicatorMap indicatorsMap;
+
+ /**
+ * Cache of zone definition.
+ */
+ protected ZoneMap zonesMap;
+
+ /**
+ * Reports helper.
+ */
+ protected Reports reports;
+
+ /**
+ * Charts helper.
+ */
+ protected Charts charts;
+
+ private Extracts extracts;
+
+ public DefaultCoserApplicationContext(CoserBusinessConfig config) {
+ this.config = config;
+ try {
+ config.parse();
+ } catch (ArgumentsParserException ex) {
+ throw new CoserTechnicalException("Can't read configuration", ex);
+ }
+ }
+
+ @Override
+ public CoserBusinessConfig getConfig() {
+ return config;
+ }
+
+ @Override
+ public Set<ResultRepositoryType> getRepositoryTypes() {
+ if (repositoryTypes == null) {
+ ServiceLoader<ResultRepositoryType> loader = ServiceLoader.load(ResultRepositoryType.class);
+ repositoryTypes = Sets.newHashSet(loader);
+ }
+ return repositoryTypes;
+ }
+
+ @Override
+ public IndicatorMap getIndicatorMap() {
+ if (indicatorsMap == null) {
+ indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
+ }
+ return indicatorsMap;
+ }
+
+ @Override
+ public ZoneMap getZoneMap() {
+ if (zonesMap == null) {
+ zonesMap = new ZoneMap(config.getWebZonesFile());
+ }
+ return zonesMap;
+ }
+
+ @Override
+ public Reports getReports() {
+ if (reports == null) {
+ reports = new Reports();
+ }
+ return reports;
+ }
+
+ @Override
+ public Charts getCharts() {
+ if (charts == null) {
+ charts = new Charts();
+ }
+ return charts;
+ }
+
+ @Override
+ public Extracts getExtracts() {
+ if (extracts == null) {
+ extracts = new Extracts();
+ }
+ return extracts;
+ }
+
+ @Override
+ public CoserMainRepositoryProvider getRepositoryProvider() {
+ if (repositoryProvider == null) {
+
+ Set<ResultRepositoryProvider<?>> repositoryProviders = CoserMainRepositoryProvider.createDefaultRepositoryProviders(config);
+ repositoryProvider = new CoserMainRepositoryProvider(repositoryProviders);
+ }
+ return repositoryProvider;
+ }
+
+ @Override
+ public CoserCommandFactory getCommandFactory() {
+ if (commandFactory == null) {
+ commandFactory = new CoserCommandFactory(getRepositoryTypes());
+ }
+ return commandFactory;
+ }
+
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,130 +0,0 @@
-package fr.ifremer.coser;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Sets;
-import fr.ifremer.coser.bean.IndicatorMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
-import fr.ifremer.coser.result.repository.ResultRepositoryType;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider;
-
-import java.util.ServiceLoader;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class DefaultCoserServiceContext implements CoserServiceContext {
-
- /**
- * Application configuration.
- */
- protected CoserBusinessConfig config;
-
- /**
- * Available type of result repositories (loaded by service loader).
- */
- protected Set<ResultRepositoryType> resultRepositoryTypes;
-
- /**
- * Result repositories providers.
- */
- protected Set<ResultRepositoryProvider<?>> resultRepositoryProviders;
-
- /**
- * Cache of indicator definition.
- */
- protected IndicatorMap indicatorsMap;
-
- /**
- * Cache of zone definition.
- */
- protected ZoneMap zonesMap;
-
- public DefaultCoserServiceContext(CoserBusinessConfig config) {
- this.config = config;
- }
-
- public static Set<ResultRepositoryProvider<?>> createDefaultRepositoryProviders(CoserBusinessConfig config) {
- Preconditions.checkNotNull(config);
- Set<ResultRepositoryProvider<?>> result = Sets.newHashSet();
-
- // add legacy map repository
- Preconditions.checkNotNull(config.getWebMapsProjectsDirectory());
- result.add(new LegacyResultRepositoryProvider(config.getWebMapsProjectsDirectory()));
-
- // add legacy indicators repository
- Preconditions.checkNotNull(config.getWebIndicatorsProjectsDirectory());
- result.add(new LegacyResultRepositoryProvider(config.getWebIndicatorsProjectsDirectory()));
-
- // add EchoBase repository
- Preconditions.checkNotNull(config.getWebEchobaseProjectsDirectory());
- result.add(new EchoBaseResultRepositoryProvider(config.getWebEchobaseProjectsDirectory()));
- return result;
- }
-
- @Override
- public CoserBusinessConfig getConfig() {
- return config;
- }
-
- @Override
- public Set<ResultRepositoryType> getResultRepositoryTypes() {
- if (resultRepositoryTypes == null) {
- ServiceLoader<ResultRepositoryType> loader = ServiceLoader.load(ResultRepositoryType.class);
- resultRepositoryTypes = Sets.newHashSet(loader);
- }
- return resultRepositoryTypes;
- }
-
- @Override
- public Set<ResultRepositoryProvider<?>> getResultRepositoryProviders() {
- if (resultRepositoryProviders == null) {
- resultRepositoryProviders = createDefaultRepositoryProviders(config);
- }
- return resultRepositoryProviders;
- }
-
- @Override
- public IndicatorMap getIndicatorsMap() {
- if (indicatorsMap == null) {
- indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
- }
- return indicatorsMap;
- }
-
- @Override
- public ZoneMap getZonesMap() {
- if (zonesMap == null) {
- zonesMap = new ZoneMap(config.getWebZonesFile());
- }
- return zonesMap;
- }
-
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/IndicatorMap.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,7 +24,9 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
import fr.ifremer.coser.storage.DataStorages;
import org.apache.commons.collections4.map.MultiKeyMap;
import org.apache.commons.logging.Log;
@@ -32,9 +34,10 @@
import java.io.File;
import java.util.Collection;
-import java.util.Iterator;
+import java.util.Collections;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
/**
* Contains the localized indicator definitions.
@@ -50,79 +53,105 @@
private static final Log log = LogFactory.getLog(IndicatorMap.class);
/**
- * Indicator map (id, locale > translation, id, "unit" > unit) (etat du service).
+ * To get french translations.
*/
+ protected static final String KEY_FRENCH = Locale.FRENCH.getLanguage();
+
+ /**
+ * To get english translations.
+ */
+ protected static final String KEY_ENGLISH = Locale.ENGLISH.getLanguage();
+
+ /**
+ * To get spanish translations.
+ */
+ protected static final String KEY_SPANISH = "es";
+
+ /**
+ * To get unit translations.
+ */
+ protected static final String KEY_UNIT = "unit";
+
+ /**
+ * Universe of safe keys usable in the cache.
+ *
+ * @see #getSafeLocaleKey(String)
+ */
+ protected static final Set<String> SAFE_KEYS = Collections.unmodifiableSet(
+ Sets.newHashSet(KEY_FRENCH, KEY_ENGLISH, KEY_UNIT, KEY_SPANISH));
+
+ /**
+ * Localized Indicator map (id, locale > translation, id, "unit" > unit).
+ */
protected final MultiKeyMap<String, String> map;
public IndicatorMap(File indicatorsFile) {
Preconditions.checkNotNull(indicatorsFile);
+ Preconditions.checkArgument(indicatorsFile.exists(), "Indicator file: " + indicatorsFile + " does not exist.");
if (log.isInfoEnabled()) {
log.info("Loading Indicator file: " + indicatorsFile);
}
this.map = new MultiKeyMap<String, String>();
- DataStorage indicatorsStorage;
- indicatorsStorage = DataStorages.load(indicatorsFile);
- Iterator<String[]> iteratorInd = indicatorsStorage.iterator(true);
- while (iteratorInd.hasNext()) {
- // "id";"label_fr";"label_en";"label_es";"unit"
- String[] indicator = iteratorInd.next();
- map.put(indicator[0], "fr", indicator[1]);
- map.put(indicator[0], "en", indicator[2]);
- map.put(indicator[0], "es", indicator[3]);
- map.put(indicator[0], "unit", indicator[4]);
- }
+
+ DataStorage storage = DataStorages.load(indicatorsFile);
+ DataStorages.walk(storage, new DataStorageWalker() {
+ @Override
+ public void onRow(String... row) {
+ String indicatorCode = row[0];
+ map.put(indicatorCode, KEY_FRENCH, row[1]);
+ map.put(indicatorCode, KEY_ENGLISH, row[2]);
+ map.put(indicatorCode, KEY_SPANISH, row[3]);
+ map.put(indicatorCode, KEY_UNIT, row[4]);
+ }
+ });
}
- public String getIndicatorValue(String indicator, Locale locale) {
+ public String getIndicatorValue(Locale locale, String indicator) {
+ Preconditions.checkNotNull(locale);
Preconditions.checkNotNull(indicator);
- Preconditions.checkNotNull(locale);
- String translations = getIndicatorValue(indicator, locale.getLanguage());
- if (translations == null) {
- translations = "##" + indicator + "##" + locale.getLanguage();
- }
- return translations;
+ String localeCode = getSafeLocaleKey(locale.getLanguage());
+ String translation = getIndicatorValue(localeCode, indicator);
+ return translation;
}
public String getIndicatorUnit(String indicator) {
Preconditions.checkNotNull(indicator);
- return getIndicatorValue(indicator, "unit");
+ return getIndicatorValue(KEY_UNIT, indicator);
}
- /**
- * Get indicator translation by checking correct locale.
- *
- * @param indicator indicator code
- * @param localeCode locale
- * @return indicator translation
- */
- public String getIndicatorValue(String indicator, String localeCode) {
- Preconditions.checkNotNull(indicator);
- Preconditions.checkNotNull(localeCode);
- String localLocaleCode = localeCode;
- if (!"fr".equals(localLocaleCode) && !"es".equals(localLocaleCode)
- && !"unit".equals(localLocaleCode)) {
- localLocaleCode = "en"; // en by default
- }
- return map.get(indicator, localLocaleCode);
- }
+ public Map<String, String> getIndicatorsValues(Locale locale,
+ Collection<String> indicatorList) {
- public Map<String, String> getIndicatorsValues(Collection<String> indicatorList, Locale locale) {
-
Map<String, String> result = Maps.newTreeMap();
if (indicatorList != null) {
+ String localeCode = getSafeLocaleKey(locale.getLanguage());
for (String indicator : indicatorList) {
- String indicatorLabel = getIndicatorValue(indicator, locale);
+ String indicatorLabel = getIndicatorValue(localeCode, indicator);
result.put(indicator, indicatorLabel);
}
}
-
return result;
}
- protected MultiKeyMap<String, String> getMap() {
- return map;
+ protected String getIndicatorValue(String localeCode, String indicator) {
+ Preconditions.checkNotNull(localeCode);
+ Preconditions.checkNotNull(indicator);
+ Preconditions.checkArgument(SAFE_KEYS.contains(localeCode));
+ String translation = map.get(indicator, localeCode);
+ if (translation == null) {
+ translation = "##" + indicator + "##" + localeCode;
+ }
+ return translation;
}
+
+ protected String getSafeLocaleKey(String localeCode) {
+ if (!SAFE_KEYS.contains(localeCode)) {
+ localeCode = KEY_ENGLISH; // en by default
+ }
+ return localeCode;
+ }
+
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesListMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesListMap.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesListMap.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,13 +22,19 @@
* #L%
*/
+import com.google.common.base.Predicate;
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
import fr.ifremer.coser.storage.DataStorages;
import org.nuiton.i18n.I18n;
import java.io.File;
+import java.util.Collection;
import java.util.Iterator;
import java.util.Locale;
+import java.util.Map;
/**
* Created on 3/11/14.
@@ -50,42 +56,64 @@
public String getSpeciesListName(Locale locale, String specesList) {
// recherche de la traduction de l'id de liste
// les liste sont a1, T1, T2 ...
- String listLetter = String.valueOf(specesList.charAt(0));
- String translation = "## " + specesList + " not found ##";
- Iterator<String[]> typeIterator = iterator(true);
- while (typeIterator.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
- String[] tupleType = typeIterator.next();
- if (tupleType[4].equals(listLetter)) {
- // gestion du groupe "Tous"
- // cas special, c'est la seule valeur du fichier
- // code type espece qui a besoin d'une traduction
- if (tupleType[4].equalsIgnoreCase("T")) {
+ Predicate<String[]> predicate = LegacyPredicates.speciesListPredicate(specesList);
+ GetNameWalker walker = new GetNameWalker(locale, specesList);
+ DataStorages.walk(storage, predicate, walker);
+ String translation = walker.getTranslation();
- translation = I18n.l(locale, "coser.business.specesList.nameForAll", specesList.charAt(1));
-// if (locale != null && "fr".equals(locale.getLanguage())) {
-// translation = "Tous Liste " + specesList.charAt(1);
-// } else if (locale != null && "en".equals(locale.getLanguage())) {
-// translation = "Todo Lista " + specesList.charAt(1);
-// } else {
-// translation = "All List " + specesList.charAt(1);
-// }
- } else {
- // ajout de la traduction du nom de liste plus le numéro
- translation = I18n.l(locale, "coser.business.specesList.name", tupleType[0], specesList.charAt(1));
-// if (locale != null && "fr".equals(locale.getLanguage())) {
-// translation = tupleType[0] + " Liste " + specesList.charAt(1);
-// } else if (locale != null && "en".equals(locale.getLanguage())) {
-// translation = tupleType[0] + " Lista " + specesList.charAt(1);
-// } else {
-// translation = tupleType[0] + " List " + specesList.charAt(1);
-// }
- }
- break;
+// String listLetter = String.valueOf(specesList.charAt(0));
+// String translation = "## " + specesList + " not found ##";
+// Iterator<String[]> typeIterator = iterator(true);
+// while (typeIterator.hasNext()) {
+// // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
+// String[] tupleType = typeIterator.next();
+// if (tupleType[4].equals(listLetter)) {
+//
+// // gestion du groupe "Tous"
+// // cas special, c'est la seule valeur du fichier
+// // code type espece qui a besoin d'une traduction
+// if (tupleType[4].equalsIgnoreCase("T")) {
+//
+// translation = I18n.l(locale, "coser.business.specesList.nameForAll", specesList.charAt(1));
+//// if (locale != null && "fr".equals(locale.getLanguage())) {
+//// translation = "Tous Liste " + specesList.charAt(1);
+//// } else if (locale != null && "en".equals(locale.getLanguage())) {
+//// translation = "Todo Lista " + specesList.charAt(1);
+//// } else {
+//// translation = "All List " + specesList.charAt(1);
+//// }
+// } else {
+// // ajout de la traduction du nom de liste plus le numéro
+// translation = I18n.l(locale, "coser.business.specesList.name", tupleType[0], specesList.charAt(1));
+//// if (locale != null && "fr".equals(locale.getLanguage())) {
+//// translation = tupleType[0] + " Liste " + specesList.charAt(1);
+//// } else if (locale != null && "en".equals(locale.getLanguage())) {
+//// translation = tupleType[0] + " Lista " + specesList.charAt(1);
+//// } else {
+//// translation = tupleType[0] + " List " + specesList.charAt(1);
+//// }
+// }
+// break;
+// }
+// }
+ return translation;
+ }
+
+ public Map<String, String> getSpeciesSubMap(Locale locale, Collection<String> speciesList) {
+
+ // keep incoming order
+ Map<String, String> result = Maps.newLinkedHashMap();
+
+ if (speciesList != null) {
+
+ for (String species : speciesList) {
+ String speciesLabel = getSpeciesListName(locale, species);
+ result.put(species, speciesLabel);
}
}
- return translation;
+
+ return result;
}
protected Iterator<String[]> iterator(boolean skipFirstLine) {
@@ -93,4 +121,37 @@
Iterator<String[]> iterator = storage.iterator(skipFirstLine);
return iterator;
}
+
+ public static class GetNameWalker implements DataStorageWalker {
+
+ protected String translation;
+
+ protected String speciesList;
+
+ protected final Locale locale;
+
+ public GetNameWalker(Locale locale, String speciesList) {
+ this.speciesList = speciesList;
+ this.locale = locale;
+ translation = "## " + speciesList + " not found ##";
+ }
+
+ public String getTranslation() {
+ return translation;
+ }
+
+ @Override
+ public void onRow(String... tuple) {
+
+ // gestion du groupe "Tous"
+ // cas special, c'est la seule valeur du fichier
+ // code type espece qui a besoin d'une traduction
+ if (tuple[4].equalsIgnoreCase("T")) {
+ translation = I18n.l(locale, "coser.business.specesList.nameForAll", speciesList.charAt(1));
+ } else {
+ // ajout de la traduction du nom de liste plus le numéro
+ translation = I18n.l(locale, "coser.business.specesList.name", tuple[0], speciesList.charAt(1));
+ }
+ }
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesMap.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesMap.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/SpeciesMap.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,6 +25,7 @@
import com.google.common.collect.Maps;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.util.Collection;
@@ -95,7 +96,9 @@
Map<String, String> map = getSpeciesMap();
for (String species : speciesList) {
String speciesLabel = map.get(species);
- result.put(species, speciesLabel);
+ if (StringUtils.isNotEmpty(speciesLabel)) {
+ result.put(species, speciesLabel);
+ }
}
}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,44 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.repository.ResultRepository;
+
+/**
+ * To execute a command on a request for a given result repository.
+ * <p/>
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserCommand<Repository extends ResultRepository, Request extends CoserRequest> {
+
+ boolean accept(Request request);
+
+ CoserResult execute(Request request);
+
+ void setRepository(Repository repository);
+
+ void setRequestContext(CoserRequestContext context);
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommandFactory.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommandFactory.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommandFactory.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,80 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import org.apache.commons.collections4.map.MultiKeyMap;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * To create commands.
+ * Created on 3/14/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserCommandFactory {
+
+ /**
+ * Cache of command types.
+ * <p/>
+ * Keys are (repository type id, request type).
+ */
+ protected final MultiKeyMap<Object, Class<? extends CoserCommand>> commands;
+
+ public CoserCommandFactory(Set<ResultRepositoryType> resultRepositoryTypes) {
+ this.commands = new MultiKeyMap<Object, Class<? extends CoserCommand>>();
+ for (ResultRepositoryType resultRepositoryType : resultRepositoryTypes) {
+
+ String resultRepositoryTypeId = resultRepositoryType.getId();
+
+ Map<Class<? extends CoserRequest>, Class<? extends CoserCommand>> commandTypes = resultRepositoryType.getCommandTypes();
+ for (Map.Entry<Class<? extends CoserRequest>, Class<? extends CoserCommand>> entry : commandTypes.entrySet()) {
+ commands.put(resultRepositoryTypeId, entry.getKey(), entry.getValue());
+ }
+ }
+ }
+
+ public <Repo extends ResultRepository, R extends CoserRequest> CoserCommand<Repo, R> newCommand(CoserRequestContext requestContext,
+ Repo repository,
+ R request) {
+
+ Class<? extends CoserCommand> commandType = commands.get(repository.getResultRepositoryType().getId(), request.getClass());
+
+ try {
+ // instanciate the command to get the request type :(
+ CoserCommand<Repo, R> command = commandType.newInstance();
+ command.setRepository(repository);
+ command.setRequestContext(requestContext);
+ return command;
+ } catch (InstantiationException e) {
+ throw new CoserTechnicalException(e);
+ } catch (IllegalAccessException e) {
+ throw new CoserTechnicalException(e);
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserCommandFactory.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,123 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Set;
+
+/**
+ * Created on 3/15/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserMainRepositoryProvider {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CoserMainRepositoryProvider.class);
+
+ /**
+ * Repositories providers.
+ */
+ protected final Set<ResultRepositoryProvider<?>> repositoryProviders;
+
+ /**
+ * Cache of repositories.
+ */
+ protected Set<ResultRepository> repositories;
+
+ public static Set<ResultRepositoryProvider<?>> createDefaultRepositoryProviders(CoserBusinessConfig config) {
+ Preconditions.checkNotNull(config);
+ Set<ResultRepositoryProvider<?>> result = Sets.newHashSet();
+
+ // add legacy map repository
+ Preconditions.checkNotNull(config.getWebMapsProjectsDirectory());
+ result.add(new LegacyResultRepositoryProvider(config, config.getWebMapsProjectsDirectory()));
+
+ // add legacy indicators repository
+ Preconditions.checkNotNull(config.getWebIndicatorsProjectsDirectory());
+ result.add(new LegacyResultRepositoryProvider(config, config.getWebIndicatorsProjectsDirectory()));
+
+ // add EchoBase repository
+ Preconditions.checkNotNull(config.getWebEchobaseProjectsDirectory());
+ result.add(new EchoBaseResultRepositoryProvider(config.getWebEchobaseProjectsDirectory()));
+ return result;
+ }
+
+ public CoserMainRepositoryProvider(Set<ResultRepositoryProvider<?>> repositoryProviders) {
+ Preconditions.checkNotNull(repositoryProviders);
+ this.repositoryProviders = repositoryProviders;
+ }
+
+ public void resetRepositories() {
+ repositories = null;
+ }
+
+ public Set<ResultRepository> getResultRepositories() {
+ if (repositories == null) {
+ Set<String> ids = Sets.newHashSet();
+ repositories = Sets.newHashSet();
+ for (ResultRepositoryProvider<?> repositoryProvider : repositoryProviders) {
+
+ Set<ResultRepository> repos = loadFromRepositoryProvider(repositoryProvider, ids);
+ repositories.addAll(repos);
+ }
+ if (log.isInfoEnabled()) {
+ log.info("Found " + repositories.size() + " result repository(ies).");
+ }
+ }
+ return repositories;
+ }
+
+ protected Set<ResultRepository> loadFromRepositoryProvider(ResultRepositoryProvider<?> repositoryProvider,
+ Set<String> ids) {
+
+ Set<? extends ResultRepository> resultRepositories = repositoryProvider.loadRepositories();
+
+ Set<ResultRepository> result = Sets.newHashSet();
+
+ // check all repository use a unique id
+ for (ResultRepository resultRepository : resultRepositories) {
+ String id = resultRepository.getId();
+ if (log.isDebugEnabled()) {
+ log.debug("Try to register result Repository: " + id);
+ }
+ if (!ids.add(id)) {
+
+ // there is already a repository with this id
+ throw new ResultRepositoryInitializationException(repositoryProvider, "Duplicate result repository with id: " + id, null);
+ }
+ result.add(resultRepository);
+ }
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserMainRepositoryProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,7 +23,6 @@
*/
import java.io.Serializable;
-import java.util.Locale;
/**
* Request to obtain results.
@@ -35,9 +34,11 @@
*/
public interface CoserRequest extends Serializable {
- Locale getLocale();
-
- void setLocale(Locale locale);
-
+ /**
+ * Is the request is filled to be consumed?
+ *
+ * @return {@code true} if all mandatory fields of the request
+ * are filled, {@code false} otherwise
+ */
boolean isFilled();
}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestBuilder.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,290 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.request.CoserRequestExtractTypeListAware;
+import fr.ifremer.coser.result.request.CoserRequestFacadeAware;
+import fr.ifremer.coser.result.request.CoserRequestIndicatorAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryResultTypeAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryTypeAware;
+import fr.ifremer.coser.result.request.CoserRequestSpeciesAware;
+import fr.ifremer.coser.result.request.CoserRequestZoneAware;
+import fr.ifremer.coser.result.request.CoserRequestZoneListAware;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.util.DataType;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * To build requests.
+ * <p/>
+ * TO build a new request, instanciate a new build, add some parameters and then use the {@link #toRequest()} method.
+ * <p/>
+ * Example:
+ * <pre>
+ * MapRequest r = CoserRequestBuilder.
+ * newBuilder(locale,MapRequest.class).
+ * addFacade(facade).
+ * addZone(zone).
+ * toRequest();
+ * </pre>
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserRequestBuilder<R extends CoserRequest> {
+
+ protected static final String PARAMETER_RESULT_TYPE = "resultType";
+
+ protected static final String PARAMETER_REPOSITORY_TYPE = "resultRepositoryType";
+
+ protected static final String PARAMETER_INDICATOR = "indicator";
+
+ protected static final String PARAMETER_ZONE_LIST = "zoneList";
+
+ protected static final String PARAMETER_SPECIES = "species";
+
+ protected static final String PARAMETER_ZONE = "zone";
+
+ protected static final String PARAMETER_FACADE = "facade";
+
+ protected static final String PARAMETER_SPECIES_LIST = "speciesList";
+
+ protected static final String PARAMETER_POPULATION_INDICATOR_LIST = "populationIndicatorList";
+
+ protected static final String PARAMETER_COMMUNITY_INDICATOR_LIST = "communityIndicatorList";
+
+ protected static final String PARAMETER_EXTRACT_TYPE_LIST = "extractTypeList";
+
+ /**
+ * Locale to inject in request.
+ */
+ protected final Locale locale;
+
+ /**
+ * Type of request to build.
+ */
+ protected final Class<R> requestType;
+
+ /**
+ * Holder of parameters to inject in request.
+ */
+ protected final Map<String, Object> parameters;
+
+ public static <R extends CoserRequest> CoserRequestBuilder<R> newBuilder(Locale locale,
+ Class<R> requestType) {
+ return new CoserRequestBuilder<R>(locale, requestType);
+ }
+
+ protected CoserRequestBuilder(Locale locale, Class<R> requestType) {
+ Preconditions.checkNotNull(locale);
+ Preconditions.checkNotNull(requestType);
+ this.locale = locale;
+ this.requestType = requestType;
+ this.parameters = Maps.newTreeMap();
+ }
+
+ public CoserRequestBuilder<R> addFacade(String facade) {
+ parameters.put(PARAMETER_FACADE, facade);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addZone(String zone) {
+ parameters.put(PARAMETER_ZONE, zone);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addSpecies(String species) {
+ parameters.put(PARAMETER_SPECIES, species);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addIndicator(String indicator) {
+ parameters.put(PARAMETER_INDICATOR, indicator);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addExtractTypeList(List<DataType> extractTypeList) {
+ parameters.put(PARAMETER_EXTRACT_TYPE_LIST, extractTypeList);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addZoneList(List<String> zoneList) {
+ parameters.put(PARAMETER_ZONE_LIST, zoneList);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addSpeciesList(List<String> speciesList) {
+ parameters.put(PARAMETER_SPECIES_LIST, speciesList);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addPopulationIndicatorList(List<String> populationIndicatorList) {
+ parameters.put(PARAMETER_POPULATION_INDICATOR_LIST, populationIndicatorList);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addCommunityIndicatorList(List<String> communityIndicatorList) {
+ parameters.put(PARAMETER_COMMUNITY_INDICATOR_LIST, communityIndicatorList);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addRepositoryType(String repositoryType) {
+ parameters.put(PARAMETER_REPOSITORY_TYPE, repositoryType);
+ return this;
+ }
+
+ public CoserRequestBuilder<R> addResultType(ResultType resultType) {
+ parameters.put(PARAMETER_RESULT_TYPE, resultType);
+ return this;
+ }
+
+ public R toRequest() {
+ try {
+ R request = requestType.newInstance();
+ flushCoserRequestFacadeAware(request);
+ flushCoserRequestZoneAware(request);
+ flushCoserRequestZoneListAware(request);
+ flushCoserRequestSpeciesAware(request);
+ flushCoserRequestIndicatorAware(request);
+ flushCoserRequestRepositoryTypeAware(request);
+ flushCoserRequestRepositoryResultTypeAware(request);
+ flushCoserRequestExtractTypeListAware(request);
+ flushExtractRawDataAndResultsRequest(request);
+ return request;
+ } catch (InstantiationException e) {
+ throw new CoserTechnicalException(e);
+ } catch (IllegalAccessException e) {
+ throw new CoserTechnicalException(e);
+ }
+ }
+
+ protected void flushExtractRawDataAndResultsRequest(R request) {
+ if (request instanceof ExtractRawDataAndResultsRequest) {
+ ExtractRawDataAndResultsRequest r = (ExtractRawDataAndResultsRequest) request;
+
+ List<String> populationIndicatorList = getListParam(PARAMETER_POPULATION_INDICATOR_LIST);
+ if (CollectionUtils.isNotEmpty(populationIndicatorList)) {
+ r.setPopulationIndicatorList(populationIndicatorList);
+ }
+ List<String> communityIndicatorList = getListParam(PARAMETER_COMMUNITY_INDICATOR_LIST);
+ if (CollectionUtils.isNotEmpty(communityIndicatorList)) {
+ r.setCommunityIndicatorList(communityIndicatorList);
+ }
+ List<String> speciesList = getListParam(PARAMETER_SPECIES_LIST);
+ if (CollectionUtils.isNotEmpty(speciesList)) {
+ r.setSpeciesList(speciesList);
+ }
+ }
+ }
+
+ protected void flushCoserRequestFacadeAware(R request) {
+ if (request instanceof CoserRequestFacadeAware) {
+ String facade = getParam(PARAMETER_FACADE);
+ if (facade != null) {
+ ((CoserRequestFacadeAware) request).setFacade(facade);
+ }
+ }
+ }
+
+ protected void flushCoserRequestZoneAware(R request) {
+ if (request instanceof CoserRequestZoneAware) {
+ String zone = getParam(PARAMETER_ZONE);
+ if (zone != null) {
+ ((CoserRequestZoneAware) request).setZone(zone);
+ }
+ }
+ }
+
+ protected void flushCoserRequestSpeciesAware(R request) {
+ if (request instanceof CoserRequestSpeciesAware) {
+ String species = getParam(PARAMETER_SPECIES);
+ if (species != null) {
+ ((CoserRequestSpeciesAware) request).setSpecies(species);
+ }
+ }
+ }
+
+ protected void flushCoserRequestZoneListAware(R request) {
+ if (request instanceof CoserRequestZoneListAware) {
+ List<String> zoneList = getListParam(PARAMETER_ZONE_LIST);
+ if (CollectionUtils.isNotEmpty(zoneList)) {
+ ((CoserRequestZoneListAware) request).setZoneList(zoneList);
+ }
+ }
+ }
+
+ protected void flushCoserRequestExtractTypeListAware(R request) {
+ if (request instanceof CoserRequestExtractTypeListAware) {
+ List<DataType> zoneList = getListParam(PARAMETER_EXTRACT_TYPE_LIST);
+ if (CollectionUtils.isNotEmpty(zoneList)) {
+ ((CoserRequestExtractTypeListAware) request).setExtractTypeList(zoneList);
+ }
+ }
+ }
+
+ protected void flushCoserRequestIndicatorAware(R request) {
+ if (request instanceof CoserRequestIndicatorAware) {
+ String indicator = getParam(PARAMETER_INDICATOR);
+ if (indicator != null) {
+ ((CoserRequestIndicatorAware) request).setIndicator(indicator);
+ }
+ }
+ }
+
+ protected void flushCoserRequestRepositoryTypeAware(R request) {
+ if (request instanceof CoserRequestRepositoryTypeAware) {
+ String repositoryType = getParam(PARAMETER_REPOSITORY_TYPE);
+ if (repositoryType != null) {
+ ((CoserRequestRepositoryTypeAware) request).setRepositoryType(repositoryType);
+ }
+ }
+ }
+
+ protected void flushCoserRequestRepositoryResultTypeAware(R request) {
+ if (request instanceof CoserRequestRepositoryResultTypeAware) {
+ ResultType resultType = getParam(PARAMETER_RESULT_TYPE);
+ if (resultType != null) {
+ ((CoserRequestRepositoryResultTypeAware) request).setResultType(resultType);
+ }
+ }
+ }
+
+ protected <O> O getParam(String parameterName) {
+ Object o = parameters.get(parameterName);
+ return (O) o;
+ }
+
+ protected <O> List<O> getListParam(String parameterName) {
+ Object o = parameters.get(parameterName);
+ return (List<O>) o;
+ }
+
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,61 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Extracts;
+import fr.ifremer.coser.result.util.Reports;
+
+import java.io.File;
+import java.util.Locale;
+
+/**
+ * Useful object used by commands.
+ * <p/>
+ * Created on 3/14/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestContext {
+
+ Locale getLocale();
+
+ IndicatorMap getIndicatorMap();
+
+ ZoneMap getZoneMap();
+
+ Reports getReports();
+
+ Charts getCharts();
+
+ Extracts getExtracts();
+
+ CoserBusinessConfig getConfig();
+
+ File getTemporaryDirectory();
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequestExecutor.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,201 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import fr.ifremer.coser.CoserApplicationContext;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.io.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * To execute request all over coser result repositories.
+ * <p/>
+ * This new API will let us to define any result format to be queried.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserRequestExecutor {
+
+ /**
+ * To get repositories.
+ */
+ protected final CoserMainRepositoryProvider repositoryProvider;
+
+ /**
+ * To create commands.
+ */
+ protected final CoserCommandFactory commandFactory;
+
+ public CoserRequestExecutor(CoserApplicationContext applicationContext) {
+ this.commandFactory = applicationContext.getCommandFactory();
+ this.repositoryProvider = applicationContext.getRepositoryProvider();
+ }
+
+ /**
+ * Extract some raw data and results from repositories and assembly them as an archive.
+ *
+ * @param context request context
+ * @param request extract request
+ * @return the file result containing the archive
+ */
+ public FileResult executeUnique(CoserRequestContext context,
+ ExtractRawDataAndResultsRequest request) {
+
+ File extractDirectory = new File(context.getTemporaryDirectory(), "Indicateurs_Ifremer");
+ request.setExtractDirectory(extractDirectory);
+
+ try {
+ FileUtils.forceMkdir(extractDirectory);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create directory: " + extractDirectory, e);
+ }
+
+ // Get all extracted stuff from matching repositories
+ List repositoryResults = executeAll(context, request);
+
+ File file = context.getExtracts().assemblyExtractResult(context,
+ extractDirectory,
+ request.getZoneList(),
+ repositoryResults);
+ FileResult result = new FileResult("ALL", file);
+ return result;
+ }
+
+ /**
+ * Execute the given {@code request} to botain a single result.
+ * <p/>
+ * A unique result repository must match this request, otherwise a {@link DuplicatedResultException} will be thrown.
+ * <p/>
+ * If no result repository matches the request a {@link NoResultRepositoryFoundException} will be thrown
+ *
+ * @param context request context
+ * @param request request to execute
+ * @return the unique result
+ */
+ public CoserResult executeUnique(CoserRequestContext context, CoserRequest request) {
+
+ Preconditions.checkNotNull(request);
+ Preconditions.checkArgument(request.isFilled());
+
+ List<ResultRepository> repositories = getMatchingRepositories(context, request);
+ if (CollectionUtils.isEmpty(repositories)) {
+ throw new NoResultRepositoryFoundException("No result repository matching request", request);
+ }
+
+ if (repositories.size() > 1) {
+ throw new DuplicatedResultException(
+ repositories.toArray(new ResultRepository[repositories.size()]));
+ }
+
+ ResultRepository repository = repositories.get(0);
+
+ CoserResult result = execute(context, repository, request);
+ return result;
+ }
+
+ /**
+ * Execute the given {@code request} on any matching result repository.
+ * <p/>
+ * If no result repository matches the request a {@link NoResultRepositoryFoundException} will be thrown.
+ *
+ * @param context request context
+ * @param request request to execute
+ * @return the list of result (one by each result repository).
+ */
+ public List<CoserResult> executeAll(CoserRequestContext context, CoserRequest request) {
+
+ Preconditions.checkNotNull(request);
+ Preconditions.checkArgument(request.isFilled());
+
+ List<CoserResult> result = Lists.newArrayList();
+
+ List<ResultRepository> repositories = getMatchingRepositories(context, request);
+ if (CollectionUtils.isEmpty(repositories)) {
+ throw new NoResultRepositoryFoundException("No result repository matching request", request);
+ }
+
+ for (ResultRepository repository : repositories) {
+
+ CoserResult repositoryResult = execute(context, repository, request);
+
+ result.add(repositoryResult);
+ }
+ return result;
+ }
+
+ protected List<ResultRepository> getMatchingRepositories(CoserRequestContext context, CoserRequest request) {
+
+ List<ResultRepository> result = Lists.newArrayList();
+
+ Set<ResultRepository> repositories = repositoryProvider.getResultRepositories();
+ for (ResultRepository repository : repositories) {
+
+ if (accept(context, repository, request)) {
+ result.add(repository);
+ }
+ }
+ return result;
+ }
+
+ protected <Request extends CoserRequest, Repository extends ResultRepository> boolean
+ accept(CoserRequestContext context, Repository repository, Request request) {
+
+ CoserCommand<Repository, Request> command = newCommand(context, repository, request);
+
+ boolean result = command.accept(request);
+ return result;
+ }
+
+ protected <Request extends CoserRequest, Repository extends ResultRepository> CoserResult
+ execute(CoserRequestContext context, Repository repository, Request request) {
+
+ CoserCommand<Repository, Request> command = newCommand(context, repository, request);
+
+ CoserResult result = command.execute(request);
+ if (result == null) {
+ throw new NoResultFoundException(repository.getId(), request);
+ }
+ return result;
+ }
+
+ protected <Request extends CoserRequest, Repository extends ResultRepository> CoserCommand<Repository, Request>
+ newCommand(CoserRequestContext context, Repository repository, Request request) {
+
+ CoserCommand<Repository, Request> command =
+ commandFactory.newCommand(context, repository, request);
+ return command;
+ }
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,162 +0,0 @@
-package fr.ifremer.coser.result;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserServiceContext;
-import fr.ifremer.coser.result.repository.ResultRepository;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
-import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
-import fr.ifremer.coser.result.repository.ResultRepositoryType;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * To execute command all over coser result repositories.
- * <p/>
- * This new API will let us to define any result format to be queried.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class CoserResultEngine {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(CoserResultEngine.class);
-
- protected Set<ResultRepositoryCommandEngine> repositories;
-
- protected final CoserServiceContext serviceContext;
-
- public CoserResultEngine(CoserServiceContext serviceContext) {
- Preconditions.checkNotNull(serviceContext);
- this.serviceContext = serviceContext;
- }
-
- public Map<String, ResultRepositoryType> getRepositoryTypes() {
- Map<String, ResultRepositoryType> result = Maps.newHashMap();
- for (ResultRepositoryType resultRepositoryType : serviceContext.getResultRepositoryTypes()) {
- result.put(resultRepositoryType.getId(), resultRepositoryType);
- }
- return result;
- }
-
- public void resetRepositories() {
- this.repositories = null;
- }
-
- public CoserResult getUniqueResult(CoserRequest request) throws DuplicatedResultException {
-
- Preconditions.checkArgument(request.isFilled());
-
- ResultRepositoryCommandEngine repository = getMatchingRepository(request);
-
- if (repository == null) {
- throw new NoResultRepositoryFoundException("No result repository matching request", request);
- }
- CoserResult result = repository.executeRequest(request);
- if (result == null) {
- throw new NoResultFoundException(repository.getResultRepository().getId(), request);
- }
- return result;
- }
-
- public List<CoserResult> getMultipleResult(CoserRequest request) throws DuplicatedResultException {
-
- Preconditions.checkArgument(request.isFilled());
-
- List<CoserResult> result = Lists.newArrayList();
- for (ResultRepositoryCommandEngine repository : getRepositories()) {
- if (repository.acceptRequest(request)) {
-
- CoserResult repositoryResult = repository.executeRequest(request);
- result.add(repositoryResult);
- }
- }
- return result;
- }
-
- protected ResultRepositoryCommandEngine getMatchingRepository(CoserRequest request) throws DuplicatedResultException {
-
- List<ResultRepositoryCommandEngine> repositoryList = Lists.newArrayList();
-
- for (ResultRepositoryCommandEngine resultRepository : getRepositories()) {
-
- if (resultRepository.acceptRequest(request)) {
- repositoryList.add(resultRepository);
- }
- }
-
- ResultRepositoryCommandEngine repository;
- switch (repositoryList.size()) {
- case 0:
- repository = null;
- break;
- case 1:
- repository = repositoryList.get(0);
- break;
- default:
- throw new DuplicatedResultException(
- repositoryList.toArray(new ResultRepository[repositoryList.size()]));
- }
- return repository;
- }
-
- protected Set<ResultRepositoryCommandEngine> getRepositories() {
- if (repositories == null) {
- Set<String> ids = Sets.newHashSet();
- repositories = Sets.newHashSet();
- for (ResultRepositoryProvider repositoryProvider : serviceContext.getResultRepositoryProviders()) {
- Set<ResultRepository> resultRepositories = repositoryProvider.loadRepositories(serviceContext);
-
- // check all repository use a unique id
- for (ResultRepository resultRepository : resultRepositories) {
- String id = resultRepository.getId();
- if (log.isDebugEnabled()) {
- log.debug("Try to register result Repository: " + id);
- }
- if (!ids.add(id)) {
-
- // there is already a repository with this id
- throw new ResultRepositoryInitializationException(repositoryProvider, "Duplicate result repository with id: " + id, null);
- }
- ResultRepositoryCommandEngine repositoryCommandEngine = repositoryProvider.newEngine(resultRepository);
- repositories.add(repositoryCommandEngine);
- }
- }
- if (log.isInfoEnabled()) {
- log.info("Found " + repositories.size() + " result repository(ies).");
- }
- }
- return repositories;
- }
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,104 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.CoserApplicationContext;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Extracts;
+import fr.ifremer.coser.result.util.Reports;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
+
+/**
+ * Created on 3/14/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DefaultCoserRequestContext implements CoserRequestContext {
+
+ protected final CoserApplicationContext applicationContext;
+
+ protected final Locale locale;
+
+ protected File temporaryDirectory;
+
+ public DefaultCoserRequestContext(CoserApplicationContext applicationContext, Locale locale) {
+ this.applicationContext = applicationContext;
+ this.locale = locale;
+ }
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public IndicatorMap getIndicatorMap() {
+ return applicationContext.getIndicatorMap();
+ }
+
+ @Override
+ public ZoneMap getZoneMap() {
+ return applicationContext.getZoneMap();
+ }
+
+ @Override
+ public Reports getReports() {
+ return applicationContext.getReports();
+ }
+
+ @Override
+ public Charts getCharts() {
+ return applicationContext.getCharts();
+ }
+
+ @Override
+ public Extracts getExtracts() {
+ return applicationContext.getExtracts();
+ }
+
+ @Override
+ public CoserBusinessConfig getConfig() {
+ return applicationContext.getConfig();
+ }
+
+ @Override
+ public File getTemporaryDirectory() {
+ if (temporaryDirectory == null) {
+ try {
+ temporaryDirectory = File.createTempFile("coser-", "");
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create temporary directory.", e);
+ }
+ }
+ return temporaryDirectory;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/DefaultCoserRequestContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,74 +0,0 @@
-package fr.ifremer.coser.result;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.coser.CoserTechnicalException;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-
-/**
- * A result with only one file.
- * <p/>
- * A useful method is offered to obtain directly a {@link InputStream} from the result file ({@link #getInputStream()}).
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class FileResult implements CoserResult {
-
- private static final long serialVersionUID = 1L;
-
- protected final String source;
-
- protected final File file;
-
- public FileResult(String source, File file) {
- this.file = file;
- this.source = source;
- }
-
- @Override
- public String getSource() {
- return source;
- }
-
- @Override
- public File getResult() {
- return file;
- }
-
- public InputStream getInputStream() {
- try {
- InputStream inputStream = new FileInputStream(file);
- return inputStream;
- } catch (FileNotFoundException e) {
- // should never happen ?
- throw new CoserTechnicalException("Could not find file: " + file, e);
- }
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,56 +0,0 @@
-package fr.ifremer.coser.result;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import java.util.Map;
-
-/**
- * Created on 3/12/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class MapResult implements CoserResult {
-
- private static final long serialVersionUID = 1L;
-
- protected final String source;
-
- protected final Map<String, String> map;
-
- public MapResult(String source, Map<String, String> map) {
- this.map = map;
- this.source = source;
- }
-
- @Override
- public String getSource() {
- return source;
- }
-
- @Override
- public Map<String, String> getResult() {
- return map;
- }
-
-}
\ No newline at end of file
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,465 +0,0 @@
-package fr.ifremer.coser.result;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import com.itextpdf.text.DocumentException;
-import fr.ifremer.coser.CoserConstants;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.CoserUtils;
-import fr.ifremer.coser.bean.IndicatorMap;
-import fr.ifremer.coser.bean.Project;
-import fr.ifremer.coser.bean.RSufiResult;
-import fr.ifremer.coser.bean.RSufiResultPath;
-import fr.ifremer.coser.bean.Selection;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import freemarker.cache.ClassTemplateLoader;
-import freemarker.ext.beans.BeansWrapper;
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-import freemarker.template.TemplateException;
-import org.apache.commons.collections4.keyvalue.MultiKey;
-import org.apache.commons.collections4.map.MultiKeyMap;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.i18n.I18n;
-import org.w3c.dom.Document;
-import org.xhtmlrenderer.pdf.ITextRenderer;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import static org.nuiton.i18n.I18n.l;
-
-/**
- * For reports generation.
- * <p/>
- * Created on 3/7/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class Reports {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(Reports.class);
-
- /** Freemarker. */
- protected Configuration freemarkerConfiguration;
-
- public Reports() {
-
- freemarkerConfiguration = new Configuration();
-
- // needed to overwrite "Defaults to default system encoding."
- // fix encoding issue on some systems
- freemarkerConfiguration.setEncoding(Locale.getDefault(), "UTF-8");
-
- // specific template loader to get template from jars (classpath)
- ClassTemplateLoader templateLoader = new ClassTemplateLoader(Reports.class, "/ftl");
- freemarkerConfiguration.setTemplateLoader(templateLoader);
-
- // pour les maps dans les template (entre autre)
- freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
- }
-
- public String getDechargeFilename(Locale locale) {
- Preconditions.checkNotNull(locale);
- String filename = I18n.l(locale, "coser.business.dataDisclaimer.filename");
-// if (locale != null && "fr".equals(locale.getLanguage())) {
-// filename = "DechargeDonnees.pdf";
-// } else if (locale != null && "es".equals(locale.getLanguage())) {
-// filename = "DatosDeExencionDeResponsabilidad.pdf";
-// } else {
-// filename = "DataDisclaimer.pdf";
-// }
- return filename;
- }
-
- public String getYearChartTitle(Locale locale) {
- Preconditions.checkNotNull(locale);
- String yearAxis = I18n.l(locale, "coser.business.year");
-// String yearAxis = "Year";
-// if ("fr".equals(locale.getLanguage())) {
-// yearAxis = "Ann\u00E9e";
-// } else if ("es".equals(locale.getLanguage())) {
-// yearAxis = "A\u00F1o";
-// }
- return yearAxis;
- }
-
- /**
- * Genere le fichier PDF d'information sur les espèces incluses dans les
- * calculs des indicateurs de communautés, à jointe à chaque téléchargement.
- *
- * @param path path to result
- * @param resultDirectory result directory
- * @param locale locale
- * @param indicatorLocalizedMap localized indicator map
- * @return generated pdf file
- */
- public File generateMetaFilePDF(RSufiResultPath path,
- File resultDirectory,
- Locale locale,
- IndicatorMap indicatorLocalizedMap) {
-
- Project project = path.getProject();
- Selection selection = path.getSelection();
- RSufiResult rsufiResult = path.getRsufiResult();
-
- File result = null;
-
- // chargement du reftax et des code types especes pour connaitre
- // le type des especes de poissons
- // parcourt du fichier des types de données
- Map<String, Integer> refTaxSpeciesNumSys = new HashMap<String, Integer>();
- Map<String, String> refTaxSpeciesName = new HashMap<String, String>();
- Iterator<String[]> itReftax = project.getRefTaxSpecies().iterator(true);
- while (itReftax.hasNext()) {
- String[] tuple = itReftax.next();
- // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
- String speciesCode = tuple[3];
- Integer iNumSys = Integer.valueOf(tuple[1]);
- refTaxSpeciesNumSys.put(speciesCode, iNumSys);
-
- // fix html entities bug
- String speciesSciName = StringEscapeUtils.escapeXml(tuple[4]);
- String speciesAuthor = StringEscapeUtils.escapeXml(tuple[5]);
-
- // TODO little hack for italic species
- refTaxSpeciesName.put(speciesCode, "<span style='font-style:italic'>" + speciesSciName + "</span> " + speciesAuthor);
- }
-
- // code type / especes
- Map<String, Integer[]> specyTypes = new HashMap<String, Integer[]>();
- Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator(true);
- while (itTypeSpecies.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max","Code"
- String[] tuple = itTypeSpecies.next();
- String specyTypeCode = tuple[4];
-
- Integer iMinNumSys = Integer.valueOf(tuple[2]);
- Integer iMaxNumSys = Integer.valueOf(tuple[3]);
- specyTypes.put(specyTypeCode, new Integer[]{iMinNumSys, iMaxNumSys});
- }
-
- // le fichier estpopind
- File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
-
- // donnees intermediare (map liste id > liste des indicateurs)
- Map<String, SortedSet<String>> indicatorMap = new HashMap<String, SortedSet<String>>();
-
- // le resutat sera une map complexe
- // map liste id > liste des especes (nom complet)
- Map<String, SortedSet<String>> speciesMap = new HashMap<String, SortedSet<String>>();
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- DataStorage dataStorage = DataStorages.load(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- Iterator<String[]> estComIndIterator = dataStorage.iterator(true);
- while (estComIndIterator.hasNext()) {
- String[] tuple = estComIndIterator.next();
-
- String indicatorCode = tuple[1];
- String listIdCode = tuple[2]; // c1, p2, T3 ...
-
- String listNumber = listIdCode.substring(1); // 1, 2, 3
-
- // get indicator list
- SortedSet<String> indicatorList = indicatorMap.get(listNumber);
- if (indicatorList == null) {
- indicatorList = new TreeSet<String>();
- indicatorMap.put(listNumber, indicatorList);
- }
-
- // get indicator full name
- String indicatorName = indicatorLocalizedMap.getIndicatorValue(indicatorCode, locale.getLanguage());
- // peut arriver pour les indicateurs inconnu par coser
- if (indicatorName != null) {
- indicatorList.add(indicatorName);
- }
- }
-
- // seconde pass, remplit la map speciesMap avec les listes configurées
- // dans la selection
- for (String listNumber : indicatorMap.keySet()) {
- List<String> selectionSpeciesList = null;
- if ("1".equals(listNumber)) {
- selectionSpeciesList = selection.getSelectedSpecies();
- } else if ("2".equals(listNumber)) {
- selectionSpeciesList = selection.getSelectedSpeciesOccDens();
- } else if ("3".equals(listNumber)) {
- selectionSpeciesList = selection.getSelectedSpeciesSizeAllYear();
- } else if ("4".equals(listNumber)) {
- selectionSpeciesList = selection.getSelectedSpeciesMaturity();
- }
-
- if (selectionSpeciesList != null) {
- SortedSet<String> speciesList = new TreeSet<String>();
-
- for (String speciesCode : selectionSpeciesList) {
- // get species full name
- String speciesName = refTaxSpeciesName.get(speciesCode);
-
- // recupere le code type de l'espece, "m", "c", "p" ...
- Integer speciesNumSys = refTaxSpeciesNumSys.get(speciesCode);
- for (Map.Entry<String, Integer[]> speciesTypeEntry : specyTypes.entrySet()) {
- String speciesTypeCode = speciesTypeEntry.getKey();
- Integer[] bound = speciesTypeEntry.getValue();
-
- if (speciesNumSys >= bound[0] && speciesNumSys <= bound[1]) {
- speciesName = "(" + speciesTypeCode + ") " + speciesName;
- break;
- }
- }
- // end code type espece
-
- speciesList.add(speciesName);
- }
- speciesMap.put(listNumber, speciesList);
- } else {
- if (log.isWarnEnabled()) {
- log.warn("Can't get species list for list id " + listNumber);
- }
- }
- }
-
- OutputStream os = null;
- try {
- // render freemarker template
- Template mapTemplate = freemarkerConfiguration.getTemplate("metainfo.ftl", locale);
-
- Map<String, Object> root = new HashMap<String, Object>();
- root.put("indicatorsMap", indicatorMap);
- root.put("speciesMap", speciesMap);
-
- Writer out = new StringWriter();
- mapTemplate.process(root, out);
- out.flush();
-
- // get content as w3c document
- Document document = CoserUtils.parseDocument(out.toString());
-
- // render template output as pdf
- result = File.createTempFile("coser-metainfo-", ".pdf");
- result.deleteOnExit();
- os = new FileOutputStream(result);
-
- ITextRenderer renderer = new ITextRenderer();
- renderer.setDocument(document, null);
- renderer.layout();
- renderer.createPDF(os);
-
- os.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't generate meta info file", ex);
- } catch (TemplateException ex) {
- throw new CoserTechnicalException("Can't generate meta info file", ex);
- } catch (DocumentException ex) {
- throw new CoserTechnicalException("Can't generate meta info file", ex);
- } finally {
- IOUtils.closeQuietly(os);
- }
-
- return result;
- }
-
- /**
- * Genere le PDF dynamique de decharge à partir du template freemarker.
- *
- * @param disclamerPdf pdf file to generate
- * @param locale generated pdf locale
- */
- public void generateDechargePDF(File disclamerPdf, Locale locale, Date updateDate, String surveyName) {
-
- OutputStream os = null;
-
- try {
- // get some info to put into pdf
-// Date updateDate = getLastDataUpdateDate();
-
-// // il se peut que pour l'extraction un fichier de décharge ne soit
-// // pas généré pour une campagne en particulier
-// // on passe un nom vide a freemarker
-// String surveyName = "";
-// if (resultDirectory != null && rSufiResult != null) {
-// surveyName = projectService.getProjectSurveyName(resultDirectory, rSufiResult);
-// }
-
- // render freemarker template
- Template mapTemplate = freemarkerConfiguration.getTemplate("decharge.ftl", locale);
-
- Map<String, Object> root = new HashMap<String, Object>();
- root.put("updateDate", updateDate);
- root.put("surveyName", surveyName);
-
- Writer out = new StringWriter();
- mapTemplate.process(root, out);
- out.flush();
-
- // get content as w3c document
- Document document = CoserUtils.parseDocument(out.toString());
-
- // render template output as pdf
- os = new FileOutputStream(disclamerPdf);
-
- ITextRenderer renderer = new ITextRenderer();
- renderer.setDocument(document, null);
- renderer.layout();
- renderer.createPDF(os);
-
- os.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't generate decharge file", ex);
- } catch (TemplateException ex) {
- throw new CoserTechnicalException("Can't generate decharge file", ex);
- } catch (DocumentException ex) {
- throw new CoserTechnicalException("Can't generate decharge file", ex);
- } finally {
- IOUtils.closeQuietly(os);
- }
- }
-
- /**
- * Generate pdf file filled with maps and charts.
- *
- * @param directory directory to generate pdf to
- * @param zones zones ids
- * @param pdfMaps pdf maps (can be {@code null})
- * @param pdfCharts pdf charts (can be {@code null})
- * @param zoneMap zoneMap (to get zone fullnames)
- * @param locale locale to use for translations
- */
- public void generateExtractPDF(File directory,
- List<String> zones,
- MultiKeyMap pdfMaps,
- MultiKeyMap pdfCharts,
- ZoneMap zoneMap,
- Locale locale) {
-
- for (String zone : zones) {
- Collection<File> toDelete = new ArrayList<File>();
- OutputStream os = null;
-
- try {
- StringBuilder htmlContent = new StringBuilder();
- htmlContent.append("<html><head>");
- htmlContent.append("<title>").append(l(locale, "coser.business.extract.extracttitle")).append("</title>");
- htmlContent.append("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />");
- htmlContent.append("</head><body>");
-
- if (pdfMaps != null) {
- for (Map.Entry<MultiKey, File> mapEntry : (Set<Map.Entry<MultiKey, File>>) pdfMaps.entrySet()) {
- String zoneId = (String) mapEntry.getKey().getKey(0);
- if (zoneId.equals(zone)) {
- String speciesName = (String) mapEntry.getKey().getKey(1);
- File file = mapEntry.getValue();
-
- String zoneName = zoneMap.getZoneFullName(zoneId);
- htmlContent.append("<div style='page-break-after: always'>");
- htmlContent.append("<p>").append(zoneName).append(" - ").append(speciesName).append("</p>");
- htmlContent.append("<img src='file://").append(file.getAbsolutePath()).append("' />");
- htmlContent.append("</div>");
- }
- }
- }
-
- if (pdfCharts != null) {
- for (Map.Entry<MultiKey, Object[]> chartFileAndData : (Set<Map.Entry<MultiKey, Object[]>>) pdfCharts.entrySet()) {
- String zoneId = (String) chartFileAndData.getKey().getKey(0);
- if (zoneId.equals(zone)) {
- File chartFile = (File) chartFileAndData.getValue()[0];
- String content = (String) chartFileAndData.getValue()[1];
-
- htmlContent.append("<div style='page-break-after: always'>");
- htmlContent.append("<img src='file://");
- htmlContent.append(chartFile.getAbsolutePath());
- htmlContent.append("' />");
- htmlContent.append("<br />");
- htmlContent.append(l(locale, "coser.business.extract.extractdata")).append(" :");
- htmlContent.append("<pre>").append(content).append("</pre>");
- htmlContent.append("</div>");
-
- // les graphiques ont été générés, a supprimer donc
- // a ne surtout pas faire avec les cartes !!!
- toDelete.add(chartFile);
- }
- }
- }
-
- htmlContent.append("</body></html>");
-
- // get content as w3c document
- Document document = CoserUtils.parseDocument(htmlContent.toString());
-
- // render template output as pdf
- // remove accents and strange characters from zone display name
- String zoneDisplay = zoneMap.getZoneFullName(zone);
- zoneDisplay = StringUtils.stripAccents(zoneDisplay);
- zoneDisplay = zoneDisplay.replaceAll("[^\\w- ]", "_");
- File pdfFile = new File(directory, zoneDisplay + ".pdf");
- os = new FileOutputStream(pdfFile);
-
- ITextRenderer renderer = new ITextRenderer();
- renderer.setDocument(document, null);
- renderer.layout();
- renderer.createPDF(os);
-
- os.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't generate log pdf", ex);
- } catch (DocumentException ex) {
- throw new CoserTechnicalException("Can't generate log pdf", ex);
- } finally {
- IOUtils.closeQuietly(os);
-
-
- // delete file collection
- for (File file : toDelete) {
-// file.delete();
- FileUtils.deleteQuietly(file);
- }
- }
- }
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,50 +0,0 @@
-package fr.ifremer.coser.result;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-/**
- * Created on 3/12/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class VoidResult implements CoserResult {
-
- private static final long serialVersionUID = 1L;
-
- protected final String source;
-
- public VoidResult(String source) {
- this.source = source;
- }
-
- @Override
- public String getSource() {
- return source;
- }
-
- @Override
- public Void getResult() {
- return null;
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,6 +22,8 @@
* #L%
*/
+import java.io.File;
+
/**
* General contract of a repository of results in CoserWeb.
* <p/>
@@ -41,4 +43,23 @@
* @return the type of result repository
*/
ResultRepositoryType getResultRepositoryType();
+
+ /**
+ * @return base directory of the result repository
+ */
+ File getBasedir();
+
+ String getProjectName();
+
+ String getZone();
+
+ String getSurveyName();
+
+ boolean isMapsResult();
+
+ boolean isIndicatorsResult();
+
+ boolean isDataResult();
+
+ boolean isPubliableResult();
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,50 +0,0 @@
-package fr.ifremer.coser.result.repository;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
-
-/**
- * To execute a command on a result.
- * <p/>
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public interface ResultRepositoryCommand<Repo extends ResultRepository, Request extends CoserRequest> {
-
- Class<Request> getRequestType();
-
- boolean accept(Repo repository, Request request);
-
- CoserResult execute(Repo repository, Request request);
-
-// Map<String, String> getAvailableZones(Repo repository, Request request);
-//
-// Map<String, String> getAvailableSpecies(Repo repository, Request request);
-//
-// Map<String, String> getAvailableIndicators(Repo repository, Request request);
-
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,56 +0,0 @@
-package fr.ifremer.coser.result.repository;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
-
-/**
- * To execute commands on a result repository.
- * <p/>
- * Created on 3/12/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public interface ResultRepositoryCommandEngine {
-
- ResultRepository getResultRepository();
-
- /**
- * @param request request to test
- * @return {@code true} if this repository has some result for the given
- * request, {@code false} otherwise
- */
- <R extends CoserRequest> boolean acceptRequest(R request);
-
- /**
- * Execute given request.
- * <p/>
- * We assume here that the repository has a result for the given request.
- *
- * @param request request to execute
- * @return the result for the given request
- */
- <R extends CoserRequest> CoserResult executeRequest(R request);
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,26 +22,25 @@
* #L%
*/
-import fr.ifremer.coser.CoserServiceContext;
-import fr.ifremer.coser.result.ResultRepositoryInitializationException;
-
import java.util.Set;
/**
- * Provides some {@link ResultRepository}.
+ * Provides some {@link ResultRepository} for a given type of result repository.
* <p/>
* Created on 3/5/14.
*
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public interface ResultRepositoryProvider<R extends ResultRepository> {
+public interface ResultRepositoryProvider<Repository extends ResultRepository> {
/**
- * @param serviceContext service context
- * @return the set of provided result repositories.
+ * @return the type of result repository.
*/
- Set<R> loadRepositories(CoserServiceContext serviceContext) throws ResultRepositoryInitializationException;
+ ResultRepositoryType getRepositoryType();
- ResultRepositoryCommandEngine newEngine(R repository);
+ /**
+ * @return the set of provided result repositories.
+ */
+ Set<Repository> loadRepositories();
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,17 +22,19 @@
* #L%
*/
+import fr.ifremer.coser.result.CoserCommand;
+import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.result.ResultType;
import fr.ifremer.coser.result.request.GetAllResultsRequest;
import java.io.Serializable;
+import java.util.Map;
import java.util.Set;
/**
* To define a new type of result repository.
* <p/>
- * This contract does nothing in special, but is just loaded by
- * a service loader to know all possible result repositories type.
+ * <strong>Important Note:</strong> Each repository type must have a unique id ({@link #getId()}).
* <p/>
* Created on 3/11/14.
*
@@ -47,4 +49,6 @@
String getLabelKey();
Set<ResultType> getResultTypes();
+
+ Map<Class<? extends CoserRequest>, Class<? extends CoserCommand>> getCommandTypes();
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,137 @@
+package fr.ifremer.coser.result.repository.echobase;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+/**
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class EchoBasePredicates {
+
+ protected EchoBasePredicates() {
+ // avoid instances
+ }
+
+ public static Predicate<String[]> communityIndicatorPredicate(String indicator) {
+ return new CommunityIndicatorPredicate(Lists.newArrayList(indicator));
+ }
+
+ public static Predicate<String[]> communityIndicatorPredicate(List<String> indicator) {
+ return new CommunityIndicatorPredicate(indicator);
+ }
+
+ public static Predicate<String[]> communitySpeciesPredicate(String species) {
+ return new CommunitySpeciesPredicate(Lists.newArrayList(species));
+ }
+
+ public static Predicate<String[]> communitySpeciesPredicate(List<String> species) {
+ return new CommunitySpeciesPredicate(species);
+ }
+
+ public static Predicate<String[]> populationSpeciesPredicate(String species) {
+ return new PopulationSpeciesPredicate(Lists.newArrayList(species));
+ }
+
+ public static Predicate<String[]> populationSpeciesPredicate(List<String> species) {
+ return new PopulationSpeciesPredicate(species);
+ }
+
+ public static Predicate<String[]> populationIndicatorPredicate(String indicator) {
+ return new PopulationIndicatorPredicate(Lists.newArrayList(indicator));
+ }
+
+ public static Predicate<String[]> populationIndicatorPredicate(List<String> indicator) {
+ return new PopulationIndicatorPredicate(indicator);
+ }
+
+ protected static class CommunitySpeciesPredicate implements Predicate<String[]> {
+
+ private final List<String> species;
+
+ CommunitySpeciesPredicate(List<String> species) {
+ this.species = species;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String speciesCode = input[3];
+ boolean result = species.contains(speciesCode);
+ return result;
+ }
+ }
+
+ protected static class CommunityIndicatorPredicate implements Predicate<String[]> {
+
+ private final List<String> indicator;
+
+ CommunityIndicatorPredicate(List<String> indicator) {
+ this.indicator = indicator;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String indicatorCode = input[1];
+ boolean result = indicator.contains(indicatorCode);
+ return result;
+ }
+ }
+
+ protected static class PopulationSpeciesPredicate implements Predicate<String[]> {
+
+ private final List<String> species;
+
+ PopulationSpeciesPredicate(List<String> species) {
+ this.species = species;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String speciesCode = input[3];
+ boolean result = species.contains(speciesCode);
+ return result;
+ }
+ }
+
+ protected static class PopulationIndicatorPredicate implements Predicate<String[]> {
+
+ private final List<String> indicator;
+
+ PopulationIndicatorPredicate(List<String> indicator) {
+ this.indicator = indicator;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String indicatorCode = input[1];
+ boolean result = indicator.contains(indicatorCode);
+ return result;
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBasePredicates.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,26 +24,29 @@
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.EchoBaseProject;
-import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.SpeciesMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.Reports;
+import fr.ifremer.coser.result.ResultType;
import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.request.CoserRequestExtractTypeListAware;
import fr.ifremer.coser.result.request.CoserRequestFacadeAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryResultTypeAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryTypeAware;
import fr.ifremer.coser.result.request.CoserRequestZoneAware;
+import fr.ifremer.coser.result.request.CoserRequestZoneListAware;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.util.DataType;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.File;
import java.io.FilenameFilter;
-import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -63,11 +66,6 @@
protected final EchoBaseProject project;
/**
- * Maps directory.
- */
- protected final File mapsDirectory;
-
- /**
* Transform a map result species file to the species code.
*/
protected final Function<File, String> mapFileToSpeciesCode;
@@ -83,36 +81,27 @@
protected final FilenameFilter mapSpeciesFilenameFilter;
/**
- * Service context.
- */
- protected final CoserServiceContext serviceContext;
-
- /**
* Cache of species definition.
*/
protected SpeciesMap speciesMap;
/**
- * Report helper.
+ * Unique id of the result repository.
*/
- protected final Reports reports;
+ protected final String id;
- public EchoBaseResultRepository(CoserServiceContext serviceContext,
- EchoBaseProject project) {
- Preconditions.checkNotNull(serviceContext);
+ public EchoBaseResultRepository(EchoBaseProject project) {
Preconditions.checkNotNull(project);
- this.serviceContext = serviceContext;
this.project = project;
- this.mapsDirectory = project.getMapsDirectory();
- this.reports = new Reports();
String surveyName = project.getSurveyName();
this.mapFileToSpeciesCode = EchoBaseProject.newMapFileToSpeciesCode(surveyName);
this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
+ this.id = EchoBaseResultRepositoryType.ID + "::" + project.getBasedir();
if (log.isInfoEnabled()) {
- log.info("New result repository: " + getId());
+ log.info("New result repository: " + id);
}
}
@@ -122,7 +111,7 @@
@Override
public String getId() {
- return EchoBaseResultRepositoryType.ID + "::" + project.getBasedir();
+ return id;
}
@Override
@@ -130,99 +119,109 @@
return EchoBaseResultRepositoryType.INSTANCE;
}
+ @Override
public File getBasedir() {
return project.getBasedir();
}
- public EchoBaseProject getProject() {
- return project;
- }
-
+ @Override
public String getProjectName() {
return project.getName();
}
- public Reports getReports() {
- return reports;
- }
-
+ @Override
public String getSurveyName() {
return project.getSurveyName();
}
+ @Override
public String getZone() {
return project.getZoneName();
}
+ @Override
public boolean isMapsResult() {
return true;
}
+ @Override
public boolean isIndicatorsResult() {
return true;
}
+ @Override
+ public boolean isDataResult() {
+ //FIXME
+ return false;
+ }
+
+ @Override
public boolean isPubliableResult() {
return project.isPubliableResult();
}
+ public EchoBaseProject getProject() {
+ return project;
+ }
+
// --------------------------------------------------------------------- //
// --- Matchers -------------------------------------------------------- //
// --------------------------------------------------------------------- //
public boolean matchFacade(CoserRequestFacadeAware request) {
- return project.getFacadeName().equals(request.getFacade());
+ return getProject().getFacadeName().equals(request.getFacade());
}
public boolean matchZone(CoserRequestZoneAware request) {
- return project.getZoneName().equals(request.getZone());
+ return getZone().equals(request.getZone());
}
- public boolean matchIndicatorSpecies(String[] tuple, String species) {
- String speciesCode = tuple[3];
- boolean result = species.equals(speciesCode);
+ public boolean matchZone(CoserRequestZoneListAware request) {
+ List<String> zoneList = request.getZoneList();
+ boolean result = zoneList.contains(getZone());
return result;
}
- public boolean matchIndicatorIndicator(String[] tuple, String indicator) {
- String indicatorCode = tuple[1];
- boolean result = indicator.equals(indicatorCode);
+ public boolean matchRepositoryType(CoserRequestRepositoryTypeAware request) {
+ boolean result = request.getRepositoryType().equals(EchoBaseResultRepositoryType.ID);
return result;
}
- public boolean matchIndicatorSpeciesAndIndicator(String[] tuple,
- String species,
- String indicator) {
- String speciesCode = tuple[3];
- String indicatorCode = tuple[1];
- boolean result = species.equals(speciesCode) &&
- indicator.equals(indicatorCode);
+ public boolean matchResultType(CoserRequestRepositoryResultTypeAware request) {
+ ResultType resultType = request.getResultType();
+ boolean result = ResultType.MAP_AND_INDICATOR == resultType;
return result;
}
- public boolean matchCommunityIndicatorAndSpeciesList(String[] tuple,
- String indicator,
- String speciesList) {
- String indicatorCode = tuple[1];
- String speciesListCode = tuple[2];
- boolean result = indicator.equals(indicatorCode) &&
- speciesList.equals(speciesListCode);
+ public boolean matchExtractTypeList(CoserRequestExtractTypeListAware request) {
+ boolean result = false;
+ if (isMapsResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ } else if (isIndicatorsResult()) {
+ result = request.getExtractTypeList().contains(DataType.POPULATION) ||
+ request.getExtractTypeList().contains(DataType.COMMUNITY);
+ }
+ if (isDataResult()) {
+ result |= request.getExtractTypeList().contains(DataType.SOURCE);
+ }
return result;
}
- public boolean matchIndicatorList(String[] tuple, List<String> indicatorList) {
- String indicatorCode = tuple[1];
- boolean result = indicatorList.contains(indicatorCode);
+ public boolean matchCommunity(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = getCommunityIndicatorStorage();
+ boolean result = DataStorages.match(storage, predicate, true);
+
return result;
}
- public boolean matchIndicatorListAndSpeciesList(String[] tuple,
- List<String> indicatorList,
- List<String> speciesList) {
- String indicatorCode = tuple[1];
- String speciesCode = tuple[3];
- boolean result = indicatorList.contains(indicatorCode) &&
- speciesList.contains(speciesCode);
+ public boolean matchPopulation(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = getPopulationIndicatorStorage();
+ boolean result = DataStorages.match(storage, predicate, true);
+
return result;
}
@@ -232,99 +231,22 @@
public File getMapSpeciesFile(String species) {
String fileName = speciesCodeToMapFile.apply(species);
- File file = fileName == null ? null : new File(mapsDirectory, fileName);
+ File file = fileName == null ? null : new File(project.getMapsDirectory(), fileName);
return file;
}
- // --------------------------------------------------------------------- //
- // --- Get species lists ----------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- public Set<String> getMapSpecies() {
- Set<String> result = Sets.newHashSet();
+ public Map<String, String> getMapSpecies() {
+ Set<String> speciesList = Sets.newHashSet();
File[] files = project.getMapsDirectory().listFiles(mapSpeciesFilenameFilter);
if (files != null) {
List<String> transform = Lists.transform(Lists.newArrayList(files), mapFileToSpeciesCode);
- result.addAll(transform);
+ speciesList.addAll(transform);
}
+ Map<String, String> result = getSpeciesMap().getSpeciesSubMap(speciesList);
return result;
}
- public Set<String> getPopulationIndicatorSpecies() {
- Set<String> result = Sets.newHashSet();
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String speciesCode = tuple[3];
- result.add(speciesCode);
- }
- return result;
- }
-
- public Set<String> getCommunityIndicatorSpecies() {
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String speciesCode = tuple[2];
- result.add(speciesCode);
- }
- return result;
- }
-
- public Set<String> getCommunityIndicatorSpecies(String indicator) {
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorIndicator(tuple, indicator)) {
- String speciesCode = tuple[2];
- result.add(speciesCode);
- }
- }
- return result;
- }
-
// --------------------------------------------------------------------- //
- // --- Get indicator lists --------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- public Set<String> getCommunityIndicators() {
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- return result;
- }
-
- public Set<String> getPopulationIndicators() {
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- return result;
- }
-
- protected Set<String> getPopulationIndicators(String species) {
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorSpecies(tuple, species)) {
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- }
- return result;
- }
-
- // --------------------------------------------------------------------- //
// --- Get definition maps --------------------------------------------- //
// --------------------------------------------------------------------- //
@@ -336,32 +258,22 @@
return speciesMap;
}
- public IndicatorMap getIndicatorsMap() {
- return serviceContext.getIndicatorsMap();
- }
-
- public ZoneMap getZonesMap() {
- return serviceContext.getZonesMap();
- }
-
// --------------------------------------------------------------------- //
- // --- storage util methods -------------------------------------------- //
+ // --- storage methods ------------------------------------------------- //
// --------------------------------------------------------------------- //
- public Iterator<String[]> loadPopulationIndicatorStorage(boolean skipFirstLine) {
+ public DataStorage getPopulationIndicatorStorage() {
File file = project.getPopulationIndicatorsFile();
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = DataStorages.load(file);
- Iterator<String[]> iterator = dataStorage.iterator(skipFirstLine);
- return iterator;
+ DataStorage result = DataStorages.load(file);
+ return result;
}
- public Iterator<String[]> loadCommunityIndicatorStorage(boolean skipFirstLine) {
+ public DataStorage getCommunityIndicatorStorage() {
File file = project.getCommunityIndicatorsFile();
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = DataStorages.load(file);
- Iterator<String[]> iterator = dataStorage.iterator(skipFirstLine);
- return iterator;
+ DataStorage result = DataStorages.load(file);
+ return result;
}
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,135 +0,0 @@
-package fr.ifremer.coser.result.repository.echobase;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
-import fr.ifremer.coser.result.repository.echobase.command.DeleteResultsCommand;
-import fr.ifremer.coser.result.repository.echobase.command.ExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.echobase.command.ExtractRawDataCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetAllResultsCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetMapResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesListForExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForMapResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesListForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetZonesForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetZonesForExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetZonesForExtractRawDataCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetZonesForMapResultCommand;
-import fr.ifremer.coser.result.repository.echobase.command.GetZonesForPopulationIndicatorResultCommand;
-
-import java.util.Map;
-
-/**
- * Created on 3/12/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class EchoBaseResultRepositoryCommandEngine implements ResultRepositoryCommandEngine {
-
- protected final EchoBaseResultRepository resultRepository;
-
- protected final Map<String, ResultRepositoryCommand<EchoBaseResultRepository, ?>> commands;
-
- public EchoBaseResultRepositoryCommandEngine(EchoBaseResultRepository resultRepository) {
- this.resultRepository = resultRepository;
- this.commands = Maps.newHashMap();
-
- // get map result
- loadCommand(new GetZonesForMapResultCommand());
- loadCommand(new GetSpeciesForMapResultCommand());
- loadCommand(new GetMapResultCommand());
-
- // get community indicator result
- loadCommand(new GetZonesForCommunityIndicatorResultCommand());
- loadCommand(new GetIndicatorsForCommunityIndicatorResultCommand());
- loadCommand(new GetSpeciesListForCommunityIndicatorResultCommand());
- loadCommand(new GetCommunityIndicatorResultCommand());
-
- // get population indicator result
- loadCommand(new GetZonesForPopulationIndicatorResultCommand());
- loadCommand(new GetSpeciesForPopulationIndicatorResultCommand());
- loadCommand(new GetIndicatorsForPopulationIndicatorResultCommand());
- loadCommand(new GetPopulationIndicatorResultCommand());
-
- // get all results
- loadCommand(new GetAllResultsCommand());
-
- // extract raw data
- loadCommand(new GetZonesForExtractRawDataCommand());
- loadCommand(new ExtractRawDataCommand());
-
- // extract raw data and results
- loadCommand(new GetZonesForExtractRawDataAndResultsCommand());
- loadCommand(new GetSpeciesListForExtractRawDataAndResultsCommand());
- loadCommand(new GetIndicatorsForExtractRawDataAndResultsCommand());
- loadCommand(new ExtractRawDataAndResultsCommand());
-
- // delete results
- loadCommand(new DeleteResultsCommand());
- }
-
- @Override
- public EchoBaseResultRepository getResultRepository() {
- return resultRepository;
- }
-
- @Override
- public <R extends CoserRequest> boolean acceptRequest(R request) {
-
- ResultRepositoryCommand<EchoBaseResultRepository, R> command = getCommand(request);
- boolean result = command.accept(resultRepository, request);
- return result;
- }
-
- @Override
- public <R extends CoserRequest> CoserResult executeRequest(R request) {
- ResultRepositoryCommand<EchoBaseResultRepository, R> command = getCommand(request);
- CoserResult result = command.execute(resultRepository, request);
- return result;
- }
-
- protected <R extends CoserRequest> ResultRepositoryCommand<EchoBaseResultRepository, R> getCommand(R request) {
- Preconditions.checkNotNull(request);
- String requestTypeName = request.getClass().getName();
- ResultRepositoryCommand<EchoBaseResultRepository, ?> resultRepositoryCommand = commands.get(requestTypeName);
- Preconditions.checkNotNull(resultRepositoryCommand);
- return (ResultRepositoryCommand<EchoBaseResultRepository, R>) resultRepositoryCommand;
- }
-
- protected void loadCommand(ResultRepositoryCommand<EchoBaseResultRepository, ?> command) {
- String name = command.getRequestType().getName();
- this.commands.put(name, command);
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,10 +24,8 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.EchoBaseProject;
import fr.ifremer.coser.result.ResultRepositoryInitializationException;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
import org.apache.commons.io.filefilter.AbstractFileFilter;
import org.apache.commons.io.filefilter.AndFileFilter;
@@ -62,8 +60,13 @@
}
@Override
- public Set<EchoBaseResultRepository> loadRepositories(CoserServiceContext serviceContext) {
+ public EchoBaseResultRepositoryType getRepositoryType() {
+ return EchoBaseResultRepositoryType.INSTANCE;
+ }
+ @Override
+ public Set<EchoBaseResultRepository> loadRepositories() {
+
if (log.isInfoEnabled()) {
log.info(String.format("Scan for projects from basedir: %s", basedir));
}
@@ -93,7 +96,7 @@
} catch (IOException e) {
throw new ResultRepositoryInitializationException(this, "Could not load project file", e);
}
- result.add(new EchoBaseResultRepository(serviceContext, project));
+ result.add(new EchoBaseResultRepository(project));
}
}
if (log.isInfoEnabled()) {
@@ -101,9 +104,4 @@
}
return result;
}
-
- @Override
- public ResultRepositoryCommandEngine newEngine(EchoBaseResultRepository repository) {
- return new EchoBaseResultRepositoryCommandEngine(repository);
- }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,10 +22,56 @@
* #L%
*/
+import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.CoserCommand;
import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.repository.echobase.command.DeleteResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.ExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.ExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetAllResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetCommunityIndicatorResultDataCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetCommunityIndicatorResultGraphCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetMapResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetPopulationIndicatorResultDataCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetPopulationIndicatorResultGraphCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForMapResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesListForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForMapResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.request.DeleteResultsRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetAllResultsRequest;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetMapResultRequest;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
+import java.util.Map;
import java.util.Set;
import static org.nuiton.i18n.I18n.n;
@@ -62,4 +108,45 @@
return Sets.immutableEnumSet(ResultType.MAP_AND_INDICATOR);
}
+ @Override
+ public Map<Class<? extends CoserRequest>, Class<? extends CoserCommand>> getCommandTypes() {
+ Map<Class<? extends CoserRequest>, Class<? extends CoserCommand>> result = Maps.newHashMap();
+
+ // get map result
+ result.put(GetZonesForMapResultRequest.class, GetZonesForMapResultCommand.class);
+ result.put(GetSpeciesForMapResultRequest.class, GetSpeciesForMapResultCommand.class);
+ result.put(GetMapResultRequest.class, GetMapResultCommand.class);
+
+ // get community indicator result
+ result.put(GetZonesForCommunityIndicatorResultRequest.class, GetZonesForCommunityIndicatorResultCommand.class);
+ result.put(GetIndicatorsForCommunityIndicatorResultRequest.class, GetIndicatorsForCommunityIndicatorResultCommand.class);
+ result.put(GetSpeciesListForCommunityIndicatorResultRequest.class, GetSpeciesListForCommunityIndicatorResultCommand.class);
+ result.put(GetCommunityIndicatorResultDataRequest.class, GetCommunityIndicatorResultDataCommand.class);
+ result.put(GetCommunityIndicatorResultGraphRequest.class, GetCommunityIndicatorResultGraphCommand.class);
+
+ // get population indicator result
+ result.put(GetZonesForPopulationIndicatorResultRequest.class, GetZonesForPopulationIndicatorResultCommand.class);
+ result.put(GetSpeciesForPopulationIndicatorResultRequest.class, GetSpeciesForPopulationIndicatorResultCommand.class);
+ result.put(GetIndicatorsForPopulationIndicatorResultRequest.class, GetIndicatorsForPopulationIndicatorResultCommand.class);
+ result.put(GetPopulationIndicatorResultDataRequest.class, GetPopulationIndicatorResultDataCommand.class);
+ result.put(GetPopulationIndicatorResultGraphRequest.class, GetPopulationIndicatorResultGraphCommand.class);
+
+ // get all results
+ result.put(GetAllResultsRequest.class, GetAllResultsCommand.class);
+
+ // extract raw data
+ result.put(GetZonesForExtractRawDataRequest.class, GetZonesForExtractRawDataCommand.class);
+ result.put(ExtractRawDataRequest.class, ExtractRawDataCommand.class);
+
+ // extract raw data and results
+ result.put(GetZonesForExtractRawDataAndResultsRequest.class, GetZonesForExtractRawDataAndResultsCommand.class);
+ result.put(GetSpeciesForExtractRawDataAndResultsRequest.class, GetSpeciesForExtractRawDataAndResultsCommand.class);
+ result.put(GetIndicatorsForExtractRawDataAndResultsRequest.class, GetIndicatorsForExtractRawDataAndResultsCommand.class);
+ result.put(ExtractRawDataAndResultsRequest.class, ExtractRawDataAndResultsCommand.class);
+
+ // delete results
+ result.put(DeleteResultsRequest.class, DeleteResultsCommand.class);
+ return result;
+ }
+
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,373 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserCommand;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserRequestContext;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.result.result.VoidResult;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Reports;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
+import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.lang3.tuple.Pair;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.l;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public abstract class AbstractEchoBaseCommand<R extends CoserRequest> implements CoserCommand<EchoBaseResultRepository, R> {
+
+ protected CoserRequestContext context;
+
+ protected EchoBaseResultRepository repository;
+
+ @Override
+ public void setRequestContext(CoserRequestContext context) {
+ this.context = context;
+ }
+
+ @Override
+ public void setRepository(EchoBaseResultRepository repository) {
+ this.repository = repository;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Context shortcuts method ---------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public IndicatorMap getIndicatorsMap() {
+ return context.getIndicatorMap();
+ }
+
+ public ZoneMap getZonesMap() {
+ return context.getZoneMap();
+ }
+
+ public Reports getReports() {
+ return context.getReports();
+ }
+
+ public Charts getCharts() {
+ return context.getCharts();
+ }
+
+ public Locale getLocale() {
+ return context.getLocale();
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- To create results ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected MapResult newMapResult(Map<String, String> map) {
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ protected FileResult newFileResult(File file) {
+ FileResult result = new FileResult(repository.getId(), file);
+ return result;
+ }
+
+ protected VoidResult newVoidResult() {
+ VoidResult result = new VoidResult(repository.getId());
+ return result;
+ }
+
+ protected ExtractRawDataAndResultsResult newExtractRawDataAndResultsResult(MultiKeyMap<String, File> pdfMaps, Map<String, Pair<File, String>> pdfCharts) {
+ ExtractRawDataAndResultsResult result = new ExtractRawDataAndResultsResult(
+ repository.getId(), pdfMaps, pdfCharts);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get species lists ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Set<String> getPopulationSpecies() {
+ final Set<String> result = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesCode = tuple[3];
+ result.add(speciesCode);
+ }
+ };
+ walkOnPopulation(walker);
+ return result;
+ }
+
+ protected Map<String, String> getPopulationSpeciesMap() {
+ final Set<String> speciesList = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesCode = tuple[3];
+ speciesList.add(speciesCode);
+ }
+ };
+ walkOnPopulation(walker);
+ Map<String, String> result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+ return result;
+ }
+
+ protected Map<String, String> getCommunitySpeciesMap() {
+ final Set<String> speciesList = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesCode = tuple[3];
+ speciesList.add(speciesCode);
+ }
+ };
+ walkOnCommunity(walker);
+ Map<String, String> result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get indicator lists --------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Set<String> getCommunityIndicators() {
+ final Set<String> result = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnCommunity(walker);
+ return result;
+ }
+
+ protected Set<String> getPopulationIndicators() {
+ final Set<String> result = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnPopulation(walker);
+ return result;
+ }
+
+ protected Set<String> getPopulationIndicators(String species) {
+ Preconditions.checkNotNull(species);
+
+ final Set<String> result = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnPopulation(EchoBasePredicates.populationSpeciesPredicate(species), walker);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Walk on indicators ---------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected void walkOnCommunity(DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+
+ DataStorage storage = repository.getCommunityIndicatorStorage();
+ DataStorages.walk(storage, walker);
+ }
+
+ protected void walkOnCommunity(Predicate<String[]> predicate, DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = repository.getCommunityIndicatorStorage();
+ DataStorages.walk(storage, predicate, walker);
+ }
+
+ protected void walkOnPopulation(DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+
+ DataStorage storage = repository.getPopulationIndicatorStorage();
+ DataStorages.walk(storage, walker);
+ }
+
+ protected void walkOnPopulation(Predicate<String[]> predicate, DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = repository.getPopulationIndicatorStorage();
+ DataStorages.walk(storage, predicate, walker);
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Extract indicator data ------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ protected DataStorage extractCommunity(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ String headerList = l(getLocale(), "coser.business.echobase.community.header");
+ String header[] = headerList.split("\\s*,\\s*");
+
+ DataStorage source = repository.getCommunityIndicatorStorage();
+ DataStorage result = DataStorages.sub(source, predicate, header);
+ return result;
+ }
+
+ protected DataStorage extractPopulation(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ String headerList = l(getLocale(), "coser.business.echobase.population.header");
+ String header[] = headerList.split("\\s*,\\s*");
+
+ DataStorage source = repository.getPopulationIndicatorStorage();
+ DataStorage result = DataStorages.sub(source, predicate, header);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Generate indicator charts --------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected JFreeChart generateCommunityChart(String zone,
+ String indicator,
+ String species) {
+
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.communityIndicatorPredicate(indicator),
+ EchoBasePredicates.communitySpeciesPredicate(species));
+
+ Charts.ExtractGraphDataWalker walker = new Charts.ExtractGraphDataWalker() {
+
+ @Override
+ protected String getEstimationData(String... tuple) {
+ return tuple[5];
+ }
+
+ @Override
+ protected String getEcartData(String... tuple) {
+ return tuple[6];
+ }
+
+ @Override
+ protected String getYearData(String... tuple) {
+ return tuple[4];
+ }
+ };
+ walkOnCommunity(predicate, walker);
+
+ Locale locale = getLocale();
+
+ // get graph title
+ String zoneDisplayName = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(locale, indicator);
+ String speciesListName = repository.getSpeciesMap().getSpeciesName(species);
+ String chartTitle = zoneDisplayName + " - " + indicatorName + " - " + speciesListName;
+
+ JFreeChart chart = getCharts().generateCommunityChart(locale,
+ walker,
+ getIndicatorsMap(),
+ indicator,
+ chartTitle);
+ return chart;
+ }
+
+ protected JFreeChart generatePopulationChart(String zone,
+ String species,
+ String indicator) {
+
+ // get data to put in graph
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.populationSpeciesPredicate(species),
+ EchoBasePredicates.populationIndicatorPredicate(indicator));
+
+ Charts.ExtractGraphDataWalker walker = new Charts.ExtractGraphDataWalker() {
+
+ @Override
+ protected String getEstimationData(String... tuple) {
+ return tuple[6];
+ }
+
+ @Override
+ protected String getEcartData(String... tuple) {
+ return tuple[7];
+ }
+
+ @Override
+ protected String getYearData(String... tuple) {
+ return tuple[5];
+ }
+ };
+ walkOnPopulation(predicate, walker);
+
+ Locale locale = getLocale();
+
+ // get graph title
+ String zoneDisplayName = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(locale, indicator);
+ String speciesName = repository.getSpeciesMap().getReportDisplayName(species);
+ String chartTitle = zoneDisplayName + " - " + indicatorName + " - " + speciesName;
+
+ JFreeChart chart = getCharts().generatePopulationChart(locale,
+ walker,
+ getIndicatorsMap(),
+ indicator,
+ chartTitle);
+ return chart;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/AbstractEchoBaseCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,11 +24,6 @@
import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.result.VoidResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryType;
import fr.ifremer.coser.result.request.DeleteResultsRequest;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
@@ -36,7 +31,6 @@
import java.io.File;
import java.io.IOException;
-import java.util.List;
/**
* Created on 3/11/14.
@@ -44,29 +38,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class DeleteResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, DeleteResultsRequest> {
+public class DeleteResultsCommand extends AbstractEchoBaseCommand<DeleteResultsRequest> {
/** Logger. */
private static final Log log = LogFactory.getLog(DeleteResultsCommand.class);
@Override
- public Class<DeleteResultsRequest> getRequestType() {
- return DeleteResultsRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- DeleteResultsRequest request) {
- boolean result = matchRepositoryType(request) &&
- matchResultType(request) &&
- matchPublish(repository) &&
- matchZone(repository, request);
+ public boolean accept(DeleteResultsRequest request) {
+ boolean result = repository.matchRepositoryType(request) &&
+ repository.matchResultType(request) &&
+ repository.isPubliableResult() &&
+ repository.matchZone(request);
return result;
}
@Override
- public CoserResult execute(EchoBaseResultRepository repository,
- DeleteResultsRequest request) {
+ public CoserResult execute(DeleteResultsRequest request) {
File basedir = repository.getBasedir();
if (log.isInfoEnabled()) {
log.info("Will delete project at: " + basedir);
@@ -76,34 +63,7 @@
} catch (IOException e) {
throw new CoserTechnicalException("Could not delete project at: " + basedir, e);
}
- return new VoidResult(repository.getId());
+ return newVoidResult();
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchRepositoryType(DeleteResultsRequest request) {
- boolean result = request.getResultRepositoryType().equals(EchoBaseResultRepositoryType.ID);
- return result;
- }
-
- protected boolean matchResultType(DeleteResultsRequest request) {
- ResultType resultType = request.getResultType();
- boolean result = ResultType.MAP_AND_INDICATOR == resultType;
- return result;
- }
-
- protected boolean matchPublish(EchoBaseResultRepository repository) {
- boolean result = repository.isPubliableResult();
- return result;
- }
-
- protected boolean matchZone(EchoBaseResultRepository repository,
- DeleteResultsRequest request) {
- List<String> zoneList = request.getZoneList();
- boolean result = zoneList.contains(repository.getZone());
- return result;
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,53 +22,34 @@
* #L%
*/
-import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.SpeciesMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
import fr.ifremer.coser.util.DataType;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.collections4.keyvalue.MultiKey;
import org.apache.commons.collections4.map.MultiKeyMap;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-import java.awt.Color;
import java.io.File;
import java.io.IOException;
-import java.io.StringWriter;
-import java.util.Collection;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
-import java.util.Set;
/**
* Created on 3/11/14.
@@ -76,120 +57,89 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, ExtractRawDataAndResultsRequest> {
+public class ExtractRawDataAndResultsCommand extends AbstractEchoBaseCommand<ExtractRawDataAndResultsRequest> {
/** Logger. */
private static final Log log = LogFactory.getLog(ExtractRawDataAndResultsCommand.class);
@Override
- public Class<ExtractRawDataAndResultsRequest> getRequestType() {
- return ExtractRawDataAndResultsRequest.class;
- }
+ public boolean accept(ExtractRawDataAndResultsRequest request) {
+ //TODO Remove false when will be ok...
+ boolean result = false && repository.matchExtractTypeList(request) &&
+ repository.matchZone(request);
+ if (result) {
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(request) &&
- matchZoneList(repository, request) &&
- (matchPopulationIndicatorListAndSpeciesList(repository, request) ||
- matchCommunityIndicatorListAndSpeciesList(repository, request));
- }
+ if (request.getExtractTypeList().contains(DataType.POPULATION)) {
- @Override
- public FileResult execute(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest r) {
+ // match population indicator?
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.populationIndicatorPredicate(request.getPopulationIndicatorList()),
+ EchoBasePredicates.populationSpeciesPredicate(request.getSpeciesList()));
+ result = repository.matchPopulation(predicate);
+ }
- Locale locale = r.getLocale();
- List<String> zoneList = r.getZoneList();
- List<DataType> extractTypeList = r.getExtractTypeList();
- List<String> speciesList = r.getSpeciesList();
- List<String> communityIndicatorList = r.getCommunityIndicatorList();
- List<String> populationIndicatorList = r.getPopulationIndicatorList();
+ if (!result) {
- File resultZip = null;
- File tempDir = null;
- try {
- tempDir = FileUtil.createTempDirectory("coser-extract-", "-tmp");
+ if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
- File subDir = new File(tempDir, "Indicateurs_Ifremer");
- FileUtils.forceMkdir(subDir);
-
- // les sources se retrouve dans le zip a cote du pdf
- if (extractTypeList.contains(DataType.SOURCE)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting sources");
+ // match community indicator?
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.communityIndicatorPredicate(request.getCommunityIndicatorList()),
+ EchoBasePredicates.communitySpeciesPredicate(request.getSpeciesList()));
+ result = repository.matchCommunity(predicate);
}
- File srcDir = new File(subDir, "sources");
- extractSource(srcDir);
}
+ }
+ return result;
+ }
- // les cartes doivent se retrouver dans le pdf
- MultiKeyMap pdfMaps = null;
- if (extractTypeList.contains(DataType.MAP)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting maps");
- }
- String zone = repository.getZone();
- SpeciesMap speciesMap = repository.getSpeciesMap();
- for (String species : speciesList) {
- File mapFile = repository.getMapSpeciesFile(species);
- pdfMaps.put(zone, speciesMap.getSpeciesName(species), mapFile);
- }
- }
+ @Override
+ public ExtractRawDataAndResultsResult execute(ExtractRawDataAndResultsRequest request) {
- // les graphiques sont également dans le pdf
- MultiKeyMap pdfCharts = null;
- if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
- CollectionUtils.isNotEmpty(populationIndicatorList)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting charts");
- }
- pdfCharts = extractCharts(repository,
- speciesList,
- communityIndicatorList,
- populationIndicatorList,
- locale);
- }
+ List<DataType> extractTypeList = request.getExtractTypeList();
+ List<String> speciesList = request.getSpeciesList();
+ List<String> communityIndicatorList = request.getCommunityIndicatorList();
+ List<String> populationIndicatorList = request.getPopulationIndicatorList();
- // generate pdf if necessary
- if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
- if (log.isDebugEnabled()) {
- log.debug("Generated Extract PDF");
- }
- repository.getReports().generateExtractPDF(subDir,
- zoneList,
- pdfMaps,
- pdfCharts,
- repository.getZonesMap(),
- locale);
- }
+ File extractDirectory = request.getExtractDirectory();
- // fichier de décharge en pdf
+ // les sources se retrouve dans le zip a cote du pdf
+ if (extractTypeList.contains(DataType.SOURCE)) {
if (log.isDebugEnabled()) {
- log.debug("Generated decharge PDF");
+ log.debug("Extracting sources");
}
- String filename = repository.getReports().getDechargeFilename(locale);
- File dechargePDF = new File(subDir, filename);
- repository.getReports().generateDechargePDF(dechargePDF, locale, null, null);
+ File srcDir = new File(extractDirectory, "sources");
+ extractSource(srcDir);
+ }
- // make zip
+ // les cartes doivent se retrouver dans le pdf
+ MultiKeyMap<String, File> pdfMaps = null;
+ if (extractTypeList.contains(DataType.MAP)) {
if (log.isDebugEnabled()) {
- log.debug("Make final archive");
+ log.debug("Extracting maps");
}
- resultZip = File.createTempFile("coser-extract-", ".zip");
- resultZip.deleteOnExit();
- ZipUtil.compress(resultZip, subDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't create zip file", ex);
- } finally {
- // clean directory
- FileUtils.deleteQuietly(tempDir);
+ pdfMaps = new MultiKeyMap<String, File>();
+ SpeciesMap speciesMap = repository.getSpeciesMap();
+ String zone = repository.getZone();
+ for (String species : speciesList) {
+ File mapFile = repository.getMapSpeciesFile(species);
+ String speciesName = speciesMap.getSpeciesName(species);
+ pdfMaps.put(zone, speciesName, mapFile);
+ }
}
- FileResult result = new FileResult(repository.getId(), resultZip);
+ // les graphiques sont également dans le pdf
+ Map<String, Pair<File, String>> pdfCharts = null;
+ if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
+ CollectionUtils.isNotEmpty(populationIndicatorList)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting charts");
+ }
+ pdfCharts = extractCharts(speciesList,
+ communityIndicatorList,
+ populationIndicatorList);
+ }
+ ExtractRawDataAndResultsResult result = newExtractRawDataAndResultsResult(pdfMaps, pdfCharts);
return result;
}
@@ -200,521 +150,170 @@
*/
protected void extractSource(File directory) {
+ File zoneDirectory = new File(directory, repository.getZone());
+
+ try {
+ FileUtils.forceMkdir(zoneDirectory);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create directory: " + zoneDirectory, e);
+ }
+
//TODO
}
/**
- * Retourne les indicateurs calculés avec leurs traductions scientifique
- * pour la zone et l'especes souhaitées.
- *
- * @param species especes (if {@code null} look for com indicators
- * @param comIndicators comIndicator
- * @param popIndicators popIndicators
- * @param locale locale
- * @return la liste des indicateurs (zone, speciesname, [graphfile, graphdata])
+ * @param species species to extract in population indicators
+ * @param communityIndicators community indicators to extract
+ * @param populationIndicators population indicators to extract
+ * @return charts files and their data with key: zone , indicator [- speciesName for population])
+ * and value: (graphFile, graphData)
*/
- protected MultiKeyMap extractCharts(EchoBaseResultRepository repository,
- Collection<String> species,
- Collection<String> comIndicators,
- Collection<String> popIndicators,
- Locale locale) {
+ protected Map<String, Pair<File, String>> extractCharts(List<String> species,
+ List<String> communityIndicators,
+ List<String> populationIndicators) {
- MultiKeyMap chartFileAndDatas = new MultiKeyMap();
-
String zone = repository.getZone();
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- if (CollectionUtils.isNotEmpty(comIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataCom = getRsufiResultComCharts(repository,
- comIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataCom.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
+ Map<String, Pair<File, String>> result = Maps.newLinkedHashMap();
+
+ if (CollectionUtils.isNotEmpty(communityIndicators)) {
+ result.putAll(extractCommunityResults(communityIndicators,
+ zone,
+ 650,
+ 430));
}
- if (CollectionUtils.isNotEmpty(popIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataPop = getRsufiResultPopCharts(repository,
- species,
- popIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataPop.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
+ if (CollectionUtils.isNotEmpty(populationIndicators)) {
+ result.putAll(extractPopulationResults(species,
+ populationIndicators,
+ zone,
+ 650,
+ 430));
}
- return chartFileAndDatas;
+ return result;
}
/**
- * Generate community graph for selected indicators.
- * Used by web ui extraction.
+ * Generate community graph and their data for selected indicators.
*
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
+ * @param selectedIndicators indicators to extract
+ * @param zone zone
+ * @param width graph width
+ * @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> getRsufiResultComCharts(EchoBaseResultRepository repository,
- Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width, int height) {
+ public Map<String, Pair<File, String>> extractCommunityResults(List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
- Map<String, Pair<File, String>> result = Maps.newHashMap();
+ // Get exact list of indicators usable for this result
+ List<String> indicators = Lists.newArrayList(getCommunityIndicators());
+ indicators.retainAll(selectedIndicators);
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
-
- Map<String, Map<Integer, Double[]>> indicatorGraphData = new HashMap<String, Map<Integer, Double[]>>();
- Map<String, String> indicatorLists = new HashMap<String, String>();
- Map<String, DataStorage> indicatorStorages = new HashMap<String, DataStorage>();
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- Iterator<String[]> estComIndIterator = repository.loadCommunityIndicatorStorage(true);
- while (estComIndIterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = estComIndIterator.next();
- String indicatorCode = tuple[1];
- String indicatorList = tuple[2];
-
- if (indicators.contains(indicatorCode)) {
-
- // si pas de list selectionnée, on prend la premiere
+ //FIXME Check if this is correct
+ // get for all indicators the first species list found (we only extract this one)
+ final Map<String, String> indicatorLists = new HashMap<String, String>();
+ walkOnCommunity(LegacyPredicates.communityIndicatorPredicate(indicators), new DataStorageWalker() {
+ @Override
+ public void onRow(String... row) {
+ String indicatorCode = row[1];
String localList = indicatorLists.get(indicatorCode);
+ //FIXME Should only test if indicatorCode is present ?
if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- indicatorLists.put(indicatorCode, localList);
+ String indicatorList = row[2];
+ indicatorLists.put(indicatorCode, indicatorList);
}
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicatorCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
-
- // for data part
- DataStorage subDataStorage = indicatorStorages.get(indicatorCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Strate", "Année", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, subDataStorage);
- }
- subDataStorage.add(tuple);
- }
}
- }
+ });
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (String indicator : indicatorGraphData.keySet()) {
- // get graph title
- String chartTitle = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- chartTitle += " - " + indicatorName;
+ Map<String, Pair<File, String>> result = Maps.newHashMap();
- // ajout de la traduction de la liste d'indicateur
- // les liste sont a1, T1, T2 ...
- String localList = indicatorLists.get(indicator);
- String listLetter = String.valueOf(localList.charAt(0));
- Iterator<String[]> typeIterator = repository.getSpeciesMap().iterator(true);
- while (typeIterator.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
- String[] tuple = typeIterator.next();
- if (tuple[4].equals(listLetter)) {
- /// gestion du groupe "Tous"
- // cas special, c'est la seule valeur du fichier
- // code type espece qui a besoin d'une traduction
- if (tuple[4].equalsIgnoreCase("T")) {
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + "Tous Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + "Todo Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + "All List " + localList.charAt(1);
- }
- } else {
- // ajout de la traduction du nom de liste plus le numéro
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
- }
- }
- break;
- }
- }
+ for (String indicator : indicators) {
- // generate dataset with sorted data
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicator);
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
+ String speciesList = indicatorLists.get(indicator);
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(indicator),
+ LegacyPredicates.communitySpeciesListPredicate(speciesList));
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+ // extract raw data
+ DataStorage storage = extractCommunity(predicate);
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
+ String rawDataText = DataStorages.toString(storage);
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+ // generate chart
+ JFreeChart chart = generateCommunityChart(zone,
+ indicator,
+ speciesList);
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
+ // generate chart file
+ File chartFile = getCharts().generateChartFile("coser-community-chart-",
+ chart,
+ width,
+ height);
- try {
- File chartFile = File.createTempFile("coser-community-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = indicatorStorages.get(indicator);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
+ result.put(indicator, Pair.of(chartFile, rawDataText));
}
-
return result;
}
/**
- * Generate population graph for selected species and indicator.
+ * Generate population graph and their data for selected indicators.
*
- * @param species species to extract
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
+ * @param selectedSpecies species to extract
+ * @param selectedIndicators indicators to extract
+ * @param zone zone
+ * @param width graph width
+ * @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> getRsufiResultPopCharts(EchoBaseResultRepository repository,
- Collection<String> species,
- Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width,
- int height) {
+ public Map<String, Pair<File, String>> extractPopulationResults(List<String> selectedSpecies,
+ List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
+ // Get exact list of species to use
+ List<String> speciesList = Lists.newArrayList(getPopulationSpecies());
+ speciesList.retainAll(selectedSpecies);
+
Map<String, Pair<File, String>> result = Maps.newHashMap();
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
+ for (String species : speciesList) {
- MultiKeyMap indicatorGraphData = new MultiKeyMap();
- MultiKeyMap indicatorStorages = new MultiKeyMap();
+ // Get extact indicators to use
+ List<String> indicators = Lists.newArrayList(getPopulationIndicators(species));
+ indicators.retainAll(selectedIndicators);
- // Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
- Iterator<String[]> estPopIndIterator = repository.loadPopulationIndicatorStorage(true);
- while (estPopIndIterator.hasNext()) {
- String[] tuple = estPopIndIterator.next();
+ for (String indicator : indicators) {
- String speciesCode = tuple[3];
- String indicatorCode = tuple[1];
- if (species.contains(speciesCode) && indicators.contains(indicatorCode)) {
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.populationIndicatorPredicate(indicator),
+ LegacyPredicates.populationSpeciesPredicate(species));
- // XXX echatellier, maybe take care of list here ?
+ // extract raw data
+ DataStorage storage = extractPopulation(predicate);
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
+ String rawDataText = DataStorages.toString(storage);
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicatorCode, speciesCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, speciesCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
+ // generate chart
+ JFreeChart chart = generatePopulationChart(zone,
+ indicator,
+ species);
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
+ // generate chart file
+ File chartFile = getCharts().generateChartFile("coser-population-chart-",
+ chart,
+ width,
+ height);
- // for data part
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicatorCode, speciesCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Espèce", "Strate", "Annee", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Species", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, speciesCode, subDataStorage);
- }
- subDataStorage.add(tuple);
+ result.put(indicator + "-" + species, Pair.of(chartFile, rawDataText));
}
}
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (MultiKey indicatorSpecies : (Set<MultiKey>) indicatorGraphData.keySet()) {
- String indicator = (String) indicatorSpecies.getKey(0);
- String aSpecies = (String) indicatorSpecies.getKey(1);
- // get graph title
- String title = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- title += " - " + indicatorName;
- title += " - " + repository.getSpeciesMap().getReportDisplayName(aSpecies);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicator, aSpecies);
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- File chartFile = File.createTempFile("coser-population-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicator, aSpecies);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator + "-" + aSpecies, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
- protected boolean matchExtractTypeSet(ExtractRawDataAndResultsRequest request) {
- //TODO Should deal also with raw-data type
- return !request.getExtractTypeList().contains(DataType.SOURCE);
- }
-
- protected boolean matchZoneList(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-
- protected boolean matchCommunityIndicatorList(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorList(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorListAndSpeciesList(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchCommunityIndicatorListAndSpeciesList(EchoBaseResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,10 +22,8 @@
* #L%
*/
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
/**
* Created on 3/11/14.
@@ -33,31 +31,19 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ExtractRawDataCommand implements ResultRepositoryCommand<EchoBaseResultRepository, ExtractRawDataRequest> {
+public class ExtractRawDataCommand extends AbstractEchoBaseCommand<ExtractRawDataRequest> {
@Override
- public Class<ExtractRawDataRequest> getRequestType() {
- return ExtractRawDataRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- ExtractRawDataRequest request) {
+ public boolean accept(ExtractRawDataRequest request) {
return repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public FileResult execute(EchoBaseResultRepository repository,
- ExtractRawDataRequest r) {
+ public FileResult execute(ExtractRawDataRequest r) {
//TODO
throw new IllegalStateException("TODO!");
}
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- //TODO
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,12 +24,8 @@
import com.google.common.collect.Maps;
import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryType;
import fr.ifremer.coser.result.request.GetAllResultsRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.Map;
@@ -39,48 +35,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetAllResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetAllResultsRequest> {
+public class GetAllResultsCommand extends AbstractEchoBaseCommand<GetAllResultsRequest> {
@Override
- public Class<GetAllResultsRequest> getRequestType() {
- return GetAllResultsRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetAllResultsRequest request) {
- boolean result = matchRepositoryType(request) &&
- matchResultType(request) &&
- matchPublish(repository);
+ public boolean accept(GetAllResultsRequest request) {
+ boolean result = repository.matchRepositoryType(request) &&
+ repository.matchResultType(request) &&
+ repository.isPubliableResult();
return result;
}
@Override
- public CoserResult execute(EchoBaseResultRepository repository,
- GetAllResultsRequest request) {
+ public CoserResult execute(GetAllResultsRequest request) {
Map<String, String> map = Maps.newHashMap();
map.put(repository.getZone(), repository.getSurveyName());
- MapResult result = new MapResult(repository.getId(), map);
- return result;
- }
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchRepositoryType(GetAllResultsRequest request) {
- boolean result = request.getResultRepositoryType().equals(EchoBaseResultRepositoryType.ID);
+ MapResult result = newMapResult(map);
return result;
}
-
- protected boolean matchResultType(GetAllResultsRequest request) {
- ResultType resultType = request.getResultType();
- boolean result = ResultType.MAP_AND_INDICATOR == resultType;
- return result;
- }
-
- protected boolean matchPublish(EchoBaseResultRepository repository) {
- boolean result = repository.isPubliableResult();
- return result;
- }
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,379 +0,0 @@
-package fr.ifremer.coser.result.repository.echobase.command;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetCommunityIndicatorResultRequest> {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(GetCommunityIndicatorResultCommand.class);
-
- @Override
- public Class<GetCommunityIndicatorResultRequest> getRequestType() {
- return GetCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository, GetCommunityIndicatorResultRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicatorAndSpeciesList(repository, request);
- }
-
- @Override
- public FileResult execute(EchoBaseResultRepository repository, GetCommunityIndicatorResultRequest r) {
-
- File file = null;
- switch (r.getIndicatorResultType()) {
- case DATA:
- file = getCommunityIndicatorDataFile(repository,
- r.getLocale(),
- r.getIndicator(),
- r.getSpecies());
- break;
-
- case GRAPH:
- file = getCommunityIndicatorGraphFile(repository,
- r.getLocale(),
- r.getZone(),
- r.getIndicator(),
- r.getSpecies());
- break;
- }
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
-
- protected File getCommunityIndicatorDataFile(EchoBaseResultRepository repository, Locale locale,
- String indicator,
- String speciesList) {
-
- try {
-
- File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
-
- File baseDir = new File(tempDir, repository.getSurveyName());
- FileUtils.forceMkdir(baseDir);
-
- // ajout du fichier csv avec les indicateurs
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- dataStorage.add(tuple);
- }
- }
- File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator",
- ".csv"
- );
-
- File csvFileCopied = new File(baseDir, indicator + ".csv");
- FileUtils.copyFile(csvFile, csvFileCopied);
- FileUtils.forceDelete(csvFile);
-
- //TODO See what to generate here (we don't have any selection in echobase results).
-// // ajout du fichier d'information sur les espèces incluses dans
-// // les calculs des indicateurs de communautés
-// // load project (without data to get reftax data)
-// Project project = path.getProject();
-// Selection selection = path.getSelection();
-// File metaFile = webService.generateMetaFilePDF(project,
-// selection,
-// resultDirectory,
-// rSufiResult,
-// indicator,
-// locale);
-// File metaFileCopied = new File(baseDir, "Information.pdf");
-// FileUtils.copyFile(metaFile, metaFileCopied);
-
- // make zip
- File result = File.createTempFile("coser-chart-community-indicator", ".zip");
- result.deleteOnExit();
- ZipUtil.compress(result, baseDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- return result;
- } catch (Exception e) {
- throw new CoserTechnicalException("Can't create zip file", e);
- }
- }
-
- protected File getCommunityIndicatorGraphFile(EchoBaseResultRepository repository,
- Locale locale,
- String zone,
- String indicator,
- String speciesList) {
-
- // indicator list to take care
- // pour avoir une valeur non nulle si list est null
- // on prend dans ce cas la premiere valeur trouvée
- String localList = speciesList;
-
- if (log.isDebugEnabled()) {
- log.debug("Searching list for indicator : " + indicator);
- }
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = iterator.next();
- String indicatorList = tuple[2];
-
- if (repository.matchIndicatorIndicator(tuple, indicator)) {
- indicatorFound = true;
-
- // si pas de list selectionnée, on prend la premiere
- if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- }
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String chartTitle = zoneDisplayName;
- chartTitle += " - " + indicatorName;
-
- // ajout de la traduction de la liste d'indicateur
- // les liste sont a1, T1, T2 ...
- String listLetter = String.valueOf(localList.charAt(0));
- Iterator<String[]> typeIterator = repository.getSpeciesMap().iterator(true);
- while (typeIterator.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
- String[] tuple = typeIterator.next();
- if (tuple[4].equals(listLetter)) {
- /// gestion du groupe "Tous"
- // cas special, c'est la seule valeur du fichier
- // code type espece qui a besoin d'une traduction
- if (tuple[4].equalsIgnoreCase("T")) {
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + "Tous Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + "Todo Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + "All List " + localList.charAt(1);
- }
- } else {
- // ajout de la traduction du nom de liste plus le numéro
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
- }
- }
- break;
- }
- }
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
-
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-community-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(EchoBaseResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchIndicatorAndSpeciesList(EchoBaseResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
- Preconditions.checkNotNull(request.getSpecies());
-
- String indicator = request.getIndicator();
- String speciesList = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultDataCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,125 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.io.FileUtils;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultDataCommand extends AbstractEchoBaseCommand<GetCommunityIndicatorResultDataRequest> {
+
+ @Override
+ public boolean accept(GetCommunityIndicatorResultDataRequest request) {
+ boolean result = repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = createPredicate(request);
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetCommunityIndicatorResultDataRequest request) {
+
+ Predicate<String[]> predicate = createPredicate(request);
+
+ File file = getCommunityIndicatorDataFile(predicate,
+ request.getIndicator());
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+ protected File getCommunityIndicatorDataFile(Predicate<String[]> predicate,
+ String indicator) {
+
+ try {
+
+ File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
+
+ File baseDir = new File(tempDir, repository.getSurveyName());
+ FileUtils.forceMkdir(baseDir);
+
+ // ajout du fichier csv avec les indicateurs
+ DataStorage dataStorage = extractCommunity(predicate);
+ File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator", ".csv");
+
+ File csvFileCopied = new File(baseDir, indicator + ".csv");
+ FileUtils.copyFile(csvFile, csvFileCopied);
+ FileUtils.forceDelete(csvFile);
+
+ //TODO See what to generate here (we don't have any selection in echobase results).
+// // ajout du fichier d'information sur les espèces incluses dans
+// // les calculs des indicateurs de communautés
+// // load project (without data to get reftax data)
+// Project project = path.getProject();
+// Selection selection = path.getSelection();
+// File metaFile = webService.generateMetaFilePDF(project,
+// selection,
+// resultDirectory,
+// rSufiResult,
+// indicator,
+// locale);
+// File metaFileCopied = new File(baseDir, "Information.pdf");
+// FileUtils.copyFile(metaFile, metaFileCopied);
+
+ // make zip
+ File result = File.createTempFile("coser-chart-community-indicator", ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, baseDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ return result;
+ } catch (Exception e) {
+ throw new CoserTechnicalException("Can't create zip file", e);
+ }
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Predicate<String[]> createPredicate(GetCommunityIndicatorResultDataRequest request) {
+ return Predicates.and(
+ EchoBasePredicates.communityIndicatorPredicate(request.getIndicator()),
+ EchoBasePredicates.communitySpeciesPredicate(request.getSpecies()));
+ }
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultGraphCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultGraphCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultGraphCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,74 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultGraphCommand extends AbstractEchoBaseCommand<GetCommunityIndicatorResultGraphRequest> {
+
+ @Override
+ public boolean accept(GetCommunityIndicatorResultGraphRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.communityIndicatorPredicate(request.getIndicator()),
+ EchoBasePredicates.communitySpeciesPredicate(request.getSpecies()));
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetCommunityIndicatorResultGraphRequest request) {
+
+ // generate chart
+ JFreeChart chart = generateCommunityChart(request.getZone(),
+ request.getIndicator(),
+ request.getSpecies());
+
+ // generate file from chart
+ File file = getCharts().generateChartFile("coser-chart-community-indicator-",
+ chart,
+ 800,
+ 400);
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,10 +22,8 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.Map;
import java.util.Set;
@@ -36,29 +34,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetIndicatorsForCommunityIndicatorResultRequest> {
+public class GetIndicatorsForCommunityIndicatorResultCommand extends AbstractEchoBaseCommand<GetIndicatorsForCommunityIndicatorResultRequest> {
@Override
- public Class<GetIndicatorsForCommunityIndicatorResultRequest> getRequestType() {
- return GetIndicatorsForCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetIndicatorsForCommunityIndicatorResultRequest request) {
+ public boolean accept(GetIndicatorsForCommunityIndicatorResultRequest request) {
return repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetIndicatorsForCommunityIndicatorResultRequest request) {
+ public MapResult execute(GetIndicatorsForCommunityIndicatorResultRequest request) {
- Set<String> indicatorList = repository.getCommunityIndicators();
- Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ Set<String> indicatorList = getCommunityIndicators();
+ Map<String, String> map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,10 +22,8 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.util.DataType;
import java.util.Map;
@@ -37,57 +35,37 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetIndicatorsForExtractRawDataAndResultsRequest> {
+public class GetIndicatorsForExtractRawDataAndResultsCommand extends AbstractEchoBaseCommand<GetIndicatorsForExtractRawDataAndResultsRequest> {
@Override
- public Class<GetIndicatorsForExtractRawDataAndResultsRequest> getRequestType() {
- return GetIndicatorsForExtractRawDataAndResultsRequest.class;
+ public boolean accept(GetIndicatorsForExtractRawDataAndResultsRequest request) {
+ return repository.matchExtractTypeList(request) &&
+ repository.matchZone(request);
}
@Override
- public boolean accept(EchoBaseResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(request) && matchZoneList(repository, request);
- }
+ public MapResult execute(GetIndicatorsForExtractRawDataAndResultsRequest request) {
- @Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
-
Set<String> indicatorList = null;
if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
// get all community indicators for given zone
- indicatorList = repository.getCommunityIndicators();
+ indicatorList = getCommunityIndicators();
} else if (request.getExtractTypeList().contains(DataType.POPULATION)) {
// get all population indicators for given zone
- indicatorList = repository.getPopulationIndicators();
+ indicatorList = getPopulationIndicators();
}
Map<String, String> map = null;
if (indicatorList != null) {
- map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
}
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(GetIndicatorsForExtractRawDataAndResultsRequest request) {
- //TODO Should deal also with raw-data type
- return !request.getExtractTypeList().contains(DataType.SOURCE);
- }
-
- protected boolean matchZoneList(EchoBaseResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,13 +22,11 @@
* #L%
*/
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import com.google.common.base.Predicate;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -38,53 +36,28 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetIndicatorsForPopulationIndicatorResultRequest> {
+public class GetIndicatorsForPopulationIndicatorResultCommand extends AbstractEchoBaseCommand<GetIndicatorsForPopulationIndicatorResultRequest> {
@Override
- public Class<GetIndicatorsForPopulationIndicatorResultRequest> getRequestType() {
- return GetIndicatorsForPopulationIndicatorResultRequest.class;
- }
+ public boolean accept(GetIndicatorsForPopulationIndicatorResultRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(repository, request);
+ Predicate<String[]> predicate = EchoBasePredicates.populationSpeciesPredicate(request.getSpecies());
+ result = repository.matchPopulation(predicate);
+ }
+ return result;
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
+ public MapResult execute(GetIndicatorsForPopulationIndicatorResultRequest request) {
- Set<String> indicatorList = repository.getCommunityIndicators();
- Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ Set<String> indicatorList = getCommunityIndicators();
+ Map<String, String> map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(EchoBaseResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
-
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,11 +22,8 @@
* #L%
*/
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetMapResultRequest;
+import fr.ifremer.coser.result.result.FileResult;
import java.io.File;
@@ -36,39 +33,26 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetMapResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetMapResultRequest> {
+public class GetMapResultCommand extends AbstractEchoBaseCommand<GetMapResultRequest> {
@Override
- public Class<GetMapResultRequest> getRequestType() {
- return GetMapResultRequest.class;
+ public boolean accept(GetMapResultRequest request) {
+ boolean result = repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ File file = repository.getMapSpeciesFile(request.getSpecies());
+ result = file != null;
+ }
+ return result;
}
@Override
- public boolean accept(EchoBaseResultRepository repository,
- GetMapResultRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(repository, request);
- }
+ public FileResult execute(GetMapResultRequest request) {
- @Override
- public FileResult execute(EchoBaseResultRepository repository,
- GetMapResultRequest request) {
-
File file = repository.getMapSpeciesFile(request.getSpecies());
- FileResult result = new FileResult(repository.getId(), file);
+ FileResult result = newFileResult(file);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(EchoBaseResultRepository repository,
- GetMapResultRequest request) {
- String species = request.getSpecies();
- File file = repository.getMapSpeciesFile(species);
- return file != null && file.exists();
- }
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,283 +0,0 @@
-package fr.ifremer.coser.result.repository.echobase.command;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import org.apache.commons.lang3.StringUtils;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetPopulationIndicatorResultRequest> {
-
- @Override
- public Class<GetPopulationIndicatorResultRequest> getRequestType() {
- return GetPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository, GetPopulationIndicatorResultRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpeciesAndIndicator(repository, request);
- }
-
- @Override
- public FileResult execute(EchoBaseResultRepository repository, GetPopulationIndicatorResultRequest r) {
-
- File file = null;
- switch (r.getIndicatorResultType()) {
- case DATA:
- file = getPopulationIndicatorDataFile(repository,
- r.getIndicator(),
- r.getSpecies());
- break;
-
- case GRAPH:
- file = getPopulationIndicatorGraphFile(repository,
- r.getLocale(),
- r.getZone(),
- r.getIndicator(),
- r.getSpecies());
- break;
- }
-
-
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
- protected File getPopulationIndicatorDataFile(EchoBaseResultRepository repository, String species, String indicator) {
-
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
- dataStorage.add(tuple);
- }
- }
- File result = DataStorages.save(dataStorage, "coser-chart-population-indicator",
- ".csv"
- );
- return result;
- }
-
- protected File getPopulationIndicatorGraphFile(EchoBaseResultRepository repository, Locale locale,
- String zone,
- String species,
- String indicator) {
-
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
-
- if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
- indicatorFound = true;
-
- // XXX echatellier, maybe take care of list here ?
-
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String title = zoneDisplayName;
- title += " - " + indicatorName;
- title += " - " + repository.getSpeciesMap().getReportDisplayName(species);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-population-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(EchoBaseResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
-
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchSpeciesAndIndicator(EchoBaseResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
- Preconditions.checkNotNull(request.getIndicator());
-
- String species = request.getSpecies();
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultDataCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,73 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultDataCommand extends AbstractEchoBaseCommand<GetPopulationIndicatorResultDataRequest> {
+
+ @Override
+ public boolean accept(GetPopulationIndicatorResultDataRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = createPredicate(request);
+ result = repository.matchPopulation(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetPopulationIndicatorResultDataRequest request) {
+
+ Predicate<String[]> predicate = createPredicate(request);
+
+ DataStorage dataStorage = extractPopulation(predicate);
+ File file = DataStorages.save(dataStorage, "coser-chart-population-indicator", ".csv");
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+ protected Predicate<String[]> createPredicate(GetPopulationIndicatorResultDataRequest request) {
+ return Predicates.and(
+ EchoBasePredicates.populationSpeciesPredicate(request.getSpecies()),
+ EchoBasePredicates.populationIndicatorPredicate(request.getIndicator()));
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultGraphCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultGraphCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultGraphCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,74 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultGraphCommand extends AbstractEchoBaseCommand<GetPopulationIndicatorResultGraphRequest> {
+
+ @Override
+ public boolean accept(GetPopulationIndicatorResultGraphRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = Predicates.and(
+ EchoBasePredicates.populationSpeciesPredicate(request.getSpecies()),
+ EchoBasePredicates.populationIndicatorPredicate(request.getIndicator()));
+ result = repository.matchPopulation(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetPopulationIndicatorResultGraphRequest request) {
+
+ // generate chart
+ JFreeChart chart = generatePopulationChart(request.getZone(),
+ request.getSpecies(),
+ request.getIndicator());
+
+ // generate file from chart
+ File file = getCharts().generateChartFile("coser-chart-population-indicator-",
+ chart,
+ 800,
+ 400);
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,57 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.MapResult;
+
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForExtractRawDataAndResultsCommand extends AbstractEchoBaseCommand<GetSpeciesForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public boolean accept(GetSpeciesForExtractRawDataAndResultsRequest request) {
+ return repository.matchExtractTypeList(request) && repository.matchZone(request);
+ }
+
+ @Override
+ public MapResult execute(GetSpeciesForExtractRawDataAndResultsRequest request) {
+
+ Map<String, String> map = Maps.newHashMap();
+ // get all species for population indicators
+ map.putAll(getPopulationSpeciesMap());
+ // get all species for community indicators
+ map.putAll(getCommunitySpeciesMap());
+
+ MapResult result = newMapResult(map);
+ return result;
+ }
+
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,13 +22,10 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.Map;
-import java.util.Set;
/**
* Created on 3/11/14.
@@ -36,28 +33,20 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesForMapResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesForMapResultRequest> {
+public class GetSpeciesForMapResultCommand extends AbstractEchoBaseCommand<GetSpeciesForMapResultRequest> {
@Override
- public Class<GetSpeciesForMapResultRequest> getRequestType() {
- return GetSpeciesForMapResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetSpeciesForMapResultRequest request) {
+ public boolean accept(GetSpeciesForMapResultRequest request) {
return repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetSpeciesForMapResultRequest request) {
+ public MapResult execute(GetSpeciesForMapResultRequest request) {
- Set<String> speciesList = repository.getMapSpecies();
- Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+ Map<String, String> map = repository.getMapSpecies();
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,13 +22,10 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.Map;
-import java.util.Set;
/**
* Created on 3/11/14.
@@ -36,28 +33,20 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesForPopulationIndicatorResultRequest> {
+public class GetSpeciesForPopulationIndicatorResultCommand extends AbstractEchoBaseCommand<GetSpeciesForPopulationIndicatorResultRequest> {
@Override
- public Class<GetSpeciesForPopulationIndicatorResultRequest> getRequestType() {
- return GetSpeciesForPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetSpeciesForPopulationIndicatorResultRequest request) {
+ public boolean accept(GetSpeciesForPopulationIndicatorResultRequest request) {
return repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetSpeciesForPopulationIndicatorResultRequest request) {
+ public MapResult execute(GetSpeciesForPopulationIndicatorResultRequest request) {
- Set<String> speciesList = repository.getPopulationIndicatorSpecies();
- Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+ Map<String, String> map = getPopulationSpeciesMap();
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,15 +22,12 @@
* #L%
*/
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import com.google.common.base.Predicate;
+import fr.ifremer.coser.result.repository.echobase.EchoBasePredicates;
import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
-import java.util.Iterator;
import java.util.Map;
-import java.util.Set;
/**
* Created on 3/11/14.
@@ -38,52 +35,28 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesListForCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesListForCommunityIndicatorResultRequest> {
+public class GetSpeciesListForCommunityIndicatorResultCommand extends AbstractEchoBaseCommand<GetSpeciesListForCommunityIndicatorResultRequest> {
@Override
- public Class<GetSpeciesListForCommunityIndicatorResultRequest> getRequestType() {
- return GetSpeciesListForCommunityIndicatorResultRequest.class;
+ public boolean accept(GetSpeciesListForCommunityIndicatorResultRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate =
+ EchoBasePredicates.communityIndicatorPredicate(request.getIndicator());
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
}
@Override
- public boolean accept(EchoBaseResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicator(repository, request);
- }
+ public MapResult execute(GetSpeciesListForCommunityIndicatorResultRequest request) {
- @Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
+ Map<String, String> map = getCommunitySpeciesMap();
- Set<String> speciesList = repository.getCommunityIndicatorSpecies(request.getIndicator());
- Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
-
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(EchoBaseResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,84 +0,0 @@
-package fr.ifremer.coser.result.repository.echobase.command;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.Sets;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
-import fr.ifremer.coser.result.request.GetSpeciesListForExtractRawDataAndResultsRequest;
-import fr.ifremer.coser.util.DataType;
-
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetSpeciesListForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesListForExtractRawDataAndResultsRequest> {
-
- @Override
- public Class<GetSpeciesListForExtractRawDataAndResultsRequest> getRequestType() {
- return GetSpeciesListForExtractRawDataAndResultsRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(request) && matchZoneList(repository, request);
- }
-
- @Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
-
- Set<String> speciesList = Sets.newHashSet();
- // get all species for population indicators
- speciesList.addAll(repository.getPopulationIndicatorSpecies());
- // get all species for community indicators
- speciesList.addAll(repository.getCommunityIndicatorSpecies());
-
- Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
-
- MapResult result = new MapResult(repository.getId(), map);
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(GetSpeciesListForExtractRawDataAndResultsRequest request) {
- //TODO Should deal also with raw-data type
- return !request.getExtractTypeList().contains(DataType.SOURCE);
- }
-
- protected boolean matchZoneList(EchoBaseResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,10 +23,8 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.List;
import java.util.Map;
@@ -37,27 +35,20 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForCommunityIndicatorResultRequest> {
+public class GetZonesForCommunityIndicatorResultCommand extends AbstractEchoBaseCommand<GetZonesForCommunityIndicatorResultRequest> {
@Override
- public Class<GetZonesForCommunityIndicatorResultRequest> getRequestType() {
- return GetZonesForCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetZonesForCommunityIndicatorResultRequest request) {
+ public boolean accept(GetZonesForCommunityIndicatorResultRequest request) {
return repository.matchFacade(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetZonesForCommunityIndicatorResultRequest request) {
+ public MapResult execute(GetZonesForCommunityIndicatorResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,10 +23,8 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.List;
import java.util.Map;
@@ -37,28 +35,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForExtractRawDataAndResultsRequest> {
+public class GetZonesForExtractRawDataAndResultsCommand extends AbstractEchoBaseCommand<GetZonesForExtractRawDataAndResultsRequest> {
@Override
- public Class<GetZonesForExtractRawDataAndResultsRequest> getRequestType() {
- return GetZonesForExtractRawDataAndResultsRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetZonesForExtractRawDataAndResultsRequest request) {
+ public boolean accept(GetZonesForExtractRawDataAndResultsRequest request) {
return true;
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetZonesForExtractRawDataAndResultsRequest r) {
+ public MapResult execute(GetZonesForExtractRawDataAndResultsRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(null);
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,10 +23,8 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.List;
import java.util.Map;
@@ -37,27 +35,20 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForExtractRawDataCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForExtractRawDataRequest> {
+public class GetZonesForExtractRawDataCommand extends AbstractEchoBaseCommand<GetZonesForExtractRawDataRequest> {
@Override
- public Class<GetZonesForExtractRawDataRequest> getRequestType() {
- return GetZonesForExtractRawDataRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetZonesForExtractRawDataRequest request) {
+ public boolean accept(GetZonesForExtractRawDataRequest request) {
return repository.matchFacade(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetZonesForExtractRawDataRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ public MapResult execute(GetZonesForExtractRawDataRequest request) {
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,10 +23,8 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.List;
import java.util.Map;
@@ -37,28 +35,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForMapResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForMapResultRequest> {
+public class GetZonesForMapResultCommand extends AbstractEchoBaseCommand<GetZonesForMapResultRequest> {
@Override
- public Class<GetZonesForMapResultRequest> getRequestType() {
- return GetZonesForMapResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetZonesForMapResultRequest request) {
+ public boolean accept(GetZonesForMapResultRequest request) {
return repository.matchFacade(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetZonesForMapResultRequest request) {
+ public MapResult execute(GetZonesForMapResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,10 +23,8 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
import java.util.List;
import java.util.Map;
@@ -37,27 +35,20 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForPopulationIndicatorResultRequest> {
+public class GetZonesForPopulationIndicatorResultCommand extends AbstractEchoBaseCommand<GetZonesForPopulationIndicatorResultRequest> {
@Override
- public Class<GetZonesForPopulationIndicatorResultRequest> getRequestType() {
- return GetZonesForPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(EchoBaseResultRepository repository,
- GetZonesForPopulationIndicatorResultRequest request) {
+ public boolean accept(GetZonesForPopulationIndicatorResultRequest request) {
return repository.matchFacade(request);
}
@Override
- public MapResult execute(EchoBaseResultRepository repository,
- GetZonesForPopulationIndicatorResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ public MapResult execute(GetZonesForPopulationIndicatorResultRequest request) {
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,28 @@
+/**
+ * Implementations of {@link fr.ifremer.coser.result.CoserCommand} for echobase result repository.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/package-info.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,5 +1,5 @@
/**
- * Implementation for EchoBase results.
+ * Implementation for EchoBase result repository.
*
* @since 1.5
*/
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,175 @@
+package fr.ifremer.coser.result.repository.legacy;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Lists;
+
+import java.util.List;
+
+/**
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class LegacyPredicates {
+
+ protected LegacyPredicates() {
+ // avoid instances
+ }
+
+ public static Predicate<String[]> communitySpeciesListPredicate(String species) {
+ return new CommunitySpeciesListPredicate(Lists.newArrayList(species));
+ }
+
+ public static Predicate<String[]> communityIndicatorPredicate(String indicator) {
+ return new CommunityIndicatorPredicate(Lists.newArrayList(indicator));
+ }
+
+ public static Predicate<String[]> communityIndicatorPredicate(List<String> indicator) {
+ return new CommunityIndicatorPredicate(indicator);
+ }
+
+ public static Predicate<String[]> communitySpeciesPredicate(List<String> species) {
+ return new CommunitySpeciesPredicate(Lists.newArrayList(species));
+ }
+
+ public static Predicate<String[]> populationSpeciesPredicate(String species) {
+ return new PopulationSpeciesPredicate(Lists.newArrayList(species));
+ }
+
+ public static Predicate<String[]> populationSpeciesPredicate(List<String> species) {
+ return new PopulationSpeciesPredicate(species);
+ }
+
+ public static Predicate<String[]> populationIndicatorPredicate(String indicator) {
+ return new PopulationIndicatorPredicate(Lists.newArrayList(indicator));
+ }
+
+ public static Predicate<String[]> populationIndicatorPredicate(List<String> indicator) {
+ return new PopulationIndicatorPredicate(indicator);
+ }
+
+ public static Predicate<String[]> speciesListPredicate(String speciesList) {
+ return new SpeciesListPredicate(speciesList);
+ }
+
+ protected static class SpeciesListPredicate implements Predicate<String[]> {
+
+ protected final String speciesListLetter;
+
+ SpeciesListPredicate(String speciesList) {
+ this.speciesListLetter = String.valueOf(speciesList.charAt(0));
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String speciesListCode = input[4];
+ boolean result = speciesListLetter.equals(speciesListCode);
+ return result;
+ }
+ }
+
+ protected static class CommunitySpeciesListPredicate implements Predicate<String[]> {
+
+ private final List<String> speciesList;
+
+ CommunitySpeciesListPredicate(List<String> speciesList) {
+ this.speciesList = speciesList;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ // here we match a *speciesList*
+ String speciesListCode = input[2];
+ boolean result = speciesList.contains(speciesListCode);
+ return result;
+ }
+ }
+
+ protected static class CommunitySpeciesPredicate implements Predicate<String[]> {
+
+ private final List<String> species;
+
+ CommunitySpeciesPredicate(List<String> species) {
+ this.species = species;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ // here we match a *species*
+ String speciesCode = input[3];
+ boolean result = species.contains(speciesCode);
+ return result;
+ }
+ }
+
+ protected static class CommunityIndicatorPredicate implements Predicate<String[]> {
+
+ private final List<String> indicator;
+
+ CommunityIndicatorPredicate(List<String> indicator) {
+ this.indicator = indicator;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String indicatorCode = input[1];
+ boolean result = indicator.contains(indicatorCode);
+ return result;
+ }
+ }
+
+ protected static class PopulationSpeciesPredicate implements Predicate<String[]> {
+
+ private final List<String> species;
+
+ PopulationSpeciesPredicate(List<String> species) {
+ this.species = species;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String speciesCode = input[3];
+ boolean result = species.contains(speciesCode);
+ return result;
+ }
+ }
+
+ protected static class PopulationIndicatorPredicate implements Predicate<String[]> {
+
+ private final List<String> indicator;
+
+ PopulationIndicatorPredicate(List<String> indicator) {
+ this.indicator = indicator;
+ }
+
+ @Override
+ public boolean apply(String[] input) {
+ String indicatorCode = input[1];
+ boolean result = indicator.contains(indicatorCode);
+ return result;
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyPredicates.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,37 +24,31 @@
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserBusinessConfig;
-import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.CoserConstants;
-import fr.ifremer.coser.CoserServiceContext;
-import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.bean.EchoBaseProject;
-import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.RSufiResultPath;
import fr.ifremer.coser.bean.SpeciesListMap;
import fr.ifremer.coser.bean.SpeciesMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.Reports;
import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.request.CoserRequestExtractTypeListAware;
import fr.ifremer.coser.result.request.CoserRequestFacadeAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryResultTypeAware;
+import fr.ifremer.coser.result.request.CoserRequestRepositoryTypeAware;
import fr.ifremer.coser.result.request.CoserRequestZoneAware;
-import fr.ifremer.coser.services.ProjectService;
+import fr.ifremer.coser.result.request.CoserRequestZoneListAware;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.util.DataType;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.File;
import java.io.FilenameFilter;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -105,11 +99,6 @@
protected final FilenameFilter mapSpeciesFilenameFilter;
/**
- * Service context.
- */
- protected final CoserServiceContext serviceContext;
-
- /**
* Survey name (used to get maps).
*/
protected final String surveyName;
@@ -125,22 +114,16 @@
protected SpeciesListMap speciesListMap;
/**
- * Report helper.
+ * Unique id of the result
*/
- protected final Reports reports;
+ protected final String id;
- //FIXME Remove this
- protected final ProjectService projectService;
-
- public LegacyResultRepository(CoserServiceContext serviceContext,
- File basedir,
+ public LegacyResultRepository(File basedir,
RSufiResultPath path,
String surveyName) {
- Preconditions.checkNotNull(serviceContext);
Preconditions.checkNotNull(basedir);
Preconditions.checkNotNull(path);
Preconditions.checkNotNull(surveyName);
- this.serviceContext = serviceContext;
this.basedir = basedir;
this.surveyName = surveyName;
this.resultDirectory = FileUtils.getFile(
@@ -151,15 +134,18 @@
path.getRsufiResult().getName());
this.mapsDirectory = new File(resultDirectory, CoserConstants.STORAGE_MAPS_DIRECTORY);
this.path = path;
- this.reports = new Reports();
this.mapFileToSpeciesCode = EchoBaseProject.newMapFileToSpeciesCode(surveyName);
this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
- this.projectService = new ProjectService(serviceContext.getConfig());
+ this.id = String.format("%s::%s::%s",
+ LegacyResultRepositoryType.ID,
+ resultDirectory,
+ path.getRsufiResult().isMapsResult() ? "Map" : "Indicator");
+
if (log.isInfoEnabled()) {
- log.info("New result repository: " + getId());
+ log.info("New result repository: " + id);
}
}
@@ -169,11 +155,7 @@
@Override
public String getId() {
- return String.format("%s::%s::%s",
- LegacyResultRepositoryType.ID,
- resultDirectory,
- path.getRsufiResult().isMapsResult() ? "Map" : "Indicator"
- );
+ return id;
}
@Override
@@ -181,80 +163,60 @@
return LegacyResultRepositoryType.INSTANCE;
}
- public File getResultDirectory() {
- return resultDirectory;
- }
-
- public RSufiResultPath getPath() {
- return path;
- }
-
+ @Override
public String getSurveyName() {
return surveyName;
}
- public Reports getReports() {
- return reports;
- }
-
+ @Override
public File getBasedir() {
return basedir;
}
+ @Override
public String getProjectName() {
return path.getProject().getName();
}
- public String getSelectionName() {
- return path.getSelection().getName();
- }
-
+ @Override
public String getZone() {
return path.getRsufiResult().getZone();
}
- public String getResultName() {
- return path.getRsufiResult().getName();
- }
-
+ @Override
public boolean isMapsResult() {
return path.getRsufiResult().isMapsResult();
}
+ @Override
public boolean isIndicatorsResult() {
return path.getRsufiResult().isIndicatorsResult();
}
+ @Override
public boolean isPubliableResult() {
return path.getRsufiResult().isPubliableResult();
}
+ @Override
public boolean isDataResult() {
return path.getRsufiResult().isDataAllowed();
}
- //FIXME Remove this
- public ProjectService getProjectService() {
- return projectService;
+ public File getResultDirectory() {
+ return resultDirectory;
}
- public void loadSelectionData() {
- try {
- // be sure that data are available for this project
- // or it will fail
+ public RSufiResultPath getPath() {
+ return path;
+ }
- getProjectService().loadSelectionData(getBasedir().getParentFile(), path.getProject(), path.getSelection());
- } catch (CoserBusinessException e) {
- throw new CoserTechnicalException("Could not load project selection", e);
- }
+ public String getSelectionName() {
+ return path.getSelection().getName();
}
- public File extractRSUfiData(File zoneDirectory) {
- try {
- return getProjectService().extractRSUfiData(path.getProject(), path.getSelection(), zoneDirectory, true);
- } catch (CoserBusinessException e) {
- throw new CoserTechnicalException("Could not extract raw data", e);
- }
+ public String getResultName() {
+ return path.getRsufiResult().getName();
}
// --------------------------------------------------------------------- //
@@ -262,51 +224,72 @@
// --------------------------------------------------------------------- //
public boolean matchFacade(CoserRequestFacadeAware request) {
+ if (log.isTraceEnabled()) {
+ log.trace("No usage of facade in request: " + request);
+ }
return true;
}
public boolean matchZone(CoserRequestZoneAware request) {
- return path.getRsufiResult().getZone().equals(request.getZone());
+ return getZone().equals(request.getZone());
}
- public boolean matchPopulationSpecies(String[] tuple, String species) {
- String speciesCode = tuple[3];
- boolean result = species.equals(speciesCode);
+ public boolean matchZone(CoserRequestZoneListAware request) {
+ List<String> zoneList = request.getZoneList();
+ boolean result = zoneList.contains(getZone());
return result;
}
- public boolean matchPopulationSpeciesAndIndicator(String[] tuple, String species, String indicator) {
- String indicatorCode = tuple[1];
- boolean result = matchPopulationSpecies(tuple, species) && indicator.equals(indicatorCode);
+ public boolean matchRepositoryType(CoserRequestRepositoryTypeAware request) {
+ boolean result = request.getRepositoryType().equals(LegacyResultRepositoryType.ID);
return result;
}
- public boolean matchCommunityIndicator(String[] tuple, String indicator) {
- String indicatorCode = tuple[1];
- boolean result = indicator.equals(indicatorCode);
+ public boolean matchResultType(CoserRequestRepositoryResultTypeAware request) {
+ boolean result;
+ switch (request.getResultType()) {
+ case MAP:
+ result = isMapsResult();
+ break;
+ case INDICATOR:
+ result = isIndicatorsResult();
+ break;
+ default:
+ result = false;
+ break;
+ }
return result;
}
- public boolean matchCommunityIndicatorAndSpeciesList(String[] tuple, String indicator, String speciesList) {
- String indicatorCode = tuple[1];
- String speciesListCode = tuple[2];
- boolean result = indicator.equals(indicatorCode) && speciesList.equals(speciesListCode);
+ public boolean matchExtractTypeList(CoserRequestExtractTypeListAware request) {
+ boolean result = false;
+ if (isMapsResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ } else if (isIndicatorsResult()) {
+ result = request.getExtractTypeList().contains(DataType.POPULATION) ||
+ request.getExtractTypeList().contains(DataType.COMMUNITY);
+ }
+ if (isDataResult()) {
+ result |= request.getExtractTypeList().contains(DataType.SOURCE);
+ }
return result;
}
- public boolean matchIndicatorList(String[] tuple, List<String> indicatorList) {
- String indicatorCode = tuple[1];
- boolean result = indicatorList.contains(indicatorCode);
+ public boolean matchCommunity(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = getCommunityIndicatorStorage();
+ boolean result = DataStorages.match(storage, predicate, true);
+
return result;
}
- public boolean matchIndicatorListAndSpeciesList(String[] tuple,
- List<String> indicatorList,
- List<String> speciesList) {
- String indicatorCode = tuple[1];
- String speciesCode = tuple[3];
- boolean result = indicatorList.contains(indicatorCode) &&
- speciesList.contains(speciesCode);
+ public boolean matchPopulation(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = getPopulationIndicatorStorage();
+ boolean result = DataStorages.match(storage, predicate, true);
+
return result;
}
@@ -320,107 +303,18 @@
return file;
}
- // --------------------------------------------------------------------- //
- // --- Get species lists ----------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- public Map<String, String> getPopulationIndicatorSpecies() {
- Map<String, String> result = Maps.newHashMap();
-
- SpeciesMap speciesNames = getSpeciesMap();
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String speciesCode = tuple[3];
-
- String speciesName = speciesNames.getSpeciesName(speciesCode);
-
- if (StringUtils.isNotEmpty(speciesName)) {
- result.put(speciesCode, speciesName);
- }
- result.put(speciesCode, speciesName);
+ public Map<String, String> getMapSpeciesMap() {
+ Set<String> speciesList = Sets.newHashSet();
+ File[] files = mapsDirectory.listFiles(mapSpeciesFilenameFilter);
+ if (files != null) {
+ List<String> transform = Lists.transform(Lists.newArrayList(files), mapFileToSpeciesCode);
+ speciesList.addAll(transform);
}
+ Map<String, String> result = getSpeciesMap().getSpeciesSubMap(speciesList);
return result;
}
- public Map<String, String> getCommunityIndicatorSpecies() {
- Map<String, String> result = Maps.newHashMap();
-
- SpeciesMap speciesNames = getSpeciesMap();
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String speciesCode = tuple[3];
-
- String speciesName = speciesNames.getSpeciesName(speciesCode);
-
- if (StringUtils.isNotEmpty(speciesName)) {
- result.put(speciesCode, speciesName);
- }
- result.put(speciesCode, speciesName);
- }
- return result;
- }
-
- public Map<String, String> getCommunityIndicatorSpecies(Locale locale, String indicator) {
-
- // linked hash map (doit respecter l'ordre d'insertion)
- Map<String, String> result = new LinkedHashMap<String, String>();
-
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
-
- if (matchCommunityIndicator(tuple, indicator)) {
- String list = tuple[2];
-
- String translation = getSpeciesListMap().getSpeciesListName(locale, list);
- result.put(list, translation);
- }
- }
- return result;
- }
-
// --------------------------------------------------------------------- //
- // --- Get indicator lists --------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- public Set<String> getCommunityIndicators() {
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- return result;
- }
-
- public Set<String> getPopulationIndicators() {
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- return result;
- }
-
- public Set<String> getPopulationIndicators(String species) {
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- Set<String> result = Sets.newHashSet();
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchPopulationSpecies(tuple, species)) {
- String indicatorCode = tuple[1];
- result.add(indicatorCode);
- }
- }
- return result;
- }
-
- // --------------------------------------------------------------------- //
// --- Get definition maps --------------------------------------------- //
// --------------------------------------------------------------------- //
@@ -441,43 +335,21 @@
return speciesMap;
}
- public IndicatorMap getIndicatorsMap() {
- return serviceContext.getIndicatorsMap();
- }
-
- public ZoneMap getZonesMap() {
- return serviceContext.getZonesMap();
- }
-
// --------------------------------------------------------------------- //
- // --- storage util methods -------------------------------------------- //
+ // --- storage methods ------------------------------------------------- //
// --------------------------------------------------------------------- //
- public Iterator<String[]> loadPopulationIndicatorStorage(boolean skipFirstLine) {
+ public DataStorage getPopulationIndicatorStorage() {
File file = new File(resultDirectory, path.getRsufiResult().getEstPopIndName());
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = DataStorages.load(file, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- Iterator<String[]> iterator = dataStorage.iterator(skipFirstLine);
- return iterator;
+ DataStorage result = DataStorages.load(file, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ return result;
}
- public Iterator<String[]> loadCommunityIndicatorStorage(boolean skipFirstLine) {
+ public DataStorage getCommunityIndicatorStorage() {
File file = new File(resultDirectory, path.getRsufiResult().getEstComIndName());
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
- DataStorage dataStorage = DataStorages.load(file, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
- Iterator<String[]> iterator = dataStorage.iterator(skipFirstLine);
- return iterator;
+ DataStorage result = DataStorages.load(file, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ return result;
}
-
-// protected <R extends CoserRequest> ResultRepositoryCommand<R> getProducer(R request) {
-// Preconditions.checkNotNull(request);
-// String requestTypeName = request.getClass().getName();
-// ResultRepositoryCommand<?> resultRepositoryCommand = resultProducers.get(requestTypeName);
-// Preconditions.checkNotNull(resultRepositoryCommand);
-// return (ResultRepositoryCommand<R>) resultRepositoryCommand;
-// }
-
- public CoserBusinessConfig getConfig() {
- return serviceContext.getConfig();
- }
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,134 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
-import fr.ifremer.coser.result.repository.legacy.command.DeleteResultsCommand;
-import fr.ifremer.coser.result.repository.legacy.command.ExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.legacy.command.ExtractRawDataCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetAllResultsCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetMapResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForMapResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesListForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesListForExtractRawDataAndResultsCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetZonesForCommunityIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetZonesForExtractRawDataCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetZonesForMapResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetZonesForPopulationIndicatorResultCommand;
-import fr.ifremer.coser.result.repository.legacy.command.GetZonesListForExtractRawDataAndResultsCommand;
-
-import java.util.Map;
-
-/**
- * Created on 3/12/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class LegacyResultRepositoryCommandEngine implements ResultRepositoryCommandEngine {
-
- protected final LegacyResultRepository resultRepository;
-
- protected final Map<String, ResultRepositoryCommand<LegacyResultRepository, ?>> commands;
-
- public LegacyResultRepositoryCommandEngine(LegacyResultRepository resultRepository) {
- this.resultRepository = resultRepository;
- this.commands = Maps.newHashMap();
-
- // get map result
- loadCommand(new GetZonesForMapResultCommand());
- loadCommand(new GetSpeciesForMapResultCommand());
- loadCommand(new GetMapResultCommand());
-
- // get community indicator result
- loadCommand(new GetZonesForCommunityIndicatorResultCommand());
- loadCommand(new GetIndicatorsForCommunityIndicatorResultCommand());
- loadCommand(new GetSpeciesListForCommunityIndicatorResultCommand());
- loadCommand(new GetCommunityIndicatorResultCommand());
-
- // get population indicator result
- loadCommand(new GetZonesForPopulationIndicatorResultCommand());
- loadCommand(new GetSpeciesForPopulationIndicatorResultCommand());
- loadCommand(new GetIndicatorsForPopulationIndicatorResultCommand());
- loadCommand(new GetPopulationIndicatorResultCommand());
-
- // get all results
- loadCommand(new GetAllResultsCommand());
-
- // extract raw data
- loadCommand(new GetZonesForExtractRawDataCommand());
- loadCommand(new ExtractRawDataCommand());
-
- // extract raw data and results
- loadCommand(new GetZonesListForExtractRawDataAndResultsCommand());
- loadCommand(new GetSpeciesListForExtractRawDataAndResultsCommand());
- loadCommand(new GetIndicatorsForExtractRawDataAndResultsCommand());
- loadCommand(new ExtractRawDataAndResultsCommand());
-
- // delete results
- loadCommand(new DeleteResultsCommand());
- }
-
- @Override
- public LegacyResultRepository getResultRepository() {
- return resultRepository;
- }
-
- @Override
- public <R extends CoserRequest> boolean acceptRequest(R request) {
- ResultRepositoryCommand<LegacyResultRepository, R> command = getCommand(request);
- boolean result = command.accept(resultRepository, request);
- return result;
- }
-
- @Override
- public <R extends CoserRequest> CoserResult executeRequest(R request) {
- ResultRepositoryCommand<LegacyResultRepository, R> command = getCommand(request);
- CoserResult result = command.execute(resultRepository, request);
- return result;
- }
-
- protected <R extends CoserRequest> ResultRepositoryCommand<LegacyResultRepository, R> getCommand(R request) {
- Preconditions.checkNotNull(request);
- String requestTypeName = request.getClass().getName();
- ResultRepositoryCommand<LegacyResultRepository, ?> resultRepositoryCommand = commands.get(requestTypeName);
- Preconditions.checkNotNull(resultRepositoryCommand);
- return (ResultRepositoryCommand<LegacyResultRepository, R>) resultRepositoryCommand;
- }
-
- protected void loadCommand(ResultRepositoryCommand<LegacyResultRepository, ?> command) {
- String name = command.getRequestType().getName();
- commands.put(name, command);
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,15 +24,14 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Sets;
+import fr.ifremer.coser.CoserBusinessConfig;
import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.CoserConstants;
-import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.bean.RSufiResult;
import fr.ifremer.coser.bean.RSufiResultPath;
import fr.ifremer.coser.bean.Selection;
import fr.ifremer.coser.result.ResultRepositoryInitializationException;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
import fr.ifremer.coser.services.ProjectService;
import org.apache.commons.logging.Log;
@@ -57,20 +56,32 @@
*/
protected final File basedir;
- public LegacyResultRepositoryProvider(File basedir) {
+ /**
+ * //FIXME Should remove this
+ * Application config (used to instanciate some service).
+ */
+ protected final CoserBusinessConfig config;
+
+ public LegacyResultRepositoryProvider(CoserBusinessConfig config, File basedir) {
+ this.config = config;
Preconditions.checkNotNull(basedir);
this.basedir = basedir;
}
@Override
- public Set<LegacyResultRepository> loadRepositories(CoserServiceContext serviceContext) {
+ public LegacyResultRepositoryType getRepositoryType() {
+ return LegacyResultRepositoryType.INSTANCE;
+ }
+ @Override
+ public Set<LegacyResultRepository> loadRepositories() {
+
if (log.isInfoEnabled()) {
log.info(String.format("Scan for projects from basedir: %s", basedir));
}
Set<LegacyResultRepository> result;
try {
- result = findAllProjectWithResult(serviceContext);
+ result = findAllProjectWithResult();
} catch (CoserBusinessException e) {
throw new ResultRepositoryInitializationException(this, "Could not find projects", e);
}
@@ -81,24 +92,18 @@
return result;
}
- @Override
- public ResultRepositoryCommandEngine newEngine(LegacyResultRepository repository) {
- return new LegacyResultRepositoryCommandEngine(repository);
- }
-
/**
* Retourne tous les projets qui ont des résultats.
* <p/>
* De la forme d'une liste de de path (à la tree path) :
* ProjetName/SelectionName/ResultName
*
- * @param serviceContext service context
- * @return results paths
+ * @return result paths
* @throws CoserBusinessException
*/
- protected Set<LegacyResultRepository> findAllProjectWithResult(CoserServiceContext serviceContext) throws CoserBusinessException {
+ protected Set<LegacyResultRepository> findAllProjectWithResult() throws CoserBusinessException {
- ProjectService projectService = new ProjectService(serviceContext.getConfig());
+ ProjectService projectService = new ProjectService(config);
Set<LegacyResultRepository> result = Sets.newHashSet();
// loop on projets
@@ -134,7 +139,7 @@
}
String surveyName = projectService.getProjectSurveyName(rSufiResult, r);
- LegacyResultRepository repository = new LegacyResultRepository(serviceContext, existingProject, path, surveyName);
+ LegacyResultRepository repository = new LegacyResultRepository(existingProject, path, surveyName);
if (log.isInfoEnabled()) {
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,10 +22,56 @@
* #L%
*/
+import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.CoserCommand;
import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.repository.legacy.command.DeleteResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.ExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.ExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetAllResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetCommunityIndicatorResultDataCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetCommunityIndicatorResultGraphCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetMapResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetPopulationIndicatorResultDataCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetPopulationIndicatorResultGraphCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForMapResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesListForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForMapResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.request.DeleteResultsRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetAllResultsRequest;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetMapResultRequest;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
+import java.util.Map;
import java.util.Set;
import static org.nuiton.i18n.I18n.n;
@@ -65,4 +111,44 @@
return Sets.immutableEnumSet(ResultType.MAP, ResultType.INDICATOR);
}
+ @Override
+ public Map<Class<? extends fr.ifremer.coser.result.CoserRequest>, Class<? extends CoserCommand>> getCommandTypes() {
+ Map<Class<? extends CoserRequest>, Class<? extends CoserCommand>> result = Maps.newHashMap();
+
+ // get map result
+ result.put(GetZonesForMapResultRequest.class, GetZonesForMapResultCommand.class);
+ result.put(GetSpeciesForMapResultRequest.class, GetSpeciesForMapResultCommand.class);
+ result.put(GetMapResultRequest.class, GetMapResultCommand.class);
+
+ // get community indicator result
+ result.put(GetZonesForCommunityIndicatorResultRequest.class, GetZonesForCommunityIndicatorResultCommand.class);
+ result.put(GetIndicatorsForCommunityIndicatorResultRequest.class, GetIndicatorsForCommunityIndicatorResultCommand.class);
+ result.put(GetSpeciesListForCommunityIndicatorResultRequest.class, GetSpeciesListForCommunityIndicatorResultCommand.class);
+ result.put(GetCommunityIndicatorResultDataRequest.class, GetCommunityIndicatorResultDataCommand.class);
+ result.put(GetCommunityIndicatorResultGraphRequest.class, GetCommunityIndicatorResultGraphCommand.class);
+
+ // get population indicator result
+ result.put(GetZonesForPopulationIndicatorResultRequest.class, GetZonesForPopulationIndicatorResultCommand.class);
+ result.put(GetSpeciesForPopulationIndicatorResultRequest.class, GetSpeciesForPopulationIndicatorResultCommand.class);
+ result.put(GetIndicatorsForPopulationIndicatorResultRequest.class, GetIndicatorsForPopulationIndicatorResultCommand.class);
+ result.put(GetPopulationIndicatorResultDataRequest.class, GetPopulationIndicatorResultDataCommand.class);
+ result.put(GetPopulationIndicatorResultGraphRequest.class, GetPopulationIndicatorResultGraphCommand.class);
+
+ // get all results
+ result.put(GetAllResultsRequest.class, GetAllResultsCommand.class);
+
+ // extract raw data
+ result.put(GetZonesForExtractRawDataRequest.class, GetZonesForExtractRawDataCommand.class);
+ result.put(ExtractRawDataRequest.class, ExtractRawDataCommand.class);
+
+ // extract raw data and results
+ result.put(GetZonesForExtractRawDataAndResultsRequest.class, GetZonesForExtractRawDataAndResultsCommand.class);
+ result.put(GetSpeciesForExtractRawDataAndResultsRequest.class, GetSpeciesForExtractRawDataAndResultsCommand.class);
+ result.put(GetIndicatorsForExtractRawDataAndResultsRequest.class, GetIndicatorsForExtractRawDataAndResultsCommand.class);
+ result.put(ExtractRawDataAndResultsRequest.class, ExtractRawDataAndResultsCommand.class);
+
+ // delete results
+ result.put(DeleteResultsRequest.class, DeleteResultsCommand.class);
+ return result;
+ }
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,713 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserBusinessException;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.RSufiResultPath;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserCommand;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserRequestContext;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.result.result.VoidResult;
+import fr.ifremer.coser.result.util.Charts;
+import fr.ifremer.coser.result.util.Reports;
+import fr.ifremer.coser.services.ProjectService;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
+import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.l;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public abstract class AbstractLegacyCommand<R extends CoserRequest> implements CoserCommand<LegacyResultRepository, R> {
+
+ protected CoserRequestContext context;
+
+ protected LegacyResultRepository repository;
+
+ @Override
+ public void setRequestContext(CoserRequestContext context) {
+ this.context = context;
+ }
+
+ @Override
+ public void setRepository(LegacyResultRepository repository) {
+ this.repository = repository;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Context shortcuts method ---------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ public IndicatorMap getIndicatorsMap() {
+ return context.getIndicatorMap();
+ }
+
+ public ZoneMap getZonesMap() {
+ return context.getZoneMap();
+ }
+
+ public Reports getReports() {
+ return context.getReports();
+ }
+
+ public Charts getCharts() {
+ return context.getCharts();
+ }
+
+ public CoserBusinessConfig getConfig() {
+ return context.getConfig();
+ }
+
+ public Locale getLocale() {
+ return context.getLocale();
+ }
+
+ public void loadSelectionData() {
+ try {
+ // be sure that data are available for this project
+ // or it will fail
+
+ ProjectService projectService = new ProjectService(context.getConfig());
+
+ RSufiResultPath path = repository.getPath();
+ projectService.loadSelectionData(repository.getBasedir().getParentFile(), path.getProject(), path.getSelection());
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Could not load project selection", e);
+ }
+ }
+
+ public File extractRSUfiData(File zoneDirectory) {
+ try {
+ FileUtils.forceMkdir(zoneDirectory);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create directory: " + zoneDirectory, e);
+ }
+ try {
+ ProjectService projectService = new ProjectService(context.getConfig());
+
+ RSufiResultPath path = repository.getPath();
+ return projectService.extractRSUfiData(path.getProject(), path.getSelection(), zoneDirectory, true);
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Could not extract raw data", e);
+ }
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- To create results ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected MapResult newMapResult(Map<String, String> map) {
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ protected FileResult newFileResult(File file) {
+ FileResult result = new FileResult(repository.getId(), file);
+ return result;
+ }
+
+ protected VoidResult newVoidResult() {
+ VoidResult result = new VoidResult(repository.getId());
+ return result;
+ }
+
+ protected ExtractRawDataAndResultsResult newExtractRawDataAndResultsResult(MultiKeyMap<String, File> pdfMaps, Map<String, Pair<File, String>> pdfCharts) {
+ ExtractRawDataAndResultsResult result = new ExtractRawDataAndResultsResult(
+ repository.getId(), pdfMaps, pdfCharts);
+ return result;
+ }
+
+
+
+ // --------------------------------------------------------------------- //
+ // --- Get species lists ----------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Set<String> getPopulationSpecies() {
+ final Set<String> result = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesCode = tuple[3];
+ result.add(speciesCode);
+ }
+ };
+ walkOnPopulation(walker);
+ return result;
+ }
+
+ protected Map<String, String> getPopulationSpeciesMap() {
+ final Set<String> speciesList = getPopulationSpecies();
+
+ Map<String, String> result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+
+// SpeciesMap speciesNames = getSpeciesMap();
+// Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+// while (iterator.hasNext()) {
+// String[] tuple = iterator.next();
+// String speciesCode = tuple[3];
+//
+// String speciesName = speciesNames.getSpeciesName(speciesCode);
+//
+// if (StringUtils.isNotEmpty(speciesName)) {
+// result.put(speciesCode, speciesName);
+// }
+// result.put(speciesCode, speciesName);
+// }
+ return result;
+ }
+
+ protected Map<String, String> getCommunitySpeciesMap() {
+ final Set<String> speciesList = Sets.newHashSet();
+
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesCode = tuple[3];
+ speciesList.add(speciesCode);
+ }
+ };
+ walkOnCommunity(walker);
+ Map<String, String> result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+
+// SpeciesMap speciesNames = getSpeciesMap();
+// Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
+// while (iterator.hasNext()) {
+// String[] tuple = iterator.next();
+// String speciesCode = tuple[3];
+//
+// String speciesName = speciesNames.getSpeciesName(speciesCode);
+//
+// if (StringUtils.isNotEmpty(speciesName)) {
+// result.put(speciesCode, speciesName);
+// }
+// result.put(speciesCode, speciesName);
+// }
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Get indicator lists --------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected Set<String> getCommunityIndicators() {
+ final Set<String> result = Sets.newHashSet();
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnCommunity(walker);
+// Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
+// final Set<String> result = Sets.newHashSet();
+// while (iterator.hasNext()) {
+// String[] tuple = iterator.next();
+// String indicatorCode = tuple[1];
+// result.add(indicatorCode);
+// }
+ return result;
+ }
+
+ protected Set<String> getPopulationIndicators() {
+ final Set<String> result = Sets.newHashSet();
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnPopulation(walker);
+// Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+// Set<String> result = Sets.newHashSet();
+// while (iterator.hasNext()) {
+// String[] tuple = iterator.next();
+// String indicatorCode = tuple[1];
+// result.add(indicatorCode);
+// }
+ return result;
+ }
+
+ protected Set<String> getPopulationIndicators(String species) {
+ final Set<String> result = Sets.newHashSet();
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String indicatorCode = tuple[1];
+ result.add(indicatorCode);
+ }
+ };
+ walkOnPopulation(LegacyPredicates.populationSpeciesPredicate(species), walker);
+// Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
+// Set<String> result = Sets.newHashSet();
+// while (iterator.hasNext()) {
+// String[] tuple = iterator.next();
+// if (matchPopulationSpecies(tuple, species)) {
+// String indicatorCode = tuple[1];
+// result.add(indicatorCode);
+// }
+// }
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Walk on indicators ---------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected void walkOnCommunity(DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+
+ DataStorage storage = repository.getCommunityIndicatorStorage();
+ DataStorages.walk(storage, walker);
+ }
+
+ protected void walkOnCommunity(Predicate<String[]> predicate, DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+ Preconditions.checkNotNull(predicate);
+
+ DataStorage storage = repository.getCommunityIndicatorStorage();
+ DataStorages.walk(storage, predicate, walker);
+ }
+
+ protected void walkOnPopulation(DataStorageWalker walker) {
+ Preconditions.checkNotNull(walker);
+
+ DataStorage storage = repository.getPopulationIndicatorStorage();
+ DataStorages.walk(storage, walker);
+ }
+
+ protected void walkOnPopulation(Predicate<String[]> predicate, DataStorageWalker walker) {
+ Preconditions.checkNotNull(predicate);
+ Preconditions.checkNotNull(walker);
+
+ DataStorage storage = repository.getPopulationIndicatorStorage();
+ DataStorages.walk(storage, predicate, walker);
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Extract indicator data ------------------------------------------ //
+ // --------------------------------------------------------------------- //
+
+ protected DataStorage extractCommunity(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ String headerList = l(getLocale(), "coser.business.rsufi.community.header");
+ String header[] = headerList.split("\\s*,\\s*");
+
+ DataStorage source = repository.getCommunityIndicatorStorage();
+ DataStorage result = DataStorages.sub(source, predicate, header);
+ return result;
+ }
+
+ protected DataStorage extractPopulation(Predicate<String[]> predicate) {
+ Preconditions.checkNotNull(predicate);
+
+ String headerList = l(getLocale(), "coser.business.rsufi.population.header");
+ String header[] = headerList.split("\\s*,\\s*");
+
+ DataStorage source = repository.getPopulationIndicatorStorage();
+ DataStorage result = DataStorages.sub(source, predicate, header);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Generate indicator charts --------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected JFreeChart generateCommunityChart(String zone,
+ String indicator,
+ String speciesList) {
+
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(indicator),
+ LegacyPredicates.communitySpeciesListPredicate(speciesList));
+
+ Charts.ExtractGraphDataWalker walker = new Charts.ExtractGraphDataWalker() {
+
+ @Override
+ protected String getEstimationData(String... tuple) {
+ return tuple[5];
+ }
+
+ @Override
+ protected String getEcartData(String... tuple) {
+ return tuple[6];
+ }
+
+ @Override
+ protected String getYearData(String... tuple) {
+ return tuple[4];
+ }
+ };
+ walkOnCommunity(predicate, walker);
+
+ Locale locale = getLocale();
+
+ // get graph title
+ String zoneDisplayName = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(locale, indicator);
+ String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, speciesList);
+ String chartTitle = zoneDisplayName + " - " + indicatorName + " - " + speciesListName;
+
+ JFreeChart chart = getCharts().generateCommunityChart(locale,
+ walker,
+ getIndicatorsMap(),
+ indicator,
+ chartTitle);
+ return chart;
+ }
+
+ protected JFreeChart generatePopulationChart(String zone,
+ String species,
+ String indicator) {
+
+ // get data to put in graph
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.populationSpeciesPredicate(species),
+ LegacyPredicates.populationIndicatorPredicate(indicator));
+
+ Charts.ExtractGraphDataWalker walker = new Charts.ExtractGraphDataWalker() {
+
+ @Override
+ protected String getEstimationData(String... tuple) {
+ return tuple[6];
+ }
+
+ @Override
+ protected String getEcartData(String... tuple) {
+ return tuple[7];
+ }
+
+ @Override
+ protected String getYearData(String... tuple) {
+ return tuple[5];
+ }
+ };
+ walkOnPopulation(predicate, walker);
+
+ Locale locale = getLocale();
+
+ // get graph title
+ String zoneDisplayName = getZonesMap().getZoneFullName(zone);
+ String indicatorName = getIndicatorsMap().getIndicatorValue(locale, indicator);
+ String speciesName = repository.getSpeciesMap().getReportDisplayName(species);
+ String chartTitle = zoneDisplayName + " - " + indicatorName + " - " + speciesName;
+
+ JFreeChart chart = getCharts().generatePopulationChart(locale,
+ walker,
+ getIndicatorsMap(),
+ indicator,
+ chartTitle);
+ return chart;
+ }
+
+// protected JFreeChart generateCommunityChart(Locale locale,
+// String zone,
+// String indicator,
+// String speciesList) {
+//
+// Predicate<String[]> predicate = Predicates.and(
+// LegacyPredicates.communityIndicatorPredicate(indicator),
+// LegacyPredicates.communitySpeciesListPredicate(speciesList));
+//
+// CommunityExtractGraphDataWalker walker = new CommunityExtractGraphDataWalker();
+// walkOnCommunity(predicate, walker);
+//
+// // get graph title
+// String zoneDisplayName = getZoneMap().getZoneFullName(zone);
+// String indicatorName = getIndicatorMap().getIndicatorValue(locale, indicator);
+// String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, speciesList);
+// String chartTitle = zoneDisplayName + " - " + indicatorName + " - " + speciesListName;
+//
+// int multiplicator = walker.getMultiplicator();
+// int minYear = walker.getMinYear();
+// int maxYear = walker.getMaxYear();
+// Map<Integer, Double[]> graphData = walker.getGraphData();
+//
+// // generate dataset with sorted data
+// DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+// for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+// Double[] entry = graphData.get(indexYear);
+// if (entry != null) {
+// Double estimation = entry[0] / multiplicator;
+// Double ecart = entry[1] / multiplicator;
+// statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+// } else {
+// statisticalDataset.add(null, null, "Serie1", indexYear);
+// }
+// }
+//
+// // configure chart
+// String yearAxis = Reports.getYearChartTitle(locale);
+// CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+// categoryAxis.setCategoryMargin(0);
+// categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+//
+// String unit = getIndicatorMap().getIndicatorUnit(indicator);
+// // label horizontaux
+// String legendY = indicatorName;
+// if (multiplicator != 1) {
+// // affiche par exemple : cm * 1000
+// legendY += " (" + unit + "*" + multiplicator + ")";
+// } else if (StringUtils.isNotEmpty(unit)) {
+// legendY += " (" + unit + ")";
+// }
+// ValueAxis valueAxis = new NumberAxis(legendY);
+// valueAxis.setUpperMargin(0.1);
+//
+// CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+//
+// CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+// plot.setOrientation(PlotOrientation.VERTICAL);
+// JFreeChart chart = new JFreeChart(chartTitle, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+//
+// // remove series legend
+// chart.removeLegend();
+// // white background
+// chart.setBackgroundPaint(Color.WHITE);
+//
+// return chart;
+// }
+
+// protected JFreeChart generatePopulationChart(Locale locale,
+// String zone,
+// String species,
+// String indicator) {
+//
+// // get data to put in graph
+// Predicate<String[]> predicate = Predicates.and(
+// LegacyPredicates.populationSpeciesPredicate(species),
+// LegacyPredicates.populationIndicatorPredicate(indicator));
+//
+// PopulationExtractGraphDataWalker walker = new PopulationExtractGraphDataWalker();
+// walkOnPopulation(predicate, walker);
+//
+// int multiplicator = walker.getMultiplicator();
+// int minYear = walker.getMinYear();
+// int maxYear = walker.getMaxYear();
+// Map<Integer, Double[]> graphData = walker.getGraphData();
+//
+// String zoneDisplayName = getZoneMap().getZoneFullName(zone);
+// String indicatorName = getIndicatorMap().getIndicatorValue(locale, indicator);
+//
+// // get graph title
+// String title = zoneDisplayName + " - " + indicatorName + " - " + repository.getSpeciesMap().getReportDisplayName(species);
+//
+// // generate dataset with sorted data
+// DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+// for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+// Double[] entry = graphData.get(indexYear);
+// if (entry != null) {
+// Double estimation = entry[0] / multiplicator;
+// Double ecart = entry[1] / multiplicator;
+// statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+// } else {
+// statisticalDataset.add(null, null, "Serie1", indexYear);
+// }
+// }
+//
+// // configure chart
+// //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
+// String yearAxis = Reports.getYearChartTitle(locale);
+// CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+// categoryAxis.setCategoryMargin(0);
+// categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+//
+// // label horizontaux
+// String unit = getIndicatorMap().getIndicatorUnit(indicator);
+// String legendY = indicatorName;
+// if (multiplicator != 1) {
+// // affiche par exemple : cm * 1000
+// legendY += " (" + unit + "*" + multiplicator + ")";
+// } else if (StringUtils.isNotEmpty(unit)) {
+// legendY += " (" + unit + ")";
+// }
+// ValueAxis valueAxis = new NumberAxis(legendY);
+// valueAxis.setUpperMargin(0.1);
+//
+// CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+//
+// CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+// plot.setOrientation(PlotOrientation.VERTICAL);
+// JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+//
+// // remove series legend
+// chart.removeLegend();
+// // white background
+// chart.setBackgroundPaint(Color.WHITE);
+//
+// return chart;
+// }
+//
+// protected static class CommunityExtractGraphDataWalker implements DataStorageWalker {
+//
+// int multiplicator = 1;
+//
+// int minYear = Integer.MAX_VALUE;
+//
+// int maxYear = Integer.MIN_VALUE;
+//
+// boolean indicatorFound = false;
+//
+// Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
+//
+// @Override
+// public void onRow(String... tuple) {
+//
+// indicatorFound = true;
+//
+// Double estimation = Double.parseDouble(tuple[5]);
+// Double ecart = Double.parseDouble(tuple[6]);
+// int year = Integer.parseInt(tuple[4]);
+//
+// if (year < minYear) {
+// minYear = year;
+// }
+// if (year > maxYear) {
+// maxYear = year;
+// }
+// graphData.put(year, new Double[]{estimation, ecart});
+//
+// // si les données sont énormes, on affiche les données
+// // / multiplicator et on le mentionne dans la légende
+// if (estimation > 1e9) {
+// multiplicator = 1000000;
+// }
+// if (estimation > 1e6 && multiplicator < 1000000) {
+// multiplicator = 1000;
+// }
+// }
+//
+// public int getMultiplicator() {
+// return multiplicator;
+// }
+//
+// public int getMinYear() {
+// return minYear;
+// }
+//
+// public int getMaxYear() {
+// return maxYear;
+// }
+//
+// public boolean isIndicatorFound() {
+// return indicatorFound;
+// }
+//
+// public Map<Integer, Double[]> getGraphData() {
+// return graphData;
+// }
+// }
+
+// protected static class PopulationExtractGraphDataWalker implements DataStorageWalker {
+//
+// int multiplicator = 1;
+//
+// int minYear = Integer.MAX_VALUE;
+//
+// int maxYear = Integer.MIN_VALUE;
+//
+// boolean indicatorFound = false;
+//
+// Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
+//
+// @Override
+// public void onRow(String... tuple) {
+//
+// indicatorFound = true;
+//
+// Double estimation = Double.parseDouble(tuple[6]);
+// Double ecart = Double.parseDouble(tuple[7]);
+// int year = Integer.parseInt(tuple[5]);
+//
+// if (year < minYear) {
+// minYear = year;
+// }
+// if (year > maxYear) {
+// maxYear = year;
+// }
+// graphData.put(year, new Double[]{estimation, ecart});
+//
+// // si les données sont énormes, on affiche les données
+// // / multiplicator et on le mentionne dans la légende
+// if (estimation > 1e9) {
+// multiplicator = 1000000;
+// }
+// if (estimation > 1e6 && multiplicator < 1000000) {
+// multiplicator = 1000;
+// }
+// }
+//
+// public int getMultiplicator() {
+// return multiplicator;
+// }
+//
+// public int getMinYear() {
+// return minYear;
+// }
+//
+// public int getMaxYear() {
+// return maxYear;
+// }
+//
+// public boolean isIndicatorFound() {
+// return indicatorFound;
+// }
+//
+// public Map<Integer, Double[]> getGraphData() {
+// return graphData;
+// }
+// }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/AbstractLegacyCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,11 +24,6 @@
import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.result.VoidResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryType;
import fr.ifremer.coser.result.request.DeleteResultsRequest;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
@@ -36,7 +31,6 @@
import java.io.File;
import java.io.IOException;
-import java.util.List;
/**
* Created on 3/11/14.
@@ -44,42 +38,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class DeleteResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, DeleteResultsRequest> {
+public class DeleteResultsCommand extends AbstractLegacyCommand<DeleteResultsRequest> {
/** Logger. */
private static final Log log = LogFactory.getLog(DeleteResultsCommand.class);
-//
-// protected final LegacyResultRepository repository;
-//
-// protected final RSufiResult rsufiResult;
-//
-// public DeleteResultsCommand(LegacyResultRepository repository) {
-// this.repository = repository;
-// this.rsufiResult = repository.path.getRsufiResult();
-// }
-//
-// @Override
-// public LegacyResultRepository getRepository() {
-// return repository;
-// }
-
@Override
- public Class<DeleteResultsRequest> getRequestType() {
- return DeleteResultsRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository, DeleteResultsRequest request) {
- boolean result = matchRepositoryType(request) &&
- matchResultType(repository, request) &&
- matchPublish(repository) &&
- matchZone(repository, request);
+ public boolean accept(DeleteResultsRequest request) {
+ boolean result = repository.matchRepositoryType(request) &&
+ repository.matchResultType(request) &&
+ repository.isPubliableResult() &&
+ repository.matchZone(request);
return result;
}
@Override
- public CoserResult execute(LegacyResultRepository repository, DeleteResultsRequest request) {
+ public CoserResult execute(DeleteResultsRequest request) {
File basedir = repository.getBasedir();
if (log.isInfoEnabled()) {
log.info("Will delete project at: " + basedir);
@@ -89,45 +63,7 @@
} catch (IOException e) {
throw new CoserTechnicalException("Could not delete project at: " + basedir, e);
}
- return new VoidResult(repository.getId());
+ return newVoidResult();
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchRepositoryType(DeleteResultsRequest request) {
- boolean result = request.getResultRepositoryType().equals(LegacyResultRepositoryType.ID);
- return result;
- }
-
- protected boolean matchResultType(LegacyResultRepository repository, DeleteResultsRequest request) {
- boolean result;
- ResultType resultType = request.getResultType();
- switch (resultType) {
-
- case MAP:
- result = repository.isMapsResult();
- break;
- case INDICATOR:
- result = repository.isIndicatorsResult();
- break;
- default:
- result = false;
- break;
- }
- return result;
- }
-
- protected boolean matchPublish(LegacyResultRepository repository) {
- boolean result = repository.isPubliableResult();
- return result;
- }
-
- protected boolean matchZone(LegacyResultRepository repository, DeleteResultsRequest request) {
- List<String> zoneList = request.getZoneList();
- boolean result = zoneList.contains(repository.getZone());
- return result;
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,54 +22,30 @@
* #L%
*/
-import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.SpeciesMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorageWalker;
import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
import fr.ifremer.coser.util.DataType;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.collections4.keyvalue.MultiKey;
import org.apache.commons.collections4.map.MultiKeyMap;
-import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-import java.awt.Color;
import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.Collection;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
-import java.util.Set;
/**
* Created on 3/11/14.
@@ -77,122 +53,88 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, ExtractRawDataAndResultsRequest> {
+public class ExtractRawDataAndResultsCommand extends AbstractLegacyCommand<ExtractRawDataAndResultsRequest> {
/** Logger. */
private static final Log log = LogFactory.getLog(ExtractRawDataAndResultsCommand.class);
@Override
- public Class<ExtractRawDataAndResultsRequest> getRequestType() {
- return ExtractRawDataAndResultsRequest.class;
- }
+ public boolean accept(ExtractRawDataAndResultsRequest request) {
+ boolean result = repository.matchExtractTypeList(request) &&
+ repository.matchZone(request);
+ if (result) {
- @Override
- public boolean accept(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(repository, request) &&
- matchZoneList(repository, request) &&
- (matchPopulationIndicatorListAndSpeciesList(repository, request) ||
- matchCommunityIndicatorListAndSpeciesList(repository, request));
- }
+ if (request.getExtractTypeList().contains(DataType.POPULATION)) {
- @Override
- public FileResult execute(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest r) {
+ // match population indicator?
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.populationIndicatorPredicate(request.getPopulationIndicatorList()),
+ LegacyPredicates.populationSpeciesPredicate(request.getSpeciesList()));
+ result = repository.matchPopulation(predicate);
+ }
- Locale locale = r.getLocale();
- List<String> zoneList = r.getZoneList();
- List<DataType> extractTypeList = r.getExtractTypeList();
- List<String> speciesList = r.getSpeciesList();
- List<String> communityIndicatorList = r.getCommunityIndicatorList();
- List<String> populationIndicatorList = r.getPopulationIndicatorList();
+ if (!result) {
- File resultZip = null;
- File tempDir = null;
- try {
- tempDir = FileUtil.createTempDirectory("coser-extract-", "-tmp");
+ if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
- File subDir = new File(tempDir, "Indicateurs_Ifremer");
- FileUtils.forceMkdir(subDir);
-
- // les sources se retrouve dans le zip a cote du pdf
- if (extractTypeList.contains(DataType.SOURCE)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting sources");
+ // match community indicator?
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(request.getCommunityIndicatorList()),
+ LegacyPredicates.communitySpeciesPredicate(request.getSpeciesList()));
+ result = repository.matchCommunity(predicate);
}
- File srcDir = new File(subDir, "sources");
- extractSource(repository, srcDir);
}
+ }
+ return result;
+ }
- // les cartes doivent se retrouver dans le pdf
- MultiKeyMap pdfMaps = null;
- if (extractTypeList.contains(DataType.MAP)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting maps");
- }
- SpeciesMap speciesMap = repository.getSpeciesMap();
- String zone = repository.getZone();
- for (String species : speciesList) {
- File mapFile = repository.getMapSpeciesFile(species);
- pdfMaps.put(zone, speciesMap.getSpeciesName(species), mapFile);
- }
- }
+ @Override
+ public ExtractRawDataAndResultsResult execute(ExtractRawDataAndResultsRequest request) {
- // les graphiques sont également dans le pdf
- MultiKeyMap pdfCharts = null;
- if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
- CollectionUtils.isNotEmpty(populationIndicatorList)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting charts");
- }
- pdfCharts = extractCharts(repository,
- speciesList,
- communityIndicatorList,
- populationIndicatorList,
- locale);
- }
+ List<DataType> extractTypeList = request.getExtractTypeList();
+ List<String> speciesList = request.getSpeciesList();
+ List<String> communityIndicatorList = request.getCommunityIndicatorList();
+ List<String> populationIndicatorList = request.getPopulationIndicatorList();
- Reports reports = repository.getReports();
+ File extractDirectory = request.getExtractDirectory();
- // generate pdf if necessary
- if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
- if (log.isDebugEnabled()) {
- log.debug("Generated Extract PDF");
- }
- reports.generateExtractPDF(subDir,
- zoneList,
- pdfMaps,
- pdfCharts,
- repository.getZonesMap(),
- locale);
+ // les sources se retrouve dans le zip a cote du pdf
+ if (extractTypeList.contains(DataType.SOURCE)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting sources");
}
+ File srcDir = new File(extractDirectory, "sources");
+ extractSource(srcDir);
+ }
- // fichier de décharge en pdf
+ // les cartes doivent se retrouver dans le pdf
+ MultiKeyMap<String, File> pdfMaps = null;
+ if (extractTypeList.contains(DataType.MAP)) {
if (log.isDebugEnabled()) {
- log.debug("Generated decharge PDF");
+ log.debug("Extracting maps");
}
- String filename = reports.getDechargeFilename(locale);
- File dechargePDF = new File(subDir, filename);
- reports.generateDechargePDF(dechargePDF, locale, null, null);
+ pdfMaps = new MultiKeyMap<String, File>();
+ SpeciesMap speciesMap = repository.getSpeciesMap();
+ String zone = repository.getZone();
+ for (String species : speciesList) {
+ File mapFile = repository.getMapSpeciesFile(species);
+ String speciesName = speciesMap.getSpeciesName(species);
+ pdfMaps.put(zone, speciesName, mapFile);
+ }
+ }
- // make zip
+ // les graphiques sont également dans le pdf
+ Map<String, Pair<File, String>> pdfCharts = null;
+ if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
+ CollectionUtils.isNotEmpty(populationIndicatorList)) {
if (log.isDebugEnabled()) {
- log.debug("Make final archive");
+ log.debug("Extracting charts");
}
- resultZip = File.createTempFile("coser-extract-", ".zip");
- resultZip.deleteOnExit();
- ZipUtil.compress(resultZip, subDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't create zip file", ex);
- } finally {
- // clean directory
- FileUtils.deleteQuietly(tempDir);
+ pdfCharts = extractCharts(speciesList,
+ communityIndicatorList,
+ populationIndicatorList);
}
-
- FileResult result = new FileResult(repository.getId(), resultZip);
+ ExtractRawDataAndResultsResult result = newExtractRawDataAndResultsResult(pdfMaps, pdfCharts);
return result;
}
@@ -201,553 +143,169 @@
*
* @param directory where to generate file
*/
- protected void extractSource(LegacyResultRepository repository, File directory) {
+ protected void extractSource(File directory) {
- repository.loadSelectionData();
+ loadSelectionData();
// il ne faut pas les fichiers de selection, mais leurs
// export rsufi (sans les lignes, et les quotes)
File zoneDirectory = new File(directory, repository.getZone());
- try {
- FileUtils.forceMkdir(zoneDirectory);
- } catch (IOException e) {
- throw new CoserTechnicalException("Could not create directory: " + zoneDirectory, e);
- }
-
- repository.extractRSUfiData(zoneDirectory);
+ extractRSUfiData(zoneDirectory);
}
/**
- * Retourne les indicateurs calculés avec leurs traductions scientifique
- * pour la zone et l'especes souhaitées.
- *
- * @param species especes (if {@code null} look for com indicators
- * @param comIndicators comIndicator
- * @param popIndicators popIndicators
- * @param locale locale
- * @return la liste des indicateurs (zone, speciesname, [graphfile, graphdata])
+ * @param species species to extract in population indicators
+ * @param communityIndicators community indicators to extract
+ * @param populationIndicators population indicators to extract
+ * @return charts files and their data with key: zone , indicator [- speciesName for population])
+ * and value: (graphFile, graphData)
*/
- protected MultiKeyMap extractCharts(LegacyResultRepository repository,
- Collection<String> species,
- Collection<String> comIndicators,
- Collection<String> popIndicators,
- Locale locale) {
+ protected Map<String, Pair<File, String>> extractCharts(List<String> species,
+ List<String> communityIndicators,
+ List<String> populationIndicators) {
- MultiKeyMap chartFileAndDatas = new MultiKeyMap();
-
String zone = repository.getZone();
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- if (CollectionUtils.isNotEmpty(comIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataCom = getRsufiResultComCharts(repository,
- comIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataCom.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
+ Map<String, Pair<File, String>> result = Maps.newLinkedHashMap();
+
+ if (CollectionUtils.isNotEmpty(communityIndicators)) {
+ result.putAll(extractCommunityResults(communityIndicators,
+ zone,
+ 650,
+ 430));
}
- if (CollectionUtils.isNotEmpty(popIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataPop = getRsufiResultPopCharts(repository,
- species,
- popIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataPop.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
+ if (CollectionUtils.isNotEmpty(populationIndicators)) {
+ result.putAll(extractPopulationResults(species,
+ populationIndicators,
+ zone,
+ 650,
+ 430));
}
- return chartFileAndDatas;
+ return result;
}
/**
- * Generate community graph for selected indicators.
- * Used by web ui extraction.
+ * Generate community graph and their data for selected indicators.
*
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
+ * @param selectedIndicators indicators to extract
+ * @param zone zone
+ * @param width graph width
+ * @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> getRsufiResultComCharts(LegacyResultRepository repository,
- Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width, int height) {
+ public Map<String, Pair<File, String>> extractCommunityResults(List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
- Map<String, Pair<File, String>> result = Maps.newHashMap();
+ // Get exact list of indicators usable for this result
+ List<String> indicators = Lists.newArrayList(getCommunityIndicators());
+ indicators.retainAll(selectedIndicators);
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
-
- Map<String, Map<Integer, Double[]>> indicatorGraphData = new HashMap<String, Map<Integer, Double[]>>();
- Map<String, String> indicatorLists = new HashMap<String, String>();
- Map<String, DataStorage> indicatorStorages = new HashMap<String, DataStorage>();
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- Iterator<String[]> estComIndIterator = repository.loadCommunityIndicatorStorage(true);
- while (estComIndIterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = estComIndIterator.next();
- String indicatorCode = tuple[1];
- String indicatorList = tuple[2];
-
- if (indicators.contains(indicatorCode)) {
-
- // si pas de list selectionnée, on prend la premiere
+ //FIXME Check if this is correct
+ // get for all indicators the first species list found (we only extract this one)
+ final Map<String, String> indicatorLists = new HashMap<String, String>();
+ walkOnCommunity(LegacyPredicates.communityIndicatorPredicate(indicators), new DataStorageWalker() {
+ @Override
+ public void onRow(String... row) {
+ String indicatorCode = row[1];
String localList = indicatorLists.get(indicatorCode);
+ //FIXME Should only test if indicatorCode is present ?
if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- indicatorLists.put(indicatorCode, localList);
+ String indicatorList = row[2];
+ indicatorLists.put(indicatorCode, indicatorList);
}
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicatorCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
-
- // for data part
- DataStorage subDataStorage = indicatorStorages.get(indicatorCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Strate", "Année", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, subDataStorage);
- }
- subDataStorage.add(tuple);
- }
}
- }
+ });
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (String indicator : indicatorGraphData.keySet()) {
- // get graph title
- String chartTitle = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- chartTitle += " - " + indicatorName;
+ Map<String, Pair<File, String>> result = Maps.newHashMap();
- // ajout de la traduction de la liste d'indicateur
- // les liste sont a1, T1, T2 ...
- String localList = indicatorLists.get(indicator);
- String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, localList);
- chartTitle += " - " + speciesListName;
-// String listLetter = String.valueOf(localList.charAt(0));
-// Iterator<String[]> typeIterator = repository.getSpeciesListMap().iterator(true);
-// while (typeIterator.hasNext()) {
-// // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
-// String[] tuple = typeIterator.next();
-// if (tuple[4].equals(listLetter)) {
-// /// gestion du groupe "Tous"
-// // cas special, c'est la seule valeur du fichier
-// // code type espece qui a besoin d'une traduction
-// if (tuple[4].equalsIgnoreCase("T")) {
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Tous Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Todo Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + "All List " + localList.charAt(1);
-// }
-// } else {
-// // ajout de la traduction du nom de liste plus le numéro
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
-// }
-// }
-// break;
-// }
-// }
+ for (String indicator : indicators) {
- // generate dataset with sorted data
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicator);
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
+ String speciesList = indicatorLists.get(indicator);
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(indicator),
+ LegacyPredicates.communitySpeciesListPredicate(speciesList));
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+ // extract raw data
+ DataStorage storage = extractCommunity(predicate);
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
+ String rawDataText = DataStorages.toString(storage);
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+ // generate chart
+ JFreeChart chart = generateCommunityChart(zone,
+ indicator,
+ speciesList);
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
+ // generate chart file
+ File chartFile = getCharts().generateChartFile("coser-community-chart-",
+ chart,
+ width,
+ height);
- try {
- File chartFile = File.createTempFile("coser-community-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = indicatorStorages.get(indicator);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
+ result.put(indicator, Pair.of(chartFile, rawDataText));
}
-
return result;
}
/**
- * Generate population graph for selected species and indicator.
+ * Generate population graph and their data for selected indicators.
*
- * @param species species to extract
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
+ * @param selectedSpecies species to extract
+ * @param selectedIndicators indicators to extract
+ * @param zone zone
+ * @param width graph width
+ * @param height graph height
* @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
*/
- public Map<String, Pair<File, String>> getRsufiResultPopCharts(LegacyResultRepository repository,
- Collection<String> species,
- Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width,
- int height) {
+ public Map<String, Pair<File, String>> extractPopulationResults(List<String> selectedSpecies,
+ List<String> selectedIndicators,
+ String zone,
+ int width,
+ int height) {
+ // Get exact list of species to use
+ List<String> speciesList = Lists.newArrayList(getPopulationSpecies());
+ speciesList.retainAll(selectedSpecies);
+
Map<String, Pair<File, String>> result = Maps.newHashMap();
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
+ for (String species : speciesList) {
- MultiKeyMap indicatorGraphData = new MultiKeyMap();
- MultiKeyMap indicatorStorages = new MultiKeyMap();
+ // Get extact indicators to use
+ List<String> indicators = Lists.newArrayList(getPopulationIndicators(species));
+ indicators.retainAll(selectedIndicators);
- // Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
- Iterator<String[]> estPopIndIterator = repository.loadPopulationIndicatorStorage(true);
- while (estPopIndIterator.hasNext()) {
- String[] tuple = estPopIndIterator.next();
+ for (String indicator : indicators) {
- String speciesCode = tuple[3];
- String indicatorCode = tuple[1];
- if (species.contains(speciesCode) && indicators.contains(indicatorCode)) {
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.populationIndicatorPredicate(indicator),
+ LegacyPredicates.populationSpeciesPredicate(species));
- // XXX echatellier, maybe take care of list here ?
+ // extract raw data
+ DataStorage storage = extractPopulation(predicate);
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
+ String rawDataText = DataStorages.toString(storage);
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicatorCode, speciesCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, speciesCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
+ // generate chart
+ JFreeChart chart = generatePopulationChart(zone,
+ indicator,
+ species);
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
+ // generate chart file
+ File chartFile = getCharts().generateChartFile("coser-population-chart-",
+ chart,
+ width,
+ height);
- // for data part
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicatorCode, speciesCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Espèce", "Strate", "Annee", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Species", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, speciesCode, subDataStorage);
- }
- subDataStorage.add(tuple);
+ result.put(indicator + "-" + species, Pair.of(chartFile, rawDataText));
}
}
-
- SpeciesMap speciesMap = repository.getSpeciesMap();
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (MultiKey indicatorSpecies : (Set<MultiKey>) indicatorGraphData.keySet()) {
- String indicator = (String) indicatorSpecies.getKey(0);
- String aSpecies = (String) indicatorSpecies.getKey(1);
- // get graph title
- String title = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- title += " - " + indicatorName;
- title += " - " + speciesMap.getReportDisplayName(aSpecies);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicator, aSpecies);
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- Reports reports = repository.getReports();
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = reports.getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- File chartFile = File.createTempFile("coser-population-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicator, aSpecies);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator + "-" + aSpecies, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- boolean result = false;
- if (repository.isMapsResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- if (repository.isIndicatorsResult()) {
- result = request.getExtractTypeList().contains(DataType.POPULATION) ||
- request.getExtractTypeList().contains(DataType.COMMUNITY);
- }
- if (repository.isDataResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- return result;
- }
-
- protected boolean matchZoneList(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-
- protected boolean matchCommunityIndicatorList(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorList(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorListAndSpeciesList(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchCommunityIndicatorListAndSpeciesList(LegacyResultRepository repository,
- ExtractRawDataAndResultsRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,11 +24,9 @@
import fr.ifremer.coser.CoserConstants;
import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.util.Reports;
import org.apache.commons.io.FileUtils;
import org.nuiton.util.FileUtil;
import org.nuiton.util.ZipUtil;
@@ -44,28 +42,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ExtractRawDataCommand implements ResultRepositoryCommand<LegacyResultRepository, ExtractRawDataRequest> {
+public class ExtractRawDataCommand extends AbstractLegacyCommand<ExtractRawDataRequest> {
@Override
- public Class<ExtractRawDataRequest> getRequestType() {
- return ExtractRawDataRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- ExtractRawDataRequest request) {
+ public boolean accept(ExtractRawDataRequest request) {
return repository.isDataResult() &&
repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public FileResult execute(LegacyResultRepository repository,
- ExtractRawDataRequest r) {
+ public FileResult execute(ExtractRawDataRequest request) {
- Locale locale = r.getLocale();
+ Locale locale = getLocale();
- repository.loadSelectionData();
+ loadSelectionData();
File resultZip;
@@ -74,16 +65,18 @@
// il ne faut pas les fichiers de selection, mais leurs
// export rsufi (sans les lignes, et les quotes)
- File archiveDir = repository.extractRSUfiData(tempDir);
+ File archiveDir = extractRSUfiData(tempDir);
// add decharge file
- Reports reports = repository.getReports();
- String filename = reports.getDechargeFilename(locale);
+ String filename = Reports.getDechargeFilename(locale);
File dechargePDF = new File(archiveDir, filename);
- Date lastDataUpdateDate = repository.getConfig().getLastDataUpdateDate();
+ Date lastDataUpdateDate = getConfig().getLastDataUpdateDate();
- reports.generateDechargePDF(dechargePDF, locale, lastDataUpdateDate, repository.getSurveyName());
+ getReports().generateDechargePDF(dechargePDF,
+ locale,
+ lastDataUpdateDate,
+ repository.getSurveyName());
// ajout du reftax dans le zip
File reftaxFile = new File(repository.getBasedir(), CoserConstants.Category.REFTAX_SPECIES.getStorageFileName());
@@ -100,7 +93,7 @@
throw new CoserTechnicalException("Can't create zip file", e);
}
- FileResult result = new FileResult(repository.getId(), resultZip);
+ FileResult result = newFileResult(resultZip);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -24,11 +24,7 @@
import com.google.common.collect.Maps;
import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryType;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetAllResultsRequest;
import java.util.Map;
@@ -39,65 +35,25 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetAllResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetAllResultsRequest> {
+public class GetAllResultsCommand extends AbstractLegacyCommand<GetAllResultsRequest> {
@Override
- public Class<GetAllResultsRequest> getRequestType() {
- return GetAllResultsRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetAllResultsRequest request) {
- boolean result = matchRepositoryType(request) &&
- matchResultType(repository, request) &&
- matchPublish(repository);
+ public boolean accept(GetAllResultsRequest request) {
+ boolean result = repository.matchRepositoryType(request) &&
+ repository.matchResultType(request) &&
+ repository.isPubliableResult();
return result;
}
@Override
- public CoserResult execute(LegacyResultRepository repository,
- GetAllResultsRequest request) {
+ public CoserResult execute(GetAllResultsRequest request) {
Map<String, String> map = Maps.newHashMap();
String resultResultId = repository.getZone();
String name = repository.getProjectName() + "/" + repository.getSelectionName()
+ "/" + repository.getResultName();
map.put(resultResultId, name);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchRepositoryType(GetAllResultsRequest request) {
- boolean result = request.getResultRepositoryType().equals(LegacyResultRepositoryType.ID);
- return result;
- }
-
- protected boolean matchResultType(LegacyResultRepository repository,
- GetAllResultsRequest request) {
- boolean result;
- ResultType resultType = request.getResultType();
- switch (resultType) {
-
- case MAP:
- result = repository.isMapsResult();
- break;
- case INDICATOR:
- result = repository.isIndicatorsResult();
- break;
- default:
- result = false;
- break;
- }
- return result;
- }
-
- protected boolean matchPublish(LegacyResultRepository repository) {
- boolean result = repository.isPubliableResult();
- return result;
- }
-
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,380 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy.command;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetCommunityIndicatorResultRequest> {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(GetCommunityIndicatorResultCommand.class);
-
- @Override
- public Class<GetCommunityIndicatorResultRequest> getRequestType() {
- return GetCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
- return repository.isIndicatorsResult() &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicatorAndSpeciesList(repository, request);
- }
-
- @Override
- public FileResult execute(LegacyResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
-
- File file = null;
- switch (request.getIndicatorResultType()) {
- case DATA:
- file = getCommunityIndicatorDataFile(repository,
- request.getLocale(),
- request.getIndicator(),
- request.getSpecies());
- break;
-
- case GRAPH:
- file = getCommunityIndicatorGraphFile(repository,
- request.getLocale(),
- request.getZone(),
- request.getIndicator(),
- request.getSpecies());
- break;
- }
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
- protected File getCommunityIndicatorDataFile(LegacyResultRepository repository,
- Locale locale,
- String indicator,
- String speciesList) {
-
- try {
-
- File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
-
- File baseDir = new File(tempDir, repository.getSurveyName());
- FileUtils.forceMkdir(baseDir);
-
- // ajout du fichier csv avec les indicateurs
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- dataStorage.add(tuple);
- }
- }
- File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator",
- ".csv"
- );
-
- File csvFileCopied = new File(baseDir, indicator + ".csv");
- FileUtils.copyFile(csvFile, csvFileCopied);
- FileUtils.forceDelete(csvFile);
-
- // ajout du fichier d'information sur les espèces incluses dans
- // les calculs des indicateurs de communautés
- // load project (without data to get reftax data)
- File metaFile = repository.getReports().generateMetaFilePDF(repository.getPath(),
- repository.getResultDirectory(),
- locale,
- repository.getIndicatorsMap()
- );
- File metaFileCopied = new File(baseDir, "Information.pdf");
- FileUtils.copyFile(metaFile, metaFileCopied);
-
- // make zip
- File result = File.createTempFile("coser-chart-community-indicator", ".zip");
- result.deleteOnExit();
- ZipUtil.compress(result, baseDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- return result;
- } catch (Exception e) {
- throw new CoserTechnicalException("Can't create zip file", e);
- }
- }
-
- protected File getCommunityIndicatorGraphFile(LegacyResultRepository repository,
- Locale locale,
- String zone,
- String indicator,
- String speciesList) {
-
- // indicator list to take care
- // pour avoir une valeur non nulle si list est null
- // on prend dans ce cas la premiere valeur trouvée
- String localList = speciesList;
-
- if (log.isDebugEnabled()) {
- log.debug("Searching list for indicator : " + indicator);
- }
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = iterator.next();
- String indicatorList = tuple[2];
-
- if (repository.matchCommunityIndicator(tuple, indicator)) {
- indicatorFound = true;
-
- // si pas de list selectionnée, on prend la premiere
- if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- }
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String chartTitle = zoneDisplayName;
- chartTitle += " - " + indicatorName;
-
- String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, localList);
- chartTitle += " - " + speciesListName;
-// // ajout de la traduction de la liste d'indicateur
-// // les liste sont a1, T1, T2 ...
-// String listLetter = String.valueOf(localList.charAt(0));
-// Iterator<String[]> typeIterator = repository.getSpeciesListMap().iterator(true);
-// while (typeIterator.hasNext()) {
-// // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
-// String[] tuple = typeIterator.next();
-// if (tuple[4].equals(listLetter)) {
-// /// gestion du groupe "Tous"
-// // cas special, c'est la seule valeur du fichier
-// // code type espece qui a besoin d'une traduction
-// if (tuple[4].equalsIgnoreCase("T")) {
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Tous Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Todo Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + "All List " + localList.charAt(1);
-// }
-// } else {
-// // ajout de la traduction du nom de liste plus le numéro
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
-// }
-// }
-// break;
-// }
-// }
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
-
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-community-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(LegacyResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchIndicatorAndSpeciesList(LegacyResultRepository repository,
- GetCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
- Preconditions.checkNotNull(request.getSpecies());
-
- String indicator = request.getIndicator();
- String speciesList = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultDataCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,117 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import org.apache.commons.io.FileUtils;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultDataCommand extends AbstractLegacyCommand<GetCommunityIndicatorResultDataRequest> {
+
+ @Override
+ public boolean accept(GetCommunityIndicatorResultDataRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = createPredicate(request);
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetCommunityIndicatorResultDataRequest request) {
+
+ Predicate<String[]> predicate = createPredicate(request);
+
+ File file = getCommunityIndicatorDataFile(predicate,
+ request.getIndicator());
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+ protected File getCommunityIndicatorDataFile(Predicate<String[]> predicate,
+ String indicator) {
+
+ try {
+
+ File tempDir = FileUtil.createTempDirectory("coser-chart-community-indicator", "-tmp");
+
+ File baseDir = new File(tempDir, repository.getSurveyName());
+ FileUtils.forceMkdir(baseDir);
+
+ // ajout du fichier csv avec les indicateurs
+ DataStorage dataStorage = extractCommunity(predicate);
+ File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator", ".csv");
+
+ File csvFileCopied = new File(baseDir, indicator + ".csv");
+ FileUtils.copyFile(csvFile, csvFileCopied);
+ FileUtils.forceDelete(csvFile);
+
+ // ajout du fichier d'information sur les espèces incluses dans
+ // les calculs des indicateurs de communautés
+ // load project (without data to get reftax data)
+ File metaFile = getReports().generateMetaFilePDF(repository.getPath(),
+ repository.getResultDirectory(),
+ getLocale(),
+ getIndicatorsMap());
+ File metaFileCopied = new File(baseDir, "Information.pdf");
+ FileUtils.copyFile(metaFile, metaFileCopied);
+
+ // make zip
+ File result = File.createTempFile("coser-chart-community-indicator", ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, baseDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ return result;
+ } catch (Exception e) {
+ throw new CoserTechnicalException("Can't create zip file", e);
+ }
+ }
+
+ protected Predicate<String[]> createPredicate(GetCommunityIndicatorResultDataRequest request) {
+ return Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(request.getIndicator()),
+ LegacyPredicates.communitySpeciesListPredicate(request.getSpecies()));
+ }
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultGraphCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultGraphCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultGraphCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,73 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultGraphCommand extends AbstractLegacyCommand<GetCommunityIndicatorResultGraphRequest> {
+
+ @Override
+ public boolean accept(GetCommunityIndicatorResultGraphRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.communityIndicatorPredicate(request.getIndicator()),
+ LegacyPredicates.communitySpeciesListPredicate(request.getSpecies()));
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetCommunityIndicatorResultGraphRequest request) {
+
+ // generate chart
+ JFreeChart chart = generateCommunityChart(request.getZone(),
+ request.getIndicator(),
+ request.getSpecies());
+
+ // generate file from chart
+ File file = getCharts().generateChartFile("coser-chart-community-indicator-",
+ chart,
+ 800,
+ 400);
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,9 +22,7 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
import java.util.Map;
@@ -36,29 +34,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetIndicatorsForCommunityIndicatorResultRequest> {
+public class GetIndicatorsForCommunityIndicatorResultCommand extends AbstractLegacyCommand<GetIndicatorsForCommunityIndicatorResultRequest> {
@Override
- public Class<GetIndicatorsForCommunityIndicatorResultRequest> getRequestType() {
- return GetIndicatorsForCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetIndicatorsForCommunityIndicatorResultRequest request) {
+ public boolean accept(GetIndicatorsForCommunityIndicatorResultRequest request) {
return repository.isIndicatorsResult() &&
repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetIndicatorsForCommunityIndicatorResultRequest request) {
+ public MapResult execute(GetIndicatorsForCommunityIndicatorResultRequest request) {
- Set<String> indicatorList = repository.getCommunityIndicators();
- Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ Set<String> indicatorList = getCommunityIndicators();
+ Map<String, String> map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,9 +22,7 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
import fr.ifremer.coser.util.DataType;
@@ -37,69 +35,37 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetIndicatorsForExtractRawDataAndResultsRequest> {
+public class GetIndicatorsForExtractRawDataAndResultsCommand extends AbstractLegacyCommand<GetIndicatorsForExtractRawDataAndResultsRequest> {
@Override
- public Class<GetIndicatorsForExtractRawDataAndResultsRequest> getRequestType() {
- return GetIndicatorsForExtractRawDataAndResultsRequest.class;
+ public boolean accept(GetIndicatorsForExtractRawDataAndResultsRequest request) {
+ return repository.matchExtractTypeList(request) &&
+ repository.matchZone(request);
}
@Override
- public boolean accept(LegacyResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(repository, request) &&
- matchZoneList(repository, request);
- }
+ public MapResult execute(GetIndicatorsForExtractRawDataAndResultsRequest request) {
- @Override
- public MapResult execute(LegacyResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
-
Set<String> indicatorList = null;
if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
// get all community indicators for given zone
- indicatorList = repository.getCommunityIndicators();
+ indicatorList = getCommunityIndicators();
} else if (request.getExtractTypeList().contains(DataType.POPULATION)) {
// get all population indicators for given zone
- indicatorList = repository.getPopulationIndicators();
+ indicatorList = getPopulationIndicators();
}
Map<String, String> map = null;
if (indicatorList != null) {
- map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
}
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(LegacyResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
- boolean result = false;
- if (repository.isMapsResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- if (repository.isIndicatorsResult()) {
- result = request.getExtractTypeList().contains(DataType.POPULATION) ||
- request.getExtractTypeList().contains(DataType.COMMUNITY);
- }
- if (repository.isDataResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- return result;
- }
-
- protected boolean matchZoneList(LegacyResultRepository repository,
- GetIndicatorsForExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,13 +22,11 @@
* #L%
*/
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import com.google.common.base.Predicate;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -38,53 +36,29 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetIndicatorsForPopulationIndicatorResultRequest> {
+public class GetIndicatorsForPopulationIndicatorResultCommand extends AbstractLegacyCommand<GetIndicatorsForPopulationIndicatorResultRequest> {
@Override
- public Class<GetIndicatorsForPopulationIndicatorResultRequest> getRequestType() {
- return GetIndicatorsForPopulationIndicatorResultRequest.class;
- }
+ public boolean accept(GetIndicatorsForPopulationIndicatorResultRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
- return repository.isIndicatorsResult() &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(repository, request);
- }
+ Predicate<String[]> predicate = LegacyPredicates.populationSpeciesPredicate(request.getSpecies());
+ result = repository.matchPopulation(predicate);
- @Override
- public MapResult execute(LegacyResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
-
- Set<String> indicatorList = repository.getPopulationIndicators(request.getSpecies());
- Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
-
- MapResult result = new MapResult(repository.getId(), map);
+ }
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
+ @Override
+ public MapResult execute(GetIndicatorsForPopulationIndicatorResultRequest request) {
- protected boolean matchSpecies(LegacyResultRepository repository,
- GetIndicatorsForPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
+ Set<String> indicatorList = getPopulationIndicators(request.getSpecies());
+ Map<String, String> map = getIndicatorsMap().getIndicatorsValues(getLocale(), indicatorList);
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,9 +22,7 @@
* #L%
*/
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.GetMapResultRequest;
import java.io.File;
@@ -35,41 +33,27 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetMapResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetMapResultRequest> {
+public class GetMapResultCommand extends AbstractLegacyCommand<GetMapResultRequest> {
@Override
- public Class<GetMapResultRequest> getRequestType() {
- return GetMapResultRequest.class;
+ public boolean accept(GetMapResultRequest request) {
+ boolean result = repository.isMapsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ File file = repository.getMapSpeciesFile(request.getSpecies());
+ result = file != null;
+ }
+ return result;
}
@Override
- public boolean accept(LegacyResultRepository repository,
- GetMapResultRequest request) {
- return repository.isMapsResult() &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(repository, request);
- }
+ public FileResult execute(GetMapResultRequest request) {
- @Override
- public FileResult execute(LegacyResultRepository repository,
- GetMapResultRequest r) {
+ File resultZip = repository.getMapSpeciesFile(request.getSpecies());
- File resultZip = repository.getMapSpeciesFile(r.getSpecies());
-
FileResult result = new FileResult(repository.getId(), resultZip);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(LegacyResultRepository repository,
- GetMapResultRequest request) {
- String species = request.getSpecies();
- File file = repository.getMapSpeciesFile(species);
- return file != null;
- }
-
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,288 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy.command;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import org.apache.commons.lang3.StringUtils;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetPopulationIndicatorResultRequest> {
-
- @Override
- public Class<GetPopulationIndicatorResultRequest> getRequestType() {
- return GetPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
- return repository.isIndicatorsResult() &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpeciesAndIndicator(repository, request);
- }
-
- @Override
- public FileResult execute(LegacyResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
-
- File file = null;
- switch (request.getIndicatorResultType()) {
- case DATA:
- file = getPopulationIndicatorDataFile(repository,
- request.getIndicator(),
- request.getSpecies());
- break;
-
- case GRAPH:
- file = getPopulationIndicatorGraphFile(repository,
- request.getLocale(),
- request.getZone(),
- request.getIndicator(),
- request.getSpecies());
- break;
- }
-
-
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
- protected File getPopulationIndicatorDataFile(LegacyResultRepository repository,
- String species,
- String indicator) {
-
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
- dataStorage.add(tuple);
- }
- }
- File result = DataStorages.save(dataStorage, "coser-chart-population-indicator",
- ".csv"
- );
- return result;
- }
-
- protected File getPopulationIndicatorGraphFile(LegacyResultRepository repository,
- Locale locale,
- String zone,
- String species,
- String indicator) {
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
-
- if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
- indicatorFound = true;
-
- // XXX echatellier, maybe take care of list here ?
-
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String title = zoneDisplayName;
- title += " - " + indicatorName;
- title += " - " + repository.getSpeciesMap().getReportDisplayName(species);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = repository.getReports().getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-population-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(LegacyResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
-
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchSpeciesAndIndicator(LegacyResultRepository repository,
- GetPopulationIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
- Preconditions.checkNotNull(request.getIndicator());
-
- String species = request.getSpecies();
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultDataCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,75 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultDataCommand extends AbstractLegacyCommand<GetPopulationIndicatorResultDataRequest> {
+
+ @Override
+ public boolean accept(GetPopulationIndicatorResultDataRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = createPredicate(request);
+ result = repository.matchPopulation(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetPopulationIndicatorResultDataRequest request) {
+
+ Predicate<String[]> predicate = createPredicate(request);
+
+ DataStorage dataStorage = extractPopulation(predicate);
+ File file = DataStorages.save(dataStorage,
+ "coser-chart-population-indicator",
+ ".csv");
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+ protected Predicate<String[]> createPredicate(GetPopulationIndicatorResultDataRequest request) {
+ return Predicates.and(
+ LegacyPredicates.populationSpeciesPredicate(request.getSpecies()),
+ LegacyPredicates.populationIndicatorPredicate(request.getIndicator()));
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultGraphCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultGraphCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultGraphCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,74 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
+import org.jfree.chart.JFreeChart;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultGraphCommand extends AbstractLegacyCommand<GetPopulationIndicatorResultGraphRequest> {
+
+ @Override
+ public boolean accept(GetPopulationIndicatorResultGraphRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
+ Predicate<String[]> predicate = Predicates.and(
+ LegacyPredicates.populationSpeciesPredicate(request.getSpecies()),
+ LegacyPredicates.populationIndicatorPredicate(request.getIndicator()));
+ result = repository.matchPopulation(predicate);
+ }
+ return result;
+ }
+
+ @Override
+ public FileResult execute(GetPopulationIndicatorResultGraphRequest request) {
+
+ // generate chart
+ JFreeChart chart = generatePopulationChart(request.getZone(),
+ request.getSpecies(),
+ request.getIndicator());
+
+ // generate file from chart
+ File file = getCharts().generateChartFile("coser-chart-population-indicator-",
+ chart,
+ 800,
+ 400);
+
+ FileResult result = newFileResult(file);
+ return result;
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,59 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
+
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForExtractRawDataAndResultsCommand extends AbstractLegacyCommand<GetSpeciesForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public boolean accept(GetSpeciesForExtractRawDataAndResultsRequest request) {
+ return repository.matchExtractTypeList(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
+ public MapResult execute(GetSpeciesForExtractRawDataAndResultsRequest request) {
+
+ Map<String, String> map = Maps.newHashMap();
+
+ // get all species for population indicators
+ map.putAll(getPopulationSpeciesMap());
+ // get all species for community indicators
+ map.putAll(getCommunitySpeciesMap());
+
+ MapResult result = newMapResult(map);
+ return result;
+ }
+
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,9 +22,7 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
import java.util.Map;
@@ -35,27 +33,24 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesForMapResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesForMapResultRequest> {
+public class GetSpeciesForMapResultCommand extends AbstractLegacyCommand<GetSpeciesForMapResultRequest> {
@Override
- public Class<GetSpeciesForMapResultRequest> getRequestType() {
- return GetSpeciesForMapResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository, GetSpeciesForMapResultRequest request) {
+ public boolean accept(GetSpeciesForMapResultRequest request) {
return repository.isMapsResult() &&
repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository, GetSpeciesForMapResultRequest request) {
+ public MapResult execute(GetSpeciesForMapResultRequest request) {
- Map<String, String> map = repository.getPopulationIndicatorSpecies();
+// Map<String, String> map = repository.getPopulationSpeciesMap();
+ Map<String, String> map = repository.getMapSpeciesMap();
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
+
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,9 +22,7 @@
* #L%
*/
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
import java.util.Map;
@@ -35,28 +33,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesForPopulationIndicatorResultRequest> {
+public class GetSpeciesForPopulationIndicatorResultCommand extends AbstractLegacyCommand<GetSpeciesForPopulationIndicatorResultRequest> {
@Override
- public Class<GetSpeciesForPopulationIndicatorResultRequest> getRequestType() {
- return GetSpeciesForPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetSpeciesForPopulationIndicatorResultRequest request) {
+ public boolean accept(GetSpeciesForPopulationIndicatorResultRequest request) {
return repository.isIndicatorsResult() &&
repository.matchFacade(request) &&
repository.matchZone(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetSpeciesForPopulationIndicatorResultRequest request) {
+ public MapResult execute(GetSpeciesForPopulationIndicatorResultRequest request) {
- Map<String, String> map = repository.getPopulationIndicatorSpecies();
+ Map<String, String> map = getPopulationSpeciesMap();
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,14 +22,15 @@
* #L%
*/
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.result.repository.legacy.LegacyPredicates;
import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.storage.DataStorageWalker;
-import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
/**
* Created on 3/11/14.
@@ -37,54 +38,41 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetSpeciesListForCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesListForCommunityIndicatorResultRequest> {
+public class GetSpeciesListForCommunityIndicatorResultCommand extends AbstractLegacyCommand<GetSpeciesListForCommunityIndicatorResultRequest> {
@Override
- public Class<GetSpeciesListForCommunityIndicatorResultRequest> getRequestType() {
- return GetSpeciesListForCommunityIndicatorResultRequest.class;
- }
+ public boolean accept(GetSpeciesListForCommunityIndicatorResultRequest request) {
+ boolean result = repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ if (result) {
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
- return repository.isIndicatorsResult() &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicator(repository, request);
+ Predicate<String[]> predicate =
+ LegacyPredicates.communityIndicatorPredicate(request.getIndicator());
+ result = repository.matchCommunity(predicate);
+ }
+ return result;
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
+ public MapResult execute(GetSpeciesListForCommunityIndicatorResultRequest request) {
- Map<String, String> map = repository.getCommunityIndicatorSpecies(request.getLocale(),
- request.getIndicator());
+ // linked hash map (doit respecter l'ordre d'insertion)
+ final Set<String> speciesList = Sets.newLinkedHashSet();
+ DataStorageWalker walker = new DataStorageWalker() {
+ @Override
+ public void onRow(String... tuple) {
+ String speciesListCode = tuple[2];
+ speciesList.add(speciesListCode);
+ }
+ };
+ Predicate<String[]> predicate = LegacyPredicates.communityIndicatorPredicate(request.getIndicator());
+ walkOnCommunity(predicate, walker);
+ Map<String, String> map = repository.getSpeciesListMap().getSpeciesSubMap(getLocale(),
+ speciesList);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(LegacyResultRepository repository,
- GetSpeciesListForCommunityIndicatorResultRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,93 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy.command;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.collect.Maps;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.request.GetSpeciesListForExtractRawDataAndResultsRequest;
-import fr.ifremer.coser.util.DataType;
-
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetSpeciesListForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesListForExtractRawDataAndResultsRequest> {
-
- @Override
- public Class<GetSpeciesListForExtractRawDataAndResultsRequest> getRequestType() {
- return GetSpeciesListForExtractRawDataAndResultsRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
- return matchExtractTypeSet(repository, request) &&
- matchZoneList(repository, request);
- }
-
- @Override
- public MapResult execute(LegacyResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
-
- Map<String, String> map = Maps.newHashMap();
-
- // get all species for population indicators
- map.putAll(repository.getPopulationIndicatorSpecies());
- // get all species for community indicators
- map.putAll(repository.getCommunityIndicatorSpecies());
-
- MapResult result = new MapResult(repository.getId(), map);
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(LegacyResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
- boolean result = false;
- if (repository.isMapsResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- if (repository.isIndicatorsResult()) {
- result = request.getExtractTypeList().contains(DataType.POPULATION) ||
- request.getExtractTypeList().contains(DataType.COMMUNITY);
- }
- if (repository.isDataResult()) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- return result;
- }
-
- protected boolean matchZoneList(LegacyResultRepository repository,
- GetSpeciesListForExtractRawDataAndResultsRequest request) {
- return request.getZoneList().contains(repository.getZone());
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,9 +23,7 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
import java.util.List;
@@ -37,26 +35,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForCommunityIndicatorResultRequest> {
+public class GetZonesForCommunityIndicatorResultCommand extends AbstractLegacyCommand<GetZonesForCommunityIndicatorResultRequest> {
@Override
- public Class<GetZonesForCommunityIndicatorResultRequest> getRequestType() {
- return GetZonesForCommunityIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository, GetZonesForCommunityIndicatorResultRequest request) {
+ public boolean accept(GetZonesForCommunityIndicatorResultRequest request) {
return repository.isIndicatorsResult() && repository.matchFacade(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository, GetZonesForCommunityIndicatorResultRequest request) {
+ public MapResult execute(GetZonesForCommunityIndicatorResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataAndResultsCommand.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,55 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.result.MapResult;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForExtractRawDataAndResultsCommand extends AbstractLegacyCommand<GetZonesForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public boolean accept(GetZonesForExtractRawDataAndResultsRequest request) {
+ return true;
+ }
+
+ @Override
+ public MapResult execute(GetZonesForExtractRawDataAndResultsRequest request) {
+ ZoneMap zonesMap = getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(null);
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+
+ MapResult result = newMapResult(map);
+ return result;
+ }
+
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,9 +23,7 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
import java.util.List;
@@ -37,29 +35,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForExtractRawDataCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForExtractRawDataRequest> {
+public class GetZonesForExtractRawDataCommand extends AbstractLegacyCommand<GetZonesForExtractRawDataRequest> {
@Override
- public Class<GetZonesForExtractRawDataRequest> getRequestType() {
- return GetZonesForExtractRawDataRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetZonesForExtractRawDataRequest request) {
+ public boolean accept(GetZonesForExtractRawDataRequest request) {
return repository.isDataResult() &&
repository.matchFacade(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetZonesForExtractRawDataRequest request) {
+ public MapResult execute(GetZonesForExtractRawDataRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,9 +23,7 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
import java.util.List;
@@ -37,29 +35,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForMapResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForMapResultRequest> {
+public class GetZonesForMapResultCommand extends AbstractLegacyCommand<GetZonesForMapResultRequest> {
@Override
- public Class<GetZonesForMapResultRequest> getRequestType() {
- return GetZonesForMapResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetZonesForMapResultRequest request) {
+ public boolean accept(GetZonesForMapResultRequest request) {
return repository.isMapsResult() &&
repository.matchFacade(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetZonesForMapResultRequest request) {
+ public MapResult execute(GetZonesForMapResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,9 +23,7 @@
*/
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
import java.util.List;
@@ -37,29 +35,22 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForPopulationIndicatorResultRequest> {
+public class GetZonesForPopulationIndicatorResultCommand extends AbstractLegacyCommand<GetZonesForPopulationIndicatorResultRequest> {
@Override
- public Class<GetZonesForPopulationIndicatorResultRequest> getRequestType() {
- return GetZonesForPopulationIndicatorResultRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetZonesForPopulationIndicatorResultRequest request) {
+ public boolean accept(GetZonesForPopulationIndicatorResultRequest request) {
return repository.isIndicatorsResult() &&
repository.matchFacade(request);
}
@Override
- public MapResult execute(LegacyResultRepository repository,
- GetZonesForPopulationIndicatorResultRequest request) {
+ public MapResult execute(GetZonesForPopulationIndicatorResultRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
+ ZoneMap zonesMap = getZonesMap();
List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
+ MapResult result = newMapResult(map);
return result;
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,63 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy.command;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.MapResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
-import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetZonesListForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForExtractRawDataAndResultsRequest> {
-
- @Override
- public Class<GetZonesForExtractRawDataAndResultsRequest> getRequestType() {
- return GetZonesForExtractRawDataAndResultsRequest.class;
- }
-
- @Override
- public boolean accept(LegacyResultRepository repository,
- GetZonesForExtractRawDataAndResultsRequest request) {
- return true;
- }
-
- @Override
- public MapResult execute(LegacyResultRepository repository,
- GetZonesForExtractRawDataAndResultsRequest request) {
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(null);
- Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
- MapResult result = new MapResult(repository.getId(), map);
- return result;
- }
-
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,28 @@
+/**
+ * Implementations of {@link fr.ifremer.coser.result.CoserCommand} for legacy result repository.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/package-info.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,5 +1,5 @@
/**
- * Implementation for legacy results.
+ * Implementation for legacy result repository.
*
* @since 1.5
*/
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain indicator results.
* <p/>
@@ -39,41 +37,19 @@
private static final long serialVersionUID = 1L;
- /**
- * Type of result.
- */
- public enum IndicatorResultType {
- DATA,
- GRAPH
- }
-
- protected Locale locale;
-
protected String facade;
protected String zone;
protected String indicator;
- protected IndicatorResultType indicatorResultType;
+ protected String species;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- facade == null ||
+ return !(facade == null ||
zone == null ||
- indicatorResultType == null ||
+ species == null ||
indicator == null);
}
@@ -99,15 +75,6 @@
this.zone = zone;
}
- public IndicatorResultType getIndicatorResultType() {
- return indicatorResultType;
- }
-
- public void setIndicatorResultType(IndicatorResultType indicatorResultType) {
- Preconditions.checkNotNull(indicatorResultType);
- this.indicatorResultType = indicatorResultType;
- }
-
@Override
public String getIndicator() {
return indicator;
@@ -119,4 +86,15 @@
this.indicator = indicator;
}
+ @Override
+ public String getSpecies() {
+ return species;
+ }
+
+ @Override
+ public void setSpecies(String species) {
+ Preconditions.checkNotNull(species);
+ this.species = species;
+ }
+
}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,221 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.ResultType;
-import fr.ifremer.coser.util.DataType;
-import org.apache.commons.collections4.CollectionUtils;
-
-import java.util.List;
-import java.util.Locale;
-
-/**
- * To build requests.
- * <p/>
- * Created on 3/7/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class CoserRequestBuilder<R extends CoserRequest> {
-
- protected final Locale locale;
-
- protected String facade;
-
- protected String zone;
-
- protected String species;
-
- protected String indicator;
-
- protected AbstractGetIndicatorResultRequest.IndicatorResultType indicatorResultType;
-
- protected List<DataType> extractTypeList;
-
- protected List<String> zoneList;
-
- protected List<String> speciesList;
-
- protected List<String> populationIndicatorList;
-
- protected List<String> communityIndicatorList;
-
- protected String resultRepositoryType;
-
- protected ResultType resultType;
-
- protected final Class<R> requestType;
-
- public CoserRequestBuilder(Locale locale, Class<R> requestType) {
- Preconditions.checkNotNull(locale);
- Preconditions.checkNotNull(requestType);
- this.locale = locale;
- this.requestType = requestType;
- }
-
- public CoserRequestBuilder<R> addFacade(String facade) {
- this.facade = facade;
- return this;
- }
-
- public CoserRequestBuilder<R> addZone(String zone) {
- this.zone = zone;
- return this;
- }
-
- public CoserRequestBuilder<R> addSpecies(String species) {
- this.species = species;
- return this;
- }
-
- public CoserRequestBuilder<R> addIndicator(String indicator) {
- this.indicator = indicator;
- return this;
- }
-
- public CoserRequestBuilder<R> addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType indicatorResultType) {
- this.indicatorResultType = indicatorResultType;
- return this;
- }
-
- public CoserRequestBuilder<R> addExtractTypeList(List<DataType> extractTypeSet) {
- this.extractTypeList = extractTypeSet;
- return this;
- }
-
- public CoserRequestBuilder<R> addZoneList(List<String> zoneList) {
- this.zoneList = zoneList;
- return this;
- }
-
- public CoserRequestBuilder<R> addSpeciesList(List<String> speciesList) {
- this.speciesList = speciesList;
- return this;
- }
-
- public CoserRequestBuilder<R> addPopulationIndicatorList(List<String> populationIndicatorList) {
- this.populationIndicatorList = populationIndicatorList;
- return this;
- }
-
- public CoserRequestBuilder<R> addCommunityIndicatorList(List<String> communityIndicatorList) {
- this.communityIndicatorList = communityIndicatorList;
- return this;
- }
-
- public CoserRequestBuilder<R> addResultRepositoryType(String resultRepositoryType) {
- this.resultRepositoryType = resultRepositoryType;
- return this;
- }
-
- public CoserRequestBuilder<R> addResultType(ResultType resultType) {
- this.resultType = resultType;
- return this;
- }
-
- public R toRequest() {
- try {
- R request = requestType.newInstance();
- flush(request);
- return request;
- } catch (InstantiationException e) {
- throw new CoserTechnicalException(e);
- } catch (IllegalAccessException e) {
- throw new CoserTechnicalException(e);
- }
- }
-
- protected void flush(R request) {
- request.setLocale(locale);
- if (request instanceof CoserRequestFacadeAware) {
- if (facade != null) {
- ((CoserRequestFacadeAware) request).setFacade(facade);
- }
- }
- if (request instanceof CoserRequestZoneAware) {
- if (zone != null) {
- ((CoserRequestZoneAware) request).setZone(zone);
- }
- }
- if (request instanceof CoserRequestSpeciesAware) {
- if (species != null) {
- ((CoserRequestSpeciesAware) request).setSpecies(species);
- }
- }
- if (request instanceof CoserRequestZoneListAware) {
- if (CollectionUtils.isNotEmpty(zoneList)) {
- ((CoserRequestZoneListAware) request).setZoneList(zoneList);
- }
- }
- if (request instanceof CoserRequestIndicatorAware) {
- if (indicator != null) {
- ((CoserRequestIndicatorAware) request).setIndicator(indicator);
- }
- }
-
- if (request instanceof AbstractGetIndicatorResultRequest) {
- if (indicatorResultType != null) {
- ((AbstractGetIndicatorResultRequest) request).setIndicatorResultType(indicatorResultType);
- }
- }
-
- if (request instanceof ExtractRawDataAndResultsRequest) {
- if (CollectionUtils.isNotEmpty(extractTypeList)) {
- ((ExtractRawDataAndResultsRequest) request).setExtractTypeList(extractTypeList);
- }
- if (CollectionUtils.isNotEmpty(populationIndicatorList)) {
- ((ExtractRawDataAndResultsRequest) request).setPopulationIndicatorList(populationIndicatorList);
- }
- if (CollectionUtils.isNotEmpty(communityIndicatorList)) {
- ((ExtractRawDataAndResultsRequest) request).setCommunityIndicatorList(communityIndicatorList);
- }
- if (CollectionUtils.isNotEmpty(speciesList)) {
- ((ExtractRawDataAndResultsRequest) request).setSpeciesList(speciesList);
- }
-
- }
-
- if (request instanceof DeleteResultsRequest) {
- if (resultRepositoryType != null) {
- ((DeleteResultsRequest) request).setResultRepositoryType(resultRepositoryType);
- }
- if (resultType != null) {
- ((DeleteResultsRequest) request).setResultType(resultType);
- }
- }
-
- if (request instanceof GetAllResultsRequest) {
- if (resultRepositoryType != null) {
- ((GetAllResultsRequest) request).setResultRepositoryType(resultRepositoryType);
- }
- if (resultType != null) {
- ((GetAllResultsRequest) request).setResultType(resultType);
- }
- }
- }
-
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestExtractTypeListAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestExtractTypeListAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestExtractTypeListAware.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,41 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.util.DataType;
+
+import java.util.List;
+
+/**
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestExtractTypeListAware extends CoserRequest {
+
+ List<DataType> getExtractTypeList();
+
+ void setExtractTypeList(List<DataType> extractTypeSet);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestExtractTypeListAware.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryResultTypeAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryResultTypeAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryResultTypeAware.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,39 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.ResultType;
+
+/**
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestRepositoryResultTypeAware extends CoserRequest {
+
+ ResultType getResultType();
+
+ void setResultType(ResultType resultType);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryResultTypeAware.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryTypeAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryTypeAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryTypeAware.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,38 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserRequest;
+
+/**
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestRepositoryTypeAware extends CoserRequest {
+
+ String getRepositoryType();
+
+ void setRepositoryType(String resultRepositoryType);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestRepositoryTypeAware.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -29,7 +29,6 @@
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
-import java.util.Locale;
/**
* To delete some results.
@@ -38,11 +37,10 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class DeleteResultsRequest implements CoserRequest, CoserRequestZoneListAware {
+public class DeleteResultsRequest implements CoserRequest, CoserRequestZoneListAware, CoserRequestRepositoryTypeAware, CoserRequestRepositoryResultTypeAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
/**
* Id of matching result repository type.
@@ -62,36 +60,29 @@
protected List<String> zoneList;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- resultRepositoryType == null ||
- resultType == null ||
- CollectionUtils.isEmpty(zoneList));
+ return !(resultRepositoryType == null ||
+ resultType == null ||
+ CollectionUtils.isEmpty(zoneList));
}
- public String getResultRepositoryType() {
+ @Override
+ public String getRepositoryType() {
return resultRepositoryType;
}
- public void setResultRepositoryType(String resultRepositoryType) {
+ @Override
+ public void setRepositoryType(String resultRepositoryType) {
Preconditions.checkNotNull(resultRepositoryType);
this.resultRepositoryType = resultRepositoryType;
}
+ @Override
public ResultType getResultType() {
return resultType;
}
+ @Override
public void setResultType(ResultType resultType) {
Preconditions.checkNotNull(resultType);
this.resultType = resultType;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -27,8 +27,8 @@
import fr.ifremer.coser.util.DataType;
import org.apache.commons.collections4.CollectionUtils;
+import java.io.File;
import java.util.List;
-import java.util.Locale;
/**
* Request to extract data.
@@ -38,12 +38,10 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class ExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware {
+public class ExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware, CoserRequestExtractTypeListAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected List<String> zoneList;
protected List<String> populationIndicatorList;
@@ -54,31 +52,27 @@
protected List<DataType> extractTypeList;
- @Override
- public Locale getLocale() {
- return locale;
- }
+ /**
+ * Where to extract all data and graphs.
+ */
+ protected File extractDirectory;
@Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
+ public boolean isFilled() {
+ return !(
+ CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList) ||
+ CollectionUtils.isEmpty(populationIndicatorList) ||
+ CollectionUtils.isEmpty(communityIndicatorList) ||
+ CollectionUtils.isEmpty(speciesList));
}
@Override
- public boolean isFilled() {
- return !(locale == null ||
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList) ||
- CollectionUtils.isEmpty(populationIndicatorList) ||
- CollectionUtils.isEmpty(communityIndicatorList) ||
- CollectionUtils.isEmpty(speciesList));
- }
-
public List<DataType> getExtractTypeList() {
return extractTypeList;
}
+ @Override
public void setExtractTypeList(List<DataType> extractTypeSet) {
Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
this.extractTypeList = extractTypeSet;
@@ -121,4 +115,12 @@
Preconditions.checkArgument(CollectionUtils.isNotEmpty(speciesList));
this.speciesList = speciesList;
}
+
+ public void setExtractDirectory(File extractDirectory) {
+ this.extractDirectory = extractDirectory;
+ }
+
+ public File getExtractDirectory() {
+ return extractDirectory;
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain raw data results.
* <p/>
@@ -39,26 +37,13 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null || facade == null || zone == null);
+ return !(facade == null || zone == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -27,20 +27,16 @@
import fr.ifremer.coser.result.ResultType;
import fr.ifremer.coser.result.repository.ResultRepositoryType;
-import java.util.Locale;
-
/**
* Created on 3/11/14.
*
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetAllResultsRequest implements CoserRequest {
+public class GetAllResultsRequest implements CoserRequest, CoserRequestRepositoryTypeAware, CoserRequestRepositoryResultTypeAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
/**
* Id of matching result repository type.
*
@@ -55,33 +51,26 @@
@Override
public boolean isFilled() {
- return !(locale == null || resultRepositoryType == null || resultType == null);
+ return !(resultRepositoryType == null || resultType == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- public String getResultRepositoryType() {
+ public String getRepositoryType() {
return resultRepositoryType;
}
- public void setResultRepositoryType(String resultRepositoryType) {
+ @Override
+ public void setRepositoryType(String resultRepositoryType) {
Preconditions.checkNotNull(resultRepositoryType);
this.resultRepositoryType = resultRepositoryType;
}
+ @Override
public ResultType getResultType() {
return resultType;
}
+ @Override
public void setResultType(ResultType resultType) {
Preconditions.checkNotNull(resultType);
this.resultType = resultType;
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultDataRequest.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultDataRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultDataRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,37 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * Request to obtain community indicator results data.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultDataRequest extends AbstractGetIndicatorResultRequest {
+
+ private static final long serialVersionUID = 1L;
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultGraphRequest.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultGraphRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultGraphRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,37 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * Request to obtain community indicator results graph.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultGraphRequest extends AbstractGetIndicatorResultRequest {
+
+ private static final long serialVersionUID = 1L;
+
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,56 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-
-/**
- * Request to obtain community indicator results.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetCommunityIndicatorResultRequest extends AbstractGetIndicatorResultRequest {
-
- private static final long serialVersionUID = 1L;
-
- protected String species;
-
- @Override
- public String getSpecies() {
- return species;
- }
-
- @Override
- public void setSpecies(String species) {
- Preconditions.checkNotNull(facade);
- this.species = species;
- }
-
- @Override
- public boolean isFilled() {
- return super.isFilled() && species != null;
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain community indicator results.
* <p/>
@@ -39,28 +37,13 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- facade == null ||
- zone == null);
+ return !(facade == null || zone == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -28,7 +28,6 @@
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
-import java.util.Locale;
/**
* Request to extract data.
@@ -38,12 +37,10 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForExtractRawDataAndResultsRequest implements CoserRequest {
+public class GetIndicatorsForExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware, CoserRequestExtractTypeListAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected List<String> zoneList;
protected List<String> populationIndicatorList;
@@ -53,38 +50,31 @@
protected List<DataType> extractTypeList;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList) ||
- CollectionUtils.isEmpty(populationIndicatorList) ||
- CollectionUtils.isEmpty(communityIndicatorList));
+ return !(
+ CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList) ||
+ CollectionUtils.isEmpty(populationIndicatorList) ||
+ CollectionUtils.isEmpty(communityIndicatorList));
}
+ @Override
public List<DataType> getExtractTypeList() {
return extractTypeList;
}
+ @Override
public void setExtractTypeList(List<DataType> extractTypeSet) {
Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
this.extractTypeList = extractTypeSet;
}
+ @Override
public List<String> getZoneList() {
return zoneList;
}
+ @Override
public void setZoneList(List<String> zoneList) {
Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
this.zoneList = zoneList;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain community indicator results.
* <p/>
@@ -35,34 +33,21 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetIndicatorsForPopulationIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware , CoserRequestSpeciesAware{
+public class GetIndicatorsForPopulationIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware, CoserRequestSpeciesAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
+
protected String species;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- facade == null ||
- zone == null ||
- species==null);
+ return !(facade == null ||
+ zone == null ||
+ species == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain map results.
* <p/>
@@ -45,8 +43,6 @@
*/
public static final String NULL_SPECIES = "Repartition-stations";
- protected Locale locale;
-
protected String facade;
protected String zone;
@@ -55,21 +51,10 @@
@Override
public boolean isFilled() {
- return !(locale == null || facade == null || zone == null && species == null);
+ return !(facade == null || zone == null && species == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public String getFacade() {
return facade;
}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultDataRequest.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultDataRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultDataRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,37 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * Request to obtain population indicator results data.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultDataRequest extends AbstractGetIndicatorResultRequest {
+
+ private static final long serialVersionUID = 1L;
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultGraphRequest.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultGraphRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultGraphRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,37 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * Request to obtain population indicator result as a graph.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultGraphRequest extends AbstractGetIndicatorResultRequest {
+
+ private static final long serialVersionUID = 1L;
+
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,56 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-
-/**
- * Request to obtain population indicator results.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetPopulationIndicatorResultRequest extends AbstractGetIndicatorResultRequest {
-
- private static final long serialVersionUID = 1L;
-
- protected String species;
-
- @Override
- public String getSpecies() {
- return species;
- }
-
- @Override
- public void setSpecies(String species) {
- Preconditions.checkNotNull(species);
- this.species = species;
- }
-
- @Override
- public boolean isFilled() {
- return super.isFilled() && species != null;
- }
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForExtractRawDataAndResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,76 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.util.DataType;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * Request to extract data.
+ * <p/>
+ * Created on 3/9/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware, CoserRequestExtractTypeListAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected List<String> zoneList;
+
+ protected List<DataType> extractTypeList;
+
+ @Override
+ public boolean isFilled() {
+ return !(
+ CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList));
+ }
+
+ @Override
+ public List<DataType> getExtractTypeList() {
+ return extractTypeList;
+ }
+
+ @Override
+ public void setExtractTypeList(List<DataType> extractTypeSet) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
+ this.extractTypeList = extractTypeSet;
+ }
+
+ @Override
+ public List<String> getZoneList() {
+ return zoneList;
+ }
+
+ @Override
+ public void setZoneList(List<String> zoneList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
+ this.zoneList = zoneList;
+ }
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain available species for map results.
* <p/>
@@ -39,29 +37,16 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
@Override
public boolean isFilled() {
- return !(locale == null || facade == null || zone == null);
+ return !(facade == null || zone == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public String getFacade() {
return facade;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain community indicator results.
* <p/>
@@ -39,28 +37,15 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- facade == null ||
- zone == null);
+ return !(
+ facade == null ||
+ zone == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain community indicator results.
* <p/>
@@ -39,8 +37,6 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
protected String zone;
@@ -48,22 +44,11 @@
protected String indicator;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null ||
- facade == null ||
- zone == null ||
- indicator == null);
+ return !(
+ facade == null ||
+ zone == null ||
+ indicator == null);
}
@Override
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,86 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.util.DataType;
-import org.apache.commons.collections4.CollectionUtils;
-
-import java.util.List;
-import java.util.Locale;
-
-/**
- * Request to extract data.
- * <p/>
- * Created on 3/9/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class GetSpeciesListForExtractRawDataAndResultsRequest implements CoserRequest {
-
- private static final long serialVersionUID = 1L;
-
- protected Locale locale;
-
- protected List<String> zoneList;
-
- protected List<DataType> extractTypeList;
-
- @Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
- public boolean isFilled() {
- return !(locale == null ||
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList));
- }
-
- public List<DataType> getExtractTypeList() {
- return extractTypeList;
- }
-
- public void setExtractTypeList(List<DataType> extractTypeSet) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
- this.extractTypeList = extractTypeSet;
- }
-
- public List<String> getZoneList() {
- return zoneList;
- }
-
- public void setZoneList(List<String> zoneList) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
- this.zoneList = zoneList;
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain available zones for community indicator results.
* <p/>
@@ -39,27 +37,14 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
@Override
public boolean isFilled() {
- return !(locale == null || facade == null);
+ return !(facade == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public String getFacade() {
return facade;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -27,7 +27,6 @@
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
-import java.util.Locale;
/**
* Request to extract data.
@@ -37,34 +36,23 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class GetZonesForExtractRawDataAndResultsRequest implements CoserRequest {
+public class GetZonesForExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware {
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected List<String> zoneList;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null || CollectionUtils.isEmpty(zoneList));
+ return !(CollectionUtils.isEmpty(zoneList));
}
+ @Override
public List<String> getZoneList() {
return zoneList;
}
+ @Override
public void setZoneList(List<String> zoneList) {
Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
this.zoneList = zoneList;
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain raw data results.
* <p/>
@@ -39,24 +37,11 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public boolean isFilled() {
- return !(locale == null || facade == null);
+ return !(facade == null);
}
@Override
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain available zones for map results.
* <p/>
@@ -39,27 +37,14 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
@Override
public boolean isFilled() {
- return !(locale == null || facade == null);
+ return !(facade == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public String getFacade() {
return facade;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,8 +25,6 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.result.CoserRequest;
-import java.util.Locale;
-
/**
* Request to obtain available zones for community indicator results.
* <p/>
@@ -39,27 +37,14 @@
private static final long serialVersionUID = 1L;
- protected Locale locale;
-
protected String facade;
@Override
public boolean isFilled() {
- return !(locale == null || facade == null);
+ return !(facade == null);
}
@Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
public String getFacade() {
return facade;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,5 +1,5 @@
/**
- * Differents implementations of {@link fr.ifremer.coser.result.CoserRequest}.
+ * Implementations of {@link fr.ifremer.coser.result.CoserRequest}.
*
* @since 1.5
*/
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,65 @@
+package fr.ifremer.coser.result.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserResult;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.lang3.tuple.Pair;
+
+import java.io.File;
+import java.util.Map;
+
+/**
+ * Created on 3/15/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ExtractRawDataAndResultsResult implements CoserResult {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String source;
+
+ protected final MultiKeyMap<String, File> pdfMaps;
+
+ protected final Map<String, Pair<File, String>> pdfCharts;
+
+ public ExtractRawDataAndResultsResult(String source,
+ MultiKeyMap<String, File> pdfMaps,
+ Map<String, Pair<File, String>> pdfCharts) {
+ this.source = source;
+ this.pdfMaps = pdfMaps;
+ this.pdfCharts = pdfCharts;
+ }
+
+ @Override
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public Pair<MultiKeyMap<String, File>, Map<String, Pair<File, String>>> getResult() {
+ return Pair.of(pdfMaps, pdfCharts);
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/ExtractRawDataAndResultsResult.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/FileResult.java (from rev 1134, trunk/coser-business/src/main/java/fr/ifremer/coser/result/FileResult.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/FileResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/FileResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,75 @@
+package fr.ifremer.coser.result.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.CoserResult;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+
+/**
+ * A result with only one file.
+ * <p/>
+ * A useful method is offered to obtain directly a {@link InputStream} from the result file ({@link #getInputStream()}).
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class FileResult implements CoserResult {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String source;
+
+ protected final File file;
+
+ public FileResult(String source, File file) {
+ this.file = file;
+ this.source = source;
+ }
+
+ @Override
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public File getResult() {
+ return file;
+ }
+
+ public InputStream getInputStream() {
+ try {
+ InputStream inputStream = new FileInputStream(file);
+ return inputStream;
+ } catch (FileNotFoundException e) {
+ // should never happen ?
+ throw new CoserTechnicalException("Could not find file: " + file, e);
+ }
+ }
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/MapResult.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/MapResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/MapResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,58 @@
+package fr.ifremer.coser.result.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserResult;
+
+import java.util.Map;
+
+/**
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class MapResult implements CoserResult {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String source;
+
+ protected final Map<String, String> map;
+
+ public MapResult(String source, Map<String, String> map) {
+ this.map = map;
+ this.source = source;
+ }
+
+ @Override
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public Map<String, String> getResult() {
+ return map;
+ }
+
+}
\ No newline at end of file
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/VoidResult.java (from rev 1145, trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/VoidResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/VoidResult.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,52 @@
+package fr.ifremer.coser.result.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserResult;
+
+/**
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class VoidResult implements CoserResult {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String source;
+
+ public VoidResult(String source) {
+ this.source = source;
+ }
+
+ @Override
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public Void getResult() {
+ return null;
+ }
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,28 @@
+/**
+ * Implementations of {@link fr.ifremer.coser.result.CoserResult}.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/result/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Charts.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Charts.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Charts.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,275 @@
+package fr.ifremer.coser.result.util;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.storage.DataStorageWalker;
+import org.apache.commons.lang3.StringUtils;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.CategoryAxis;
+import org.jfree.chart.axis.CategoryLabelPositions;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.plot.CategoryPlot;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.renderer.category.CategoryItemRenderer;
+import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
+import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
+import org.nuiton.i18n.I18n;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Useful methods to generate charts.
+ * <p/>
+ * Created on 3/15/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class Charts {
+
+ public File generateChartFile(String prefix,
+ JFreeChart chart,
+ int width,
+ int height) {
+ try {
+ File file = File.createTempFile(prefix, ".png");
+ file.deleteOnExit();
+ ChartUtilities.saveChartAsPNG(file, chart, width, height);
+ return file;
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save chart", ex);
+ }
+ }
+
+ public String getYearChartTitle(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ String yearAxis = I18n.l(locale, "coser.business.year");
+// String yearAxis = "Year";
+// if ("fr".equals(locale.getLanguage())) {
+// yearAxis = "Ann\u00E9e";
+// } else if ("es".equals(locale.getLanguage())) {
+// yearAxis = "A\u00F1o";
+// }
+ return yearAxis;
+ }
+
+ public JFreeChart generateCommunityChart(Locale locale,
+ ExtractGraphDataWalker walker,
+ IndicatorMap indicatorMap,
+ String indicator,
+ String chartTitle) {
+
+ String indicatorName = indicatorMap.getIndicatorValue(locale, indicator);
+
+ int multiplicator = walker.getMultiplicator();
+ int minYear = walker.getMinYear();
+ int maxYear = walker.getMaxYear();
+ Map<Integer, Double[]> graphData = walker.getGraphData();
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ String yearAxis = getYearChartTitle(locale);
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+
+ String unit = indicatorMap.getIndicatorUnit(indicator);
+ // label horizontaux
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(chartTitle, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ return chart;
+ }
+
+ public JFreeChart generatePopulationChart(Locale locale,
+ ExtractGraphDataWalker walker,
+ IndicatorMap indicatorMap,
+ String indicator,
+ String title) {
+
+ if (!walker.isIndicatorFound()) {
+ // indicator not found
+ return null;
+ }
+
+ int multiplicator = walker.getMultiplicator();
+ int minYear = walker.getMinYear();
+ int maxYear = walker.getMaxYear();
+ Map<Integer, Double[]> graphData = walker.getGraphData();
+
+ String indicatorName = indicatorMap.getIndicatorValue(locale, indicator);
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ String yearAxis = getYearChartTitle(locale);
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+
+ // label horizontaux
+ String unit = indicatorMap.getIndicatorUnit(indicator);
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ return chart;
+ }
+
+ /**
+ * To extract graph data from a indicator data storage.
+ */
+ public static abstract class ExtractGraphDataWalker implements DataStorageWalker {
+
+ int multiplicator = 1;
+
+ int minYear = Integer.MAX_VALUE;
+
+ int maxYear = Integer.MIN_VALUE;
+
+ boolean indicatorFound = false;
+
+ Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
+
+ protected abstract String getEstimationData(String... tuple);
+
+ protected abstract String getEcartData(String... tuple);
+
+ protected abstract String getYearData(String... tuple);
+
+ @Override
+ public void onRow(String... tuple) {
+
+ indicatorFound = true;
+
+ Double estimation = Double.parseDouble(getEstimationData(tuple));
+ Double ecart = Double.parseDouble(getEcartData(tuple));
+ int year = Integer.parseInt(getYearData(tuple));
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
+
+ // si les données sont énormes, on affiche les données
+ // / multiplicator et on le mentionne dans la légende
+ if (estimation > 1e9) {
+ multiplicator = 1000000;
+ }
+ if (estimation > 1e6 && multiplicator < 1000000) {
+ multiplicator = 1000;
+ }
+ }
+
+ public int getMultiplicator() {
+ return multiplicator;
+ }
+
+ public int getMinYear() {
+ return minYear;
+ }
+
+ public int getMaxYear() {
+ return maxYear;
+ }
+
+ public boolean isIndicatorFound() {
+ return indicatorFound;
+ }
+
+ public Map<Integer, Double[]> getGraphData() {
+ return graphData;
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Charts.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,122 @@
+package fr.ifremer.coser.result.util;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.CoserRequestContext;
+import fr.ifremer.coser.result.result.ExtractRawDataAndResultsResult;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.ZipUtil;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Useful methods for extract commands.
+ * Created on 3/15/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class Extracts {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(Extracts.class);
+
+ public File assemblyExtractResult(CoserRequestContext context,
+ File extractDirectory,
+ List<String> zoneList,
+ List<ExtractRawDataAndResultsResult> results) {
+
+ Locale locale = context.getLocale();
+
+ // merge all results
+ MultiKeyMap<String, File> pdfMaps = new MultiKeyMap<String, File>();
+ Map<String, Pair<File, String>> pdfCharts = Maps.newHashMap();
+
+ for (ExtractRawDataAndResultsResult result : results) {
+ Pair<MultiKeyMap<String, File>, Map<String, Pair<File, String>>> repositoryResult = result.getResult();
+ MultiKeyMap<String, File> pdfMap = repositoryResult.getLeft();
+ Map<String, Pair<File, String>> pdfChart = repositoryResult.getRight();
+ if (MapUtils.isNotEmpty(pdfMap)) {
+ pdfMaps.putAll(pdfMap);
+ }
+ if (MapUtils.isNotEmpty(pdfChart)) {
+ pdfCharts.putAll(pdfChart);
+ }
+
+ }
+
+ Reports reports = context.getReports();
+
+ // generate pdf if necessary
+ if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Generated Extract PDF");
+ }
+ reports.generateExtractPDF(extractDirectory,
+ zoneList,
+ pdfMaps,
+ pdfCharts,
+ context.getZoneMap(),
+ locale);
+ }
+
+ // fichier de décharge en pdf
+ if (log.isDebugEnabled()) {
+ log.debug("Generated decharge PDF");
+ }
+ String filename = Reports.getDechargeFilename(locale);
+ File dechargePDF = new File(extractDirectory, filename);
+ reports.generateDechargePDF(dechargePDF, locale, null, null);
+
+ // make zip
+ if (log.isDebugEnabled()) {
+ log.debug("Make final archive");
+ }
+
+ try {
+ File resultZip = File.createTempFile("coser-extract-", ".zip");
+ resultZip.deleteOnExit();
+ ZipUtil.compress(resultZip, extractDirectory);
+
+ // clean directory
+ FileUtils.deleteDirectory(extractDirectory.getParentFile());
+ return resultZip;
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't create zip file", ex);
+ } finally {
+ // clean directory
+ FileUtils.deleteQuietly(extractDirectory.getParentFile());
+ }
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Extracts.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java (from rev 1141, trunk/coser-business/src/main/java/fr/ifremer/coser/result/Reports.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/Reports.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,451 @@
+package fr.ifremer.coser.result.util;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.itextpdf.text.DocumentException;
+import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.CoserUtils;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.Project;
+import fr.ifremer.coser.bean.RSufiResult;
+import fr.ifremer.coser.bean.RSufiResultPath;
+import fr.ifremer.coser.bean.Selection;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import freemarker.cache.ClassTemplateLoader;
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+import org.apache.commons.collections4.keyvalue.MultiKey;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
+import org.w3c.dom.Document;
+import org.xhtmlrenderer.pdf.ITextRenderer;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import static org.nuiton.i18n.I18n.l;
+
+/**
+ * For reports generation.
+ * <p/>
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class Reports {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(Reports.class);
+
+ /** Freemarker. */
+ protected Configuration freemarkerConfiguration;
+
+ public Reports() {
+
+ freemarkerConfiguration = new Configuration();
+
+ // needed to overwrite "Defaults to default system encoding."
+ // fix encoding issue on some systems
+ freemarkerConfiguration.setEncoding(Locale.getDefault(), "UTF-8");
+
+ // specific template loader to get template from jars (classpath)
+ ClassTemplateLoader templateLoader = new ClassTemplateLoader(Reports.class, "/ftl");
+ freemarkerConfiguration.setTemplateLoader(templateLoader);
+
+ // pour les maps dans les template (entre autre)
+ freemarkerConfiguration.setObjectWrapper(new BeansWrapper());
+ }
+
+ public static String getDechargeFilename(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ String filename = I18n.l(locale, "coser.business.dataDisclaimer.filename");
+// if (locale != null && "fr".equals(locale.getLanguage())) {
+// filename = "DechargeDonnees.pdf";
+// } else if (locale != null && "es".equals(locale.getLanguage())) {
+// filename = "DatosDeExencionDeResponsabilidad.pdf";
+// } else {
+// filename = "DataDisclaimer.pdf";
+// }
+ return filename;
+ }
+
+ /**
+ * Genere le fichier PDF d'information sur les espèces incluses dans les
+ * calculs des indicateurs de communautés, à jointe à chaque téléchargement.
+ *
+ * @param path path to result
+ * @param resultDirectory result directory
+ * @param locale locale
+ * @param indicatorLocalizedMap localized indicator map
+ * @return generated pdf file
+ */
+ public File generateMetaFilePDF(RSufiResultPath path,
+ File resultDirectory,
+ Locale locale,
+ IndicatorMap indicatorLocalizedMap) {
+
+ Project project = path.getProject();
+ Selection selection = path.getSelection();
+ RSufiResult rsufiResult = path.getRsufiResult();
+
+ File result = null;
+
+ // chargement du reftax et des code types especes pour connaitre
+ // le type des especes de poissons
+ // parcourt du fichier des types de données
+ Map<String, Integer> refTaxSpeciesNumSys = new HashMap<String, Integer>();
+ Map<String, String> refTaxSpeciesName = new HashMap<String, String>();
+ Iterator<String[]> itReftax = project.getRefTaxSpecies().iterator(true);
+ while (itReftax.hasNext()) {
+ String[] tuple = itReftax.next();
+ // "C_Perm","NumSys","NivSys","C_VALIDE","L_VALIDE","AA_VALIDE","C_TxP\u00E8re","Taxa"
+ String speciesCode = tuple[3];
+ Integer iNumSys = Integer.valueOf(tuple[1]);
+ refTaxSpeciesNumSys.put(speciesCode, iNumSys);
+
+ // fix html entities bug
+ String speciesSciName = StringEscapeUtils.escapeXml(tuple[4]);
+ String speciesAuthor = StringEscapeUtils.escapeXml(tuple[5]);
+
+ // TODO little hack for italic species
+ refTaxSpeciesName.put(speciesCode, "<span style='font-style:italic'>" + speciesSciName + "</span> " + speciesAuthor);
+ }
+
+ // code type / especes
+ Map<String, Integer[]> specyTypes = new HashMap<String, Integer[]>();
+ Iterator<String[]> itTypeSpecies = project.getTypeEspeces().iterator(true);
+ while (itTypeSpecies.hasNext()) {
+ // "Types";"Commentaire";"NumSys min";"NumSys max","Code"
+ String[] tuple = itTypeSpecies.next();
+ String specyTypeCode = tuple[4];
+
+ Integer iMinNumSys = Integer.valueOf(tuple[2]);
+ Integer iMaxNumSys = Integer.valueOf(tuple[3]);
+ specyTypes.put(specyTypeCode, new Integer[]{iMinNumSys, iMaxNumSys});
+ }
+
+ // le fichier estpopind
+ File estComIndFile = new File(resultDirectory, rsufiResult.getEstComIndName());
+
+ // donnees intermediare (map liste id > liste des indicateurs)
+ Map<String, SortedSet<String>> indicatorMap = new HashMap<String, SortedSet<String>>();
+
+ // le resutat sera une map complexe
+ // map liste id > liste des especes (nom complet)
+ Map<String, SortedSet<String>> speciesMap = new HashMap<String, SortedSet<String>>();
+
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ DataStorage dataStorage = DataStorages.load(estComIndFile, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
+ Iterator<String[]> estComIndIterator = dataStorage.iterator(true);
+ while (estComIndIterator.hasNext()) {
+ String[] tuple = estComIndIterator.next();
+
+ String indicatorCode = tuple[1];
+ String listIdCode = tuple[2]; // c1, p2, T3 ...
+
+ String listNumber = listIdCode.substring(1); // 1, 2, 3
+
+ // get indicator list
+ SortedSet<String> indicatorList = indicatorMap.get(listNumber);
+ if (indicatorList == null) {
+ indicatorList = new TreeSet<String>();
+ indicatorMap.put(listNumber, indicatorList);
+ }
+
+ // get indicator full name
+ String indicatorName = indicatorLocalizedMap.getIndicatorValue(locale, indicatorCode);
+ // peut arriver pour les indicateurs inconnu par coser
+ if (indicatorName != null) {
+ indicatorList.add(indicatorName);
+ }
+ }
+
+ // seconde pass, remplit la map speciesMap avec les listes configurées
+ // dans la selection
+ for (String listNumber : indicatorMap.keySet()) {
+ List<String> selectionSpeciesList = null;
+ if ("1".equals(listNumber)) {
+ selectionSpeciesList = selection.getSelectedSpecies();
+ } else if ("2".equals(listNumber)) {
+ selectionSpeciesList = selection.getSelectedSpeciesOccDens();
+ } else if ("3".equals(listNumber)) {
+ selectionSpeciesList = selection.getSelectedSpeciesSizeAllYear();
+ } else if ("4".equals(listNumber)) {
+ selectionSpeciesList = selection.getSelectedSpeciesMaturity();
+ }
+
+ if (selectionSpeciesList != null) {
+ SortedSet<String> speciesList = new TreeSet<String>();
+
+ for (String speciesCode : selectionSpeciesList) {
+ // get species full name
+ String speciesName = refTaxSpeciesName.get(speciesCode);
+
+ // recupere le code type de l'espece, "m", "c", "p" ...
+ Integer speciesNumSys = refTaxSpeciesNumSys.get(speciesCode);
+ for (Map.Entry<String, Integer[]> speciesTypeEntry : specyTypes.entrySet()) {
+ String speciesTypeCode = speciesTypeEntry.getKey();
+ Integer[] bound = speciesTypeEntry.getValue();
+
+ if (speciesNumSys >= bound[0] && speciesNumSys <= bound[1]) {
+ speciesName = "(" + speciesTypeCode + ") " + speciesName;
+ break;
+ }
+ }
+ // end code type espece
+
+ speciesList.add(speciesName);
+ }
+ speciesMap.put(listNumber, speciesList);
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't get species list for list id " + listNumber);
+ }
+ }
+ }
+
+ OutputStream os = null;
+ try {
+ // render freemarker template
+ Template mapTemplate = freemarkerConfiguration.getTemplate("metainfo.ftl", locale);
+
+ Map<String, Object> root = new HashMap<String, Object>();
+ root.put("indicatorsMap", indicatorMap);
+ root.put("speciesMap", speciesMap);
+
+ Writer out = new StringWriter();
+ mapTemplate.process(root, out);
+ out.flush();
+
+ // get content as w3c document
+ Document document = CoserUtils.parseDocument(out.toString());
+
+ // render template output as pdf
+ result = File.createTempFile("coser-metainfo-", ".pdf");
+ result.deleteOnExit();
+ os = new FileOutputStream(result);
+
+ ITextRenderer renderer = new ITextRenderer();
+ renderer.setDocument(document, null);
+ renderer.layout();
+ renderer.createPDF(os);
+
+ os.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't generate meta info file", ex);
+ } catch (TemplateException ex) {
+ throw new CoserTechnicalException("Can't generate meta info file", ex);
+ } catch (DocumentException ex) {
+ throw new CoserTechnicalException("Can't generate meta info file", ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+ }
+
+ return result;
+ }
+
+ /**
+ * Genere le PDF dynamique de decharge à partir du template freemarker.
+ *
+ * @param disclamerPdf pdf file to generate
+ * @param locale generated pdf locale
+ */
+ public void generateDechargePDF(File disclamerPdf, Locale locale, Date updateDate, String surveyName) {
+
+ OutputStream os = null;
+
+ try {
+ // get some info to put into pdf
+// Date updateDate = getLastDataUpdateDate();
+
+// // il se peut que pour l'extraction un fichier de décharge ne soit
+// // pas généré pour une campagne en particulier
+// // on passe un nom vide a freemarker
+// String surveyName = "";
+// if (resultDirectory != null && rSufiResult != null) {
+// surveyName = projectService.getProjectSurveyName(resultDirectory, rSufiResult);
+// }
+
+ // render freemarker template
+ Template mapTemplate = freemarkerConfiguration.getTemplate("decharge.ftl", locale);
+
+ Map<String, Object> root = new HashMap<String, Object>();
+ root.put("updateDate", updateDate);
+ root.put("surveyName", surveyName);
+
+ Writer out = new StringWriter();
+ mapTemplate.process(root, out);
+ out.flush();
+
+ // get content as w3c document
+ Document document = CoserUtils.parseDocument(out.toString());
+
+ // render template output as pdf
+ os = new FileOutputStream(disclamerPdf);
+
+ ITextRenderer renderer = new ITextRenderer();
+ renderer.setDocument(document, null);
+ renderer.layout();
+ renderer.createPDF(os);
+
+ os.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't generate decharge file", ex);
+ } catch (TemplateException ex) {
+ throw new CoserTechnicalException("Can't generate decharge file", ex);
+ } catch (DocumentException ex) {
+ throw new CoserTechnicalException("Can't generate decharge file", ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+ }
+ }
+
+ /**
+ * Generate pdf file filled with maps and charts.
+ *
+ * @param directory directory to generate pdf to
+ * @param zones zones ids
+ * @param pdfMaps pdf maps (can be {@code null})
+ * @param pdfCharts pdf charts (can be {@code null})
+ * @param zoneMap zoneMap (to get zone fullnames)
+ * @param locale locale to use for translations
+ */
+ public void generateExtractPDF(File directory,
+ List<String> zones,
+ MultiKeyMap<String, File> pdfMaps,
+ Map<String, Pair<File, String>> pdfCharts,
+ ZoneMap zoneMap,
+ Locale locale) {
+
+ for (String zone : zones) {
+ Collection<File> toDelete = new ArrayList<File>();
+ OutputStream os = null;
+
+ try {
+ StringBuilder htmlContent = new StringBuilder();
+ htmlContent.append("<html><head>");
+ htmlContent.append("<title>").append(l(locale, "coser.business.extract.extracttitle")).append("</title>");
+ htmlContent.append("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />");
+ htmlContent.append("</head><body>");
+
+ if (pdfMaps != null) {
+ for (Map.Entry<MultiKey<? extends String>, File> mapEntry : pdfMaps.entrySet()) {
+ String zoneId = mapEntry.getKey().getKey(0);
+ if (zoneId.equals(zone)) {
+ String speciesName = mapEntry.getKey().getKey(1);
+ File file = mapEntry.getValue();
+
+ String zoneName = zoneMap.getZoneFullName(zoneId);
+ htmlContent.append("<div style='page-break-after: always'>");
+ htmlContent.append("<p>").append(zoneName).append(" - ").append(speciesName).append("</p>");
+ htmlContent.append("<img src='file://").append(file.getAbsolutePath()).append("' />");
+ htmlContent.append("</div>");
+ }
+ }
+ }
+
+ if (pdfCharts != null) {
+ for (Map.Entry<String, Pair<File, String>> chartFileAndData : pdfCharts.entrySet()) {
+ String zoneId = chartFileAndData.getKey();
+ if (zoneId.equals(zone)) {
+ File chartFile = chartFileAndData.getValue().getLeft();
+ String content = chartFileAndData.getValue().getRight();
+
+ htmlContent.append("<div style='page-break-after: always'>");
+ htmlContent.append("<img src='file://");
+ htmlContent.append(chartFile.getAbsolutePath());
+ htmlContent.append("' />");
+ htmlContent.append("<br />");
+ htmlContent.append(l(locale, "coser.business.extract.extractdata")).append(" :");
+ htmlContent.append("<pre>").append(content).append("</pre>");
+ htmlContent.append("</div>");
+
+ // les graphiques ont été générés, a supprimer donc
+ // a ne surtout pas faire avec les cartes !!!
+ toDelete.add(chartFile);
+ }
+ }
+ }
+
+ htmlContent.append("</body></html>");
+
+ // get content as w3c document
+ Document document = CoserUtils.parseDocument(htmlContent.toString());
+
+ // render template output as pdf
+ // remove accents and strange characters from zone display name
+ String zoneDisplay = zoneMap.getZoneFullName(zone);
+ zoneDisplay = StringUtils.stripAccents(zoneDisplay);
+ zoneDisplay = zoneDisplay.replaceAll("[^\\w- ]", "_");
+ File pdfFile = new File(directory, zoneDisplay + ".pdf");
+ os = new FileOutputStream(pdfFile);
+
+ ITextRenderer renderer = new ITextRenderer();
+ renderer.setDocument(document, null);
+ renderer.layout();
+ renderer.createPDF(os);
+
+ os.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't generate log pdf", ex);
+ } catch (DocumentException ex) {
+ throw new CoserTechnicalException("Can't generate log pdf", ex);
+ } finally {
+ IOUtils.closeQuietly(os);
+
+ // delete file collection
+ for (File file : toDelete) {
+ FileUtils.deleteQuietly(file);
+ }
+ }
+ }
+ }
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/package-info.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/package-info.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/package-info.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,28 @@
+/**
+ * Useful tools used by commands.
+ *
+ * @since 1.5
+ */
+package fr.ifremer.coser.result.util;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/util/package-info.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorageWalker.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorageWalker.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorageWalker.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,41 @@
+package fr.ifremer.coser.storage;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * To walk throw a data storage.
+ * <p/>
+ * Created on 3/13/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface DataStorageWalker {
+
+ /**
+ * Invoked for each row of the data storage.
+ *
+ * @param row the current row
+ */
+ void onRow(String... row);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorageWalker.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/storage/DataStorages.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -23,6 +23,8 @@
*/
import au.com.bytecode.opencsv.CSVReader;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
import fr.ifremer.coser.CoserConstants;
import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.services.CommonService;
@@ -38,7 +40,9 @@
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
+import java.io.StringWriter;
import java.io.Writer;
+import java.util.Iterator;
import static org.nuiton.i18n.I18n.t;
@@ -142,6 +146,24 @@
return file;
}
+ public static String toString(DataStorage storage) {
+ String rawDataText;
+ StringWriter writer = null;
+ try {
+ writer = new StringWriter();
+ DataStorages.save(storage, writer);
+ rawDataText = writer.toString();
+ try {
+ writer.close();
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not close writer", e);
+ }
+ } finally {
+ IOUtils.closeQuietly(writer);
+ }
+ return rawDataText;
+ }
+
/**
* Save a datastorage to a writer.
*
@@ -177,4 +199,98 @@
IOUtils.closeQuietly(writer);
}
}
+
+ /**
+ * //TODO Use a walker
+ *
+ * @param storage the storage to test
+ * @param predicate predicate to match at least on one row
+ * @param skipHeader to skip the header of storage
+ * @param <P> type of predicate
+ * @return {@code true} if a row matchs the predicate
+ * @since 1.5
+ */
+ public static <P extends Predicate<String[]>> boolean match(DataStorage storage,
+ P predicate,
+ boolean skipHeader) {
+ Preconditions.checkNotNull(storage);
+ Preconditions.checkNotNull(predicate);
+
+ Iterator<String[]> iterator = storage.iterator(skipHeader);
+
+ boolean result = false;
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (predicate.apply(tuple)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Gets a sub storage of all matching rows for the given predicate on the given storage.
+ * <p/>
+ * The result header is the given one in parameter {@code header}.
+ *
+ * @param storage storage to read
+ * @param predicate predicate to match rows to include in sub storage
+ * @param header new header to use
+ * @param <P> type of predicate
+ * @return the sub storage
+ */
+ public static <P extends Predicate<String[]>> DataStorage sub(DataStorage storage,
+ P predicate,
+ String... header) {
+
+ Preconditions.checkNotNull(storage);
+ Preconditions.checkNotNull(predicate);
+ Preconditions.checkNotNull(header);
+
+ final DataStorage result = new MemoryDataStorage();
+ result.add(header);
+
+ walk(storage, predicate, new DataStorageWalker() {
+ @Override
+ public void onRow(String... row) {
+ result.add(row);
+ }
+ });
+ return result;
+ }
+
+ public static <W extends DataStorageWalker> void walk(DataStorage storage,
+ W walker) {
+
+ Preconditions.checkNotNull(storage);
+ Preconditions.checkNotNull(walker);
+
+ Iterator<String[]> iterator = storage.iterator(true);
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ walker.onRow(tuple);
+ }
+ }
+
+ public static <P extends Predicate<String[]>, W extends DataStorageWalker> void walk(DataStorage storage,
+ P predicate,
+ W walker) {
+
+ Preconditions.checkNotNull(storage);
+ Preconditions.checkNotNull(predicate);
+ Preconditions.checkNotNull(walker);
+
+ Iterator<String[]> iterator = storage.iterator(true);
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (predicate.apply(tuple)) {
+ walker.onRow(tuple);
+ }
+ }
+ }
+
}
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-15 15:11:29 UTC (rev 1146)
@@ -106,6 +106,8 @@
coser.business.data.type.population=Population indices by species by area
coser.business.data.type.source=Raw data by sampling unit (generally by haul)
coser.business.dataDisclaimer.filename=DataDisclaimer.pdf
+coser.business.echobase.community.header=Survey,Index,Species,Stratum,Year,Estimate,StandardDeviation,CV
+coser.business.echobase.population.header=Survey,Index,List,Species,Stratum,Year,Estimate,StandardDeviation,CV
coser.business.extract.creationdate=Creation date \:
coser.business.extract.extractdata=Data
coser.business.extract.extracttitle=Extract
@@ -147,6 +149,8 @@
coser.business.result.repository.type.legacy=RSufi results
coser.business.result.rsufiResultAlreadyExists=Result %s already exists \!
coser.business.resultupload.duplicatedresult=Result %s/%s/%s duplicate another result for zone %s \!
+coser.business.rsufi.community.header=Survey,Index,Species,Stratum,Year,Estimate,StandardDeviation,CV
+coser.business.rsufi.population.header=Survey,Index,List,Species,Stratum,Year,Estimate,StandardDeviation,CV
coser.business.selection.notValidatedControl=Not validated control \!
coser.business.specesList.name=%s List %s
coser.business.specesList.nameForAll=All List %s
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2014-03-15 15:11:29 UTC (rev 1146)
@@ -106,6 +106,8 @@
coser.business.data.type.population=Des indices biologiques par espèce et par zone
coser.business.data.type.source=Des données par opération d'échantillonnage (en général par trait de chalut)
coser.business.dataDisclaimer.filename=DechargeDonnees.pdf
+coser.business.echobase.community.header=Campagne,Indice,Espèce,Strate,Annee,Estimation,EcartType,CV
+coser.business.echobase.population.header=Campagne,Indice,Liste,Espèce,Strate,Annee,Estimation,EcartType,CV
coser.business.extract.creationdate=Date de création \:
coser.business.extract.extractdata=Données du graphique
coser.business.extract.extracttitle=Extraction
@@ -147,6 +149,8 @@
coser.business.result.repository.type.legacy=Résultats RSufi
coser.business.result.rsufiResultAlreadyExists=Le résultat %s existe déjà \!
coser.business.resultupload.duplicatedresult=Le résultat %s/%s/%s duplique un autre résultat pour la zone %s \!
+coser.business.rsufi.community.header=Campagne,Liste,Espèce,Strate,Annee,Estimation,EcartType,CV
+coser.business.rsufi.population.header=Campagne,Indice,Liste,Espèce,Strate,Annee,Estimation,EcartType,CV
coser.business.selection.notValidatedControl=Contrôle non validé \!
coser.business.specesList.name=%s Liste %s
coser.business.specesList.nameForAll=Tous Liste %s
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/bean/IndicatorMapTest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -47,7 +47,7 @@
@Test
public void getIndicators() {
IndicatorMap indicatorMap = new IndicatorMap(config.getWebIndicatorsFile());
- MultiKeyMap<String, String> map = indicatorMap.getMap();
+ MultiKeyMap<String, String> map = indicatorMap.map;
Assert.assertNotNull(map);
Assert.assertEquals(200, map.size());
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -50,7 +50,7 @@
EchoBaseResultRepositoryProvider provider = new EchoBaseResultRepositoryProvider(basedir);
- Set<EchoBaseResultRepository> resultRepositories = provider.loadRepositories(serviceContext);
+ Set<EchoBaseResultRepository> resultRepositories = provider.loadRepositories();
Assert.assertNotNull(resultRepositories);
Assert.assertEquals(2, resultRepositories.size());
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,7 +22,9 @@
* #L%
*/
-import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
+import fr.ifremer.coser.result.CoserCommand;
+import fr.ifremer.coser.result.CoserCommandFactory;
+import fr.ifremer.coser.result.DefaultCoserRequestContext;
import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
@@ -45,9 +47,9 @@
*/
public class EchoBaseResultRepositoryTest extends CoserTestAbstract {
- protected ResultRepositoryCommandEngine repository1;
+ protected EchoBaseResultRepository repository1;
- protected ResultRepositoryCommandEngine repository2;
+ protected EchoBaseResultRepository repository2;
@Override
public void initProjectDatabase() throws IOException {
@@ -56,14 +58,14 @@
EchoBaseResultRepositoryProvider repositoryProvider = new EchoBaseResultRepositoryProvider(projectsDirectory);
- Set<EchoBaseResultRepository> repositories = repositoryProvider.loadRepositories(serviceContext);
+ Set<EchoBaseResultRepository> repositories = repositoryProvider.loadRepositories();
for (EchoBaseResultRepository repository : repositories) {
String projectName = repository.project.getName();
if ("project1".equals(projectName)) {
- repository1 = repositoryProvider.newEngine(repository);
+ repository1 = repository;
} else if ("project2".equals(projectName)) {
- repository2 = repositoryProvider.newEngine(repository);
+ repository2 = repository;
}
}
Assume.assumeTrue("Could not find repository named *project1*", repository1 != null);
@@ -73,16 +75,24 @@
@Test
public void getAvailableZones() throws Exception {
+ CoserCommandFactory commandFactory = serviceContext.getCommandFactory();
+ DefaultCoserRequestContext requestContext =
+ new DefaultCoserRequestContext(serviceContext, Locale.FRANCE);
+
+ CoserCommand command;
+
// Map request
GetZonesForMapResultRequest mapRequest = new GetZonesForMapResultRequest();
- mapRequest.setLocale(Locale.FRANCE);
mapRequest.setFacade("atlantique");
Map<String, String> availableZones;
- Assert.assertTrue(repository1.acceptRequest(mapRequest));
- availableZones = (Map<String, String>) repository1.executeRequest(mapRequest).getResult();
+
+ command = commandFactory.newCommand(requestContext, repository1, mapRequest);
+
+ Assert.assertTrue(command.accept(mapRequest));
+ availableZones = (Map<String, String>) command.execute(mapRequest).getResult();
Assert.assertNotNull(availableZones);
Assert.assertEquals(1, availableZones.size());
Assert.assertTrue(availableZones.containsKey("gdgciem8"));
@@ -90,24 +100,25 @@
// pas de zones pour la facade
mapRequest.setFacade("mediteranee");
- Assert.assertFalse(repository1.acceptRequest(mapRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(mapRequest).getResult();
+ Assert.assertFalse(command.accept(mapRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, mapRequest).getResult();
// Assert.assertNull(availableZones);
// facade inconnue
mapRequest.setFacade("mediteranee2");
- Assert.assertFalse(repository1.acceptRequest(mapRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(mapRequest).getResult();
+ Assert.assertFalse(command.accept(mapRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, mapRequest).getResult();
// Assert.assertNull(availableZones);
// Population request
GetZonesForPopulationIndicatorResultRequest popRequest = new GetZonesForPopulationIndicatorResultRequest();
- popRequest.setLocale(Locale.FRANCE);
+ command = commandFactory.newCommand(requestContext, repository1, popRequest);
+
popRequest.setFacade("atlantique");
- Assert.assertTrue(repository1.acceptRequest(popRequest));
- availableZones = (Map<String, String>) repository1.executeRequest(popRequest).getResult();
+ Assert.assertTrue(command.accept(popRequest));
+ availableZones = (Map<String, String>) command.execute(popRequest).getResult();
Assert.assertNotNull(availableZones);
Assert.assertEquals(1, availableZones.size());
Assert.assertTrue(availableZones.containsKey("gdgciem8"));
@@ -115,24 +126,25 @@
// pas de zones pour la facade
popRequest.setFacade("mediteranee");
- Assert.assertFalse(repository1.acceptRequest(popRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(popRequest).getResult();
+ Assert.assertFalse(command.accept(popRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, popRequest).getResult();
// Assert.assertNull(availableZones);
// facade inconnue
popRequest.setFacade("mediteranee2");
- Assert.assertFalse(repository1.acceptRequest(popRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(popRequest).getResult();
+ Assert.assertFalse(command.accept(popRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, popRequest).getResult();
// Assert.assertNull(availableZones);
// Community request
GetZonesForCommunityIndicatorResultRequest comRequest = new GetZonesForCommunityIndicatorResultRequest();
- comRequest.setLocale(Locale.FRANCE);
+
+ command = commandFactory.newCommand(requestContext, repository1, comRequest);
comRequest.setFacade("atlantique");
- Assert.assertTrue(repository1.acceptRequest(comRequest));
- availableZones = (Map<String, String>) repository1.executeRequest(comRequest).getResult();
+ Assert.assertTrue(command.accept(comRequest));
+ availableZones = (Map<String, String>) command.execute(comRequest).getResult();
Assert.assertNotNull(availableZones);
Assert.assertEquals(1, availableZones.size());
Assert.assertTrue(availableZones.containsKey("gdgciem8"));
@@ -140,14 +152,14 @@
// pas de zones pour la facade
comRequest.setFacade("mediteranee");
- Assert.assertFalse(repository1.acceptRequest(comRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(comRequest).getResult();
+ Assert.assertFalse(command.accept(comRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, comRequest).getResult();
// Assert.assertNull(availableZones);
// facade inconnue
comRequest.setFacade("mediteranee2");
- Assert.assertFalse(repository1.acceptRequest(comRequest));
-// availableZones = (Map<String, String>) repository1.executeRequest(comRequest).getResult();
+ Assert.assertFalse(command.accept(comRequest));
+// availableZones = (Map<String, String>) command.execute(repository1, comRequest).getResult();
// Assert.assertNull(availableZones);
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -49,9 +49,9 @@
File basedir = config.getWebIndicatorsProjectsDirectory();
- LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(basedir);
+ LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(config, basedir);
- Set<LegacyResultRepository> resultRepositories = provider.loadRepositories(serviceContext);
+ Set<LegacyResultRepository> resultRepositories = provider.loadRepositories();
Assert.assertNotNull(resultRepositories);
Assert.assertEquals(2, resultRepositories.size());
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -30,8 +30,8 @@
import java.util.Locale;
import java.util.Map;
-import fr.ifremer.coser.CoserServiceContext;
-import fr.ifremer.coser.DefaultCoserServiceContext;
+import fr.ifremer.coser.CoserApplicationContext;
+import fr.ifremer.coser.DefaultCoserApplicationContext;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -61,7 +61,7 @@
private static final Log log = LogFactory.getLog(CoserTestAbstract.class);
protected static CoserBusinessConfig config;
- protected static CoserServiceContext serviceContext;
+ protected static CoserApplicationContext serviceContext;
protected static File testDirectory;
@@ -86,7 +86,7 @@
config.setWebIndicatorsFile(CoserTestAbstract.class.getResource("/webindicators.csv").getFile());
config.setWebZonesFile(CoserTestAbstract.class.getResource("/webzones.csv").getFile());
- serviceContext = new DefaultCoserServiceContext(config);
+ serviceContext = new DefaultCoserApplicationContext(config);
}
@AfterClass
Deleted: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -1,117 +0,0 @@
-package fr.ifremer.coser.web;
-
-/*
- * #%L
- * Coser :: Web
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero 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 Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserServiceContext;
-import fr.ifremer.coser.DefaultCoserServiceContext;
-import fr.ifremer.coser.bean.IndicatorMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.CoserResultEngine;
-import fr.ifremer.coser.services.WebService;
-import org.nuiton.config.ArgumentsParserException;
-import org.nuiton.i18n.I18n;
-import org.nuiton.i18n.init.DefaultI18nInitializer;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class CoserApplicationContext {
-
- /**
- * Shared application context.
- */
- protected static CoserApplicationContext context;
-
- public static CoserApplicationContext get() {
- Preconditions.checkState(context != null, "Application was not initialized!");
- return context;
- }
-
- public static void init() {
- context = new CoserApplicationContext();
- }
-
- public static void close() {
- context = null;
- }
-
- /**
- * Business layer context.
- */
- protected CoserServiceContext serviceContext;
-
- /**
- * Web config.
- */
- protected CoserWebConfig config;
-
- //TODO Remove this soon
- protected WebService webService;
-
- protected CoserResultEngine resultService;
-
- public CoserApplicationContext() {
-
- DefaultI18nInitializer i18nInitializer = new DefaultI18nInitializer("coser-i18n");
- // To see on screen none translated sentences
- i18nInitializer.setMissingKeyReturnNull(true);
- I18n.init(i18nInitializer, null);
-
- config = new CoserWebConfig();
-
- try {
- config.parse();
- } catch (ArgumentsParserException ex) {
- throw new CoserWebException("Can't read configuration", ex);
- }
-
- serviceContext = new DefaultCoserServiceContext(config);
-
- webService = new WebService(config);
- resultService = new CoserResultEngine(serviceContext);
- }
-
- public WebService getWebService() {
- return webService;
- }
-
- public CoserResultEngine getResultService() {
- return resultService;
- }
-
- public CoserWebConfig getConfig() {
- return config;
- }
-
- public IndicatorMap getIndicatorsMap() {
- return serviceContext.getIndicatorsMap();
- }
-
- public ZoneMap getZonesMap() {
- return serviceContext.getZonesMap();
- }
-
-}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -31,9 +31,9 @@
/**
* To listen start and end of the application.
* <p/>
- * On start we will init the application context ({@link CoserApplicationContext#init()}).
+ * On start we will init the application context ({@link CoserWebApplicationContext#init()}).
* <p/>
- * On stop, just release close the application context ({@link CoserApplicationContext#close()}).
+ * On stop, just release close the application context ({@link CoserWebApplicationContext#close()}).
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.5
@@ -50,7 +50,7 @@
if (log.isInfoEnabled()) {
log.info("Application starting at " + new Date() + "...");
}
- CoserApplicationContext.init();
+ CoserWebApplicationContext.init();
}
@Override
@@ -58,6 +58,6 @@
if (log.isInfoEnabled()) {
log.info("Application is ending at " + new Date() + "...");
}
- CoserApplicationContext.close();
+ CoserWebApplicationContext.close();
}
}
Copied: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java (from rev 1145, trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java)
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserWebApplicationContext.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -0,0 +1,81 @@
+package fr.ifremer.coser.web;
+
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero 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 Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.DefaultCoserApplicationContext;
+import fr.ifremer.coser.result.CoserRequestExecutor;
+import fr.ifremer.coser.services.WebService;
+import org.nuiton.i18n.I18n;
+import org.nuiton.i18n.init.DefaultI18nInitializer;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserWebApplicationContext extends DefaultCoserApplicationContext {
+
+ /**
+ * Shared application context.
+ */
+ protected static CoserWebApplicationContext context;
+
+ public static CoserWebApplicationContext get() {
+ Preconditions.checkState(context != null, "Application was not initialized!");
+ return context;
+ }
+
+ public static void init() {
+
+ DefaultI18nInitializer i18nInitializer = new DefaultI18nInitializer("coser-i18n");
+ // To see on screen none translated sentences
+ i18nInitializer.setMissingKeyReturnNull(true);
+ I18n.init(i18nInitializer, null);
+
+ context = new CoserWebApplicationContext();
+ }
+
+ public static void close() {
+ context = null;
+ }
+
+ public CoserWebApplicationContext() {
+ super(new CoserWebConfig());
+ }
+
+ @Override
+ public CoserWebConfig getConfig() {
+ return (CoserWebConfig) config;
+ }
+
+ public WebService getWebService() {
+ return new WebService(config);
+ }
+
+ public CoserRequestExecutor getRequestExecutor() {
+ CoserRequestExecutor service = new CoserRequestExecutor(this);
+ return service;
+ }
+
+}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -25,15 +25,15 @@
import com.google.common.collect.Maps;
import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserRequestContext;
+import fr.ifremer.coser.result.CoserRequestExecutor;
import fr.ifremer.coser.result.CoserResult;
-import fr.ifremer.coser.result.CoserResultEngine;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.DefaultCoserRequestContext;
import fr.ifremer.coser.result.repository.ResultRepositoryType;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
-import fr.ifremer.coser.result.request.CoserRequestSpeciesAware;
-import fr.ifremer.coser.result.request.CoserRequestZoneAware;
import fr.ifremer.coser.result.request.DeleteResultsRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.result.MapResult;
import fr.ifremer.coser.services.WebService;
import fr.ifremer.coser.web.actions.common.CoserAction;
@@ -57,33 +57,24 @@
protected final CoserAction action;
- protected final WebService webService;
+ protected WebService webService;
- protected final CoserResultEngine resultService;
+ protected CoserRequestExecutor resultService;
- protected final CoserWebConfig config;
+ protected final CoserWebApplicationContext applicationContext;
- protected final CoserApplicationContext applicationContext;
-
public ServiceHelper(CoserAction action) {
Preconditions.checkNotNull(action);
- this.applicationContext = CoserApplicationContext.get();
+ this.applicationContext = CoserWebApplicationContext.get();
this.action = action;
- this.webService = applicationContext.getWebService();
- this.resultService = applicationContext.getResultService();
- this.config = applicationContext.getConfig();
}
- public Map<String, ResultRepositoryType> getRepositoryTypes() {
- return resultService.getRepositoryTypes();
- }
-
// --------------------------------------------------------------------- //
// --- Facade methods -------------------------------------------------- //
// --------------------------------------------------------------------- //
public Map<String, String> getFacades() {
- return applicationContext.getZonesMap().getFacades();
+ return applicationContext.getZoneMap().getFacades();
}
public String getFacadeDisplayName(String facade) {
@@ -96,37 +87,24 @@
// --------------------------------------------------------------------- //
public Map<String, List<String>> getZoneByFacade() {
- return applicationContext.getZonesMap().getZoneByFacade();
+ return applicationContext.getZoneMap().getZoneByFacade();
}
public Map<String, String> getZonePictures() {
- return applicationContext.getZonesMap().getZonePictures();
+ return applicationContext.getZoneMap().getZonePictures();
}
public Map<String, String> getZoneMetaInfo(Locale locale) {
- return applicationContext.getZonesMap().getZoneMetaInfo(locale);
+ return applicationContext.getZoneMap().getZoneMetaInfo(locale);
}
- //FIXME Remove this
- public Map<String, String> getAvailableZones(CoserRequest request) {
- return getMultipleResultAsMap(request);
- }
-
-// public Map<String, String> getZoneForFacade() {
-// try {
-// return webService.getZoneForFacade(null, false, false);
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not obtain zone for facades", e);
-// }
-// }
-
public String getZoneFullName(String zoneId) {
- return applicationContext.getZonesMap().getZoneFullName(zoneId);
+ return applicationContext.getZoneMap().getZoneFullName(zoneId);
}
- public String getZoneDisplayName(CoserRequestZoneAware request) {
- Map<String, String> availableZones = getAvailableZones(request);
- String displayName = availableZones.get(request.getZone());
+ public String getZoneDisplayName(CoserRequest request, String zone) {
+ Map<String, String> availableZones = getMultipleResultAsMap(request);
+ String displayName = availableZones.get(zone);
return displayName;
}
@@ -134,14 +112,9 @@
// --- Species methods ------------------------------------------------- //
// --------------------------------------------------------------------- //
- //FIXME Remove this
- public Map<String, String> getAvailableSpecies(CoserRequest request) {
- return resultService.getAvailableSpecies(request);
- }
-
- public String getSpeciesDisplayName(CoserRequestSpeciesAware request) {
- Map<String, String> availableSpecies = getAvailableSpecies(request);
- String displayName = availableSpecies.get(request.getSpecies());
+ public String getSpeciesDisplayName(CoserRequest request, String species) {
+ Map<String, String> availableSpecies = getMultipleResultAsMap(request);
+ String displayName = availableSpecies.get(species);
return displayName;
}
@@ -149,30 +122,9 @@
// --- Indicator methods ----------------------------------------------- //
// --------------------------------------------------------------------- //
- //FIXME Remove this
- public Map<String, String> getAvailableIndicators(CoserRequest request) {
- return resultService.getAvailableIndicators(request);
- }
-
-// public Map<String, String> getIndicators(List<String> selectZones, DataType dataType) {
-// try {
-// return webService.getIndicators(selectZones, dataType, action.getLocale());
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not obtain indicators", e);
-// }
-// }
-
-// public Map<String, String> getSpecies(List<String> selectZones) {
-// try {
-// return webService.getSpecies(selectZones, false);
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not obtain species", e);
-// }
-// }
-
- public String getIndicatorDisplayName(AbstractGetIndicatorResultRequest request) {
- Map<String, String> availableIndicators = getAvailableIndicators(request);
- String displayName = availableIndicators.get(request.getIndicator());
+ public String getIndicatorDisplayName(CoserRequest request, String indicator) {
+ Map<String, String> availableIndicators = getMultipleResultAsMap(request);
+ String displayName = availableIndicators.get(indicator);
return displayName;
}
@@ -180,26 +132,12 @@
// --- Result methods -------------------------------------------------- //
// --------------------------------------------------------------------- //
-// public Map<String, String> getIndicatorsResultsPerZone() {
-// try {
-// return webService.getIndicatorsResultsPerZone();
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not get indicators results per zone", e);
-// }
-// }
-
-// public Map<String, String> getMapsResultsPerZone() {
-// try {
-// return webService.getMapsResultsPerZone();
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not get map results per zone", e);
-// }
-// }
-
public FileResult getFileResult(CoserRequest request) {
- CoserResult result = resultService.getUniqueResult(request);
+ CoserRequestContext context = newRequestContext();
+ CoserResult result = getRequestExecutor().executeUnique(context, request);
+
if (!(result instanceof FileResult)) {
throw new CoserWebException(
"Result should a FileResult, but was: " + result);
@@ -210,8 +148,10 @@
public MapResult getMapResult(CoserRequest request) {
- CoserResult result = resultService.getUniqueResult(request);
+ CoserRequestContext context = newRequestContext();
+ CoserResult result = getRequestExecutor().executeUnique(context, request);
+
if (!(result instanceof MapResult)) {
throw new CoserWebException(
"Result should a MapResult, but was: " + result);
@@ -222,8 +162,10 @@
public Map<String, String> getMultipleResultAsMap(CoserRequest request) {
- List<CoserResult> result = resultService.getMultipleResult(request);
+ CoserRequestContext context = newRequestContext();
+ List<CoserResult> result = getRequestExecutor().executeAll(context, request);
+
Map<String, String> resultAsMap = Maps.newHashMap();
for (CoserResult coserResult : result) {
if (!(coserResult instanceof MapResult)) {
@@ -236,37 +178,40 @@
return resultAsMap;
}
+ /**
+ * Extract raw data and results.
+ *
+ * @param request extract request
+ */
+ public FileResult extractResults(ExtractRawDataAndResultsRequest request) {
+
+ CoserRequestContext context = newRequestContext();
+
+ // Get all extracted data
+ FileResult result = getRequestExecutor().executeUnique(context, request);
+ return result;
+ }
+
public void deleteResults(DeleteResultsRequest request) {
+ CoserRequestContext context = newRequestContext();
+
// do delete results (don't care about result)
- resultService.getMultipleResult(request);
+ getRequestExecutor().executeAll(context, request);
// reload projects
- resultService.resetRepositories();
+ applicationContext.getRepositoryProvider().resetRepositories();
}
-// public void deleteIndicatorsResult(List<String> indicatorsZonesId) {
-// try {
-// webService.deleteIndicatorsResult(indicatorsZonesId);
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not delete indicator results", e);
-// }
-// }
-//
-// public void deleteMapsResult(List<String> mapsZonesId) {
-// try {
-// webService.deleteMapsResult(mapsZonesId);
-// } catch (CoserBusinessException e) {
-// throw new CoserWebException("Could not delete map results", e);
-// }
-// }
-
public void registerNewUploadedResults(String login, File resultFile) {
try {
- webService.registerNewUploadedResults(login, resultFile);
+ getWebService().registerNewUploadedResults(login, resultFile);
} catch (CoserBusinessException ex) {
throw new CoserWebException("Can't register new result file", ex);
}
+
+ // reload projects
+ applicationContext.getRepositoryProvider().resetRepositories();
}
// --------------------------------------------------------------------- //
@@ -274,10 +219,37 @@
// --------------------------------------------------------------------- //
public CoserWebConfig getConfig() {
- return config;
+ return applicationContext.getConfig();
}
public void reloadProjects() {
- resultService.resetRepositories();
+ applicationContext.getRepositoryProvider().resetRepositories();
}
+
+ public Map<String, ResultRepositoryType> getRepositoryTypes() {
+ Map<String, ResultRepositoryType> result = Maps.newHashMap();
+ for (ResultRepositoryType resultRepositoryType : applicationContext.getRepositoryTypes()) {
+ result.put(resultRepositoryType.getId(), resultRepositoryType);
+ }
+ return result;
+ }
+
+ protected WebService getWebService() {
+ if (webService == null) {
+ webService = new WebService(getConfig());
+ }
+ return webService;
+ }
+
+ protected CoserRequestExecutor getRequestExecutor() {
+ if (resultService == null) {
+ resultService = new CoserRequestExecutor(applicationContext);
+ }
+ return resultService;
+ }
+
+ protected CoserRequestContext newRequestContext() {
+ return new DefaultCoserRequestContext(applicationContext,
+ action.getLocale());
+ }
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -92,11 +92,11 @@
zonesId));
}
- DeleteResultsRequest request = requestBuilder().
- addResultRepositoryType(repositoryType).
+ DeleteResultsRequest request = requestBuilder(DeleteResultsRequest.class).
+ addRepositoryType(repositoryType).
addResultType(resultType).
addZoneList(zonesId).
- toDeleteResultsRequest();
+ toRequest();
getService().deleteResults(request);
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -118,9 +118,9 @@
facades = getService().getFacades();
zonesByFacades = getService().getZoneByFacade();
- GetAllResultsRequest request = requestBuilder().
- addResultRepositoryType(getSelectedRepositoryType()).
- toGetAllResultsRequest();
+ GetAllResultsRequest request = requestBuilder(GetAllResultsRequest.class).
+ addRepositoryType(getSelectedRepositoryType()).
+ toRequest();
results = Maps.newEnumMap(ResultType.class);
if (selectedRepositoryType != null) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,8 +21,9 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
-import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import java.util.Map;
@@ -55,8 +56,6 @@
/** La liste actuellement selectionnée (cas null géré). */
protected String list;
- protected AbstractGetIndicatorResultRequest request;
-
public String getFacade() {
return facade;
}
@@ -98,23 +97,31 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ GetZonesForCommunityIndicatorResultRequest request =
+ requestBuilder(GetZonesForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return getService().getZoneDisplayName(request, zone);
}
public String getIndicatorDisplayName() {
- return getService().getIndicatorDisplayName(request);
+ GetIndicatorsForCommunityIndicatorResultRequest request =
+ requestBuilder(GetIndicatorsForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ return getService().getIndicatorDisplayName(request, indicator);
}
@Override
public String execute() {
-
- request = requestBuilder(GetCommunityIndicatorResultRequest.class).
- addFacade(facade).
- addZone(zone).
- addIndicator(indicator).
- addSpecies(list).
- toRequest();
- lists = getService().getAvailableSpecies(request);
+ GetSpeciesListForCommunityIndicatorResultRequest request =
+ requestBuilder(GetSpeciesListForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ toRequest();
+ lists = getService().getMultipleResultAsMap(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,9 +21,12 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultGraphRequest;
+import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -89,24 +92,29 @@
return result.getSource();
}
- // @Action(results = {@Result(type = "stream", params = {"contentType", "image/png", "inputName", "inputStream"})})
@Action(results = {@Result(type = "stream", params = {"contentType", "image/png"})})
public String execute() {
- AbstractGetIndicatorResultRequest request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- addIndicator(indicator).
- addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.GRAPH).
- addSpecies(list).
- toGetCommunityIndicatorResultRequest();
- if (list == null) {
+ GetCommunityIndicatorResultGraphRequest request =
+ requestBuilder(GetCommunityIndicatorResultGraphRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ addSpecies(list).
+ toRequest();
- //TODO Improve this (add a getFirstAvailableSpecies method)
- // on prend la première entrée dans le fichier
- Map<String, String> lists = getService().getAvailableSpecies(request);
- if (!lists.isEmpty()) {
- request.setSpecies(lists.keySet().iterator().next());
+ if (StringUtils.isEmpty(list)) {
+
+ // Get the first species found in indicators file
+ GetSpeciesListForCommunityIndicatorResultRequest speciesRequest =
+ requestBuilder(GetSpeciesListForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ toRequest();
+ Map<String, String> speciesMap = getService().getMultipleResultAsMap(speciesRequest);
+ if (MapUtils.isNotEmpty(speciesMap)) {
+ request.setSpecies(speciesMap.keySet().iterator().next());
}
}
result = getService().getFileResult(request);
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,9 +21,12 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultDataRequest;
+import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -89,25 +92,29 @@
return result.getSource();
}
- // @Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
@Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String execute() {
- AbstractGetIndicatorResultRequest request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- addIndicator(indicator).
- addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.DATA).
- addSpecies(list).
- toGetCommunityIndicatorResultRequest();
+ GetCommunityIndicatorResultDataRequest request =
+ requestBuilder(GetCommunityIndicatorResultDataRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ addSpecies(list).
+ toRequest();
- if (list == null) {
+ if (StringUtils.isEmpty(list)) {
- //TODO Improve this (add a getFirstAvailableSpecies method)
- // on prend la première entrée dans le fichier
- Map<String, String> lists = getService().getAvailableSpecies(request);
- if (!lists.isEmpty()) {
- request.setSpecies(lists.keySet().iterator().next());
+ // Get the first species found in indicators file
+ GetSpeciesListForCommunityIndicatorResultRequest speciesRequest =
+ requestBuilder(GetSpeciesListForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addIndicator(indicator).
+ toRequest();
+ Map<String, String> speciesMap = getService().getMultipleResultAsMap(speciesRequest);
+ if (MapUtils.isNotEmpty(speciesMap)) {
+ request.setSpecies(speciesMap.keySet().iterator().next());
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CommonIndicator;
/**
@@ -39,10 +40,17 @@
private static final long serialVersionUID = 1663244944108703571L;
@Override
- protected GetCommunityIndicatorResultRequest createRequest() {
- return requestBuilder(GetCommunityIndicatorResultRequest.class).
+ protected GetIndicatorsForCommunityIndicatorResultRequest createIndicatorsRequest() {
+ return requestBuilder(GetIndicatorsForCommunityIndicatorResultRequest.class).
addFacade(facade).
addZone(zone).
toRequest();
}
+
+ @Override
+ protected GetZonesForCommunityIndicatorResultRequest createZonesRequest() {
+ return requestBuilder(GetZonesForCommunityIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ }
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
@@ -39,9 +39,9 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- protected CoserRequest createRequest() {
- return requestBuilder().
+ protected GetZonesForCommunityIndicatorResultRequest createZonesRequest() {
+ return requestBuilder(GetZonesForCommunityIndicatorResultRequest.class).
addFacade(facade).
- toGetCommunityIndicatorResultRequest();
+ toRequest();
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,9 +21,7 @@
package fr.ifremer.coser.web.actions.common;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import fr.ifremer.coser.result.CoserRequest;
import java.util.Map;
@@ -42,21 +40,23 @@
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
- private static final Log log = LogFactory.getLog(CommonIndicator.class);
-
protected String facade;
protected String zone;
- protected String species;
-
protected String zonePicture;
protected Map<String, String> indicators;
- protected AbstractGetIndicatorResultRequest request;
+ /**
+ * @return the request to get zones
+ */
+ protected abstract CoserRequest createZonesRequest();
- protected abstract AbstractGetIndicatorResultRequest createRequest();
+ /**
+ * @return the request to get indicators
+ */
+ protected abstract CoserRequest createIndicatorsRequest();
public String getFacade() {
return facade;
@@ -74,14 +74,6 @@
this.zone = zone;
}
- public String getSpecies() {
- return species;
- }
-
- public void setSpecies(String species) {
- this.species = species;
- }
-
public Map<String, String> getIndicators() {
return indicators;
}
@@ -95,23 +87,15 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ CoserRequest zonesRequest = createZonesRequest();
+ return getService().getZoneDisplayName(zonesRequest, zone);
}
- public String getSpeciesDisplayName() {
- return getService().getSpeciesDisplayName(request);
- }
-
@Override
public String execute() {
- if (log.isInfoEnabled()) {
- log.info(String.format("Looking for indicator for zone %s and species %s", zone, species));
- }
-
- request = createRequest();
-
- indicators = getService().getAvailableIndicators(request);
+ CoserRequest request = createIndicatorsRequest();
+ indicators = getService().getMultipleResultAsMap(request);
zonePicture = getService().getZonePictures().get(zone);
return SUCCESS;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonZone.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -48,7 +48,11 @@
protected Map<String, String> zonesMetaInfo;
- protected abstract CoserRequest createRequest();
+ /**
+ *
+ * @return the request to get zones
+ */
+ protected abstract CoserRequest createZonesRequest();
public String getFacade() {
return facade;
@@ -77,8 +81,8 @@
@Override
public String execute() {
- CoserRequest request = createRequest();
- zones = getService().getAvailableZones(request);
+ CoserRequest request = createZonesRequest();
+ zones = getService().getMultipleResultAsMap(request);
zonesPictures = getService().getZonePictures();
zonesMetaInfo = getService().getZoneMetaInfo(getLocale());
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,7 +22,7 @@
package fr.ifremer.coser.web.actions.common;
import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.request.CoserRequestBuilder;
+import fr.ifremer.coser.result.CoserRequestBuilder;
import fr.ifremer.coser.web.CoserWebConfig;
import fr.ifremer.coser.web.ServiceHelper;
import org.nuiton.web.struts2.BaseAction;
@@ -100,7 +100,7 @@
* @since 1.5
*/
protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Locale locale, Class<R> requestType) {
- return new CoserRequestBuilder<R>(locale, requestType);
+ return CoserRequestBuilder.newBuilder(locale, requestType);
}
/**
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.request.GetMapResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
/**
@@ -44,8 +45,6 @@
protected String species;
- protected GetMapResultRequest request;
-
public void setFacade(String facade) {
this.facade = facade;
}
@@ -75,25 +74,23 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ GetZonesForMapResultRequest request =
+ requestBuilder(GetZonesForMapResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return getService().getZoneDisplayName(request, zone);
}
public String getSpeciesDisplayName() {
- return getService().getSpeciesDisplayName(request);
+ GetSpeciesForMapResultRequest request =
+ requestBuilder(GetSpeciesForMapResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ return getService().getSpeciesDisplayName(request, species);
}
- @Override
- public String execute() throws Exception {
-
- request = requestBuilder(GetMapResultRequest.class).
- addFacade(facade).
- addZone(zone).
- addSpecies(species).
- toRequest();
- return SUCCESS;
- }
-
- // public String getFacadeDisplayName() {
+// public String getFacadeDisplayName() {
// WebService webService = ServiceFactory.getWebService();
// String displayName = null;
// try {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.GetMapResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
@@ -84,11 +84,11 @@
@Action(results = {@Result(type = "stream", params = {"contentType", "image/png"})})
public String execute() {
// work with null species (get Repartition-stations map)
- GetMapResultRequest request = requestBuilder().
+ GetMapResultRequest request = requestBuilder(GetMapResultRequest.class).
addFacade(facade).
addZone(zone).
addSpecies(species == null ? GetMapResultRequest.NULL_SPECIES : species).
- toGetMapResultRequest();
+ toRequest();
if (log.isInfoEnabled()) {
log.info("Looking for map of species: " + request.getSpecies());
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.request.GetMapResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -50,8 +51,6 @@
protected Map<String, String> species;
- protected GetMapResultRequest request;
-
public String getFacade() {
return facade;
}
@@ -77,22 +76,26 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ GetZonesForMapResultRequest request =
+ requestBuilder(GetZonesForMapResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return getService().getZoneDisplayName(request, zone);
}
@Override
public String execute() {
- request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- toGetMapResultRequest();
-
if (log.isInfoEnabled()) {
log.info("Looking for species for zone " + zone);
}
- species = getService().getAvailableSpecies(request);
+ GetSpeciesForMapResultRequest request =
+ requestBuilder(GetSpeciesForMapResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ species = getService().getMultipleResultAsMap(request);
if (log.isDebugEnabled()) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.request.GetMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
@@ -39,8 +39,12 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- protected GetMapResultRequest createRequest() {
- return requestBuilder().addFacade(facade).toGetMapResultRequest();
+ protected GetZonesForMapResultRequest createZonesRequest() {
+ GetZonesForMapResultRequest request =
+ requestBuilder(GetZonesForMapResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return request;
}
// @Override
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,9 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
/**
@@ -48,8 +50,6 @@
protected String indicator;
- protected GetPopulationIndicatorResultRequest request;
-
public String getFacade() {
return facade;
}
@@ -87,29 +87,32 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ GetZonesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetZonesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return getService().getZoneDisplayName(request, zone);
}
public String getSpeciesDisplayName() {
- return getService().getSpeciesDisplayName(request);
+ GetSpeciesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetSpeciesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ return getService().getSpeciesDisplayName(request, species);
}
public String getIndicatorDisplayName() {
- return getService().getIndicatorDisplayName(request);
+ GetIndicatorsForPopulationIndicatorResultRequest request =
+ requestBuilder(GetIndicatorsForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ toRequest();
+ return getService().getIndicatorDisplayName(request, indicator);
}
- @Override
- public String execute() {
-
- request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- addSpecies(species).
- addIndicator(indicator).
- toGetPopulationIndicatorResultRequest();
- return SUCCESS;
- }
-
// public String getFacadeDisplayName() {
// WebService webService = ServiceFactory.getWebService();
// String displayName = null;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,9 +21,8 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultGraphRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -90,16 +89,15 @@
return result.getSource();
}
- // @Action(results = {@Result(type = "stream", params = {"contentType", "image/png", "inputName", "inputStream"})})
@Action(results = {@Result(type = "stream", params = {"contentType", "image/png"})})
public String execute() {
- GetPopulationIndicatorResultRequest request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- addSpecies(species).
- addIndicator(indicator).
- addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.GRAPH).
- toGetPopulationIndicatorResultRequest();
+ GetPopulationIndicatorResultGraphRequest request =
+ requestBuilder(GetPopulationIndicatorResultGraphRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ addIndicator(indicator).
+ toRequest();
result = getService().getFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,9 +21,8 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultDataRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -88,16 +87,15 @@
return result.getSource();
}
- // @Action(results = {@Result(type = "stream", params = {"contentType", "text/csv", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
@Action(results = {@Result(type = "stream", params = {"contentType", "text/csv", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String execute() {
- GetPopulationIndicatorResultRequest request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- addSpecies(species).
- addIndicator(indicator).
- addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.DATA).
- toGetPopulationIndicatorResultRequest();
+ GetPopulationIndicatorResultDataRequest request =
+ requestBuilder(GetPopulationIndicatorResultDataRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ addIndicator(indicator).
+ toRequest();
result = getService().getFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,10 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CommonIndicator;
/**
@@ -38,12 +41,42 @@
/** serialVersionUID. */
private static final long serialVersionUID = 1663244944108703571L;
+ protected String species;
+
+ public String getSpecies() {
+ return species;
+ }
+
+ public void setSpecies(String species) {
+ this.species = species;
+ }
+
@Override
- protected GetPopulationIndicatorResultRequest createRequest() {
- return requestBuilder(GetPopulationIndicatorResultRequest.class).
- addFacade(facade).
- addZone(zone).
- addSpecies(species).
- toRequest();
+ protected CoserRequest createZonesRequest() {
+ GetZonesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetZonesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return request;
}
+
+ @Override
+ protected GetIndicatorsForPopulationIndicatorResultRequest createIndicatorsRequest() {
+ GetIndicatorsForPopulationIndicatorResultRequest request =
+ requestBuilder(GetIndicatorsForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ addSpecies(species).
+ toRequest();
+ return request;
+ }
+
+ public String getSpeciesDisplayName() {
+ GetSpeciesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetSpeciesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ return getService().getSpeciesDisplayName(request, species);
+ }
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -52,8 +53,6 @@
protected String zonePicture;
- protected GetPopulationIndicatorResultRequest request;
-
public String getFacade() {
return facade;
}
@@ -83,7 +82,11 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(request);
+ GetZonesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetZonesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return getService().getZoneDisplayName(request, zone);
}
@Override
@@ -93,12 +96,13 @@
log.info("Looking for species for zone " + zone);
}
- request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- toGetPopulationIndicatorResultRequest();
+ GetSpeciesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetSpeciesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ species = getService().getMultipleResultAsMap(request);
- species = getService().getAvailableSpecies(request);
if (log.isDebugEnabled()) {
log.debug("Species are : " + species);
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
@@ -39,9 +39,11 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- protected CoserRequest createRequest() {
- return requestBuilder().
- addFacade(facade).
- toGetPopulationIndicatorResultRequest();
+ protected GetZonesForPopulationIndicatorResultRequest createZonesRequest() {
+ GetZonesForPopulationIndicatorResultRequest request =
+ requestBuilder(GetZonesForPopulationIndicatorResultRequest.class).
+ addFacade(facade).
+ toRequest();
+ return request;
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -22,8 +22,11 @@
package fr.ifremer.coser.web.actions.search;
import com.google.common.collect.Lists;
-import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.result.FileResult;
import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetSpeciesForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
import fr.ifremer.coser.util.DataType;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.collections4.CollectionUtils;
@@ -86,7 +89,8 @@
protected boolean accepted;
- protected transient HttpServletRequest request;
+ //FIXME Should only use the struts2 session ?
+ protected transient HttpServletRequest servletRequest;
protected FileResult resultFile;
@@ -168,8 +172,8 @@
* On met des choses dans la session pour pouvoir les récupérer.
*/
@Override
- public void setServletRequest(HttpServletRequest request) {
- this.request = request;
+ public void setServletRequest(HttpServletRequest servletrequest) {
+ this.servletRequest = servletrequest;
}
@Override
@@ -184,27 +188,36 @@
types = DataType.getExtractTypes(getLocale());
- ExtractRawDataAndResultsRequest extractRawDataAndResultsRequest = requestBuilder().toExtractRawDataAndResultsRequest();
// renvoi la liste des id subzone-survey et leurs label associé
- zones = getService().getAvailableZones(extractRawDataAndResultsRequest);
+ GetZonesForExtractRawDataAndResultsRequest zonesRequest =
+ requestBuilder(GetZonesForExtractRawDataAndResultsRequest.class).
+ toRequest();
+ zones = getService().getMultipleResultAsMap(zonesRequest);
if (CollectionUtils.isNotEmpty(selectZones)) {
- extractRawDataAndResultsRequest.setZoneList(selectZones);
+ GetSpeciesForExtractRawDataAndResultsRequest speciesRequest =
+ requestBuilder(GetSpeciesForExtractRawDataAndResultsRequest.class).
+ addZoneList(selectZones).
+ toRequest();
+ species = getService().getMultipleResultAsMap(speciesRequest);
- species = getService().getAvailableSpecies(extractRawDataAndResultsRequest);
-
if (selectTypes != null) {
+ GetIndicatorsForExtractRawDataAndResultsRequest indicatorsRequest =
+ requestBuilder(GetIndicatorsForExtractRawDataAndResultsRequest.class).
+ addZoneList(selectZones).
+ toRequest();
+
if (selectTypes.contains(DataType.COMMUNITY)) {
- extractRawDataAndResultsRequest.setExtractTypeList(Lists.newArrayList(DataType.COMMUNITY));
- comIndicators = getService().getAvailableIndicators(extractRawDataAndResultsRequest);
+ indicatorsRequest.setExtractTypeList(Lists.newArrayList(DataType.COMMUNITY));
+ comIndicators = getService().getMultipleResultAsMap(indicatorsRequest);
}
if (selectTypes.contains(DataType.POPULATION)) {
- extractRawDataAndResultsRequest.setExtractTypeList(Lists.newArrayList(DataType.POPULATION));
- popIndicators = getService().getAvailableIndicators(extractRawDataAndResultsRequest);
+ indicatorsRequest.setExtractTypeList(Lists.newArrayList(DataType.POPULATION));
+ popIndicators = getService().getMultipleResultAsMap(indicatorsRequest);
}
}
}
@@ -216,12 +229,11 @@
@Action(value = "extract-quality",
results = {
@Result(name = "input", location = "/WEB-INF/content/search/extract-success.jsp"),
- @Result(name = DOWNLOAD, type = "redirect", params = {
- "location", "${location}"})})
+ @Result(name = DOWNLOAD, type = "redirect", params = {"location", "${location}"})})
public String quality() {
// petit hack pour mettre la locale dans la session car
// après, on n'a plus accès au context dans le executeAndWait
- request.getSession().setAttribute(LOCALE_ATTRIBUTE, getLocale());
+ servletRequest.getSession().setAttribute(LOCALE_ATTRIBUTE, getLocale());
return DOWNLOAD;
}
@@ -264,21 +276,21 @@
@Action(value = "extract-download",
results = {
@Result(name = "wait", location = "/WEB-INF/content/search/extract-wait.jsp"),
-// @Result(type = "stream", params = {"contentType", "application/zip", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
@Result(type = "stream", params = {"contentType", "application/zip", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String download() {
- Locale locale = (Locale) request.getSession().getAttribute(LOCALE_ATTRIBUTE);
+ Locale locale = (Locale) servletRequest.getSession().getAttribute(LOCALE_ATTRIBUTE);
- ExtractRawDataAndResultsRequest extractRawDataAndResultsRequest = requestBuilder(locale).
- addZoneList(selectZones).
- addExtractTypeList(selectTypes).
- addSpeciesList(selectSpecies).
- addCommunityIndicatorList(selectComIndicators).
- addPopulationIndicatorList(selectPopIndicators).
- toExtractRawDataAndResultsRequest();
+ ExtractRawDataAndResultsRequest request =
+ requestBuilder(locale, ExtractRawDataAndResultsRequest.class).
+ addZoneList(selectZones).
+ addExtractTypeList(selectTypes).
+ addSpeciesList(selectSpecies).
+ addCommunityIndicatorList(selectComIndicators).
+ addPopulationIndicatorList(selectPopIndicators).
+ toRequest();
- resultFile = getService().getFileResult(extractRawDataAndResultsRequest);
+ resultFile = getService().getFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.source;
-import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import java.util.Map;
@@ -46,8 +46,6 @@
protected String zonePicture;
- protected ExtractRawDataRequest request;
-
public String getFacade() {
return facade;
}
@@ -73,7 +71,12 @@
}
public String getZoneDisplayName() {
- return getService().getZoneDisplayName(getRequest());
+ GetZonesForExtractRawDataRequest zonesRequest =
+ requestBuilder(GetZonesForExtractRawDataRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ return getService().getZoneDisplayName(zonesRequest, zone);
}
@Override
@@ -83,22 +86,12 @@
return SUCCESS;
}
- protected ExtractRawDataRequest getRequest() {
- if (request == null) {
- request = requestBuilder().
- addFacade(facade).
- addZone(zone).
- toExtractRawDataRequest();
- }
- return request;
- }
-
- // public String getFacadeDisplayName() {
+// public String getFacadeDisplayName() {
// WebService webService = ServiceFactory.getWebService();
// String displayName = null;
// try {
//// displayName = webService.getFacades().get(facade);
-// displayName = webService.getZonesMap().getFacades().get(facade);
+// displayName = webService.getZoneMap().getFacades().get(facade);
// } catch (CoserBusinessException ex) {
// throw new CoserWebException("Can't get facade display name", ex);
// }
@@ -123,7 +116,7 @@
//
// try {
//// zonePicture = webService.getZonePictures().get(zone);
-// zonePicture = webService.getZonesMap().getZonePictures().get(zone);
+// zonePicture = webService.getZoneMap().getZonePictures().get(zone);
// } catch (CoserBusinessException ex) {
// throw new CoserWebException("Can't get zone picture", ex);
// }
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceDataAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.source;
-import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.result.FileResult;
+import fr.ifremer.coser.result.request.ExtractRawDataRequest;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -57,7 +58,12 @@
// @Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
@Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String execute() {
- result = getService().getFileResult(getRequest());
+
+ ExtractRawDataRequest request = requestBuilder(ExtractRawDataRequest.class).
+ addFacade(facade).
+ addZone(zone).
+ toRequest();
+ result = getService().getFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java 2014-03-15 15:11:29 UTC (rev 1146)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.source;
-import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
@@ -39,10 +39,12 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- protected ExtractRawDataRequest createRequest() {
- return requestBuilder().
- addFacade(facade).
- toExtractRawDataRequest();
+ protected GetZonesForExtractRawDataRequest createZonesRequest() {
+ GetZonesForExtractRawDataRequest request =
+ requestBuilder(GetZonesForExtractRawDataRequest.class).
+ addFacade(facade).
+ toRequest();
+ return request;
}
// @Override
1
0
12 Mar '14
Author: tchemit
Date: 2014-03-12 18:35:43 +0100 (Wed, 12 Mar 2014)
New Revision: 1145
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1145
Log:
refs #4664 review Result API (using Command pattern), need to finish the web part
Added:
trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestIndicatorAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneListAware.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java
trunk/coser-business/src/main/resources/META-INF/
trunk/coser-business/src/main/resources/META-INF/services/
trunk/coser-business/src/main/resources/META-INF/services/fr.ifremer.coser.result.repository.ResultRepositoryType
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java
Removed:
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/RequestUnavailableForProducerException.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/CommunityIndicatorResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/ExtractResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/MapResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/PopulationIndicatorResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/RawDataResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/CommunityIndicatorResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/ExtractResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/MapResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/PopulationIndicatorResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/RawDataResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java
trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
trunk/coser-web/src/main/resources/i18n/coser-web_en_GB.properties
trunk/coser-web/src/main/resources/i18n/coser-web_fr_FR.properties
trunk/coser-web/src/main/resources/log4j.properties
trunk/coser-web/src/main/webapp/WEB-INF/content/admin/list-projects.jsp
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -25,6 +25,7 @@
import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.ZoneMap;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
import java.util.Set;
@@ -38,8 +39,10 @@
CoserBusinessConfig getConfig();
- Set<ResultRepositoryProvider<?>> getProviders();
+ Set<ResultRepositoryType> getResultRepositoryTypes();
+ Set<ResultRepositoryProvider<?>> getResultRepositoryProviders();
+
IndicatorMap getIndicatorsMap();
ZoneMap getZonesMap();
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,11 +22,16 @@
* #L%
*/
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Sets;
import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.CoserResultEngine;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider;
+import java.util.ServiceLoader;
import java.util.Set;
/**
@@ -43,9 +48,14 @@
protected CoserBusinessConfig config;
/**
+ * Available type of result repositories (loaded by service loader).
+ */
+ protected Set<ResultRepositoryType> resultRepositoryTypes;
+
+ /**
* Result repositories providers.
*/
- protected Set<ResultRepositoryProvider<?>> providers;
+ protected Set<ResultRepositoryProvider<?>> resultRepositoryProviders;
/**
* Cache of indicator definition.
@@ -61,20 +71,47 @@
this.config = config;
}
+ public static Set<ResultRepositoryProvider<?>> createDefaultRepositoryProviders(CoserBusinessConfig config) {
+ Preconditions.checkNotNull(config);
+ Set<ResultRepositoryProvider<?>> result = Sets.newHashSet();
+
+ // add legacy map repository
+ Preconditions.checkNotNull(config.getWebMapsProjectsDirectory());
+ result.add(new LegacyResultRepositoryProvider(config.getWebMapsProjectsDirectory()));
+
+ // add legacy indicators repository
+ Preconditions.checkNotNull(config.getWebIndicatorsProjectsDirectory());
+ result.add(new LegacyResultRepositoryProvider(config.getWebIndicatorsProjectsDirectory()));
+
+ // add EchoBase repository
+ Preconditions.checkNotNull(config.getWebEchobaseProjectsDirectory());
+ result.add(new EchoBaseResultRepositoryProvider(config.getWebEchobaseProjectsDirectory()));
+ return result;
+ }
+
@Override
public CoserBusinessConfig getConfig() {
return config;
}
@Override
- public Set<ResultRepositoryProvider<?>> getProviders() {
- if (providers == null) {
- providers = CoserResultEngine.createDefaultRepositoryProviders(config);
+ public Set<ResultRepositoryType> getResultRepositoryTypes() {
+ if (resultRepositoryTypes == null) {
+ ServiceLoader<ResultRepositoryType> loader = ServiceLoader.load(ResultRepositoryType.class);
+ resultRepositoryTypes = Sets.newHashSet(loader);
}
- return providers;
+ return resultRepositoryTypes;
}
@Override
+ public Set<ResultRepositoryProvider<?>> getResultRepositoryProviders() {
+ if (resultRepositoryProviders == null) {
+ resultRepositoryProviders = createDefaultRepositoryProviders(config);
+ }
+ return resultRepositoryProviders;
+ }
+
+ @Override
public IndicatorMap getIndicatorsMap() {
if (indicatorsMap == null) {
indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/bean/EchoBaseProject.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -71,6 +71,9 @@
protected Date creationDate;
+ /** Result publiable. */
+ protected boolean publiableResult;
+
public EchoBaseProject(File basedir) {
this.basedir = basedir;
}
@@ -131,6 +134,14 @@
this.creationDate = creationDate;
}
+ public boolean isPubliableResult() {
+ return publiableResult;
+ }
+
+ public void setPubliableResult(boolean publiableResult) {
+ this.publiableResult = publiableResult;
+ }
+
public File getSpeciesDefinitionFile() {
return new File(basedir, "species.csv");
}
@@ -207,6 +218,8 @@
if (creationDate != null) {
props.setProperty("project.creationDate", String.valueOf(creationDate.getTime()));
}
+ props.setProperty("project.publiableResult", String.valueOf(publiableResult));
+
return props;
}
@@ -230,6 +243,10 @@
Date date = new Date(Long.parseLong(props.getProperty("project.creationDate")));
setCreationDate(date);
}
+ if (props.containsKey("project.publiableResult")) {
+ boolean v = Boolean.valueOf(props.getProperty("project.publiableResult"));
+ setPubliableResult(v);
+ }
}
public static FilenameFilter newMapSpeciesFilenameFilter(String surveyName) {
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -26,13 +26,11 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserBusinessConfig;
import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.result.repository.ResultRepository;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
-import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider;
-import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider;
-import org.apache.commons.collections4.MapUtils;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -41,16 +39,13 @@
import java.util.Set;
/**
- * To request some results on the web server side.
+ * To execute command all over coser result repositories.
* <p/>
* This new API will let us to define any result format to be queried.
* <p/>
* Created on 3/4/14.
*
* @author Tony Chemit <chemit(a)codelutin.com>
- * @see ResultRepositoryProvider
- * @see ResultRepository
- * @see CoserResult
* @since 1.5
*/
public class CoserResultEngine {
@@ -58,31 +53,8 @@
/** Logger. */
private static final Log log = LogFactory.getLog(CoserResultEngine.class);
- public static Set<ResultRepositoryProvider<?>> createDefaultRepositoryProviders(CoserBusinessConfig config) {
- Preconditions.checkNotNull(config);
- Set<ResultRepositoryProvider<?>> result = Sets.newHashSet();
+ protected Set<ResultRepositoryCommandEngine> repositories;
- // add legacy map repository
- Preconditions.checkNotNull(config.getWebMapsProjectsDirectory());
- result.add(new LegacyResultRepositoryProvider(config.getWebMapsProjectsDirectory()));
-
- // add legacy indicators repository
- Preconditions.checkNotNull(config.getWebIndicatorsProjectsDirectory());
- result.add(new LegacyResultRepositoryProvider(config.getWebIndicatorsProjectsDirectory()));
-
- // add EchoBase repository
- Preconditions.checkNotNull(config.getWebEchobaseProjectsDirectory());
- result.add(new EchoBaseResultRepositoryProvider(config.getWebEchobaseProjectsDirectory()));
- return result;
- }
-
- /**
- * Result repositories loaded lazy from their provider.
- *
- * @see #getRepositories()
- */
- protected Set<ResultRepository> repositories;
-
protected final CoserServiceContext serviceContext;
public CoserResultEngine(CoserServiceContext serviceContext) {
@@ -90,84 +62,96 @@
this.serviceContext = serviceContext;
}
+ public Map<String, ResultRepositoryType> getRepositoryTypes() {
+ Map<String, ResultRepositoryType> result = Maps.newHashMap();
+ for (ResultRepositoryType resultRepositoryType : serviceContext.getResultRepositoryTypes()) {
+ result.put(resultRepositoryType.getId(), resultRepositoryType);
+ }
+ return result;
+ }
+
public void resetRepositories() {
this.repositories = null;
}
- public Map<String, String> getAvailableExtractTypes() {
- Map<String, String> result = Maps.newLinkedHashMap();
- return result;
- }
+ public CoserResult getUniqueResult(CoserRequest request) throws DuplicatedResultException {
- public Map<String, String> getAvailableZones(CoserRequest request) {
- Map<String, String> result = Maps.newHashMap();
- for (ResultRepository repository : getRepositories()) {
- Map<String, String> resultForRepository = repository.getAvailableZones(request);
- if (MapUtils.isNotEmpty(resultForRepository)) {
- result.putAll(resultForRepository);
- }
- }
- return result;
- }
+ Preconditions.checkArgument(request.isFilled());
- public Map<String, String> getAvailableSpecies(CoserRequest request) {
- Map<String, String> result = Maps.newHashMap();
- for (ResultRepository repository : getRepositories()) {
- Map<String, String> resultForRepository = repository.getAvailableSpecies(request);
- if (MapUtils.isNotEmpty(resultForRepository)) {
- result.putAll(resultForRepository);
- }
+ ResultRepositoryCommandEngine repository = getMatchingRepository(request);
+
+ if (repository == null) {
+ throw new NoResultRepositoryFoundException("No result repository matching request", request);
}
+ CoserResult result = repository.executeRequest(request);
+ if (result == null) {
+ throw new NoResultFoundException(repository.getResultRepository().getId(), request);
+ }
return result;
}
- public Map<String, String> getAvailableIndicators(CoserRequest request) {
- Map<String, String> result = Maps.newHashMap();
- for (ResultRepository repository : getRepositories()) {
- Map<String, String> resultForRepository = repository.getAvailableIndicators(request);
- if (MapUtils.isNotEmpty(resultForRepository)) {
- result.putAll(resultForRepository);
+ public List<CoserResult> getMultipleResult(CoserRequest request) throws DuplicatedResultException {
+
+ Preconditions.checkArgument(request.isFilled());
+
+ List<CoserResult> result = Lists.newArrayList();
+ for (ResultRepositoryCommandEngine repository : getRepositories()) {
+ if (repository.acceptRequest(request)) {
+
+ CoserResult repositoryResult = repository.executeRequest(request);
+ result.add(repositoryResult);
}
}
return result;
}
- public CoserResult getResult(CoserRequest request) throws DuplicatedResultException {
+ protected ResultRepositoryCommandEngine getMatchingRepository(CoserRequest request) throws DuplicatedResultException {
- Preconditions.checkArgument(request.isFilled());
+ List<ResultRepositoryCommandEngine> repositoryList = Lists.newArrayList();
- ResultRepository repository = getMatchingRepository(request);
+ for (ResultRepositoryCommandEngine resultRepository : getRepositories()) {
- if (repository == null) {
- throw new NoResultRepositoryFoundException("No result repository matching request", request);
+ if (resultRepository.acceptRequest(request)) {
+ repositoryList.add(resultRepository);
+ }
}
- CoserResult result = repository.getResult(request);
- if (result == null) {
- throw new NoResultFoundException(repository.getId(), request);
+
+ ResultRepositoryCommandEngine repository;
+ switch (repositoryList.size()) {
+ case 0:
+ repository = null;
+ break;
+ case 1:
+ repository = repositoryList.get(0);
+ break;
+ default:
+ throw new DuplicatedResultException(
+ repositoryList.toArray(new ResultRepository[repositoryList.size()]));
}
- return result;
+ return repository;
}
- protected Set<ResultRepository> getRepositories() {
+ protected Set<ResultRepositoryCommandEngine> getRepositories() {
if (repositories == null) {
Set<String> ids = Sets.newHashSet();
repositories = Sets.newHashSet();
- for (ResultRepositoryProvider repositoryProvider : serviceContext.getProviders()) {
+ for (ResultRepositoryProvider repositoryProvider : serviceContext.getResultRepositoryProviders()) {
Set<ResultRepository> resultRepositories = repositoryProvider.loadRepositories(serviceContext);
// check all repository use a unique id
for (ResultRepository resultRepository : resultRepositories) {
String id = resultRepository.getId();
if (log.isDebugEnabled()) {
- log.debug("Try to register resultrepository: " + id);
+ log.debug("Try to register result Repository: " + id);
}
if (!ids.add(id)) {
// there is already a repository with this id
throw new ResultRepositoryInitializationException(repositoryProvider, "Duplicate result repository with id: " + id, null);
}
+ ResultRepositoryCommandEngine repositoryCommandEngine = repositoryProvider.newEngine(resultRepository);
+ repositories.add(repositoryCommandEngine);
}
- repositories.addAll(resultRepositories);
}
if (log.isInfoEnabled()) {
log.info("Found " + repositories.size() + " result repository(ies).");
@@ -175,30 +159,4 @@
}
return repositories;
}
-
- protected ResultRepository getMatchingRepository(CoserRequest request) throws DuplicatedResultException {
-
- List<ResultRepository> repositoryList = Lists.newArrayList();
-
- for (ResultRepository resultRepository : getRepositories()) {
-
- if (resultRepository.acceptResult(request)) {
- repositoryList.add(resultRepository);
- }
- }
-
- ResultRepository repository;
- switch (repositoryList.size()) {
- case 0:
- repository = null;
- break;
- case 1:
- repository = repositoryList.get(0);
- break;
- default:
- throw new DuplicatedResultException(
- repositoryList.toArray(new ResultRepository[repositoryList.size()]));
- }
- return repository;
- }
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,56 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import java.util.Map;
+
+/**
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class MapResult implements CoserResult {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String source;
+
+ protected final Map<String, String> map;
+
+ public MapResult(String source, Map<String, String> map) {
+ this.map = map;
+ this.source = source;
+ }
+
+ @Override
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public Map<String, String> getResult() {
+ return map;
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/MapResult.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultType.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultType.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,37 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * Type of result we can get on a result repository.
+ * <p/>
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public enum ResultType {
+ MAP,
+ INDICATOR,
+ MAP_AND_INDICATOR
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/ResultType.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,50 @@
+package fr.ifremer.coser.result;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class VoidResult implements CoserResult {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final String source;
+
+ public VoidResult(String source) {
+ this.source = source;
+ }
+
+ @Override
+ public String getSource() {
+ return source;
+ }
+
+ @Override
+ public Void getResult() {
+ return null;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/VoidResult.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/RequestUnavailableForProducerException.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/RequestUnavailableForProducerException.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/RequestUnavailableForProducerException.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,49 +0,0 @@
-package fr.ifremer.coser.result.repository;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-/**
- * When a request ask a unavailable result of a producer.
- * <p/>
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class RequestUnavailableForProducerException extends RuntimeException {
-
- private static final long serialVersionUID = 1L;
-
- public static RequestUnavailableForProducerException newException(String methodName, ResultProducer<?> producer) {
- return new RequestUnavailableForProducerException(methodName, producer.getRepository().getId());
- }
-
- protected final String methodName;
-
- protected final String repositoryId;
-
- protected RequestUnavailableForProducerException(String methodName, String repositoryId) {
- this.methodName = methodName;
- this.repositoryId = repositoryId;
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,52 +0,0 @@
-package fr.ifremer.coser.result.repository;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
-
-import java.util.Map;
-
-/**
- * To execute a result.
- * <p/>
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public interface ResultProducer<R extends CoserRequest> {
-
- ResultRepository getRepository();
-
- boolean acceptResult(R request);
-
- Map<String, String> getAvailableZones(R request);
-
- Map<String, String> getAvailableSpecies(R request);
-
- Map<String, String> getAvailableIndicators(R request);
-
- CoserResult produceResult(R request);
-
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,11 +22,6 @@
* #L%
*/
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
-
-import java.util.Map;
-
/**
* General contract of a repository of results in CoserWeb.
* <p/>
@@ -43,43 +38,7 @@
String getId();
/**
- * Get all available zones for the given request.
- *
- * @param request request
- * @return all available zones for the given request
+ * @return the type of result repository
*/
- <R extends CoserRequest> Map<String, String> getAvailableZones(R request);
-
- /**
- * Get all available species (or speciesList) for the given request.
- *
- * @param request request
- * @return all available species for the given request.
- */
- <R extends CoserRequest> Map<String, String> getAvailableSpecies(R request);
-
- /**
- * Get all available indicators for the given request.
- *
- * @param request request
- * @return all available indicators for the given request.
- */
- <R extends CoserRequest> Map<String, String> getAvailableIndicators(R request);
-
- /**
- * @param request request to test
- * @return {@code true} if this repository has some result for the given
- * request, {@code false} otherwise
- */
- <R extends CoserRequest> boolean acceptResult(R request);
-
- /**
- * Get result for the given request.
- * <p/>
- * We assume here that the repository has a result for the given request.
- *
- * @param request request to obtain result
- * @return the result for the given request
- */
- <R extends CoserRequest> CoserResult getResult(R request);
+ ResultRepositoryType getResultRepositoryType();
}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,50 @@
+package fr.ifremer.coser.result.repository;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserResult;
+
+/**
+ * To execute a command on a result.
+ * <p/>
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface ResultRepositoryCommand<Repo extends ResultRepository, Request extends CoserRequest> {
+
+ Class<Request> getRequestType();
+
+ boolean accept(Repo repository, Request request);
+
+ CoserResult execute(Repo repository, Request request);
+
+// Map<String, String> getAvailableZones(Repo repository, Request request);
+//
+// Map<String, String> getAvailableSpecies(Repo repository, Request request);
+//
+// Map<String, String> getAvailableIndicators(Repo repository, Request request);
+
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,56 @@
+package fr.ifremer.coser.result.repository;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserResult;
+
+/**
+ * To execute commands on a result repository.
+ * <p/>
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface ResultRepositoryCommandEngine {
+
+ ResultRepository getResultRepository();
+
+ /**
+ * @param request request to test
+ * @return {@code true} if this repository has some result for the given
+ * request, {@code false} otherwise
+ */
+ <R extends CoserRequest> boolean acceptRequest(R request);
+
+ /**
+ * Execute given request.
+ * <p/>
+ * We assume here that the repository has a result for the given request.
+ *
+ * @param request request to execute
+ * @return the result for the given request
+ */
+ <R extends CoserRequest> CoserResult executeRequest(R request);
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryCommandEngine.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -42,4 +42,6 @@
* @return the set of provided result repositories.
*/
Set<R> loadRepositories(CoserServiceContext serviceContext) throws ResultRepositoryInitializationException;
+
+ ResultRepositoryCommandEngine newEngine(R repository);
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,50 @@
+package fr.ifremer.coser.result.repository;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.request.GetAllResultsRequest;
+
+import java.io.Serializable;
+import java.util.Set;
+
+/**
+ * To define a new type of result repository.
+ * <p/>
+ * This contract does nothing in special, but is just loaded by
+ * a service loader to know all possible result repositories type.
+ * <p/>
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @see GetAllResultsRequest
+ * @since 1.5
+ */
+public interface ResultRepositoryType extends Serializable {
+
+ String getId();
+
+ String getLabelKey();
+
+ Set<ResultType> getResultTypes();
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryType.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/CommunityIndicatorResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/CommunityIndicatorResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/CommunityIndicatorResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,441 +0,0 @@
-package fr.ifremer.coser.result.repository.echobase;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.EchoBaseProject;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultProducer;
-import fr.ifremer.coser.result.request.CommunityIndicatorRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class CommunityIndicatorResultProducer implements ResultProducer<CommunityIndicatorRequest> {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(CommunityIndicatorResultProducer.class);
-
- protected final EchoBaseResultRepository repository;
-
- protected final Reports reports;
-
- protected final EchoBaseProject project;
-
- public CommunityIndicatorResultProducer(EchoBaseResultRepository repository) {
- this.repository = repository;
- this.project = repository.project;
- this.reports = repository.reports;
- }
-
- @Override
- public EchoBaseResultRepository getRepository() {
- return repository;
- }
-
- @Override
- public boolean acceptResult(CommunityIndicatorRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicatorAndSpeciesList(request);
- }
-
- @Override
- public Map<String, String> getAvailableZones(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
-
- boolean match = repository.matchFacade(request);
-
- Map<String, String> result = null;
- if (match) {
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
- result = zonesMap.getSubZonesMap(project.getZoneName(), allowedZones);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableSpecies(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
- Preconditions.checkNotNull(request.getIndicator());
-
- boolean match = repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicator(request);
-
- Map<String, String> result = null;
-
- if (match) {
- // get all speciesList for given facade + zone + indicator
- Set<String> speciesList = repository.getCommunityIndicatorSpecies(request.getIndicator());
- result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableIndicators(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
-
- Map<String, String> result = null;
- boolean match = repository.matchFacade(request) && repository.matchZone(request);
- if (match) {
-
- // get all indicators for given facade + zone
- Set<String> indicatorList = repository.getCommunityIndicators();
- result = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
- }
- return result;
- }
-
- @Override
- public FileResult produceResult(CommunityIndicatorRequest r) {
-
- File file = null;
- switch (r.getResultType()) {
- case DATA:
- file = getCommunityIndicatorDataFile(r.getLocale(),
- r.getIndicator(),
- r.getSpecies());
- break;
-
- case GRAPH:
- file = getCommunityIndicatorGraphFile(r.getLocale(),
- r.getZone(),
- r.getIndicator(),
- r.getSpecies());
- break;
- }
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
-
- protected File getCommunityIndicatorDataFile(Locale locale,
- String indicator,
- String speciesList) {
-
- try {
-
- File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
-
- File baseDir = new File(tempDir, project.getSurveyName());
- FileUtils.forceMkdir(baseDir);
-
- // ajout du fichier csv avec les indicateurs
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- dataStorage.add(tuple);
- }
- }
- File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator",
- ".csv"
- );
-
- File csvFileCopied = new File(baseDir, indicator + ".csv");
- FileUtils.copyFile(csvFile, csvFileCopied);
- FileUtils.forceDelete(csvFile);
-
- //TODO See what to generate here (we don't have any selection in echobase results).
-// // ajout du fichier d'information sur les espèces incluses dans
-// // les calculs des indicateurs de communautés
-// // load project (without data to get reftax data)
-// Project project = path.getProject();
-// Selection selection = path.getSelection();
-// File metaFile = webService.generateMetaFilePDF(project,
-// selection,
-// resultDirectory,
-// rSufiResult,
-// indicator,
-// locale);
-// File metaFileCopied = new File(baseDir, "Information.pdf");
-// FileUtils.copyFile(metaFile, metaFileCopied);
-
- // make zip
- File result = File.createTempFile("coser-chart-community-indicator", ".zip");
- result.deleteOnExit();
- ZipUtil.compress(result, baseDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- return result;
- } catch (Exception e) {
- throw new CoserTechnicalException("Can't create zip file", e);
- }
- }
-
- protected File getCommunityIndicatorGraphFile(Locale locale,
- String zone,
- String indicator,
- String speciesList) {
-
- // indicator list to take care
- // pour avoir une valeur non nulle si list est null
- // on prend dans ce cas la premiere valeur trouvée
- String localList = speciesList;
-
- if (log.isDebugEnabled()) {
- log.debug("Searching list for indicator : " + indicator);
- }
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = iterator.next();
- String indicatorList = tuple[2];
-
- if (repository.matchIndicatorIndicator(tuple, indicator)) {
- indicatorFound = true;
-
- // si pas de list selectionnée, on prend la premiere
- if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- }
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String chartTitle = zoneDisplayName;
- chartTitle += " - " + indicatorName;
-
- // ajout de la traduction de la liste d'indicateur
- // les liste sont a1, T1, T2 ...
- String listLetter = String.valueOf(localList.charAt(0));
- Iterator<String[]> typeIterator = repository.getSpeciesMap().iterator(true);
- while (typeIterator.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
- String[] tuple = typeIterator.next();
- if (tuple[4].equals(listLetter)) {
- /// gestion du groupe "Tous"
- // cas special, c'est la seule valeur du fichier
- // code type espece qui a besoin d'une traduction
- if (tuple[4].equalsIgnoreCase("T")) {
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + "Tous Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + "Todo Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + "All List " + localList.charAt(1);
- }
- } else {
- // ajout de la traduction du nom de liste plus le numéro
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
- }
- }
- break;
- }
- }
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = reports.getYearChartTitle(locale);
-
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-community-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchIndicatorAndSpeciesList(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
- Preconditions.checkNotNull(request.getSpecies());
-
- String indicator = request.getIndicator();
- String speciesList = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -25,25 +25,16 @@
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.Sets;
import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.EchoBaseProject;
import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.SpeciesMap;
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultProducer;
import fr.ifremer.coser.result.repository.ResultRepository;
-import fr.ifremer.coser.result.request.CommunityIndicatorRequest;
import fr.ifremer.coser.result.request.CoserRequestFacadeAware;
import fr.ifremer.coser.result.request.CoserRequestZoneAware;
-import fr.ifremer.coser.result.request.ExtractRequest;
-import fr.ifremer.coser.result.request.MapRequest;
-import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
-import fr.ifremer.coser.result.request.RawDataRequest;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
import org.apache.commons.logging.Log;
@@ -53,7 +44,6 @@
import java.io.FilenameFilter;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import java.util.Set;
/**
@@ -68,11 +58,6 @@
private static final Log log = LogFactory.getLog(EchoBaseResultRepository.class);
/**
- * Id of result source.
- */
- public static final String ID = "echobase";
-
- /**
* Project definition.
*/
protected final EchoBaseProject project;
@@ -112,12 +97,11 @@
*/
protected final Reports reports;
- protected final Map<String, ResultProducer<?>> resultProducers;
-
- public EchoBaseResultRepository(CoserServiceContext serviceContext, EchoBaseProject project) {
- this.serviceContext = serviceContext;
+ public EchoBaseResultRepository(CoserServiceContext serviceContext,
+ EchoBaseProject project) {
Preconditions.checkNotNull(serviceContext);
Preconditions.checkNotNull(project);
+ this.serviceContext = serviceContext;
this.project = project;
this.mapsDirectory = project.getMapsDirectory();
this.reports = new Reports();
@@ -127,13 +111,6 @@
this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
- this.resultProducers = Maps.newHashMap();
- this.resultProducers.put(MapRequest.class.getName(), new MapResultProducer(this));
- this.resultProducers.put(CommunityIndicatorRequest.class.getName(), new CommunityIndicatorResultProducer(this));
- this.resultProducers.put(PopulationIndicatorRequest.class.getName(), new PopulationIndicatorResultProducer(this));
- this.resultProducers.put(RawDataRequest.class.getName(), new RawDataResultProducer(this));
- this.resultProducers.put(ExtractRequest.class.getName(), new ExtractResultProducer(this));
-
if (log.isInfoEnabled()) {
log.info("New result repository: " + getId());
}
@@ -145,95 +122,77 @@
@Override
public String getId() {
- return ID + "::" + project.getBasedir();
+ return EchoBaseResultRepositoryType.ID + "::" + project.getBasedir();
}
@Override
- public <R extends CoserRequest> Map<String, String> getAvailableZones(R request) {
- Preconditions.checkNotNull(request);
- ResultProducer<R> resultProducer = getProducer(request);
- Preconditions.checkNotNull(resultProducer);
+ public EchoBaseResultRepositoryType getResultRepositoryType() {
+ return EchoBaseResultRepositoryType.INSTANCE;
+ }
- Map<String, String> result = resultProducer.getAvailableZones(request);
- return result;
+ public File getBasedir() {
+ return project.getBasedir();
}
- @Override
- public <R extends CoserRequest> Map<String, String> getAvailableSpecies(R request) {
- Preconditions.checkNotNull(request);
- ResultProducer<R> resultProducer = getProducer(request);
- Preconditions.checkNotNull(resultProducer);
+ public EchoBaseProject getProject() {
+ return project;
+ }
- Map<String, String> result = resultProducer.getAvailableSpecies(request);
- return result;
+ public String getProjectName() {
+ return project.getName();
}
- @Override
- public <R extends CoserRequest> Map<String, String> getAvailableIndicators(R request) {
- Preconditions.checkNotNull(request);
- ResultProducer<R> resultProducer = getProducer(request);
- Preconditions.checkNotNull(resultProducer);
+ public Reports getReports() {
+ return reports;
+ }
- Map<String, String> result = resultProducer.getAvailableIndicators(request);
- return result;
+ public String getSurveyName() {
+ return project.getSurveyName();
}
- @Override
- public <R extends CoserRequest> boolean acceptResult(R request) {
- Preconditions.checkNotNull(request);
- Preconditions.checkArgument(request.isFilled());
+ public String getZone() {
+ return project.getZoneName();
+ }
- ResultProducer<R> resultProducer = getProducer(request);
- Preconditions.checkNotNull(resultProducer);
- boolean result = resultProducer.acceptResult(request);
- return result;
+ public boolean isMapsResult() {
+ return true;
}
- @Override
- public <R extends CoserRequest> CoserResult getResult(R request) {
- Preconditions.checkNotNull(request);
- Preconditions.checkArgument(request.isFilled());
- Preconditions.checkArgument(acceptResult(request));
-
- ResultProducer<R> resultProducer = getProducer(request);
- Preconditions.checkNotNull(resultProducer);
-
- CoserResult result = resultProducer.produceResult(request);
- return result;
+ public boolean isIndicatorsResult() {
+ return true;
}
- protected <R extends CoserRequest> ResultProducer<R> getProducer(R request) {
- String requestTypeName = request.getClass().getName();
- return (ResultProducer<R>) resultProducers.get(requestTypeName);
+ public boolean isPubliableResult() {
+ return project.isPubliableResult();
}
// --------------------------------------------------------------------- //
// --- Matchers -------------------------------------------------------- //
// --------------------------------------------------------------------- //
- protected boolean matchFacade(CoserRequestFacadeAware request) {
+ public boolean matchFacade(CoserRequestFacadeAware request) {
return project.getFacadeName().equals(request.getFacade());
}
- protected boolean matchZone(CoserRequestZoneAware request) {
+ public boolean matchZone(CoserRequestZoneAware request) {
return project.getZoneName().equals(request.getZone());
}
- protected boolean matchIndicatorSpecies(String[] tuple, String species) {
+ public boolean matchIndicatorSpecies(String[] tuple, String species) {
String speciesCode = tuple[3];
boolean result = species.equals(speciesCode);
return result;
}
- protected boolean matchIndicatorIndicator(String[] tuple, String indicator) {
+ public boolean matchIndicatorIndicator(String[] tuple, String indicator) {
String indicatorCode = tuple[1];
boolean result = indicator.equals(indicatorCode);
return result;
}
- protected boolean matchIndicatorSpeciesAndIndicator(String[] tuple,
- String species,
- String indicator) {
+ public boolean matchIndicatorSpeciesAndIndicator(String[] tuple,
+ String species,
+ String indicator) {
String speciesCode = tuple[3];
String indicatorCode = tuple[1];
boolean result = species.equals(speciesCode) &&
@@ -241,9 +200,9 @@
return result;
}
- protected boolean matchCommunityIndicatorAndSpeciesList(String[] tuple,
- String indicator,
- String speciesList) {
+ public boolean matchCommunityIndicatorAndSpeciesList(String[] tuple,
+ String indicator,
+ String speciesList) {
String indicatorCode = tuple[1];
String speciesListCode = tuple[2];
boolean result = indicator.equals(indicatorCode) &&
@@ -251,15 +210,15 @@
return result;
}
- protected boolean matchIndicatorList(String[] tuple, List<String> indicatorList) {
+ public boolean matchIndicatorList(String[] tuple, List<String> indicatorList) {
String indicatorCode = tuple[1];
boolean result = indicatorList.contains(indicatorCode);
return result;
}
- protected boolean matchIndicatorListAndSpeciesList(String[] tuple,
- List<String> indicatorList,
- List<String> speciesList) {
+ public boolean matchIndicatorListAndSpeciesList(String[] tuple,
+ List<String> indicatorList,
+ List<String> speciesList) {
String indicatorCode = tuple[1];
String speciesCode = tuple[3];
boolean result = indicatorList.contains(indicatorCode) &&
@@ -271,7 +230,7 @@
// --- Get Map result -------------------------------------------------- //
// --------------------------------------------------------------------- //
- protected File getMapSpeciesFile(String species) {
+ public File getMapSpeciesFile(String species) {
String fileName = speciesCodeToMapFile.apply(species);
File file = fileName == null ? null : new File(mapsDirectory, fileName);
return file;
@@ -281,7 +240,7 @@
// --- Get species lists ----------------------------------------------- //
// --------------------------------------------------------------------- //
- protected Set<String> getMapSpecies() {
+ public Set<String> getMapSpecies() {
Set<String> result = Sets.newHashSet();
File[] files = project.getMapsDirectory().listFiles(mapSpeciesFilenameFilter);
if (files != null) {
@@ -291,7 +250,7 @@
return result;
}
- protected Set<String> getPopulationIndicatorSpecies() {
+ public Set<String> getPopulationIndicatorSpecies() {
Set<String> result = Sets.newHashSet();
Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
while (iterator.hasNext()) {
@@ -302,7 +261,7 @@
return result;
}
- protected Set<String> getCommunityIndicatorSpecies() {
+ public Set<String> getCommunityIndicatorSpecies() {
Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
Set<String> result = Sets.newHashSet();
while (iterator.hasNext()) {
@@ -313,7 +272,7 @@
return result;
}
- protected Set<String> getCommunityIndicatorSpecies(String indicator) {
+ public Set<String> getCommunityIndicatorSpecies(String indicator) {
Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
Set<String> result = Sets.newHashSet();
while (iterator.hasNext()) {
@@ -330,7 +289,7 @@
// --- Get indicator lists --------------------------------------------- //
// --------------------------------------------------------------------- //
- protected Set<String> getCommunityIndicators() {
+ public Set<String> getCommunityIndicators() {
Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
Set<String> result = Sets.newHashSet();
while (iterator.hasNext()) {
@@ -341,7 +300,7 @@
return result;
}
- protected Set<String> getPopulationIndicators() {
+ public Set<String> getPopulationIndicators() {
Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
Set<String> result = Sets.newHashSet();
while (iterator.hasNext()) {
@@ -369,7 +328,7 @@
// --- Get definition maps --------------------------------------------- //
// --------------------------------------------------------------------- //
- protected SpeciesMap getSpeciesMap() {
+ public SpeciesMap getSpeciesMap() {
if (speciesMap == null) {
File file = project.getSpeciesDefinitionFile();
speciesMap = new SpeciesMap(file);
@@ -377,7 +336,7 @@
return speciesMap;
}
- protected IndicatorMap getIndicatorsMap() {
+ public IndicatorMap getIndicatorsMap() {
return serviceContext.getIndicatorsMap();
}
@@ -389,7 +348,7 @@
// --- storage util methods -------------------------------------------- //
// --------------------------------------------------------------------- //
- protected Iterator<String[]> loadPopulationIndicatorStorage(boolean skipFirstLine) {
+ public Iterator<String[]> loadPopulationIndicatorStorage(boolean skipFirstLine) {
File file = project.getPopulationIndicatorsFile();
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
DataStorage dataStorage = DataStorages.load(file);
@@ -397,7 +356,7 @@
return iterator;
}
- protected Iterator<String[]> loadCommunityIndicatorStorage(boolean skipFirstLine) {
+ public Iterator<String[]> loadCommunityIndicatorStorage(boolean skipFirstLine) {
File file = project.getCommunityIndicatorsFile();
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
DataStorage dataStorage = DataStorages.load(file);
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,135 @@
+package fr.ifremer.coser.result.repository.echobase;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
+import fr.ifremer.coser.result.repository.echobase.command.DeleteResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.ExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.ExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetAllResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetIndicatorsForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetMapResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesListForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForMapResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetSpeciesListForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForMapResultCommand;
+import fr.ifremer.coser.result.repository.echobase.command.GetZonesForPopulationIndicatorResultCommand;
+
+import java.util.Map;
+
+/**
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class EchoBaseResultRepositoryCommandEngine implements ResultRepositoryCommandEngine {
+
+ protected final EchoBaseResultRepository resultRepository;
+
+ protected final Map<String, ResultRepositoryCommand<EchoBaseResultRepository, ?>> commands;
+
+ public EchoBaseResultRepositoryCommandEngine(EchoBaseResultRepository resultRepository) {
+ this.resultRepository = resultRepository;
+ this.commands = Maps.newHashMap();
+
+ // get map result
+ loadCommand(new GetZonesForMapResultCommand());
+ loadCommand(new GetSpeciesForMapResultCommand());
+ loadCommand(new GetMapResultCommand());
+
+ // get community indicator result
+ loadCommand(new GetZonesForCommunityIndicatorResultCommand());
+ loadCommand(new GetIndicatorsForCommunityIndicatorResultCommand());
+ loadCommand(new GetSpeciesListForCommunityIndicatorResultCommand());
+ loadCommand(new GetCommunityIndicatorResultCommand());
+
+ // get population indicator result
+ loadCommand(new GetZonesForPopulationIndicatorResultCommand());
+ loadCommand(new GetSpeciesForPopulationIndicatorResultCommand());
+ loadCommand(new GetIndicatorsForPopulationIndicatorResultCommand());
+ loadCommand(new GetPopulationIndicatorResultCommand());
+
+ // get all results
+ loadCommand(new GetAllResultsCommand());
+
+ // extract raw data
+ loadCommand(new GetZonesForExtractRawDataCommand());
+ loadCommand(new ExtractRawDataCommand());
+
+ // extract raw data and results
+ loadCommand(new GetZonesForExtractRawDataAndResultsCommand());
+ loadCommand(new GetSpeciesListForExtractRawDataAndResultsCommand());
+ loadCommand(new GetIndicatorsForExtractRawDataAndResultsCommand());
+ loadCommand(new ExtractRawDataAndResultsCommand());
+
+ // delete results
+ loadCommand(new DeleteResultsCommand());
+ }
+
+ @Override
+ public EchoBaseResultRepository getResultRepository() {
+ return resultRepository;
+ }
+
+ @Override
+ public <R extends CoserRequest> boolean acceptRequest(R request) {
+
+ ResultRepositoryCommand<EchoBaseResultRepository, R> command = getCommand(request);
+ boolean result = command.accept(resultRepository, request);
+ return result;
+ }
+
+ @Override
+ public <R extends CoserRequest> CoserResult executeRequest(R request) {
+ ResultRepositoryCommand<EchoBaseResultRepository, R> command = getCommand(request);
+ CoserResult result = command.execute(resultRepository, request);
+ return result;
+ }
+
+ protected <R extends CoserRequest> ResultRepositoryCommand<EchoBaseResultRepository, R> getCommand(R request) {
+ Preconditions.checkNotNull(request);
+ String requestTypeName = request.getClass().getName();
+ ResultRepositoryCommand<EchoBaseResultRepository, ?> resultRepositoryCommand = commands.get(requestTypeName);
+ Preconditions.checkNotNull(resultRepositoryCommand);
+ return (ResultRepositoryCommand<EchoBaseResultRepository, R>) resultRepositoryCommand;
+ }
+
+ protected void loadCommand(ResultRepositoryCommand<EchoBaseResultRepository, ?> command) {
+ String name = command.getRequestType().getName();
+ this.commands.put(name, command);
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryCommandEngine.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -27,6 +27,7 @@
import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.EchoBaseProject;
import fr.ifremer.coser.result.ResultRepositoryInitializationException;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
import org.apache.commons.io.filefilter.AbstractFileFilter;
import org.apache.commons.io.filefilter.AndFileFilter;
@@ -100,4 +101,9 @@
}
return result;
}
+
+ @Override
+ public ResultRepositoryCommandEngine newEngine(EchoBaseResultRepository repository) {
+ return new EchoBaseResultRepositoryCommandEngine(repository);
+ }
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,65 @@
+package fr.ifremer.coser.result.repository.echobase;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.n;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class EchoBaseResultRepositoryType implements ResultRepositoryType {
+
+ /**
+ * Id of result source.
+ */
+ public static final String ID = "echobase";
+
+ protected static final EchoBaseResultRepositoryType INSTANCE = new EchoBaseResultRepositoryType();
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getId() {
+ return ID;
+ }
+
+ @Override
+ public String getLabelKey() {
+ return n("coser.business.result.repository.type.echobase");
+ }
+
+ @Override
+ public Set<ResultType> getResultTypes() {
+ return Sets.immutableEnumSet(ResultType.MAP_AND_INDICATOR);
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryType.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/ExtractResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/ExtractResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/ExtractResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,780 +0,0 @@
-package fr.ifremer.coser.result.repository.echobase;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.EchoBaseProject;
-import fr.ifremer.coser.bean.IndicatorMap;
-import fr.ifremer.coser.bean.SpeciesMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultProducer;
-import fr.ifremer.coser.result.request.ExtractRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import fr.ifremer.coser.util.DataType;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.collections4.keyvalue.MultiKey;
-import org.apache.commons.collections4.map.MultiKeyMap;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class ExtractResultProducer implements ResultProducer<ExtractRequest> {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(ExtractResultProducer.class);
-
- protected final EchoBaseResultRepository repository;
-
- protected final Reports reports;
-
- protected final EchoBaseProject project;
-
- public ExtractResultProducer(EchoBaseResultRepository repository) {
- this.repository = repository;
- this.project = repository.project;
- this.reports = repository.reports;
- }
-
- @Override
- public EchoBaseResultRepository getRepository() {
- return repository;
- }
-
- @Override
- public boolean acceptResult(ExtractRequest request) {
- return matchExtractTypeSet(request) &&
- matchZoneList(request) &&
- (matchPopulationIndicatorListAndSpeciesList(request) ||
- matchCommunityIndicatorListAndSpeciesList(request));
- }
-
- @Override
- public Map<String, String> getAvailableZones(ExtractRequest request) {
-
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(null);
- Map<String, String> result = zonesMap.getSubZonesMap(project.getZoneName(), allowedZones);
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableSpecies(ExtractRequest request) {
- Preconditions.checkNotNull(request.getZoneList());
-
- boolean match = matchZoneList(request);
-
- Map<String, String> result = null;
- if (match) {
- Set<String> speciesList = Sets.newHashSet();
-
- // get all species for population indicators
- speciesList.addAll(repository.getPopulationIndicatorSpecies());
- // get all species for community indicators
- speciesList.addAll(repository.getCommunityIndicatorSpecies());
- result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableIndicators(ExtractRequest request) {
- Preconditions.checkNotNull(request.getZoneList());
- Preconditions.checkNotNull(request.getExtractTypeList());
-
- Map<String, String> result = null;
-
- boolean match = matchZoneList(request);
- if (match) {
-
- Set<String> indicatorList = null;
-
- if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
-
- // get all community indicators for given zone
- indicatorList = repository.getCommunityIndicators();
- } else if (request.getExtractTypeList().contains(DataType.POPULATION)) {
-
- // get all population indicators for given zone
- indicatorList = repository.getPopulationIndicators();
- }
-
- if (indicatorList != null) {
- result = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
- }
- }
- return result;
- }
-
- @Override
- public FileResult produceResult(ExtractRequest r) {
-
- Locale locale = r.getLocale();
- List<String> zoneList = r.getZoneList();
- List<DataType> extractTypeList = r.getExtractTypeList();
- List<String> speciesList = r.getSpeciesList();
- List<String> communityIndicatorList = r.getCommunityIndicatorList();
- List<String> populationIndicatorList = r.getPopulationIndicatorList();
-
- File resultZip = null;
- File tempDir = null;
- try {
- tempDir = FileUtil.createTempDirectory("coser-extract-", "-tmp");
-
- File subDir = new File(tempDir, "Indicateurs_Ifremer");
- FileUtils.forceMkdir(subDir);
-
- // les sources se retrouve dans le zip a cote du pdf
- if (extractTypeList.contains(DataType.SOURCE)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting sources");
- }
- File srcDir = new File(subDir, "sources");
- extractSource(srcDir);
- }
-
- // les cartes doivent se retrouver dans le pdf
- MultiKeyMap pdfMaps = null;
- if (extractTypeList.contains(DataType.MAP)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting maps");
- }
- String zone = project.getZoneName();
- SpeciesMap speciesMap = repository.getSpeciesMap();
- for (String species : speciesList) {
- File mapFile = repository.getMapSpeciesFile(species);
- pdfMaps.put(zone, speciesMap.getSpeciesName(species), mapFile);
- }
- }
-
- // les graphiques sont également dans le pdf
- MultiKeyMap pdfCharts = null;
- if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
- CollectionUtils.isNotEmpty(populationIndicatorList)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting charts");
- }
- pdfCharts = extractCharts(speciesList,
- communityIndicatorList,
- populationIndicatorList,
- locale);
- }
-
- // generate pdf if necessary
- if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
- if (log.isDebugEnabled()) {
- log.debug("Generated Extract PDF");
- }
- reports.generateExtractPDF(subDir,
- zoneList,
- pdfMaps,
- pdfCharts,
- repository.getZonesMap(),
- locale);
- }
-
- // fichier de décharge en pdf
- if (log.isDebugEnabled()) {
- log.debug("Generated decharge PDF");
- }
- String filename = reports.getDechargeFilename(locale);
- File dechargePDF = new File(subDir, filename);
- reports.generateDechargePDF(dechargePDF, locale, null, null);
-
- // make zip
- if (log.isDebugEnabled()) {
- log.debug("Make final archive");
- }
- resultZip = File.createTempFile("coser-extract-", ".zip");
- resultZip.deleteOnExit();
- ZipUtil.compress(resultZip, subDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't create zip file", ex);
- } finally {
- // clean directory
- FileUtils.deleteQuietly(tempDir);
- }
-
- FileResult result = new FileResult(repository.getId(), resultZip);
- return result;
- }
-
- /**
- * Generate raw data after selection in a sub directory (named of the zone) of the given directory.
- *
- * @param directory where to generate file
- */
- protected void extractSource(File directory) {
-
- //TODO
- }
-
- /**
- * Retourne les indicateurs calculés avec leurs traductions scientifique
- * pour la zone et l'especes souhaitées.
- *
- * @param species especes (if {@code null} look for com indicators
- * @param comIndicators comIndicator
- * @param popIndicators popIndicators
- * @param locale locale
- * @return la liste des indicateurs (zone, speciesname, [graphfile, graphdata])
- */
- protected MultiKeyMap extractCharts(Collection<String> species,
- Collection<String> comIndicators,
- Collection<String> popIndicators,
- Locale locale) {
-
- MultiKeyMap chartFileAndDatas = new MultiKeyMap();
-
- String zone = project.getZoneName();
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
-
- if (CollectionUtils.isNotEmpty(comIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataCom = getRsufiResultComCharts(comIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataCom.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
- }
-
- if (CollectionUtils.isNotEmpty(popIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataPop = getRsufiResultPopCharts(species,
- popIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataPop.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
- }
-
- return chartFileAndDatas;
- }
-
- /**
- * Generate community graph for selected indicators.
- * Used by web ui extraction.
- *
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
- * @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
- */
- public Map<String, Pair<File, String>> getRsufiResultComCharts(Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width, int height) {
-
- Map<String, Pair<File, String>> result = Maps.newHashMap();
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
-
- Map<String, Map<Integer, Double[]>> indicatorGraphData = new HashMap<String, Map<Integer, Double[]>>();
- Map<String, String> indicatorLists = new HashMap<String, String>();
- Map<String, DataStorage> indicatorStorages = new HashMap<String, DataStorage>();
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- Iterator<String[]> estComIndIterator = repository.loadCommunityIndicatorStorage(true);
- while (estComIndIterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = estComIndIterator.next();
- String indicatorCode = tuple[1];
- String indicatorList = tuple[2];
-
- if (indicators.contains(indicatorCode)) {
-
- // si pas de list selectionnée, on prend la premiere
- String localList = indicatorLists.get(indicatorCode);
- if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- indicatorLists.put(indicatorCode, localList);
- }
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicatorCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
-
- // for data part
- DataStorage subDataStorage = indicatorStorages.get(indicatorCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Strate", "Année", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, subDataStorage);
- }
- subDataStorage.add(tuple);
- }
- }
- }
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (String indicator : indicatorGraphData.keySet()) {
- // get graph title
- String chartTitle = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- chartTitle += " - " + indicatorName;
-
- // ajout de la traduction de la liste d'indicateur
- // les liste sont a1, T1, T2 ...
- String localList = indicatorLists.get(indicator);
- String listLetter = String.valueOf(localList.charAt(0));
- Iterator<String[]> typeIterator = repository.getSpeciesMap().iterator(true);
- while (typeIterator.hasNext()) {
- // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
- String[] tuple = typeIterator.next();
- if (tuple[4].equals(listLetter)) {
- /// gestion du groupe "Tous"
- // cas special, c'est la seule valeur du fichier
- // code type espece qui a besoin d'une traduction
- if (tuple[4].equalsIgnoreCase("T")) {
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + "Tous Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + "Todo Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + "All List " + localList.charAt(1);
- }
- } else {
- // ajout de la traduction du nom de liste plus le numéro
- if ("fr".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
- } else if ("es".equals(locale.getLanguage())) {
- chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
- } else {
- chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
- }
- }
- break;
- }
- }
-
- // generate dataset with sorted data
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicator);
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = reports.getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- File chartFile = File.createTempFile("coser-community-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = indicatorStorages.get(indicator);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- /**
- * Generate population graph for selected species and indicator.
- *
- * @param species species to extract
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
- * @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
- */
- public Map<String, Pair<File, String>> getRsufiResultPopCharts(Collection<String> species,
- Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width,
- int height) {
-
- Map<String, Pair<File, String>> result = Maps.newHashMap();
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
-
- MultiKeyMap indicatorGraphData = new MultiKeyMap();
- MultiKeyMap indicatorStorages = new MultiKeyMap();
-
- // Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
- Iterator<String[]> estPopIndIterator = repository.loadPopulationIndicatorStorage(true);
- while (estPopIndIterator.hasNext()) {
- String[] tuple = estPopIndIterator.next();
-
- String speciesCode = tuple[3];
- String indicatorCode = tuple[1];
- if (species.contains(speciesCode) && indicators.contains(indicatorCode)) {
-
- // XXX echatellier, maybe take care of list here ?
-
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicatorCode, speciesCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, speciesCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
-
- // for data part
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicatorCode, speciesCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Espèce", "Strate", "Annee", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Species", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, speciesCode, subDataStorage);
- }
- subDataStorage.add(tuple);
- }
- }
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (MultiKey indicatorSpecies : (Set<MultiKey>) indicatorGraphData.keySet()) {
- String indicator = (String) indicatorSpecies.getKey(0);
- String aSpecies = (String) indicatorSpecies.getKey(1);
- // get graph title
- String title = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- title += " - " + indicatorName;
- title += " - " + repository.getSpeciesMap().getReportDisplayName(aSpecies);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicator, aSpecies);
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = reports.getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- File chartFile = File.createTempFile("coser-population-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicator, aSpecies);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator + "-" + aSpecies, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(ExtractRequest request) {
- //TODO Should deal also with raw-data type
- return !request.getExtractTypeList().contains(DataType.SOURCE);
- }
-
- protected boolean matchZoneList(ExtractRequest request) {
- return request.getZoneList().contains(project.getZoneName());
- }
-
- protected boolean matchCommunityIndicatorList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorListAndSpeciesList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchCommunityIndicatorListAndSpeciesList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/MapResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/MapResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/MapResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,124 +0,0 @@
-package fr.ifremer.coser.result.repository.echobase;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.bean.EchoBaseProject;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.RequestUnavailableForProducerException;
-import fr.ifremer.coser.result.repository.ResultProducer;
-import fr.ifremer.coser.result.request.MapRequest;
-
-import java.io.File;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class MapResultProducer implements ResultProducer<MapRequest> {
-
- protected final EchoBaseResultRepository repository;
-
- protected final EchoBaseProject project;
-
- public MapResultProducer(EchoBaseResultRepository repository) {
- this.repository = repository;
- this.project = repository.project;
- }
-
- @Override
- public EchoBaseResultRepository getRepository() {
- return repository;
- }
-
- @Override
- public boolean acceptResult(MapRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(request);
- }
-
- @Override
- public Map<String, String> getAvailableZones(MapRequest request) {
- Preconditions.checkNotNull(request.getFacade());
-
- boolean match = repository.matchFacade(request);
-
- Map<String, String> result = null;
- if (match) {
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
- result = zonesMap.getSubZonesMap(project.getZoneName(), allowedZones);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableSpecies(MapRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
-
- Map<String, String> result = null;
-
- boolean match = repository.matchFacade(request) && repository.matchZone(request);
- if (match) {
- // get all map species for given facade + zone
- Set<String> speciesList = repository.getMapSpecies();
- result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableIndicators(MapRequest request) {
- throw RequestUnavailableForProducerException.newException("getAvailableIndicators", this);
- }
-
- @Override
- public FileResult produceResult(MapRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
- Preconditions.checkNotNull(request.getSpecies());
-
- File resultZip = repository.getMapSpeciesFile(request.getSpecies());
-
- FileResult result = new FileResult(repository.getId(), resultZip);
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(MapRequest request) {
- String species = request.getSpecies();
- File file = repository.getMapSpeciesFile(species);
- return file != null && file.exists();
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/PopulationIndicatorResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/PopulationIndicatorResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/PopulationIndicatorResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,341 +0,0 @@
-package fr.ifremer.coser.result.repository.echobase;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.EchoBaseProject;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultProducer;
-import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import org.apache.commons.lang3.StringUtils;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class PopulationIndicatorResultProducer implements ResultProducer<PopulationIndicatorRequest> {
-
- protected final EchoBaseResultRepository repository;
-
- protected final Reports reports;
-
- protected final EchoBaseProject project;
-
- public PopulationIndicatorResultProducer(EchoBaseResultRepository repository) {
- this.repository = repository;
- this.project = repository.project;
- this.reports = repository.reports;
- }
-
- @Override
- public EchoBaseResultRepository getRepository() {
- return repository;
- }
-
- @Override
- public boolean acceptResult(PopulationIndicatorRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpeciesAndIndicator(request);
- }
-
- @Override
- public Map<String, String> getAvailableZones(PopulationIndicatorRequest request) {
- boolean match = repository.matchFacade(request);
-
- Map<String, String> result = null;
- if (match) {
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
- result = zonesMap.getSubZonesMap(project.getZoneName(), allowedZones);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableSpecies(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
-
- Map<String, String> result = null;
- boolean match = repository.matchFacade(request) && repository.matchZone(request);
-
- if (match) {
- // get all population indicator species for given facade + zone
- Set<String> speciesList = repository.getPopulationIndicatorSpecies();
- result = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
- }
-
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableIndicators(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
-
- Map<String, String> result = null;
- boolean match = repository.matchFacade(request) && repository.matchZone(request);
- if (match) {
-
- // get all indicators for given facade + zone
- Set<String> indicatorList = repository.getCommunityIndicators();
- result = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
- }
- return result;
- }
-
- @Override
- public FileResult produceResult(PopulationIndicatorRequest r) {
-
- File file = null;
- switch (r.getResultType()) {
- case DATA:
- file = getPopulationIndicatorDataFile(r.getIndicator(),
- r.getSpecies());
- break;
-
- case GRAPH:
- file = getPopulationIndicatorGraphFile(r.getLocale(),
- r.getZone(),
- r.getIndicator(),
- r.getSpecies());
- break;
- }
-
-
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
- protected File getPopulationIndicatorDataFile(String species, String indicator) {
-
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
- dataStorage.add(tuple);
- }
- }
- File result = DataStorages.save(dataStorage, "coser-chart-population-indicator",
- ".csv"
- );
- return result;
- }
-
- protected File getPopulationIndicatorGraphFile(Locale locale,
- String zone,
- String species,
- String indicator) {
-
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
-
- if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
- indicatorFound = true;
-
- // XXX echatellier, maybe take care of list here ?
-
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String title = zoneDisplayName;
- title += " - " + indicatorName;
- title += " - " + repository.getSpeciesMap().getReportDisplayName(species);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = reports.getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-population-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
-
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchSpeciesAndIndicator(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
- Preconditions.checkNotNull(request.getIndicator());
-
- String species = request.getSpecies();
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/RawDataResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/RawDataResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/RawDataResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,103 +0,0 @@
-package fr.ifremer.coser.result.repository.echobase;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.bean.EchoBaseProject;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.RequestUnavailableForProducerException;
-import fr.ifremer.coser.result.repository.ResultProducer;
-import fr.ifremer.coser.result.request.RawDataRequest;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class RawDataResultProducer implements ResultProducer<RawDataRequest> {
-
- protected final EchoBaseResultRepository repository;
-
- protected final EchoBaseProject project;
-
- public RawDataResultProducer(EchoBaseResultRepository repository) {
- this.repository = repository;
- this.project = repository.project;
-
- }
-
- @Override
- public EchoBaseResultRepository getRepository() {
- return repository;
- }
-
- @Override
- public boolean acceptResult(RawDataRequest request) {
- return repository.matchFacade(request) &&
- repository.matchZone(request);
- }
-
- @Override
- public Map<String, String> getAvailableZones(RawDataRequest request) {
- Preconditions.checkNotNull(request.getFacade());
-
- boolean match = repository.matchFacade(request);
-
- Map<String, String> result = null;
- if (match) {
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
- result = zonesMap.getSubZonesMap(project.getZoneName(), allowedZones);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableSpecies(RawDataRequest request) {
- throw RequestUnavailableForProducerException.newException("getAvailableSpecies", this);
- }
-
- @Override
- public Map<String, String> getAvailableIndicators(RawDataRequest request) {
- throw RequestUnavailableForProducerException.newException("getAvailableIndicators", this);
- }
-
- @Override
- public FileResult produceResult(RawDataRequest r) {
-
- //TODO
- throw RequestUnavailableForProducerException.newException("produceResult", this);
- }
-
-
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- //TODO
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,109 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.CoserResult;
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.VoidResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryType;
+import fr.ifremer.coser.result.request.DeleteResultsRequest;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DeleteResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, DeleteResultsRequest> {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(DeleteResultsCommand.class);
+
+ @Override
+ public Class<DeleteResultsRequest> getRequestType() {
+ return DeleteResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ DeleteResultsRequest request) {
+ boolean result = matchRepositoryType(request) &&
+ matchResultType(request) &&
+ matchPublish(repository) &&
+ matchZone(repository, request);
+ return result;
+ }
+
+ @Override
+ public CoserResult execute(EchoBaseResultRepository repository,
+ DeleteResultsRequest request) {
+ File basedir = repository.getBasedir();
+ if (log.isInfoEnabled()) {
+ log.info("Will delete project at: " + basedir);
+ }
+ try {
+ FileUtils.deleteDirectory(basedir);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not delete project at: " + basedir, e);
+ }
+ return new VoidResult(repository.getId());
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchRepositoryType(DeleteResultsRequest request) {
+ boolean result = request.getResultRepositoryType().equals(EchoBaseResultRepositoryType.ID);
+ return result;
+ }
+
+ protected boolean matchResultType(DeleteResultsRequest request) {
+ ResultType resultType = request.getResultType();
+ boolean result = ResultType.MAP_AND_INDICATOR == resultType;
+ return result;
+ }
+
+ protected boolean matchPublish(EchoBaseResultRepository repository) {
+ boolean result = repository.isPubliableResult();
+ return result;
+ }
+
+ protected boolean matchZone(EchoBaseResultRepository repository,
+ DeleteResultsRequest request) {
+ List<String> zoneList = request.getZoneList();
+ boolean result = zoneList.contains(repository.getZone());
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/DeleteResultsCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/ExtractResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,720 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.SpeciesMap;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.storage.MemoryDataStorage;
+import fr.ifremer.coser.util.DataType;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections4.keyvalue.MultiKey;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.CategoryAxis;
+import org.jfree.chart.axis.CategoryLabelPositions;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.plot.CategoryPlot;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.renderer.category.CategoryItemRenderer;
+import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
+import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, ExtractRawDataAndResultsRequest> {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(ExtractRawDataAndResultsCommand.class);
+
+ @Override
+ public Class<ExtractRawDataAndResultsRequest> getRequestType() {
+ return ExtractRawDataAndResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ return matchExtractTypeSet(request) &&
+ matchZoneList(repository, request) &&
+ (matchPopulationIndicatorListAndSpeciesList(repository, request) ||
+ matchCommunityIndicatorListAndSpeciesList(repository, request));
+ }
+
+ @Override
+ public FileResult execute(EchoBaseResultRepository repository,
+ ExtractRawDataAndResultsRequest r) {
+
+ Locale locale = r.getLocale();
+ List<String> zoneList = r.getZoneList();
+ List<DataType> extractTypeList = r.getExtractTypeList();
+ List<String> speciesList = r.getSpeciesList();
+ List<String> communityIndicatorList = r.getCommunityIndicatorList();
+ List<String> populationIndicatorList = r.getPopulationIndicatorList();
+
+ File resultZip = null;
+ File tempDir = null;
+ try {
+ tempDir = FileUtil.createTempDirectory("coser-extract-", "-tmp");
+
+ File subDir = new File(tempDir, "Indicateurs_Ifremer");
+ FileUtils.forceMkdir(subDir);
+
+ // les sources se retrouve dans le zip a cote du pdf
+ if (extractTypeList.contains(DataType.SOURCE)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting sources");
+ }
+ File srcDir = new File(subDir, "sources");
+ extractSource(srcDir);
+ }
+
+ // les cartes doivent se retrouver dans le pdf
+ MultiKeyMap pdfMaps = null;
+ if (extractTypeList.contains(DataType.MAP)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting maps");
+ }
+ String zone = repository.getZone();
+ SpeciesMap speciesMap = repository.getSpeciesMap();
+ for (String species : speciesList) {
+ File mapFile = repository.getMapSpeciesFile(species);
+ pdfMaps.put(zone, speciesMap.getSpeciesName(species), mapFile);
+ }
+ }
+
+ // les graphiques sont également dans le pdf
+ MultiKeyMap pdfCharts = null;
+ if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
+ CollectionUtils.isNotEmpty(populationIndicatorList)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting charts");
+ }
+ pdfCharts = extractCharts(repository,
+ speciesList,
+ communityIndicatorList,
+ populationIndicatorList,
+ locale);
+ }
+
+ // generate pdf if necessary
+ if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Generated Extract PDF");
+ }
+ repository.getReports().generateExtractPDF(subDir,
+ zoneList,
+ pdfMaps,
+ pdfCharts,
+ repository.getZonesMap(),
+ locale);
+ }
+
+ // fichier de décharge en pdf
+ if (log.isDebugEnabled()) {
+ log.debug("Generated decharge PDF");
+ }
+ String filename = repository.getReports().getDechargeFilename(locale);
+ File dechargePDF = new File(subDir, filename);
+ repository.getReports().generateDechargePDF(dechargePDF, locale, null, null);
+
+ // make zip
+ if (log.isDebugEnabled()) {
+ log.debug("Make final archive");
+ }
+ resultZip = File.createTempFile("coser-extract-", ".zip");
+ resultZip.deleteOnExit();
+ ZipUtil.compress(resultZip, subDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't create zip file", ex);
+ } finally {
+ // clean directory
+ FileUtils.deleteQuietly(tempDir);
+ }
+
+ FileResult result = new FileResult(repository.getId(), resultZip);
+ return result;
+ }
+
+ /**
+ * Generate raw data after selection in a sub directory (named of the zone) of the given directory.
+ *
+ * @param directory where to generate file
+ */
+ protected void extractSource(File directory) {
+
+ //TODO
+ }
+
+ /**
+ * Retourne les indicateurs calculés avec leurs traductions scientifique
+ * pour la zone et l'especes souhaitées.
+ *
+ * @param species especes (if {@code null} look for com indicators
+ * @param comIndicators comIndicator
+ * @param popIndicators popIndicators
+ * @param locale locale
+ * @return la liste des indicateurs (zone, speciesname, [graphfile, graphdata])
+ */
+ protected MultiKeyMap extractCharts(EchoBaseResultRepository repository,
+ Collection<String> species,
+ Collection<String> comIndicators,
+ Collection<String> popIndicators,
+ Locale locale) {
+
+ MultiKeyMap chartFileAndDatas = new MultiKeyMap();
+
+ String zone = repository.getZone();
+ String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
+
+ if (CollectionUtils.isNotEmpty(comIndicators)) {
+ Map<String, Pair<File, String>> chartFileAndDataCom = getRsufiResultComCharts(repository,
+ comIndicators,
+ zoneDisplayName,
+ repository.getIndicatorsMap(),
+ locale,
+ 650,
+ 430);
+ // put in multimap as zone,speciesname, data
+ for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataCom.entrySet()) {
+ chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
+ }
+ }
+
+ if (CollectionUtils.isNotEmpty(popIndicators)) {
+ Map<String, Pair<File, String>> chartFileAndDataPop = getRsufiResultPopCharts(repository,
+ species,
+ popIndicators,
+ zoneDisplayName,
+ repository.getIndicatorsMap(),
+ locale,
+ 650,
+ 430);
+ // put in multimap as zone,speciesname, data
+ for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataPop.entrySet()) {
+ chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
+ }
+ }
+
+ return chartFileAndDatas;
+ }
+
+ /**
+ * Generate community graph for selected indicators.
+ * Used by web ui extraction.
+ *
+ * @param indicators indicators to extract
+ * @param zoneDisplayName zone full name
+ * @param indicatorMap indicator localized map
+ * @param locale locale
+ * @param width graph width
+ * @param height graph height
+ * @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
+ */
+ public Map<String, Pair<File, String>> getRsufiResultComCharts(EchoBaseResultRepository repository,
+ Collection<String> indicators,
+ String zoneDisplayName,
+ IndicatorMap indicatorMap,
+ Locale locale,
+ int width, int height) {
+
+ Map<String, Pair<File, String>> result = Maps.newHashMap();
+
+ int multiplicator = 1;
+ int minYear = Integer.MAX_VALUE;
+ int maxYear = Integer.MIN_VALUE;
+
+ Map<String, Map<Integer, Double[]>> indicatorGraphData = new HashMap<String, Map<Integer, Double[]>>();
+ Map<String, String> indicatorLists = new HashMap<String, String>();
+ Map<String, DataStorage> indicatorStorages = new HashMap<String, DataStorage>();
+
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ Iterator<String[]> estComIndIterator = repository.loadCommunityIndicatorStorage(true);
+ while (estComIndIterator.hasNext()) {
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ String[] tuple = estComIndIterator.next();
+ String indicatorCode = tuple[1];
+ String indicatorList = tuple[2];
+
+ if (indicators.contains(indicatorCode)) {
+
+ // si pas de list selectionnée, on prend la premiere
+ String localList = indicatorLists.get(indicatorCode);
+ if (StringUtils.isBlank(localList)) {
+ localList = indicatorList;
+ indicatorLists.put(indicatorCode, localList);
+ }
+
+ if (indicatorList.equals(localList)) {
+ Double estimation = Double.parseDouble(tuple[5]);
+ Double ecart = Double.parseDouble(tuple[6]);
+ int year = Integer.parseInt(tuple[4]);
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ Map<Integer, Double[]> graphData = indicatorGraphData.get(indicatorCode);
+ if (graphData == null) {
+ graphData = new HashMap<Integer, Double[]>();
+ indicatorGraphData.put(indicatorCode, graphData);
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
+
+ // si les données sont énormes, on affiche les données
+ // / multiplicator et on le mentionne dans la légende
+ if (estimation > 1e9) {
+ multiplicator = 1000000;
+ }
+ if (estimation > 1e6 && multiplicator < 1000000) {
+ multiplicator = 1000;
+ }
+
+ // for data part
+ DataStorage subDataStorage = indicatorStorages.get(indicatorCode);
+ if (subDataStorage == null) {
+ subDataStorage = new MemoryDataStorage();
+ if ("fr".equals(locale.getLanguage())) {
+ subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Strate", "Année", "Estimation", "EcartType", "CV"});
+ } else {
+ subDataStorage.add(new String[]{"Survey", "Index", "List", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
+ }
+ indicatorStorages.put(indicatorCode, subDataStorage);
+ }
+ subDataStorage.add(tuple);
+ }
+ }
+ }
+
+ // avec l'extraction des données, on peut demander a générer un graphique
+ // sur un indicateur qui n'est pas présent dans le projet courant,
+ // dans ce cas, on retourne null
+ for (String indicator : indicatorGraphData.keySet()) {
+ // get graph title
+ String chartTitle = zoneDisplayName;
+ String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
+ String unit = indicatorMap.getIndicatorUnit(indicator);
+ chartTitle += " - " + indicatorName;
+
+ // ajout de la traduction de la liste d'indicateur
+ // les liste sont a1, T1, T2 ...
+ String localList = indicatorLists.get(indicator);
+ String listLetter = String.valueOf(localList.charAt(0));
+ Iterator<String[]> typeIterator = repository.getSpeciesMap().iterator(true);
+ while (typeIterator.hasNext()) {
+ // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
+ String[] tuple = typeIterator.next();
+ if (tuple[4].equals(listLetter)) {
+ /// gestion du groupe "Tous"
+ // cas special, c'est la seule valeur du fichier
+ // code type espece qui a besoin d'une traduction
+ if (tuple[4].equalsIgnoreCase("T")) {
+ if ("fr".equals(locale.getLanguage())) {
+ chartTitle += " - " + "Tous Liste " + localList.charAt(1);
+ } else if ("es".equals(locale.getLanguage())) {
+ chartTitle += " - " + "Todo Lista " + localList.charAt(1);
+ } else {
+ chartTitle += " - " + "All List " + localList.charAt(1);
+ }
+ } else {
+ // ajout de la traduction du nom de liste plus le numéro
+ if ("fr".equals(locale.getLanguage())) {
+ chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
+ } else if ("es".equals(locale.getLanguage())) {
+ chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
+ } else {
+ chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
+ }
+ }
+ break;
+ }
+ }
+
+ // generate dataset with sorted data
+ Map<Integer, Double[]> graphData = indicatorGraphData.get(indicator);
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
+ String yearAxis = repository.getReports().getYearChartTitle(locale);
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+ // label horizontaux
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ // n'affiche pas les nombre sur le graphique
+ //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
+ //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
+ //renderer.setBaseItemLabelsVisible(true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(chartTitle,
+ JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ try {
+ File chartFile = File.createTempFile("coser-community-chart-", ".png");
+ chartFile.deleteOnExit();
+ ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
+ //ByteArrayOutputStream out = new ByteArrayOutputStream();
+ //ChartUtilities.writeChartAsPNG(out, chart, width, height);
+
+ // data extraction
+ DataStorage subDataStorage = indicatorStorages.get(indicator);
+ StringWriter writer = new StringWriter();
+ DataStorages.save(subDataStorage, writer);
+
+ // add chart file dans chart data in result
+ result.put(indicator, Pair.of(chartFile, writer.toString()));
+ writer.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save chart", ex);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Generate population graph for selected species and indicator.
+ *
+ * @param species species to extract
+ * @param indicators indicators to extract
+ * @param zoneDisplayName zone full name
+ * @param indicatorMap indicator localized map
+ * @param locale locale
+ * @param width graph width
+ * @param height graph height
+ * @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
+ */
+ public Map<String, Pair<File, String>> getRsufiResultPopCharts(EchoBaseResultRepository repository,
+ Collection<String> species,
+ Collection<String> indicators,
+ String zoneDisplayName,
+ IndicatorMap indicatorMap,
+ Locale locale,
+ int width,
+ int height) {
+
+ Map<String, Pair<File, String>> result = Maps.newHashMap();
+
+ int multiplicator = 1;
+ int minYear = Integer.MAX_VALUE;
+ int maxYear = Integer.MIN_VALUE;
+
+ MultiKeyMap indicatorGraphData = new MultiKeyMap();
+ MultiKeyMap indicatorStorages = new MultiKeyMap();
+
+ // Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
+ Iterator<String[]> estPopIndIterator = repository.loadPopulationIndicatorStorage(true);
+ while (estPopIndIterator.hasNext()) {
+ String[] tuple = estPopIndIterator.next();
+
+ String speciesCode = tuple[3];
+ String indicatorCode = tuple[1];
+ if (species.contains(speciesCode) && indicators.contains(indicatorCode)) {
+
+ // XXX echatellier, maybe take care of list here ?
+
+ Double estimation = Double.parseDouble(tuple[6]);
+ Double ecart = Double.parseDouble(tuple[7]);
+ int year = Integer.parseInt(tuple[5]);
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicatorCode, speciesCode);
+ if (graphData == null) {
+ graphData = new HashMap<Integer, Double[]>();
+ indicatorGraphData.put(indicatorCode, speciesCode, graphData);
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
+
+ // si les données sont énormes, on affiche les données
+ // / multiplicator et on le mentionne dans la légende
+ if (estimation > 1e9) {
+ multiplicator = 1000000;
+ }
+ if (estimation > 1e6 && multiplicator < 1000000) {
+ multiplicator = 1000;
+ }
+
+ // for data part
+ DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicatorCode, speciesCode);
+ if (subDataStorage == null) {
+ subDataStorage = new MemoryDataStorage();
+ if ("fr".equals(locale.getLanguage())) {
+ subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Espèce", "Strate", "Annee", "Estimation", "EcartType", "CV"});
+ } else {
+ subDataStorage.add(new String[]{"Survey", "Index", "List", "Species", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
+ }
+ indicatorStorages.put(indicatorCode, speciesCode, subDataStorage);
+ }
+ subDataStorage.add(tuple);
+ }
+ }
+
+ // avec l'extraction des données, on peut demander a générer un graphique
+ // sur un indicateur qui n'est pas présent dans le projet courant,
+ // dans ce cas, on retourne null
+ for (MultiKey indicatorSpecies : (Set<MultiKey>) indicatorGraphData.keySet()) {
+ String indicator = (String) indicatorSpecies.getKey(0);
+ String aSpecies = (String) indicatorSpecies.getKey(1);
+ // get graph title
+ String title = zoneDisplayName;
+ String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
+ String unit = indicatorMap.getIndicatorUnit(indicator);
+ title += " - " + indicatorName;
+ title += " - " + repository.getSpeciesMap().getReportDisplayName(aSpecies);
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicator, aSpecies);
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
+ String yearAxis = repository.getReports().getYearChartTitle(locale);
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+ // label horizontaux
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ // n'affiche pas les nombre sur le graphique
+ //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
+ //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
+ //renderer.setBaseItemLabelsVisible(true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(title,
+ JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ try {
+ File chartFile = File.createTempFile("coser-population-chart-", ".png");
+ chartFile.deleteOnExit();
+ ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
+ //ByteArrayOutputStream out = new ByteArrayOutputStream();
+ //ChartUtilities.writeChartAsPNG(out, chart, width, height);
+
+ // data extraction
+ DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicator, aSpecies);
+ StringWriter writer = new StringWriter();
+ DataStorages.save(subDataStorage, writer);
+
+ // add chart file dans chart data in result
+ result.put(indicator + "-" + aSpecies, Pair.of(chartFile, writer.toString()));
+ writer.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save chart", ex);
+ }
+ }
+
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchExtractTypeSet(ExtractRawDataAndResultsRequest request) {
+ //TODO Should deal also with raw-data type
+ return !request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+
+ protected boolean matchZoneList(EchoBaseResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ return request.getZoneList().contains(repository.getZone());
+ }
+
+ protected boolean matchCommunityIndicatorList(EchoBaseResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ Preconditions.checkNotNull(request.getCommunityIndicatorList());
+
+ List<String> indicatorList = request.getCommunityIndicatorList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorList(tuple, indicatorList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchPopulationIndicatorList(EchoBaseResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ Preconditions.checkNotNull(request.getPopulationIndicatorList());
+
+ List<String> indicatorList = request.getPopulationIndicatorList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorList(tuple, indicatorList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchPopulationIndicatorListAndSpeciesList(EchoBaseResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ Preconditions.checkNotNull(request.getPopulationIndicatorList());
+
+ List<String> indicatorList = request.getPopulationIndicatorList();
+ List<String> speciesList = request.getSpeciesList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchCommunityIndicatorListAndSpeciesList(EchoBaseResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ Preconditions.checkNotNull(request.getCommunityIndicatorList());
+
+ List<String> indicatorList = request.getCommunityIndicatorList();
+ List<String> speciesList = request.getSpeciesList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/RawDataResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/ExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,63 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ExtractRawDataCommand implements ResultRepositoryCommand<EchoBaseResultRepository, ExtractRawDataRequest> {
+
+ @Override
+ public Class<ExtractRawDataRequest> getRequestType() {
+ return ExtractRawDataRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ ExtractRawDataRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
+ public FileResult execute(EchoBaseResultRepository repository,
+ ExtractRawDataRequest r) {
+
+ //TODO
+ throw new IllegalStateException("TODO!");
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ //TODO
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,86 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.CoserResult;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryType;
+import fr.ifremer.coser.result.request.GetAllResultsRequest;
+
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetAllResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetAllResultsRequest> {
+
+ @Override
+ public Class<GetAllResultsRequest> getRequestType() {
+ return GetAllResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetAllResultsRequest request) {
+ boolean result = matchRepositoryType(request) &&
+ matchResultType(request) &&
+ matchPublish(repository);
+ return result;
+ }
+
+ @Override
+ public CoserResult execute(EchoBaseResultRepository repository,
+ GetAllResultsRequest request) {
+ Map<String, String> map = Maps.newHashMap();
+ map.put(repository.getZone(), repository.getSurveyName());
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchRepositoryType(GetAllResultsRequest request) {
+ boolean result = request.getResultRepositoryType().equals(EchoBaseResultRepositoryType.ID);
+ return result;
+ }
+
+ protected boolean matchResultType(GetAllResultsRequest request) {
+ ResultType resultType = request.getResultType();
+ boolean result = ResultType.MAP_AND_INDICATOR == resultType;
+ return result;
+ }
+
+ protected boolean matchPublish(EchoBaseResultRepository repository) {
+ boolean result = repository.isPubliableResult();
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetAllResultsCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/CommunityIndicatorResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,379 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.storage.MemoryDataStorage;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.CategoryAxis;
+import org.jfree.chart.axis.CategoryLabelPositions;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.plot.CategoryPlot;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.renderer.category.CategoryItemRenderer;
+import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
+import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetCommunityIndicatorResultRequest> {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(GetCommunityIndicatorResultCommand.class);
+
+ @Override
+ public Class<GetCommunityIndicatorResultRequest> getRequestType() {
+ return GetCommunityIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository, GetCommunityIndicatorResultRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchIndicatorAndSpeciesList(repository, request);
+ }
+
+ @Override
+ public FileResult execute(EchoBaseResultRepository repository, GetCommunityIndicatorResultRequest r) {
+
+ File file = null;
+ switch (r.getIndicatorResultType()) {
+ case DATA:
+ file = getCommunityIndicatorDataFile(repository,
+ r.getLocale(),
+ r.getIndicator(),
+ r.getSpecies());
+ break;
+
+ case GRAPH:
+ file = getCommunityIndicatorGraphFile(repository,
+ r.getLocale(),
+ r.getZone(),
+ r.getIndicator(),
+ r.getSpecies());
+ break;
+ }
+ FileResult result = new FileResult(repository.getId(), file);
+ return result;
+ }
+
+
+ protected File getCommunityIndicatorDataFile(EchoBaseResultRepository repository, Locale locale,
+ String indicator,
+ String speciesList) {
+
+ try {
+
+ File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
+
+ File baseDir = new File(tempDir, repository.getSurveyName());
+ FileUtils.forceMkdir(baseDir);
+
+ // ajout du fichier csv avec les indicateurs
+ DataStorage dataStorage = new MemoryDataStorage();
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(false);
+
+ // add header
+ dataStorage.add(iterator.next());
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ dataStorage.add(tuple);
+ }
+ }
+ File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator",
+ ".csv"
+ );
+
+ File csvFileCopied = new File(baseDir, indicator + ".csv");
+ FileUtils.copyFile(csvFile, csvFileCopied);
+ FileUtils.forceDelete(csvFile);
+
+ //TODO See what to generate here (we don't have any selection in echobase results).
+// // ajout du fichier d'information sur les espèces incluses dans
+// // les calculs des indicateurs de communautés
+// // load project (without data to get reftax data)
+// Project project = path.getProject();
+// Selection selection = path.getSelection();
+// File metaFile = webService.generateMetaFilePDF(project,
+// selection,
+// resultDirectory,
+// rSufiResult,
+// indicator,
+// locale);
+// File metaFileCopied = new File(baseDir, "Information.pdf");
+// FileUtils.copyFile(metaFile, metaFileCopied);
+
+ // make zip
+ File result = File.createTempFile("coser-chart-community-indicator", ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, baseDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ return result;
+ } catch (Exception e) {
+ throw new CoserTechnicalException("Can't create zip file", e);
+ }
+ }
+
+ protected File getCommunityIndicatorGraphFile(EchoBaseResultRepository repository,
+ Locale locale,
+ String zone,
+ String indicator,
+ String speciesList) {
+
+ // indicator list to take care
+ // pour avoir une valeur non nulle si list est null
+ // on prend dans ce cas la premiere valeur trouvée
+ String localList = speciesList;
+
+ if (log.isDebugEnabled()) {
+ log.debug("Searching list for indicator : " + indicator);
+ }
+
+ int multiplicator = 1;
+ int minYear = Integer.MAX_VALUE;
+ int maxYear = Integer.MIN_VALUE;
+ boolean indicatorFound = false;
+ Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ String[] tuple = iterator.next();
+ String indicatorList = tuple[2];
+
+ if (repository.matchIndicatorIndicator(tuple, indicator)) {
+ indicatorFound = true;
+
+ // si pas de list selectionnée, on prend la premiere
+ if (StringUtils.isBlank(localList)) {
+ localList = indicatorList;
+ }
+
+ if (indicatorList.equals(localList)) {
+ Double estimation = Double.parseDouble(tuple[5]);
+ Double ecart = Double.parseDouble(tuple[6]);
+ int year = Integer.parseInt(tuple[4]);
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
+
+ // si les données sont énormes, on affiche les données
+ // / multiplicator et on le mentionne dans la légende
+ if (estimation > 1e9) {
+ multiplicator = 1000000;
+ }
+ if (estimation > 1e6 && multiplicator < 1000000) {
+ multiplicator = 1000;
+ }
+ }
+ }
+ }
+
+ File result = null;
+
+ // avec l'extraction des données, on peut demander a générer un graphique
+ // sur un indicateur qui n'est pas présent dans le projet courant,
+ // dans ce cas, on retourne null
+ if (indicatorFound) {
+
+ String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
+ String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
+ String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
+
+ // get graph title
+ String chartTitle = zoneDisplayName;
+ chartTitle += " - " + indicatorName;
+
+ // ajout de la traduction de la liste d'indicateur
+ // les liste sont a1, T1, T2 ...
+ String listLetter = String.valueOf(localList.charAt(0));
+ Iterator<String[]> typeIterator = repository.getSpeciesMap().iterator(true);
+ while (typeIterator.hasNext()) {
+ // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
+ String[] tuple = typeIterator.next();
+ if (tuple[4].equals(listLetter)) {
+ /// gestion du groupe "Tous"
+ // cas special, c'est la seule valeur du fichier
+ // code type espece qui a besoin d'une traduction
+ if (tuple[4].equalsIgnoreCase("T")) {
+ if ("fr".equals(locale.getLanguage())) {
+ chartTitle += " - " + "Tous Liste " + localList.charAt(1);
+ } else if ("es".equals(locale.getLanguage())) {
+ chartTitle += " - " + "Todo Lista " + localList.charAt(1);
+ } else {
+ chartTitle += " - " + "All List " + localList.charAt(1);
+ }
+ } else {
+ // ajout de la traduction du nom de liste plus le numéro
+ if ("fr".equals(locale.getLanguage())) {
+ chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
+ } else if ("es".equals(locale.getLanguage())) {
+ chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
+ } else {
+ chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
+ }
+ }
+ break;
+ }
+ }
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
+ String yearAxis = repository.getReports().getYearChartTitle(locale);
+
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+ // label horizontaux
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ // n'affiche pas les nombre sur le graphique
+ //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
+ //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
+ //renderer.setBaseItemLabelsVisible(true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(chartTitle,
+ JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ try {
+ result = File.createTempFile("coser-chart-community-indicator-", ".png");
+ result.deleteOnExit();
+ ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save chart", ex);
+ }
+ }
+
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchIndicator(EchoBaseResultRepository repository,
+ GetCommunityIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorIndicator(tuple, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchIndicatorAndSpeciesList(EchoBaseResultRepository repository,
+ GetCommunityIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String indicator = request.getIndicator();
+ String speciesList = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,64 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetIndicatorsForCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetIndicatorsForCommunityIndicatorResultRequest> {
+
+ @Override
+ public Class<GetIndicatorsForCommunityIndicatorResultRequest> getRequestType() {
+ return GetIndicatorsForCommunityIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetIndicatorsForCommunityIndicatorResultRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetIndicatorsForCommunityIndicatorResultRequest request) {
+
+ Set<String> indicatorList = repository.getCommunityIndicators();
+ Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForCommunityIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,93 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.util.DataType;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetIndicatorsForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetIndicatorsForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public Class<GetIndicatorsForExtractRawDataAndResultsRequest> getRequestType() {
+ return GetIndicatorsForExtractRawDataAndResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetIndicatorsForExtractRawDataAndResultsRequest request) {
+ return matchExtractTypeSet(request) && matchZoneList(repository, request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetIndicatorsForExtractRawDataAndResultsRequest request) {
+
+ Set<String> indicatorList = null;
+
+ if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
+
+ // get all community indicators for given zone
+ indicatorList = repository.getCommunityIndicators();
+ } else if (request.getExtractTypeList().contains(DataType.POPULATION)) {
+
+ // get all population indicators for given zone
+ indicatorList = repository.getPopulationIndicators();
+ }
+
+ Map<String, String> map = null;
+
+ if (indicatorList != null) {
+ map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ }
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchExtractTypeSet(GetIndicatorsForExtractRawDataAndResultsRequest request) {
+ //TODO Should deal also with raw-data type
+ return !request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+
+ protected boolean matchZoneList(EchoBaseResultRepository repository,
+ GetIndicatorsForExtractRawDataAndResultsRequest request) {
+ return request.getZoneList().contains(repository.getZone());
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,90 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetIndicatorsForPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetIndicatorsForPopulationIndicatorResultRequest> {
+
+ @Override
+ public Class<GetIndicatorsForPopulationIndicatorResultRequest> getRequestType() {
+ return GetIndicatorsForPopulationIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetIndicatorsForPopulationIndicatorResultRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchSpecies(repository, request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetIndicatorsForPopulationIndicatorResultRequest request) {
+
+ Set<String> indicatorList = repository.getCommunityIndicators();
+ Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(EchoBaseResultRepository repository,
+ GetIndicatorsForPopulationIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String species = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorSpecies(tuple, species)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetIndicatorsForPopulationIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/MapResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,74 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetMapResultRequest;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetMapResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetMapResultRequest> {
+
+ @Override
+ public Class<GetMapResultRequest> getRequestType() {
+ return GetMapResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetMapResultRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchSpecies(repository, request);
+ }
+
+ @Override
+ public FileResult execute(EchoBaseResultRepository repository,
+ GetMapResultRequest request) {
+
+ File file = repository.getMapSpeciesFile(request.getSpecies());
+
+ FileResult result = new FileResult(repository.getId(), file);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(EchoBaseResultRepository repository,
+ GetMapResultRequest request) {
+ String species = request.getSpecies();
+ File file = repository.getMapSpeciesFile(species);
+ return file != null && file.exists();
+ }
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/PopulationIndicatorResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,283 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.storage.MemoryDataStorage;
+import org.apache.commons.lang3.StringUtils;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.CategoryAxis;
+import org.jfree.chart.axis.CategoryLabelPositions;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.plot.CategoryPlot;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.renderer.category.CategoryItemRenderer;
+import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
+import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetPopulationIndicatorResultRequest> {
+
+ @Override
+ public Class<GetPopulationIndicatorResultRequest> getRequestType() {
+ return GetPopulationIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository, GetPopulationIndicatorResultRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchSpeciesAndIndicator(repository, request);
+ }
+
+ @Override
+ public FileResult execute(EchoBaseResultRepository repository, GetPopulationIndicatorResultRequest r) {
+
+ File file = null;
+ switch (r.getIndicatorResultType()) {
+ case DATA:
+ file = getPopulationIndicatorDataFile(repository,
+ r.getIndicator(),
+ r.getSpecies());
+ break;
+
+ case GRAPH:
+ file = getPopulationIndicatorGraphFile(repository,
+ r.getLocale(),
+ r.getZone(),
+ r.getIndicator(),
+ r.getSpecies());
+ break;
+ }
+
+
+ FileResult result = new FileResult(repository.getId(), file);
+ return result;
+ }
+
+ protected File getPopulationIndicatorDataFile(EchoBaseResultRepository repository, String species, String indicator) {
+
+ DataStorage dataStorage = new MemoryDataStorage();
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(false);
+
+ // add header
+ dataStorage.add(iterator.next());
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
+ dataStorage.add(tuple);
+ }
+ }
+ File result = DataStorages.save(dataStorage, "coser-chart-population-indicator",
+ ".csv"
+ );
+ return result;
+ }
+
+ protected File getPopulationIndicatorGraphFile(EchoBaseResultRepository repository, Locale locale,
+ String zone,
+ String species,
+ String indicator) {
+
+
+ int multiplicator = 1;
+ int minYear = Integer.MAX_VALUE;
+ int maxYear = Integer.MIN_VALUE;
+ boolean indicatorFound = false;
+ Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+
+ if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
+ indicatorFound = true;
+
+ // XXX echatellier, maybe take care of list here ?
+
+ Double estimation = Double.parseDouble(tuple[6]);
+ Double ecart = Double.parseDouble(tuple[7]);
+ int year = Integer.parseInt(tuple[5]);
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
+
+ // si les données sont énormes, on affiche les données
+ // / multiplicator et on le mentionne dans la légende
+ if (estimation > 1e9) {
+ multiplicator = 1000000;
+ }
+ if (estimation > 1e6 && multiplicator < 1000000) {
+ multiplicator = 1000;
+ }
+ }
+ }
+
+ File result = null;
+
+ // avec l'extraction des données, on peut demander a générer un graphique
+ // sur un indicateur qui n'est pas présent dans le projet courant,
+ // dans ce cas, on retourne null
+ if (indicatorFound) {
+
+ String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
+ String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
+ String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
+
+ // get graph title
+ String title = zoneDisplayName;
+ title += " - " + indicatorName;
+ title += " - " + repository.getSpeciesMap().getReportDisplayName(species);
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
+ String yearAxis = repository.getReports().getYearChartTitle(locale);
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+ // label horizontaux
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ // n'affiche pas les nombre sur le graphique
+ //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
+ //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
+ //renderer.setBaseItemLabelsVisible(true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(title,
+ JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ try {
+ result = File.createTempFile("coser-chart-population-indicator-", ".png");
+ result.deleteOnExit();
+ ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save chart", ex);
+ }
+ }
+
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(EchoBaseResultRepository repository,
+ GetPopulationIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String species = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorSpecies(tuple, species)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchSpeciesAndIndicator(EchoBaseResultRepository repository,
+ GetPopulationIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String species = request.getSpecies();
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,64 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForMapResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesForMapResultRequest> {
+
+ @Override
+ public Class<GetSpeciesForMapResultRequest> getRequestType() {
+ return GetSpeciesForMapResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetSpeciesForMapResultRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetSpeciesForMapResultRequest request) {
+
+ Set<String> speciesList = repository.getMapSpecies();
+ Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForMapResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,64 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesForPopulationIndicatorResultRequest> {
+
+ @Override
+ public Class<GetSpeciesForPopulationIndicatorResultRequest> getRequestType() {
+ return GetSpeciesForPopulationIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetSpeciesForPopulationIndicatorResultRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetSpeciesForPopulationIndicatorResultRequest request) {
+
+ Set<String> speciesList = repository.getPopulationIndicatorSpecies();
+ Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesForPopulationIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,89 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesListForCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesListForCommunityIndicatorResultRequest> {
+
+ @Override
+ public Class<GetSpeciesListForCommunityIndicatorResultRequest> getRequestType() {
+ return GetSpeciesListForCommunityIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetSpeciesListForCommunityIndicatorResultRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchIndicator(repository, request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetSpeciesListForCommunityIndicatorResultRequest request) {
+
+ Set<String> speciesList = repository.getCommunityIndicatorSpecies(request.getIndicator());
+ Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchIndicator(EchoBaseResultRepository repository,
+ GetSpeciesListForCommunityIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorIndicator(tuple, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForCommunityIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,84 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetSpeciesListForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.util.DataType;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesListForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetSpeciesListForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public Class<GetSpeciesListForExtractRawDataAndResultsRequest> getRequestType() {
+ return GetSpeciesListForExtractRawDataAndResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetSpeciesListForExtractRawDataAndResultsRequest request) {
+ return matchExtractTypeSet(request) && matchZoneList(repository, request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetSpeciesListForExtractRawDataAndResultsRequest request) {
+
+ Set<String> speciesList = Sets.newHashSet();
+ // get all species for population indicators
+ speciesList.addAll(repository.getPopulationIndicatorSpecies());
+ // get all species for community indicators
+ speciesList.addAll(repository.getCommunityIndicatorSpecies());
+
+ Map<String, String> map = repository.getSpeciesMap().getSpeciesSubMap(speciesList);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchExtractTypeSet(GetSpeciesListForExtractRawDataAndResultsRequest request) {
+ //TODO Should deal also with raw-data type
+ return !request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+
+ protected boolean matchZoneList(EchoBaseResultRepository repository,
+ GetSpeciesListForExtractRawDataAndResultsRequest request) {
+ return request.getZoneList().contains(repository.getZone());
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,64 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForCommunityIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForCommunityIndicatorResultRequest> {
+
+ @Override
+ public Class<GetZonesForCommunityIndicatorResultRequest> getRequestType() {
+ return GetZonesForCommunityIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetZonesForCommunityIndicatorResultRequest request) {
+ return repository.matchFacade(request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetZonesForCommunityIndicatorResultRequest request) {
+
+ ZoneMap zonesMap = repository.getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForCommunityIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,65 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public Class<GetZonesForExtractRawDataAndResultsRequest> getRequestType() {
+ return GetZonesForExtractRawDataAndResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetZonesForExtractRawDataAndResultsRequest request) {
+ return true;
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetZonesForExtractRawDataAndResultsRequest r) {
+
+ ZoneMap zonesMap = repository.getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(null);
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataAndResultsCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,63 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForExtractRawDataCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForExtractRawDataRequest> {
+
+ @Override
+ public Class<GetZonesForExtractRawDataRequest> getRequestType() {
+ return GetZonesForExtractRawDataRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetZonesForExtractRawDataRequest request) {
+ return repository.matchFacade(request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetZonesForExtractRawDataRequest request) {
+ ZoneMap zonesMap = repository.getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForExtractRawDataCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,65 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForMapResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForMapResultRequest> {
+
+ @Override
+ public Class<GetZonesForMapResultRequest> getRequestType() {
+ return GetZonesForMapResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetZonesForMapResultRequest request) {
+ return repository.matchFacade(request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetZonesForMapResultRequest request) {
+
+ ZoneMap zonesMap = repository.getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForMapResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,64 @@
+package fr.ifremer.coser.result.repository.echobase.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<EchoBaseResultRepository, GetZonesForPopulationIndicatorResultRequest> {
+
+ @Override
+ public Class<GetZonesForPopulationIndicatorResultRequest> getRequestType() {
+ return GetZonesForPopulationIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(EchoBaseResultRepository repository,
+ GetZonesForPopulationIndicatorResultRequest request) {
+ return repository.matchFacade(request);
+ }
+
+ @Override
+ public MapResult execute(EchoBaseResultRepository repository,
+ GetZonesForPopulationIndicatorResultRequest request) {
+ ZoneMap zonesMap = repository.getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/command/GetZonesForPopulationIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/CommunityIndicatorResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/CommunityIndicatorResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/CommunityIndicatorResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,455 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.RSufiResultPath;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultProducer;
-import fr.ifremer.coser.result.request.CommunityIndicatorRequest;
-import fr.ifremer.coser.services.ProjectService;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class CommunityIndicatorResultProducer implements ResultProducer<CommunityIndicatorRequest> {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(CommunityIndicatorResultProducer.class);
-
- protected final LegacyResultRepository repository;
-
- protected final Reports reports;
-
- protected final RSufiResultPath path;
-
- protected final File basedir;
-
- protected final ProjectService projectService;
-
- protected final String surveyName;
-
- public CommunityIndicatorResultProducer(LegacyResultRepository repository) {
- this.repository = repository;
- this.path = repository.path;
- this.reports = repository.reports;
- this.projectService = repository.projectService;
- this.basedir = repository.basedir;
- this.surveyName = repository.surveyName;
- }
-
- @Override
- public LegacyResultRepository getRepository() {
- return repository;
- }
-
- @Override
- public boolean acceptResult(CommunityIndicatorRequest request) {
- return repository.indicatorsResult &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicatorAndSpeciesList(request);
- }
-
- @Override
- public Map<String, String> getAvailableZones(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
-
- boolean match = repository.matchFacade(request);
-
- Map<String, String> result = null;
- if (match) {
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
- result = zonesMap.getSubZonesMap(path.getRsufiResult().getZone(), allowedZones);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableSpecies(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
- Preconditions.checkNotNull(request.getIndicator());
-
- Map<String, String> result = null;
-
- boolean match = repository.indicatorsResult &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchIndicator(request);
- if (match) {
-
- // get all map species for given facade + zone
- result = repository.getCommunityIndicatorSpecies(request.getLocale(),
- request.getIndicator());
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableIndicators(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
-
- Map<String, String> result = null;
-
- boolean match = repository.indicatorsResult &&
- repository.matchFacade(request) &&
- repository.matchZone(request);
- if (match) {
-
- // get all indicators for given facade + zone
- Set<String> indicatorList = repository.getCommunityIndicators();
- result = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
- }
-
- return result;
- }
-
- @Override
- public FileResult produceResult(CommunityIndicatorRequest request) {
-
- File file = null;
- switch (request.getResultType()) {
- case DATA:
- file = getCommunityIndicatorDataFile(request.getLocale(),
- request.getIndicator(),
- request.getSpecies());
- break;
-
- case GRAPH:
- file = getCommunityIndicatorGraphFile(request.getLocale(),
- request.getZone(),
- request.getIndicator(),
- request.getSpecies());
- break;
- }
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
-
- protected File getCommunityIndicatorDataFile(Locale locale,
- String indicator,
- String speciesList) {
-
- try {
-
- File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
-
- File baseDir = new File(tempDir, surveyName);
- FileUtils.forceMkdir(baseDir);
-
- // ajout du fichier csv avec les indicateurs
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- dataStorage.add(tuple);
- }
- }
- File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator",
- ".csv"
- );
-
- File csvFileCopied = new File(baseDir, indicator + ".csv");
- FileUtils.copyFile(csvFile, csvFileCopied);
- FileUtils.forceDelete(csvFile);
-
- // ajout du fichier d'information sur les espèces incluses dans
- // les calculs des indicateurs de communautés
- // load project (without data to get reftax data)
- File metaFile = reports.generateMetaFilePDF(path,
- repository.resultDirectory,
- locale,
- repository.getIndicatorsMap()
- );
- File metaFileCopied = new File(baseDir, "Information.pdf");
- FileUtils.copyFile(metaFile, metaFileCopied);
-
- // make zip
- File result = File.createTempFile("coser-chart-community-indicator", ".zip");
- result.deleteOnExit();
- ZipUtil.compress(result, baseDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- return result;
- } catch (Exception e) {
- throw new CoserTechnicalException("Can't create zip file", e);
- }
- }
-
- protected File getCommunityIndicatorGraphFile(Locale locale,
- String zone,
- String indicator,
- String speciesList) {
-
- // indicator list to take care
- // pour avoir une valeur non nulle si list est null
- // on prend dans ce cas la premiere valeur trouvée
- String localList = speciesList;
-
- if (log.isDebugEnabled()) {
- log.debug("Searching list for indicator : " + indicator);
- }
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = iterator.next();
- String indicatorList = tuple[2];
-
- if (repository.matchCommunityIndicator(tuple, indicator)) {
- indicatorFound = true;
-
- // si pas de list selectionnée, on prend la premiere
- if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- }
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String chartTitle = zoneDisplayName;
- chartTitle += " - " + indicatorName;
-
- String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, localList);
- chartTitle += " - " + speciesListName;
-// // ajout de la traduction de la liste d'indicateur
-// // les liste sont a1, T1, T2 ...
-// String listLetter = String.valueOf(localList.charAt(0));
-// Iterator<String[]> typeIterator = repository.getSpeciesListMap().iterator(true);
-// while (typeIterator.hasNext()) {
-// // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
-// String[] tuple = typeIterator.next();
-// if (tuple[4].equals(listLetter)) {
-// /// gestion du groupe "Tous"
-// // cas special, c'est la seule valeur du fichier
-// // code type espece qui a besoin d'une traduction
-// if (tuple[4].equalsIgnoreCase("T")) {
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Tous Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Todo Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + "All List " + localList.charAt(1);
-// }
-// } else {
-// // ajout de la traduction du nom de liste plus le numéro
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
-// }
-// }
-// break;
-// }
-// }
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = reports.getYearChartTitle(locale);
-
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-community-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchIndicatorAndSpeciesList(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
- Preconditions.checkNotNull(request.getSpecies());
-
- String indicator = request.getIndicator();
- String speciesList = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/ExtractResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/ExtractResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/ExtractResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,835 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.IndicatorMap;
-import fr.ifremer.coser.bean.Project;
-import fr.ifremer.coser.bean.RSufiResult;
-import fr.ifremer.coser.bean.RSufiResultPath;
-import fr.ifremer.coser.bean.Selection;
-import fr.ifremer.coser.bean.SpeciesMap;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultProducer;
-import fr.ifremer.coser.result.request.ExtractRequest;
-import fr.ifremer.coser.services.ProjectService;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import fr.ifremer.coser.util.DataType;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.collections4.keyvalue.MultiKey;
-import org.apache.commons.collections4.map.MultiKeyMap;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class ExtractResultProducer implements ResultProducer<ExtractRequest> {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(ExtractResultProducer.class);
-
- protected final LegacyResultRepository repository;
-
- protected final Reports reports;
-
- protected final RSufiResultPath path;
-
- protected final File basedir;
-
- protected final ProjectService projectService;
-
- public ExtractResultProducer(LegacyResultRepository repository) {
- this.repository = repository;
- this.path = repository.path;
- this.reports = repository.reports;
- this.projectService = repository.projectService;
- this.basedir = repository.basedir;
- }
-
- @Override
- public LegacyResultRepository getRepository() {
- return repository;
- }
-
- @Override
- public boolean acceptResult(ExtractRequest request) {
- return matchExtractTypeSet(request) &&
- matchZoneList(request) &&
- (matchPopulationIndicatorListAndSpeciesList(request) ||
- matchCommunityIndicatorListAndSpeciesList(request));
- }
-
- @Override
- public Map<String, String> getAvailableZones(ExtractRequest request) {
-
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(null);
- Map<String, String> result = zonesMap.getSubZonesMap(path.getRsufiResult().getZone(), allowedZones);
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableSpecies(ExtractRequest request) {
- Preconditions.checkNotNull(request.getZoneList());
-
- Map<String, String> result = null;
-
- boolean match = matchZoneList(request);
-
- if (match) {
- result = Maps.newHashMap();
-
- // get all species for population indicators
- result.putAll(repository.getPopulationIndicatorSpecies());
- // get all species for community indicators
- result.putAll(repository.getCommunityIndicatorSpecies());
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableIndicators(ExtractRequest request) {
- Preconditions.checkNotNull(request.getZoneList());
- Preconditions.checkNotNull(request.getExtractTypeList());
-
- Map<String, String> result = null;
-
- boolean match = matchZoneList(request);
- if (match) {
-
- Set<String> indicatorList = null;
-
- if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
-
- // get all community indicators for given zone
- indicatorList = repository.getCommunityIndicators();
- } else if (request.getExtractTypeList().contains(DataType.POPULATION)) {
-
- // get all population indicators for given zone
- indicatorList = repository.getPopulationIndicators();
- }
-
- if (indicatorList != null) {
- result = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
- }
- }
- return result;
- }
-
- @Override
- public FileResult produceResult(ExtractRequest r) {
-
- Locale locale = r.getLocale();
- List<String> zoneList = r.getZoneList();
- List<DataType> extractTypeList = r.getExtractTypeList();
- List<String> speciesList = r.getSpeciesList();
- List<String> communityIndicatorList = r.getCommunityIndicatorList();
- List<String> populationIndicatorList = r.getPopulationIndicatorList();
-
- File resultZip = null;
- File tempDir = null;
- try {
- tempDir = FileUtil.createTempDirectory("coser-extract-", "-tmp");
-
- File subDir = new File(tempDir, "Indicateurs_Ifremer");
- FileUtils.forceMkdir(subDir);
-
- // les sources se retrouve dans le zip a cote du pdf
- if (extractTypeList.contains(DataType.SOURCE)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting sources");
- }
- File srcDir = new File(subDir, "sources");
- extractSource(srcDir);
- }
-
- // les cartes doivent se retrouver dans le pdf
- MultiKeyMap pdfMaps = null;
- if (extractTypeList.contains(DataType.MAP)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting maps");
- }
- SpeciesMap speciesMap = repository.getSpeciesMap();
- String zone = path.getRsufiResult().getZone();
- for (String species : speciesList) {
- File mapFile = repository.getMapSpeciesFile(species);
- pdfMaps.put(zone, speciesMap.getSpeciesName(species), mapFile);
- }
- }
-
- // les graphiques sont également dans le pdf
- MultiKeyMap pdfCharts = null;
- if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
- CollectionUtils.isNotEmpty(populationIndicatorList)) {
- if (log.isDebugEnabled()) {
- log.debug("Extracting charts");
- }
- pdfCharts = extractCharts(speciesList,
- communityIndicatorList,
- populationIndicatorList,
- locale);
- }
-
- // generate pdf if necessary
- if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
- if (log.isDebugEnabled()) {
- log.debug("Generated Extract PDF");
- }
- reports.generateExtractPDF(subDir,
- zoneList,
- pdfMaps,
- pdfCharts,
- repository.getZonesMap(),
- locale);
- }
-
- // fichier de décharge en pdf
- if (log.isDebugEnabled()) {
- log.debug("Generated decharge PDF");
- }
- String filename = reports.getDechargeFilename(locale);
- File dechargePDF = new File(subDir, filename);
- reports.generateDechargePDF(dechargePDF, locale, null, null);
-
- // make zip
- if (log.isDebugEnabled()) {
- log.debug("Make final archive");
- }
- resultZip = File.createTempFile("coser-extract-", ".zip");
- resultZip.deleteOnExit();
- ZipUtil.compress(resultZip, subDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't create zip file", ex);
- } finally {
- // clean directory
- FileUtils.deleteQuietly(tempDir);
- }
-
- FileResult result = new FileResult(repository.getId(), resultZip);
- return result;
- }
-
- /**
- * Generate raw data after selection in a sub directory (named of the zone) of the given directory.
- *
- * @param directory where to generate file
- */
- protected void extractSource(File directory) {
-
- // load project (with data to get original file names)
- Project project = path.getProject();
-
- // load selection data (to do data export rsufi)
- Selection selection = path.getSelection();
-
- try {
- // be sure that data are available for this project
- // or it will fail
-
- projectService.loadSelectionData(basedir.getParentFile(), project, selection);
- } catch (CoserBusinessException e) {
- throw new CoserTechnicalException("Could not load project selection", e);
- }
-
- // il ne faut pas les fichiers de selection, mais leurs
- // export rsufi (sans les lignes, et les quotes)
- File zoneDirectory = new File(directory, path.getRsufiResult().getZone());
-
- try {
- FileUtils.forceMkdir(zoneDirectory);
- } catch (IOException e) {
- throw new CoserTechnicalException("Could not create directory: " + zoneDirectory, e);
- }
-
- try {
- projectService.extractRSUfiData(project, selection, zoneDirectory, true);
- } catch (CoserBusinessException e) {
- throw new CoserTechnicalException("Could not extract raw data", e);
- }
- }
-
- /**
- * Retourne les indicateurs calculés avec leurs traductions scientifique
- * pour la zone et l'especes souhaitées.
- *
- * @param species especes (if {@code null} look for com indicators
- * @param comIndicators comIndicator
- * @param popIndicators popIndicators
- * @param locale locale
- * @return la liste des indicateurs (zone, speciesname, [graphfile, graphdata])
- */
- protected MultiKeyMap extractCharts(Collection<String> species,
- Collection<String> comIndicators,
- Collection<String> popIndicators,
- Locale locale) {
-
- MultiKeyMap chartFileAndDatas = new MultiKeyMap();
-
- Project project = path.getProject();
- RSufiResult rsufiResult = path.getRsufiResult();
- String zone = rsufiResult.getZone();
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
-
- if (CollectionUtils.isNotEmpty(comIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataCom = getRsufiResultComCharts(comIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataCom.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
- }
-
- if (CollectionUtils.isNotEmpty(popIndicators)) {
- Map<String, Pair<File, String>> chartFileAndDataPop = getRsufiResultPopCharts(species,
- popIndicators,
- zoneDisplayName,
- repository.getIndicatorsMap(),
- locale,
- 650,
- 430);
- // put in multimap as zone,speciesname, data
- for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataPop.entrySet()) {
- chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
- }
- }
-
- return chartFileAndDatas;
- }
-
- /**
- * Generate community graph for selected indicators.
- * Used by web ui extraction.
- *
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
- * @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
- */
- public Map<String, Pair<File, String>> getRsufiResultComCharts(Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width, int height) {
-
- Map<String, Pair<File, String>> result = Maps.newHashMap();
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
-
- Map<String, Map<Integer, Double[]>> indicatorGraphData = new HashMap<String, Map<Integer, Double[]>>();
- Map<String, String> indicatorLists = new HashMap<String, String>();
- Map<String, DataStorage> indicatorStorages = new HashMap<String, DataStorage>();
-
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- Iterator<String[]> estComIndIterator = repository.loadCommunityIndicatorStorage(true);
- while (estComIndIterator.hasNext()) {
- // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
- String[] tuple = estComIndIterator.next();
- String indicatorCode = tuple[1];
- String indicatorList = tuple[2];
-
- if (indicators.contains(indicatorCode)) {
-
- // si pas de list selectionnée, on prend la premiere
- String localList = indicatorLists.get(indicatorCode);
- if (StringUtils.isBlank(localList)) {
- localList = indicatorList;
- indicatorLists.put(indicatorCode, localList);
- }
-
- if (indicatorList.equals(localList)) {
- Double estimation = Double.parseDouble(tuple[5]);
- Double ecart = Double.parseDouble(tuple[6]);
- int year = Integer.parseInt(tuple[4]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicatorCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
-
- // for data part
- DataStorage subDataStorage = indicatorStorages.get(indicatorCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Strate", "Année", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, subDataStorage);
- }
- subDataStorage.add(tuple);
- }
- }
- }
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (String indicator : indicatorGraphData.keySet()) {
- // get graph title
- String chartTitle = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- chartTitle += " - " + indicatorName;
-
- // ajout de la traduction de la liste d'indicateur
- // les liste sont a1, T1, T2 ...
- String localList = indicatorLists.get(indicator);
- String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, localList);
- chartTitle += " - " + speciesListName;
-// String listLetter = String.valueOf(localList.charAt(0));
-// Iterator<String[]> typeIterator = repository.getSpeciesListMap().iterator(true);
-// while (typeIterator.hasNext()) {
-// // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
-// String[] tuple = typeIterator.next();
-// if (tuple[4].equals(listLetter)) {
-// /// gestion du groupe "Tous"
-// // cas special, c'est la seule valeur du fichier
-// // code type espece qui a besoin d'une traduction
-// if (tuple[4].equalsIgnoreCase("T")) {
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Tous Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + "Todo Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + "All List " + localList.charAt(1);
-// }
-// } else {
-// // ajout de la traduction du nom de liste plus le numéro
-// if ("fr".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
-// } else if ("es".equals(locale.getLanguage())) {
-// chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
-// } else {
-// chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
-// }
-// }
-// break;
-// }
-// }
-
- // generate dataset with sorted data
- Map<Integer, Double[]> graphData = indicatorGraphData.get(indicator);
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = reports.getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(chartTitle,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- File chartFile = File.createTempFile("coser-community-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = indicatorStorages.get(indicator);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- /**
- * Generate population graph for selected species and indicator.
- *
- * @param species species to extract
- * @param indicators indicators to extract
- * @param zoneDisplayName zone full name
- * @param indicatorMap indicator localized map
- * @param locale locale
- * @param width graph width
- * @param height graph height
- * @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
- */
- public Map<String, Pair<File, String>> getRsufiResultPopCharts(Collection<String> species,
- Collection<String> indicators,
- String zoneDisplayName,
- IndicatorMap indicatorMap,
- Locale locale,
- int width,
- int height) {
-
- Map<String, Pair<File, String>> result = Maps.newHashMap();
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
-
- MultiKeyMap indicatorGraphData = new MultiKeyMap();
- MultiKeyMap indicatorStorages = new MultiKeyMap();
-
- // Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
- Iterator<String[]> estPopIndIterator = repository.loadPopulationIndicatorStorage(true);
- while (estPopIndIterator.hasNext()) {
- String[] tuple = estPopIndIterator.next();
-
- String speciesCode = tuple[3];
- String indicatorCode = tuple[1];
- if (species.contains(speciesCode) && indicators.contains(indicatorCode)) {
-
- // XXX echatellier, maybe take care of list here ?
-
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicatorCode, speciesCode);
- if (graphData == null) {
- graphData = new HashMap<Integer, Double[]>();
- indicatorGraphData.put(indicatorCode, speciesCode, graphData);
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
-
- // for data part
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicatorCode, speciesCode);
- if (subDataStorage == null) {
- subDataStorage = new MemoryDataStorage();
- if ("fr".equals(locale.getLanguage())) {
- subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Espèce", "Strate", "Annee", "Estimation", "EcartType", "CV"});
- } else {
- subDataStorage.add(new String[]{"Survey", "Index", "List", "Species", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
- }
- indicatorStorages.put(indicatorCode, speciesCode, subDataStorage);
- }
- subDataStorage.add(tuple);
- }
- }
-
- SpeciesMap speciesMap = repository.getSpeciesMap();
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- for (MultiKey indicatorSpecies : (Set<MultiKey>) indicatorGraphData.keySet()) {
- String indicator = (String) indicatorSpecies.getKey(0);
- String aSpecies = (String) indicatorSpecies.getKey(1);
- // get graph title
- String title = zoneDisplayName;
- String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
- String unit = indicatorMap.getIndicatorUnit(indicator);
- title += " - " + indicatorName;
- title += " - " + speciesMap.getReportDisplayName(aSpecies);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicator, aSpecies);
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = reports.getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- File chartFile = File.createTempFile("coser-population-chart-", ".png");
- chartFile.deleteOnExit();
- ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
- //ByteArrayOutputStream out = new ByteArrayOutputStream();
- //ChartUtilities.writeChartAsPNG(out, chart, width, height);
-
- // data extraction
- DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicator, aSpecies);
- StringWriter writer = new StringWriter();
- DataStorages.save(subDataStorage, writer);
-
- // add chart file dans chart data in result
- result.put(indicator + "-" + aSpecies, Pair.of(chartFile, writer.toString()));
- writer.close();
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(ExtractRequest request) {
- boolean result = false;
- if (repository.mapsResult) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- if (repository.indicatorsResult) {
- result = request.getExtractTypeList().contains(DataType.POPULATION) ||
- request.getExtractTypeList().contains(DataType.COMMUNITY);
- }
- if (repository.dataResult) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- return result;
- }
-
- protected boolean matchZoneList(ExtractRequest request) {
- return request.getZoneList().contains(path.getRsufiResult().getZone());
- }
-
- protected boolean matchCommunityIndicatorList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorListAndSpeciesList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchCommunityIndicatorListAndSpeciesList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -27,26 +27,20 @@
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.CoserConstants;
import fr.ifremer.coser.CoserServiceContext;
+import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.bean.EchoBaseProject;
import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.RSufiResultPath;
import fr.ifremer.coser.bean.SpeciesListMap;
import fr.ifremer.coser.bean.SpeciesMap;
import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.result.CoserResult;
import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultProducer;
import fr.ifremer.coser.result.repository.ResultRepository;
-import fr.ifremer.coser.result.request.CommunityIndicatorRequest;
import fr.ifremer.coser.result.request.CoserRequestFacadeAware;
import fr.ifremer.coser.result.request.CoserRequestZoneAware;
-import fr.ifremer.coser.result.request.ExtractRequest;
-import fr.ifremer.coser.result.request.MapRequest;
-import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
-import fr.ifremer.coser.result.request.RawDataRequest;
import fr.ifremer.coser.services.ProjectService;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
@@ -76,11 +70,6 @@
private static final Log log = LogFactory.getLog(LegacyResultRepository.class);
/**
- * Id of result source.
- */
- public static final String ID = "rsufi";
-
- /**
* Project basedir.
*/
protected final File basedir;
@@ -95,7 +84,6 @@
*/
protected final File mapsDirectory;
-
/**
* Project definition.
*/
@@ -137,27 +125,11 @@
protected SpeciesListMap speciesListMap;
/**
- * Is the result contains maps ?
- */
- protected final boolean mapsResult;
-
- /**
- * Is the result contains indicators ?
- */
- protected final boolean indicatorsResult;
-
- /**
- * Is the results contains raw data ?
- */
- protected final boolean dataResult;
-
- /**
* Report helper.
*/
protected final Reports reports;
- protected final Map<String, ResultProducer<?>> resultProducers;
-
+ //FIXME Remove this
protected final ProjectService projectService;
public LegacyResultRepository(CoserServiceContext serviceContext,
@@ -179,21 +151,12 @@
path.getRsufiResult().getName());
this.mapsDirectory = new File(resultDirectory, CoserConstants.STORAGE_MAPS_DIRECTORY);
this.path = path;
- this.mapsResult = path.getRsufiResult().isMapsResult();
- this.indicatorsResult = path.getRsufiResult().isIndicatorsResult();
- this.dataResult = path.getRsufiResult().isDataAllowed();
this.reports = new Reports();
this.mapFileToSpeciesCode = EchoBaseProject.newMapFileToSpeciesCode(surveyName);
this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
this.projectService = new ProjectService(serviceContext.getConfig());
- this.resultProducers = Maps.newHashMap();
- this.resultProducers.put(MapRequest.class.getName(), new MapResultProducer(this));
- this.resultProducers.put(CommunityIndicatorRequest.class.getName(), new CommunityIndicatorResultProducer(this));
- this.resultProducers.put(PopulationIndicatorRequest.class.getName(), new PopulationIndicatorResultProducer(this));
- this.resultProducers.put(RawDataRequest.class.getName(), new RawDataResultProducer(this));
- this.resultProducers.put(ExtractRequest.class.getName(), new ExtractResultProducer(this));
if (log.isInfoEnabled()) {
log.info("New result repository: " + getId());
@@ -207,112 +170,139 @@
@Override
public String getId() {
return String.format("%s::%s::%s",
- ID,
+ LegacyResultRepositoryType.ID,
resultDirectory,
path.getRsufiResult().isMapsResult() ? "Map" : "Indicator"
);
}
@Override
- public <R extends CoserRequest> Map<String, String> getAvailableZones(R request) {
- Preconditions.checkNotNull(request);
- ResultProducer<R> resultProducer = getProducer(request);
- Preconditions.checkNotNull(resultProducer);
+ public LegacyResultRepositoryType getResultRepositoryType() {
+ return LegacyResultRepositoryType.INSTANCE;
+ }
- Map<String, String> result = resultProducer.getAvailableZones(request);
- return result;
+ public File getResultDirectory() {
+ return resultDirectory;
}
- @Override
- public <R extends CoserRequest> Map<String, String> getAvailableSpecies(R request) {
- Preconditions.checkNotNull(request);
- ResultProducer<R> resultProducer = getProducer(request);
- Preconditions.checkNotNull(resultProducer);
+ public RSufiResultPath getPath() {
+ return path;
+ }
- Map<String, String> result = resultProducer.getAvailableSpecies(request);
- return result;
+ public String getSurveyName() {
+ return surveyName;
}
- @Override
- public <R extends CoserRequest> Map<String, String> getAvailableIndicators(R request) {
- Preconditions.checkNotNull(request);
- ResultProducer<R> resultProducer = getProducer(request);
- Preconditions.checkNotNull(resultProducer);
+ public Reports getReports() {
+ return reports;
+ }
- Map<String, String> result = resultProducer.getAvailableIndicators(request);
- return result;
+ public File getBasedir() {
+ return basedir;
}
- @Override
- public <R extends CoserRequest> boolean acceptResult(R request) {
- Preconditions.checkNotNull(request);
- Preconditions.checkArgument(request.isFilled());
+ public String getProjectName() {
+ return path.getProject().getName();
+ }
- ResultProducer<R> resultProducer = getProducer(request);
- Preconditions.checkNotNull(resultProducer);
- boolean result = resultProducer.acceptResult(request);
- return result;
+ public String getSelectionName() {
+ return path.getSelection().getName();
}
- @Override
- public <R extends CoserRequest> CoserResult getResult(R request) {
- Preconditions.checkNotNull(request);
- Preconditions.checkArgument(request.isFilled());
- Preconditions.checkArgument(acceptResult(request));
+ public String getZone() {
+ return path.getRsufiResult().getZone();
+ }
- ResultProducer<R> resultProducer = getProducer(request);
- Preconditions.checkNotNull(resultProducer);
+ public String getResultName() {
+ return path.getRsufiResult().getName();
+ }
- CoserResult result = resultProducer.produceResult(request);
- return result;
+ public boolean isMapsResult() {
+ return path.getRsufiResult().isMapsResult();
}
+ public boolean isIndicatorsResult() {
+ return path.getRsufiResult().isIndicatorsResult();
+ }
+
+ public boolean isPubliableResult() {
+ return path.getRsufiResult().isPubliableResult();
+ }
+
+ public boolean isDataResult() {
+ return path.getRsufiResult().isDataAllowed();
+ }
+
+ //FIXME Remove this
+ public ProjectService getProjectService() {
+ return projectService;
+ }
+
+ public void loadSelectionData() {
+ try {
+ // be sure that data are available for this project
+ // or it will fail
+
+ getProjectService().loadSelectionData(getBasedir().getParentFile(), path.getProject(), path.getSelection());
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Could not load project selection", e);
+ }
+ }
+
+ public File extractRSUfiData(File zoneDirectory) {
+ try {
+ return getProjectService().extractRSUfiData(path.getProject(), path.getSelection(), zoneDirectory, true);
+ } catch (CoserBusinessException e) {
+ throw new CoserTechnicalException("Could not extract raw data", e);
+ }
+ }
+
// --------------------------------------------------------------------- //
// --- Matchers -------------------------------------------------------- //
// --------------------------------------------------------------------- //
- protected boolean matchFacade(CoserRequestFacadeAware request) {
+ public boolean matchFacade(CoserRequestFacadeAware request) {
return true;
}
- protected boolean matchZone(CoserRequestZoneAware request) {
+ public boolean matchZone(CoserRequestZoneAware request) {
return path.getRsufiResult().getZone().equals(request.getZone());
}
- protected boolean matchPopulationSpecies(String[] tuple, String species) {
+ public boolean matchPopulationSpecies(String[] tuple, String species) {
String speciesCode = tuple[3];
boolean result = species.equals(speciesCode);
return result;
}
- protected boolean matchPopulationSpeciesAndIndicator(String[] tuple, String species, String indicator) {
+ public boolean matchPopulationSpeciesAndIndicator(String[] tuple, String species, String indicator) {
String indicatorCode = tuple[1];
boolean result = matchPopulationSpecies(tuple, species) && indicator.equals(indicatorCode);
return result;
}
- protected boolean matchCommunityIndicator(String[] tuple, String indicator) {
+ public boolean matchCommunityIndicator(String[] tuple, String indicator) {
String indicatorCode = tuple[1];
boolean result = indicator.equals(indicatorCode);
return result;
}
- protected boolean matchCommunityIndicatorAndSpeciesList(String[] tuple, String indicator, String speciesList) {
+ public boolean matchCommunityIndicatorAndSpeciesList(String[] tuple, String indicator, String speciesList) {
String indicatorCode = tuple[1];
String speciesListCode = tuple[2];
boolean result = indicator.equals(indicatorCode) && speciesList.equals(speciesListCode);
return result;
}
- protected boolean matchIndicatorList(String[] tuple, List<String> indicatorList) {
+ public boolean matchIndicatorList(String[] tuple, List<String> indicatorList) {
String indicatorCode = tuple[1];
boolean result = indicatorList.contains(indicatorCode);
return result;
}
- protected boolean matchIndicatorListAndSpeciesList(String[] tuple,
- List<String> indicatorList,
- List<String> speciesList) {
+ public boolean matchIndicatorListAndSpeciesList(String[] tuple,
+ List<String> indicatorList,
+ List<String> speciesList) {
String indicatorCode = tuple[1];
String speciesCode = tuple[3];
boolean result = indicatorList.contains(indicatorCode) &&
@@ -324,7 +314,7 @@
// --- Get Map result -------------------------------------------------- //
// --------------------------------------------------------------------- //
- protected File getMapSpeciesFile(String species) {
+ public File getMapSpeciesFile(String species) {
String fileName = speciesCodeToMapFile.apply(species);
File file = fileName == null ? null : new File(mapsDirectory, fileName);
return file;
@@ -334,7 +324,7 @@
// --- Get species lists ----------------------------------------------- //
// --------------------------------------------------------------------- //
- protected Map<String, String> getPopulationIndicatorSpecies() {
+ public Map<String, String> getPopulationIndicatorSpecies() {
Map<String, String> result = Maps.newHashMap();
SpeciesMap speciesNames = getSpeciesMap();
@@ -353,7 +343,7 @@
return result;
}
- protected Map<String, String> getCommunityIndicatorSpecies() {
+ public Map<String, String> getCommunityIndicatorSpecies() {
Map<String, String> result = Maps.newHashMap();
SpeciesMap speciesNames = getSpeciesMap();
@@ -372,7 +362,7 @@
return result;
}
- protected Map<String, String> getCommunityIndicatorSpecies(Locale locale, String indicator) {
+ public Map<String, String> getCommunityIndicatorSpecies(Locale locale, String indicator) {
// linked hash map (doit respecter l'ordre d'insertion)
Map<String, String> result = new LinkedHashMap<String, String>();
@@ -395,7 +385,7 @@
// --- Get indicator lists --------------------------------------------- //
// --------------------------------------------------------------------- //
- protected Set<String> getCommunityIndicators() {
+ public Set<String> getCommunityIndicators() {
Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
Set<String> result = Sets.newHashSet();
while (iterator.hasNext()) {
@@ -406,7 +396,7 @@
return result;
}
- protected Set<String> getPopulationIndicators() {
+ public Set<String> getPopulationIndicators() {
Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
Set<String> result = Sets.newHashSet();
while (iterator.hasNext()) {
@@ -417,7 +407,7 @@
return result;
}
- protected Set<String> getPopulationIndicators(String species) {
+ public Set<String> getPopulationIndicators(String species) {
Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
Set<String> result = Sets.newHashSet();
while (iterator.hasNext()) {
@@ -442,7 +432,7 @@
return speciesListMap;
}
- protected SpeciesMap getSpeciesMap() {
+ public SpeciesMap getSpeciesMap() {
if (speciesMap == null) {
File file = new File(basedir, CoserConstants.Category.REFTAX_SPECIES.getStorageFileName());
@@ -451,7 +441,7 @@
return speciesMap;
}
- protected IndicatorMap getIndicatorsMap() {
+ public IndicatorMap getIndicatorsMap() {
return serviceContext.getIndicatorsMap();
}
@@ -463,7 +453,7 @@
// --- storage util methods -------------------------------------------- //
// --------------------------------------------------------------------- //
- protected Iterator<String[]> loadPopulationIndicatorStorage(boolean skipFirstLine) {
+ public Iterator<String[]> loadPopulationIndicatorStorage(boolean skipFirstLine) {
File file = new File(resultDirectory, path.getRsufiResult().getEstPopIndName());
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
DataStorage dataStorage = DataStorages.load(file, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
@@ -471,7 +461,7 @@
return iterator;
}
- protected Iterator<String[]> loadCommunityIndicatorStorage(boolean skipFirstLine) {
+ public Iterator<String[]> loadCommunityIndicatorStorage(boolean skipFirstLine) {
File file = new File(resultDirectory, path.getRsufiResult().getEstComIndName());
// Campagne Indicateur Liste Espece Strate Annee Estimation EcartType CV
DataStorage dataStorage = DataStorages.load(file, CoserConstants.CSV_RESULT_SEPARATOR_CHAR);
@@ -479,12 +469,15 @@
return iterator;
}
- protected <R extends CoserRequest> ResultProducer<R> getProducer(R request) {
- String requestTypeName = request.getClass().getName();
- return (ResultProducer<R>) resultProducers.get(requestTypeName);
- }
+// protected <R extends CoserRequest> ResultRepositoryCommand<R> getProducer(R request) {
+// Preconditions.checkNotNull(request);
+// String requestTypeName = request.getClass().getName();
+// ResultRepositoryCommand<?> resultRepositoryCommand = resultProducers.get(requestTypeName);
+// Preconditions.checkNotNull(resultRepositoryCommand);
+// return (ResultRepositoryCommand<R>) resultRepositoryCommand;
+// }
- protected CoserBusinessConfig getConfig() {
+ public CoserBusinessConfig getConfig() {
return serviceContext.getConfig();
}
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,134 @@
+package fr.ifremer.coser.result.repository.legacy;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.CoserResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
+import fr.ifremer.coser.result.repository.legacy.command.DeleteResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.ExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.ExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetAllResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetIndicatorsForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetMapResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForMapResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesListForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetSpeciesListForExtractRawDataAndResultsCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForCommunityIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForExtractRawDataCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForMapResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesForPopulationIndicatorResultCommand;
+import fr.ifremer.coser.result.repository.legacy.command.GetZonesListForExtractRawDataAndResultsCommand;
+
+import java.util.Map;
+
+/**
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class LegacyResultRepositoryCommandEngine implements ResultRepositoryCommandEngine {
+
+ protected final LegacyResultRepository resultRepository;
+
+ protected final Map<String, ResultRepositoryCommand<LegacyResultRepository, ?>> commands;
+
+ public LegacyResultRepositoryCommandEngine(LegacyResultRepository resultRepository) {
+ this.resultRepository = resultRepository;
+ this.commands = Maps.newHashMap();
+
+ // get map result
+ loadCommand(new GetZonesForMapResultCommand());
+ loadCommand(new GetSpeciesForMapResultCommand());
+ loadCommand(new GetMapResultCommand());
+
+ // get community indicator result
+ loadCommand(new GetZonesForCommunityIndicatorResultCommand());
+ loadCommand(new GetIndicatorsForCommunityIndicatorResultCommand());
+ loadCommand(new GetSpeciesListForCommunityIndicatorResultCommand());
+ loadCommand(new GetCommunityIndicatorResultCommand());
+
+ // get population indicator result
+ loadCommand(new GetZonesForPopulationIndicatorResultCommand());
+ loadCommand(new GetSpeciesForPopulationIndicatorResultCommand());
+ loadCommand(new GetIndicatorsForPopulationIndicatorResultCommand());
+ loadCommand(new GetPopulationIndicatorResultCommand());
+
+ // get all results
+ loadCommand(new GetAllResultsCommand());
+
+ // extract raw data
+ loadCommand(new GetZonesForExtractRawDataCommand());
+ loadCommand(new ExtractRawDataCommand());
+
+ // extract raw data and results
+ loadCommand(new GetZonesListForExtractRawDataAndResultsCommand());
+ loadCommand(new GetSpeciesListForExtractRawDataAndResultsCommand());
+ loadCommand(new GetIndicatorsForExtractRawDataAndResultsCommand());
+ loadCommand(new ExtractRawDataAndResultsCommand());
+
+ // delete results
+ loadCommand(new DeleteResultsCommand());
+ }
+
+ @Override
+ public LegacyResultRepository getResultRepository() {
+ return resultRepository;
+ }
+
+ @Override
+ public <R extends CoserRequest> boolean acceptRequest(R request) {
+ ResultRepositoryCommand<LegacyResultRepository, R> command = getCommand(request);
+ boolean result = command.accept(resultRepository, request);
+ return result;
+ }
+
+ @Override
+ public <R extends CoserRequest> CoserResult executeRequest(R request) {
+ ResultRepositoryCommand<LegacyResultRepository, R> command = getCommand(request);
+ CoserResult result = command.execute(resultRepository, request);
+ return result;
+ }
+
+ protected <R extends CoserRequest> ResultRepositoryCommand<LegacyResultRepository, R> getCommand(R request) {
+ Preconditions.checkNotNull(request);
+ String requestTypeName = request.getClass().getName();
+ ResultRepositoryCommand<LegacyResultRepository, ?> resultRepositoryCommand = commands.get(requestTypeName);
+ Preconditions.checkNotNull(resultRepositoryCommand);
+ return (ResultRepositoryCommand<LegacyResultRepository, R>) resultRepositoryCommand;
+ }
+
+ protected void loadCommand(ResultRepositoryCommand<LegacyResultRepository, ?> command) {
+ String name = command.getRequestType().getName();
+ commands.put(name, command);
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryCommandEngine.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -32,6 +32,7 @@
import fr.ifremer.coser.bean.RSufiResultPath;
import fr.ifremer.coser.bean.Selection;
import fr.ifremer.coser.result.ResultRepositoryInitializationException;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
import fr.ifremer.coser.services.ProjectService;
import org.apache.commons.logging.Log;
@@ -80,6 +81,11 @@
return result;
}
+ @Override
+ public ResultRepositoryCommandEngine newEngine(LegacyResultRepository repository) {
+ return new LegacyResultRepositoryCommandEngine(repository);
+ }
+
/**
* Retourne tous les projets qui ont des résultats.
* <p/>
@@ -90,7 +96,7 @@
* @return results paths
* @throws CoserBusinessException
*/
- public Set<LegacyResultRepository> findAllProjectWithResult(CoserServiceContext serviceContext) throws CoserBusinessException {
+ protected Set<LegacyResultRepository> findAllProjectWithResult(CoserServiceContext serviceContext) throws CoserBusinessException {
ProjectService projectService = new ProjectService(serviceContext.getConfig());
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,68 @@
+package fr.ifremer.coser.result.repository.legacy;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Sets;
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.n;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class LegacyResultRepositoryType implements ResultRepositoryType {
+
+ /**
+ * Id of result source.
+ */
+ public static final String ID = "rsufi";
+
+ /**
+ * Public shared instance of type.
+ */
+ public static final LegacyResultRepositoryType INSTANCE = new LegacyResultRepositoryType();
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getId() {
+ return ID;
+ }
+
+ @Override
+ public String getLabelKey() {
+ return n("coser.business.result.repository.type.legacy");
+ }
+
+ @Override
+ public Set<ResultType> getResultTypes() {
+ return Sets.immutableEnumSet(ResultType.MAP, ResultType.INDICATOR);
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryType.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/MapResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/MapResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/MapResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,123 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.bean.RSufiResultPath;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.RequestUnavailableForProducerException;
-import fr.ifremer.coser.result.repository.ResultProducer;
-import fr.ifremer.coser.result.request.MapRequest;
-
-import java.io.File;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class MapResultProducer implements ResultProducer<MapRequest> {
-
- protected final LegacyResultRepository repository;
-
- protected final RSufiResultPath path;
-
- public MapResultProducer(LegacyResultRepository repository) {
- this.repository = repository;
- this.path = repository.path;
- }
-
- @Override
- public LegacyResultRepository getRepository() {
- return repository;
- }
-
- @Override
- public boolean acceptResult(MapRequest request) {
- return repository.mapsResult &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(request);
- }
-
- @Override
- public Map<String, String> getAvailableZones(MapRequest request) {
- Preconditions.checkNotNull(request.getFacade());
-
- boolean match = repository.matchFacade(request);
-
- Map<String, String> result = null;
- if (match) {
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
- result = zonesMap.getSubZonesMap(path.getRsufiResult().getZone(), allowedZones);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableSpecies(MapRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
-
- Map<String, String> result = null;
-
- boolean match = repository.mapsResult &&
- repository.matchFacade(request) &&
- repository.matchZone(request);
- if (match) {
-
- // get all map species for given facade + zone
- result = repository.getPopulationIndicatorSpecies();
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableIndicators(MapRequest request) {
- throw RequestUnavailableForProducerException.newException("getAvailableIndicators", this);
- }
-
- @Override
- public FileResult produceResult(MapRequest r) {
-
- File resultZip = repository.getMapSpeciesFile(r.getSpecies());
-
- FileResult result = new FileResult(repository.getId(), resultZip);
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(MapRequest request) {
- String species = request.getSpecies();
- File file = repository.getMapSpeciesFile(species);
- return file != null;
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/PopulationIndicatorResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/PopulationIndicatorResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/PopulationIndicatorResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,356 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.RSufiResultPath;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.ResultProducer;
-import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
-import fr.ifremer.coser.storage.DataStorage;
-import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.storage.MemoryDataStorage;
-import org.apache.commons.lang3.StringUtils;
-import org.jfree.chart.ChartUtilities;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.CategoryAxis;
-import org.jfree.chart.axis.CategoryLabelPositions;
-import org.jfree.chart.axis.NumberAxis;
-import org.jfree.chart.axis.ValueAxis;
-import org.jfree.chart.plot.CategoryPlot;
-import org.jfree.chart.plot.PlotOrientation;
-import org.jfree.chart.renderer.category.CategoryItemRenderer;
-import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
-import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
-
-import java.awt.Color;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class PopulationIndicatorResultProducer implements ResultProducer<PopulationIndicatorRequest> {
-
- protected final LegacyResultRepository repository;
-
- protected final Reports reports;
-
- protected final RSufiResultPath path;
-
- protected final File basedir;
-
- protected final String surveyName;
-
- public PopulationIndicatorResultProducer(LegacyResultRepository repository) {
- this.repository = repository;
- this.path = repository.path;
- this.reports = repository.reports;
- this.basedir = repository.basedir;
- this.surveyName = repository.surveyName;
- }
-
- @Override
- public LegacyResultRepository getRepository() {
- return repository;
- }
-
- @Override
- public boolean acceptResult(PopulationIndicatorRequest request) {
- return repository.indicatorsResult &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpeciesAndIndicator(request);
- }
-
- @Override
- public Map<String, String> getAvailableZones(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
-
- boolean match = repository.matchFacade(request);
-
- Map<String, String> result = null;
- if (match) {
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
- result = zonesMap.getSubZonesMap(path.getRsufiResult().getZone(), allowedZones);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableSpecies(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
-
- Map<String, String> result = null;
-
- boolean match = repository.indicatorsResult &&
- repository.matchFacade(request) &&
- repository.matchZone(request);
-
- if (match) {
- // get all population indicator species for given facade + zone
- result = repository.getPopulationIndicatorSpecies();
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableIndicators(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getFacade());
- Preconditions.checkNotNull(request.getZone());
- Preconditions.checkNotNull(request.getSpecies());
-
- Map<String, String> result = null;
-
- boolean match = repository.indicatorsResult &&
- repository.matchFacade(request) &&
- repository.matchZone(request) &&
- matchSpecies(request);
-
- if (match) {
-
- // get all indicators for given facade + zone + species
- Set<String> indicatorList = repository.getPopulationIndicators(request.getSpecies());
- result = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
- }
-
- return result;
- }
-
- @Override
- public FileResult produceResult(PopulationIndicatorRequest request) {
-
- File file = null;
- switch (request.getResultType()) {
- case DATA:
- file = getPopulationIndicatorDataFile(request.getIndicator(),
- request.getSpecies());
- break;
-
- case GRAPH:
- file = getPopulationIndicatorGraphFile(request.getLocale(),
- request.getZone(),
- request.getIndicator(),
- request.getSpecies());
- break;
- }
-
-
- FileResult result = new FileResult(repository.getId(), file);
- return result;
- }
-
- protected File getPopulationIndicatorDataFile(String species, String indicator) {
-
- DataStorage dataStorage = new MemoryDataStorage();
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(false);
-
- // add header
- dataStorage.add(iterator.next());
-
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
- dataStorage.add(tuple);
- }
- }
- File result = DataStorages.save(dataStorage, "coser-chart-population-indicator",
- ".csv"
- );
- return result;
- }
-
- protected File getPopulationIndicatorGraphFile(Locale locale,
- String zone,
- String species,
- String indicator) {
-
- int multiplicator = 1;
- int minYear = Integer.MAX_VALUE;
- int maxYear = Integer.MIN_VALUE;
- boolean indicatorFound = false;
- Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
-
- if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
- indicatorFound = true;
-
- // XXX echatellier, maybe take care of list here ?
-
- Double estimation = Double.parseDouble(tuple[6]);
- Double ecart = Double.parseDouble(tuple[7]);
- int year = Integer.parseInt(tuple[5]);
-
- if (year < minYear) {
- minYear = year;
- }
- if (year > maxYear) {
- maxYear = year;
- }
- graphData.put(year, new Double[]{estimation, ecart});
-
- // si les données sont énormes, on affiche les données
- // / multiplicator et on le mentionne dans la légende
- if (estimation > 1e9) {
- multiplicator = 1000000;
- }
- if (estimation > 1e6 && multiplicator < 1000000) {
- multiplicator = 1000;
- }
- }
- }
-
- File result = null;
-
- // avec l'extraction des données, on peut demander a générer un graphique
- // sur un indicateur qui n'est pas présent dans le projet courant,
- // dans ce cas, on retourne null
- if (indicatorFound) {
-
- String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
- String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
- String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
-
- // get graph title
- String title = zoneDisplayName;
- title += " - " + indicatorName;
- title += " - " + repository.getSpeciesMap().getReportDisplayName(species);
-
- // generate dataset with sorted data
- DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
- for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
- Double[] entry = graphData.get(indexYear);
- if (entry != null) {
- Double estimation = entry[0] / multiplicator;
- Double ecart = entry[1] / multiplicator;
- statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
- } else {
- statisticalDataset.add(null, null, "Serie1", indexYear);
- }
- }
-
- // configure chart
- //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
- String yearAxis = reports.getYearChartTitle(locale);
- CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
- categoryAxis.setCategoryMargin(0);
- categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
- // label horizontaux
- String legendY = indicatorName;
- if (multiplicator != 1) {
- // affiche par exemple : cm * 1000
- legendY += " (" + unit + "*" + multiplicator + ")";
- } else if (StringUtils.isNotEmpty(unit)) {
- legendY += " (" + unit + ")";
- }
- ValueAxis valueAxis = new NumberAxis(legendY);
- valueAxis.setUpperMargin(0.1);
-
- CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
-
- // n'affiche pas les nombre sur le graphique
- //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
- //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
- //renderer.setBaseItemLabelsVisible(true);
-
- CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
- plot.setOrientation(PlotOrientation.VERTICAL);
- JFreeChart chart = new JFreeChart(title,
- JFreeChart.DEFAULT_TITLE_FONT, plot, true);
-
- // remove series legend
- chart.removeLegend();
- // white background
- chart.setBackgroundPaint(Color.WHITE);
-
- try {
- result = File.createTempFile("coser-chart-population-indicator-", ".png");
- result.deleteOnExit();
- ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
- } catch (IOException ex) {
- throw new CoserTechnicalException("Can't save chart", ex);
- }
- }
-
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers -------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
-
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchSpeciesAndIndicator(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
- Preconditions.checkNotNull(request.getIndicator());
-
- String species = request.getSpecies();
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/RawDataResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/RawDataResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/RawDataResultProducer.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,178 +0,0 @@
-package fr.ifremer.coser.result.repository.legacy;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.coser.CoserBusinessConfig;
-import fr.ifremer.coser.CoserBusinessException;
-import fr.ifremer.coser.CoserConstants;
-import fr.ifremer.coser.CoserTechnicalException;
-import fr.ifremer.coser.bean.Project;
-import fr.ifremer.coser.bean.RSufiResultPath;
-import fr.ifremer.coser.bean.Selection;
-import fr.ifremer.coser.bean.ZoneMap;
-import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.Reports;
-import fr.ifremer.coser.result.repository.RequestUnavailableForProducerException;
-import fr.ifremer.coser.result.repository.ResultProducer;
-import fr.ifremer.coser.result.request.RawDataRequest;
-import fr.ifremer.coser.services.ProjectService;
-import org.apache.commons.io.FileUtils;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.ZipUtil;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class RawDataResultProducer implements ResultProducer<RawDataRequest> {
-
- protected final LegacyResultRepository repository;
-
- protected final Reports reports;
-
- protected final RSufiResultPath path;
-
- protected final File basedir;
-
- protected final ProjectService projectService;
-
- private CoserBusinessConfig config;
-
- private String surveyName;
-
- public RawDataResultProducer(LegacyResultRepository repository) {
- this.repository = repository;
- this.path = repository.path;
- this.reports = repository.reports;
- this.projectService = repository.projectService;
- this.basedir = repository.basedir;
- this.config = repository.getConfig();
- this.surveyName = repository.surveyName;
- }
-
- @Override
- public LegacyResultRepository getRepository() {
- return repository;
- }
-
- @Override
- public boolean acceptResult(RawDataRequest request) {
- return repository.dataResult &&
- repository.matchFacade(request) &&
- matchZone(request);
- }
-
- @Override
- public Map<String, String> getAvailableZones(RawDataRequest request) {
- boolean match = repository.matchFacade(request);
-
- Map<String, String> result = null;
- if (match) {
- ZoneMap zonesMap = repository.getZonesMap();
- List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
- result = zonesMap.getSubZonesMap(path.getRsufiResult().getZone(), allowedZones);
- }
- return result;
- }
-
- @Override
- public Map<String, String> getAvailableSpecies(RawDataRequest request) {
- throw RequestUnavailableForProducerException.newException("getAvailableSpecies", this);
- }
-
- @Override
- public Map<String, String> getAvailableIndicators(RawDataRequest request) {
- throw RequestUnavailableForProducerException.newException("getAvailableIndicators", this);
- }
-
- @Override
- public FileResult produceResult(RawDataRequest r) {
-
- Locale locale = r.getLocale();
-
- Project project = path.getProject();
- Selection selection = path.getSelection();
- try {
- // be sure that data are available for this project
- // or it will fail
- projectService.loadSelectionData(basedir.getParentFile(), project, selection);
- } catch (CoserBusinessException e) {
- throw new CoserTechnicalException("Could not load project selection", e);
- }
-
- File resultZip;
-
- try {
- File tempDir = FileUtil.createTempDirectory("coser-source-", "-tmp");
-
- // il ne faut pas les fichiers de selection, mais leurs
- // export rsufi (sans les lignes, et les quotes)
- File archiveDir = projectService.extractRSUfiData(project, selection, tempDir, true);
-
- // add decharge file
- String filename = reports.getDechargeFilename(locale);
- File dechargePDF = new File(archiveDir, filename);
-
- Date lastDataUpdateDate = config.getLastDataUpdateDate();
-
- reports.generateDechargePDF(dechargePDF, locale, lastDataUpdateDate, surveyName);
-
- // ajout du reftax dans le zip
- File reftaxFile = new File(basedir, CoserConstants.Category.REFTAX_SPECIES.getStorageFileName());
- FileUtils.copyFileToDirectory(reftaxFile, archiveDir);
-
- // make zip
- resultZip = File.createTempFile("coser-source-", ".zip");
- resultZip.deleteOnExit();
- ZipUtil.compress(resultZip, archiveDir);
-
- // clean directory
- FileUtils.deleteDirectory(tempDir);
- } catch (IOException e) {
- throw new CoserTechnicalException("Can't create zip file", e);
- } catch (CoserBusinessException e) {
- throw new CoserTechnicalException("Can't create zip file", e);
- }
-
- FileResult result = new FileResult(repository.getId(), resultZip);
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- Matchers ------------------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchZone(RawDataRequest request) {
- return path.getRsufiResult().getZone().equals(request.getZone());
- }
-
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,133 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.CoserResult;
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.VoidResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryType;
+import fr.ifremer.coser.result.request.DeleteResultsRequest;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DeleteResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, DeleteResultsRequest> {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(DeleteResultsCommand.class);
+//
+// protected final LegacyResultRepository repository;
+//
+// protected final RSufiResult rsufiResult;
+//
+// public DeleteResultsCommand(LegacyResultRepository repository) {
+// this.repository = repository;
+// this.rsufiResult = repository.path.getRsufiResult();
+// }
+//
+// @Override
+// public LegacyResultRepository getRepository() {
+// return repository;
+// }
+
+
+ @Override
+ public Class<DeleteResultsRequest> getRequestType() {
+ return DeleteResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository, DeleteResultsRequest request) {
+ boolean result = matchRepositoryType(request) &&
+ matchResultType(repository, request) &&
+ matchPublish(repository) &&
+ matchZone(repository, request);
+ return result;
+ }
+
+ @Override
+ public CoserResult execute(LegacyResultRepository repository, DeleteResultsRequest request) {
+ File basedir = repository.getBasedir();
+ if (log.isInfoEnabled()) {
+ log.info("Will delete project at: " + basedir);
+ }
+ try {
+ FileUtils.deleteDirectory(basedir);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not delete project at: " + basedir, e);
+ }
+ return new VoidResult(repository.getId());
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchRepositoryType(DeleteResultsRequest request) {
+ boolean result = request.getResultRepositoryType().equals(LegacyResultRepositoryType.ID);
+ return result;
+ }
+
+ protected boolean matchResultType(LegacyResultRepository repository, DeleteResultsRequest request) {
+ boolean result;
+ ResultType resultType = request.getResultType();
+ switch (resultType) {
+
+ case MAP:
+ result = repository.isMapsResult();
+ break;
+ case INDICATOR:
+ result = repository.isIndicatorsResult();
+ break;
+ default:
+ result = false;
+ break;
+ }
+ return result;
+ }
+
+ protected boolean matchPublish(LegacyResultRepository repository) {
+ boolean result = repository.isPubliableResult();
+ return result;
+ }
+
+ protected boolean matchZone(LegacyResultRepository repository, DeleteResultsRequest request) {
+ List<String> zoneList = request.getZoneList();
+ boolean result = zoneList.contains(repository.getZone());
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/DeleteResultsCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/ExtractResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,753 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.SpeciesMap;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.Reports;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.storage.MemoryDataStorage;
+import fr.ifremer.coser.util.DataType;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.collections4.keyvalue.MultiKey;
+import org.apache.commons.collections4.map.MultiKeyMap;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.CategoryAxis;
+import org.jfree.chart.axis.CategoryLabelPositions;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.plot.CategoryPlot;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.renderer.category.CategoryItemRenderer;
+import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
+import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, ExtractRawDataAndResultsRequest> {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(ExtractRawDataAndResultsCommand.class);
+
+ @Override
+ public Class<ExtractRawDataAndResultsRequest> getRequestType() {
+ return ExtractRawDataAndResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ return matchExtractTypeSet(repository, request) &&
+ matchZoneList(repository, request) &&
+ (matchPopulationIndicatorListAndSpeciesList(repository, request) ||
+ matchCommunityIndicatorListAndSpeciesList(repository, request));
+ }
+
+ @Override
+ public FileResult execute(LegacyResultRepository repository,
+ ExtractRawDataAndResultsRequest r) {
+
+ Locale locale = r.getLocale();
+ List<String> zoneList = r.getZoneList();
+ List<DataType> extractTypeList = r.getExtractTypeList();
+ List<String> speciesList = r.getSpeciesList();
+ List<String> communityIndicatorList = r.getCommunityIndicatorList();
+ List<String> populationIndicatorList = r.getPopulationIndicatorList();
+
+ File resultZip = null;
+ File tempDir = null;
+ try {
+ tempDir = FileUtil.createTempDirectory("coser-extract-", "-tmp");
+
+ File subDir = new File(tempDir, "Indicateurs_Ifremer");
+ FileUtils.forceMkdir(subDir);
+
+ // les sources se retrouve dans le zip a cote du pdf
+ if (extractTypeList.contains(DataType.SOURCE)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting sources");
+ }
+ File srcDir = new File(subDir, "sources");
+ extractSource(repository, srcDir);
+ }
+
+ // les cartes doivent se retrouver dans le pdf
+ MultiKeyMap pdfMaps = null;
+ if (extractTypeList.contains(DataType.MAP)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting maps");
+ }
+ SpeciesMap speciesMap = repository.getSpeciesMap();
+ String zone = repository.getZone();
+ for (String species : speciesList) {
+ File mapFile = repository.getMapSpeciesFile(species);
+ pdfMaps.put(zone, speciesMap.getSpeciesName(species), mapFile);
+ }
+ }
+
+ // les graphiques sont également dans le pdf
+ MultiKeyMap pdfCharts = null;
+ if (CollectionUtils.isNotEmpty(communityIndicatorList) ||
+ CollectionUtils.isNotEmpty(populationIndicatorList)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Extracting charts");
+ }
+ pdfCharts = extractCharts(repository,
+ speciesList,
+ communityIndicatorList,
+ populationIndicatorList,
+ locale);
+ }
+
+ Reports reports = repository.getReports();
+
+ // generate pdf if necessary
+ if (MapUtils.isNotEmpty(pdfMaps) || MapUtils.isNotEmpty(pdfCharts)) {
+ if (log.isDebugEnabled()) {
+ log.debug("Generated Extract PDF");
+ }
+ reports.generateExtractPDF(subDir,
+ zoneList,
+ pdfMaps,
+ pdfCharts,
+ repository.getZonesMap(),
+ locale);
+ }
+
+ // fichier de décharge en pdf
+ if (log.isDebugEnabled()) {
+ log.debug("Generated decharge PDF");
+ }
+ String filename = reports.getDechargeFilename(locale);
+ File dechargePDF = new File(subDir, filename);
+ reports.generateDechargePDF(dechargePDF, locale, null, null);
+
+ // make zip
+ if (log.isDebugEnabled()) {
+ log.debug("Make final archive");
+ }
+ resultZip = File.createTempFile("coser-extract-", ".zip");
+ resultZip.deleteOnExit();
+ ZipUtil.compress(resultZip, subDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't create zip file", ex);
+ } finally {
+ // clean directory
+ FileUtils.deleteQuietly(tempDir);
+ }
+
+ FileResult result = new FileResult(repository.getId(), resultZip);
+ return result;
+ }
+
+ /**
+ * Generate raw data after selection in a sub directory (named of the zone) of the given directory.
+ *
+ * @param directory where to generate file
+ */
+ protected void extractSource(LegacyResultRepository repository, File directory) {
+
+ repository.loadSelectionData();
+
+ // il ne faut pas les fichiers de selection, mais leurs
+ // export rsufi (sans les lignes, et les quotes)
+ File zoneDirectory = new File(directory, repository.getZone());
+
+ try {
+ FileUtils.forceMkdir(zoneDirectory);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Could not create directory: " + zoneDirectory, e);
+ }
+
+ repository.extractRSUfiData(zoneDirectory);
+ }
+
+ /**
+ * Retourne les indicateurs calculés avec leurs traductions scientifique
+ * pour la zone et l'especes souhaitées.
+ *
+ * @param species especes (if {@code null} look for com indicators
+ * @param comIndicators comIndicator
+ * @param popIndicators popIndicators
+ * @param locale locale
+ * @return la liste des indicateurs (zone, speciesname, [graphfile, graphdata])
+ */
+ protected MultiKeyMap extractCharts(LegacyResultRepository repository,
+ Collection<String> species,
+ Collection<String> comIndicators,
+ Collection<String> popIndicators,
+ Locale locale) {
+
+ MultiKeyMap chartFileAndDatas = new MultiKeyMap();
+
+ String zone = repository.getZone();
+ String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
+
+ if (CollectionUtils.isNotEmpty(comIndicators)) {
+ Map<String, Pair<File, String>> chartFileAndDataCom = getRsufiResultComCharts(repository,
+ comIndicators,
+ zoneDisplayName,
+ repository.getIndicatorsMap(),
+ locale,
+ 650,
+ 430);
+ // put in multimap as zone,speciesname, data
+ for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataCom.entrySet()) {
+ chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
+ }
+ }
+
+ if (CollectionUtils.isNotEmpty(popIndicators)) {
+ Map<String, Pair<File, String>> chartFileAndDataPop = getRsufiResultPopCharts(repository,
+ species,
+ popIndicators,
+ zoneDisplayName,
+ repository.getIndicatorsMap(),
+ locale,
+ 650,
+ 430);
+ // put in multimap as zone,speciesname, data
+ for (Map.Entry<String, Pair<File, String>> entry : chartFileAndDataPop.entrySet()) {
+ chartFileAndDatas.put(zone, entry.getKey(), entry.getValue());
+ }
+ }
+
+ return chartFileAndDatas;
+ }
+
+ /**
+ * Generate community graph for selected indicators.
+ * Used by web ui extraction.
+ *
+ * @param indicators indicators to extract
+ * @param zoneDisplayName zone full name
+ * @param indicatorMap indicator localized map
+ * @param locale locale
+ * @param width graph width
+ * @param height graph height
+ * @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
+ */
+ public Map<String, Pair<File, String>> getRsufiResultComCharts(LegacyResultRepository repository,
+ Collection<String> indicators,
+ String zoneDisplayName,
+ IndicatorMap indicatorMap,
+ Locale locale,
+ int width, int height) {
+
+ Map<String, Pair<File, String>> result = Maps.newHashMap();
+
+ int multiplicator = 1;
+ int minYear = Integer.MAX_VALUE;
+ int maxYear = Integer.MIN_VALUE;
+
+ Map<String, Map<Integer, Double[]>> indicatorGraphData = new HashMap<String, Map<Integer, Double[]>>();
+ Map<String, String> indicatorLists = new HashMap<String, String>();
+ Map<String, DataStorage> indicatorStorages = new HashMap<String, DataStorage>();
+
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ Iterator<String[]> estComIndIterator = repository.loadCommunityIndicatorStorage(true);
+ while (estComIndIterator.hasNext()) {
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ String[] tuple = estComIndIterator.next();
+ String indicatorCode = tuple[1];
+ String indicatorList = tuple[2];
+
+ if (indicators.contains(indicatorCode)) {
+
+ // si pas de list selectionnée, on prend la premiere
+ String localList = indicatorLists.get(indicatorCode);
+ if (StringUtils.isBlank(localList)) {
+ localList = indicatorList;
+ indicatorLists.put(indicatorCode, localList);
+ }
+
+ if (indicatorList.equals(localList)) {
+ Double estimation = Double.parseDouble(tuple[5]);
+ Double ecart = Double.parseDouble(tuple[6]);
+ int year = Integer.parseInt(tuple[4]);
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ Map<Integer, Double[]> graphData = indicatorGraphData.get(indicatorCode);
+ if (graphData == null) {
+ graphData = new HashMap<Integer, Double[]>();
+ indicatorGraphData.put(indicatorCode, graphData);
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
+
+ // si les données sont énormes, on affiche les données
+ // / multiplicator et on le mentionne dans la légende
+ if (estimation > 1e9) {
+ multiplicator = 1000000;
+ }
+ if (estimation > 1e6 && multiplicator < 1000000) {
+ multiplicator = 1000;
+ }
+
+ // for data part
+ DataStorage subDataStorage = indicatorStorages.get(indicatorCode);
+ if (subDataStorage == null) {
+ subDataStorage = new MemoryDataStorage();
+ if ("fr".equals(locale.getLanguage())) {
+ subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Strate", "Année", "Estimation", "EcartType", "CV"});
+ } else {
+ subDataStorage.add(new String[]{"Survey", "Index", "List", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
+ }
+ indicatorStorages.put(indicatorCode, subDataStorage);
+ }
+ subDataStorage.add(tuple);
+ }
+ }
+ }
+
+ // avec l'extraction des données, on peut demander a générer un graphique
+ // sur un indicateur qui n'est pas présent dans le projet courant,
+ // dans ce cas, on retourne null
+ for (String indicator : indicatorGraphData.keySet()) {
+ // get graph title
+ String chartTitle = zoneDisplayName;
+ String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
+ String unit = indicatorMap.getIndicatorUnit(indicator);
+ chartTitle += " - " + indicatorName;
+
+ // ajout de la traduction de la liste d'indicateur
+ // les liste sont a1, T1, T2 ...
+ String localList = indicatorLists.get(indicator);
+ String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, localList);
+ chartTitle += " - " + speciesListName;
+// String listLetter = String.valueOf(localList.charAt(0));
+// Iterator<String[]> typeIterator = repository.getSpeciesListMap().iterator(true);
+// while (typeIterator.hasNext()) {
+// // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
+// String[] tuple = typeIterator.next();
+// if (tuple[4].equals(listLetter)) {
+// /// gestion du groupe "Tous"
+// // cas special, c'est la seule valeur du fichier
+// // code type espece qui a besoin d'une traduction
+// if (tuple[4].equalsIgnoreCase("T")) {
+// if ("fr".equals(locale.getLanguage())) {
+// chartTitle += " - " + "Tous Liste " + localList.charAt(1);
+// } else if ("es".equals(locale.getLanguage())) {
+// chartTitle += " - " + "Todo Lista " + localList.charAt(1);
+// } else {
+// chartTitle += " - " + "All List " + localList.charAt(1);
+// }
+// } else {
+// // ajout de la traduction du nom de liste plus le numéro
+// if ("fr".equals(locale.getLanguage())) {
+// chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
+// } else if ("es".equals(locale.getLanguage())) {
+// chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
+// } else {
+// chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
+// }
+// }
+// break;
+// }
+// }
+
+ // generate dataset with sorted data
+ Map<Integer, Double[]> graphData = indicatorGraphData.get(indicator);
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
+ String yearAxis = repository.getReports().getYearChartTitle(locale);
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+ // label horizontaux
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ // n'affiche pas les nombre sur le graphique
+ //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
+ //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
+ //renderer.setBaseItemLabelsVisible(true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(chartTitle,
+ JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ try {
+ File chartFile = File.createTempFile("coser-community-chart-", ".png");
+ chartFile.deleteOnExit();
+ ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
+ //ByteArrayOutputStream out = new ByteArrayOutputStream();
+ //ChartUtilities.writeChartAsPNG(out, chart, width, height);
+
+ // data extraction
+ DataStorage subDataStorage = indicatorStorages.get(indicator);
+ StringWriter writer = new StringWriter();
+ DataStorages.save(subDataStorage, writer);
+
+ // add chart file dans chart data in result
+ result.put(indicator, Pair.of(chartFile, writer.toString()));
+ writer.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save chart", ex);
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Generate population graph for selected species and indicator.
+ *
+ * @param species species to extract
+ * @param indicators indicators to extract
+ * @param zoneDisplayName zone full name
+ * @param indicatorMap indicator localized map
+ * @param locale locale
+ * @param width graph width
+ * @param height graph height
+ * @return maps of generated graph image (temp file) and data indexed by natural key (indicator - species)
+ */
+ public Map<String, Pair<File, String>> getRsufiResultPopCharts(LegacyResultRepository repository,
+ Collection<String> species,
+ Collection<String> indicators,
+ String zoneDisplayName,
+ IndicatorMap indicatorMap,
+ Locale locale,
+ int width,
+ int height) {
+
+ Map<String, Pair<File, String>> result = Maps.newHashMap();
+
+ int multiplicator = 1;
+ int minYear = Integer.MAX_VALUE;
+ int maxYear = Integer.MIN_VALUE;
+
+ MultiKeyMap indicatorGraphData = new MultiKeyMap();
+ MultiKeyMap indicatorStorages = new MultiKeyMap();
+
+ // Campagne Indicateur Liste Species Strate Annee Estimation EcartType CV
+ Iterator<String[]> estPopIndIterator = repository.loadPopulationIndicatorStorage(true);
+ while (estPopIndIterator.hasNext()) {
+ String[] tuple = estPopIndIterator.next();
+
+ String speciesCode = tuple[3];
+ String indicatorCode = tuple[1];
+ if (species.contains(speciesCode) && indicators.contains(indicatorCode)) {
+
+ // XXX echatellier, maybe take care of list here ?
+
+ Double estimation = Double.parseDouble(tuple[6]);
+ Double ecart = Double.parseDouble(tuple[7]);
+ int year = Integer.parseInt(tuple[5]);
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicatorCode, speciesCode);
+ if (graphData == null) {
+ graphData = new HashMap<Integer, Double[]>();
+ indicatorGraphData.put(indicatorCode, speciesCode, graphData);
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
+
+ // si les données sont énormes, on affiche les données
+ // / multiplicator et on le mentionne dans la légende
+ if (estimation > 1e9) {
+ multiplicator = 1000000;
+ }
+ if (estimation > 1e6 && multiplicator < 1000000) {
+ multiplicator = 1000;
+ }
+
+ // for data part
+ DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicatorCode, speciesCode);
+ if (subDataStorage == null) {
+ subDataStorage = new MemoryDataStorage();
+ if ("fr".equals(locale.getLanguage())) {
+ subDataStorage.add(new String[]{"Campagne", "Indice", "Liste", "Espèce", "Strate", "Annee", "Estimation", "EcartType", "CV"});
+ } else {
+ subDataStorage.add(new String[]{"Survey", "Index", "List", "Species", "Stratum", "Year", "Estimate", "StandardDeviation", "CV"});
+ }
+ indicatorStorages.put(indicatorCode, speciesCode, subDataStorage);
+ }
+ subDataStorage.add(tuple);
+ }
+ }
+
+ SpeciesMap speciesMap = repository.getSpeciesMap();
+
+ // avec l'extraction des données, on peut demander a générer un graphique
+ // sur un indicateur qui n'est pas présent dans le projet courant,
+ // dans ce cas, on retourne null
+ for (MultiKey indicatorSpecies : (Set<MultiKey>) indicatorGraphData.keySet()) {
+ String indicator = (String) indicatorSpecies.getKey(0);
+ String aSpecies = (String) indicatorSpecies.getKey(1);
+ // get graph title
+ String title = zoneDisplayName;
+ String indicatorName = indicatorMap.getIndicatorValue(indicator, locale);
+ String unit = indicatorMap.getIndicatorUnit(indicator);
+ title += " - " + indicatorName;
+ title += " - " + speciesMap.getReportDisplayName(aSpecies);
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ Map<Integer, Double[]> graphData = (Map<Integer, Double[]>) indicatorGraphData.get(indicator, aSpecies);
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ Reports reports = repository.getReports();
+
+ // configure chart
+ //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
+ String yearAxis = reports.getYearChartTitle(locale);
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+ // label horizontaux
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ // n'affiche pas les nombre sur le graphique
+ //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
+ //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
+ //renderer.setBaseItemLabelsVisible(true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(title,
+ JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ try {
+ File chartFile = File.createTempFile("coser-population-chart-", ".png");
+ chartFile.deleteOnExit();
+ ChartUtilities.saveChartAsPNG(chartFile, chart, width, height);
+ //ByteArrayOutputStream out = new ByteArrayOutputStream();
+ //ChartUtilities.writeChartAsPNG(out, chart, width, height);
+
+ // data extraction
+ DataStorage subDataStorage = (DataStorage) indicatorStorages.get(indicator, aSpecies);
+ StringWriter writer = new StringWriter();
+ DataStorages.save(subDataStorage, writer);
+
+ // add chart file dans chart data in result
+ result.put(indicator + "-" + aSpecies, Pair.of(chartFile, writer.toString()));
+ writer.close();
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save chart", ex);
+ }
+ }
+
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchExtractTypeSet(LegacyResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ boolean result = false;
+ if (repository.isMapsResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+ if (repository.isIndicatorsResult()) {
+ result = request.getExtractTypeList().contains(DataType.POPULATION) ||
+ request.getExtractTypeList().contains(DataType.COMMUNITY);
+ }
+ if (repository.isDataResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+ return result;
+ }
+
+ protected boolean matchZoneList(LegacyResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ return request.getZoneList().contains(repository.getZone());
+ }
+
+ protected boolean matchCommunityIndicatorList(LegacyResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ Preconditions.checkNotNull(request.getCommunityIndicatorList());
+
+ List<String> indicatorList = request.getCommunityIndicatorList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorList(tuple, indicatorList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchPopulationIndicatorList(LegacyResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ Preconditions.checkNotNull(request.getPopulationIndicatorList());
+
+ List<String> indicatorList = request.getPopulationIndicatorList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorList(tuple, indicatorList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchPopulationIndicatorListAndSpeciesList(LegacyResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ Preconditions.checkNotNull(request.getPopulationIndicatorList());
+
+ List<String> indicatorList = request.getPopulationIndicatorList();
+ List<String> speciesList = request.getSpeciesList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchCommunityIndicatorListAndSpeciesList(LegacyResultRepository repository,
+ ExtractRawDataAndResultsRequest request) {
+ Preconditions.checkNotNull(request.getCommunityIndicatorList());
+
+ List<String> indicatorList = request.getCommunityIndicatorList();
+ List<String> speciesList = request.getSpeciesList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/RawDataResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/ExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,107 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.Reports;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.ExtractRawDataRequest;
+import org.apache.commons.io.FileUtils;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ExtractRawDataCommand implements ResultRepositoryCommand<LegacyResultRepository, ExtractRawDataRequest> {
+
+ @Override
+ public Class<ExtractRawDataRequest> getRequestType() {
+ return ExtractRawDataRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ ExtractRawDataRequest request) {
+ return repository.isDataResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
+ public FileResult execute(LegacyResultRepository repository,
+ ExtractRawDataRequest r) {
+
+ Locale locale = r.getLocale();
+
+ repository.loadSelectionData();
+
+ File resultZip;
+
+ try {
+ File tempDir = FileUtil.createTempDirectory("coser-source-", "-tmp");
+
+ // il ne faut pas les fichiers de selection, mais leurs
+ // export rsufi (sans les lignes, et les quotes)
+ File archiveDir = repository.extractRSUfiData(tempDir);
+
+ // add decharge file
+ Reports reports = repository.getReports();
+ String filename = reports.getDechargeFilename(locale);
+ File dechargePDF = new File(archiveDir, filename);
+
+ Date lastDataUpdateDate = repository.getConfig().getLastDataUpdateDate();
+
+ reports.generateDechargePDF(dechargePDF, locale, lastDataUpdateDate, repository.getSurveyName());
+
+ // ajout du reftax dans le zip
+ File reftaxFile = new File(repository.getBasedir(), CoserConstants.Category.REFTAX_SPECIES.getStorageFileName());
+ FileUtils.copyFileToDirectory(reftaxFile, archiveDir);
+
+ // make zip
+ resultZip = File.createTempFile("coser-source-", ".zip");
+ resultZip.deleteOnExit();
+ ZipUtil.compress(resultZip, archiveDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ } catch (IOException e) {
+ throw new CoserTechnicalException("Can't create zip file", e);
+ }
+
+ FileResult result = new FileResult(repository.getId(), resultZip);
+ return result;
+ }
+
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,103 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.CoserResult;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryType;
+import fr.ifremer.coser.result.request.GetAllResultsRequest;
+
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetAllResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetAllResultsRequest> {
+
+ @Override
+ public Class<GetAllResultsRequest> getRequestType() {
+ return GetAllResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetAllResultsRequest request) {
+ boolean result = matchRepositoryType(request) &&
+ matchResultType(repository, request) &&
+ matchPublish(repository);
+ return result;
+ }
+
+ @Override
+ public CoserResult execute(LegacyResultRepository repository,
+ GetAllResultsRequest request) {
+ Map<String, String> map = Maps.newHashMap();
+ String resultResultId = repository.getZone();
+ String name = repository.getProjectName() + "/" + repository.getSelectionName()
+ + "/" + repository.getResultName();
+ map.put(resultResultId, name);
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchRepositoryType(GetAllResultsRequest request) {
+ boolean result = request.getResultRepositoryType().equals(LegacyResultRepositoryType.ID);
+ return result;
+ }
+
+ protected boolean matchResultType(LegacyResultRepository repository,
+ GetAllResultsRequest request) {
+ boolean result;
+ ResultType resultType = request.getResultType();
+ switch (resultType) {
+
+ case MAP:
+ result = repository.isMapsResult();
+ break;
+ case INDICATOR:
+ result = repository.isIndicatorsResult();
+ break;
+ default:
+ result = false;
+ break;
+ }
+ return result;
+ }
+
+ protected boolean matchPublish(LegacyResultRepository repository) {
+ boolean result = repository.isPubliableResult();
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetAllResultsCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/CommunityIndicatorResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,380 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.storage.MemoryDataStorage;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.CategoryAxis;
+import org.jfree.chart.axis.CategoryLabelPositions;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.plot.CategoryPlot;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.renderer.category.CategoryItemRenderer;
+import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
+import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.ZipUtil;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetCommunityIndicatorResultRequest> {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(GetCommunityIndicatorResultCommand.class);
+
+ @Override
+ public Class<GetCommunityIndicatorResultRequest> getRequestType() {
+ return GetCommunityIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetCommunityIndicatorResultRequest request) {
+ return repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchIndicatorAndSpeciesList(repository, request);
+ }
+
+ @Override
+ public FileResult execute(LegacyResultRepository repository,
+ GetCommunityIndicatorResultRequest request) {
+
+ File file = null;
+ switch (request.getIndicatorResultType()) {
+ case DATA:
+ file = getCommunityIndicatorDataFile(repository,
+ request.getLocale(),
+ request.getIndicator(),
+ request.getSpecies());
+ break;
+
+ case GRAPH:
+ file = getCommunityIndicatorGraphFile(repository,
+ request.getLocale(),
+ request.getZone(),
+ request.getIndicator(),
+ request.getSpecies());
+ break;
+ }
+ FileResult result = new FileResult(repository.getId(), file);
+ return result;
+ }
+
+ protected File getCommunityIndicatorDataFile(LegacyResultRepository repository,
+ Locale locale,
+ String indicator,
+ String speciesList) {
+
+ try {
+
+ File tempDir = FileUtil.createTempDirectory("coser-chart-population-indicator", "-tmp");
+
+ File baseDir = new File(tempDir, repository.getSurveyName());
+ FileUtils.forceMkdir(baseDir);
+
+ // ajout du fichier csv avec les indicateurs
+ DataStorage dataStorage = new MemoryDataStorage();
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(false);
+
+ // add header
+ dataStorage.add(iterator.next());
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ dataStorage.add(tuple);
+ }
+ }
+ File csvFile = DataStorages.save(dataStorage, "coser-chart-community-indicator",
+ ".csv"
+ );
+
+ File csvFileCopied = new File(baseDir, indicator + ".csv");
+ FileUtils.copyFile(csvFile, csvFileCopied);
+ FileUtils.forceDelete(csvFile);
+
+ // ajout du fichier d'information sur les espèces incluses dans
+ // les calculs des indicateurs de communautés
+ // load project (without data to get reftax data)
+ File metaFile = repository.getReports().generateMetaFilePDF(repository.getPath(),
+ repository.getResultDirectory(),
+ locale,
+ repository.getIndicatorsMap()
+ );
+ File metaFileCopied = new File(baseDir, "Information.pdf");
+ FileUtils.copyFile(metaFile, metaFileCopied);
+
+ // make zip
+ File result = File.createTempFile("coser-chart-community-indicator", ".zip");
+ result.deleteOnExit();
+ ZipUtil.compress(result, baseDir);
+
+ // clean directory
+ FileUtils.deleteDirectory(tempDir);
+ return result;
+ } catch (Exception e) {
+ throw new CoserTechnicalException("Can't create zip file", e);
+ }
+ }
+
+ protected File getCommunityIndicatorGraphFile(LegacyResultRepository repository,
+ Locale locale,
+ String zone,
+ String indicator,
+ String speciesList) {
+
+ // indicator list to take care
+ // pour avoir une valeur non nulle si list est null
+ // on prend dans ce cas la premiere valeur trouvée
+ String localList = speciesList;
+
+ if (log.isDebugEnabled()) {
+ log.debug("Searching list for indicator : " + indicator);
+ }
+
+ int multiplicator = 1;
+ int minYear = Integer.MAX_VALUE;
+ int maxYear = Integer.MIN_VALUE;
+ boolean indicatorFound = false;
+ Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ // Campagne Indicateur Liste Strate Annee Estimation EcartType CV
+ String[] tuple = iterator.next();
+ String indicatorList = tuple[2];
+
+ if (repository.matchCommunityIndicator(tuple, indicator)) {
+ indicatorFound = true;
+
+ // si pas de list selectionnée, on prend la premiere
+ if (StringUtils.isBlank(localList)) {
+ localList = indicatorList;
+ }
+
+ if (indicatorList.equals(localList)) {
+ Double estimation = Double.parseDouble(tuple[5]);
+ Double ecart = Double.parseDouble(tuple[6]);
+ int year = Integer.parseInt(tuple[4]);
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
+
+ // si les données sont énormes, on affiche les données
+ // / multiplicator et on le mentionne dans la légende
+ if (estimation > 1e9) {
+ multiplicator = 1000000;
+ }
+ if (estimation > 1e6 && multiplicator < 1000000) {
+ multiplicator = 1000;
+ }
+ }
+ }
+ }
+
+ File result = null;
+
+ // avec l'extraction des données, on peut demander a générer un graphique
+ // sur un indicateur qui n'est pas présent dans le projet courant,
+ // dans ce cas, on retourne null
+ if (indicatorFound) {
+
+ String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
+ String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
+ String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
+
+ // get graph title
+ String chartTitle = zoneDisplayName;
+ chartTitle += " - " + indicatorName;
+
+ String speciesListName = repository.getSpeciesListMap().getSpeciesListName(locale, localList);
+ chartTitle += " - " + speciesListName;
+// // ajout de la traduction de la liste d'indicateur
+// // les liste sont a1, T1, T2 ...
+// String listLetter = String.valueOf(localList.charAt(0));
+// Iterator<String[]> typeIterator = repository.getSpeciesListMap().iterator(true);
+// while (typeIterator.hasNext()) {
+// // "Types";"Commentaire";"NumSys min";"NumSys max";"Code"
+// String[] tuple = typeIterator.next();
+// if (tuple[4].equals(listLetter)) {
+// /// gestion du groupe "Tous"
+// // cas special, c'est la seule valeur du fichier
+// // code type espece qui a besoin d'une traduction
+// if (tuple[4].equalsIgnoreCase("T")) {
+// if ("fr".equals(locale.getLanguage())) {
+// chartTitle += " - " + "Tous Liste " + localList.charAt(1);
+// } else if ("es".equals(locale.getLanguage())) {
+// chartTitle += " - " + "Todo Lista " + localList.charAt(1);
+// } else {
+// chartTitle += " - " + "All List " + localList.charAt(1);
+// }
+// } else {
+// // ajout de la traduction du nom de liste plus le numéro
+// if ("fr".equals(locale.getLanguage())) {
+// chartTitle += " - " + tuple[0] + " Liste " + localList.charAt(1);
+// } else if ("es".equals(locale.getLanguage())) {
+// chartTitle += " - " + tuple[0] + " Lista " + localList.charAt(1);
+// } else {
+// chartTitle += " - " + tuple[0] + " List " + localList.charAt(1);
+// }
+// }
+// break;
+// }
+// }
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
+ String yearAxis = repository.getReports().getYearChartTitle(locale);
+
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+ // label horizontaux
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ // n'affiche pas les nombre sur le graphique
+ //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
+ //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
+ //renderer.setBaseItemLabelsVisible(true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(chartTitle,
+ JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ try {
+ result = File.createTempFile("coser-chart-community-indicator-", ".png");
+ result.deleteOnExit();
+ ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save chart", ex);
+ }
+ }
+
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchIndicator(LegacyResultRepository repository,
+ GetCommunityIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchCommunityIndicator(tuple, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchIndicatorAndSpeciesList(LegacyResultRepository repository,
+ GetCommunityIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String indicator = request.getIndicator();
+ String speciesList = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,64 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetIndicatorsForCommunityIndicatorResultRequest;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetIndicatorsForCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetIndicatorsForCommunityIndicatorResultRequest> {
+
+ @Override
+ public Class<GetIndicatorsForCommunityIndicatorResultRequest> getRequestType() {
+ return GetIndicatorsForCommunityIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetIndicatorsForCommunityIndicatorResultRequest request) {
+ return repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository,
+ GetIndicatorsForCommunityIndicatorResultRequest request) {
+
+ Set<String> indicatorList = repository.getCommunityIndicators();
+ Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForCommunityIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,105 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetIndicatorsForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.util.DataType;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetIndicatorsForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetIndicatorsForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public Class<GetIndicatorsForExtractRawDataAndResultsRequest> getRequestType() {
+ return GetIndicatorsForExtractRawDataAndResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetIndicatorsForExtractRawDataAndResultsRequest request) {
+ return matchExtractTypeSet(repository, request) &&
+ matchZoneList(repository, request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository,
+ GetIndicatorsForExtractRawDataAndResultsRequest request) {
+
+
+ Set<String> indicatorList = null;
+
+ if (request.getExtractTypeList().contains(DataType.COMMUNITY)) {
+
+ // get all community indicators for given zone
+ indicatorList = repository.getCommunityIndicators();
+ } else if (request.getExtractTypeList().contains(DataType.POPULATION)) {
+
+ // get all population indicators for given zone
+ indicatorList = repository.getPopulationIndicators();
+ }
+
+ Map<String, String> map = null;
+ if (indicatorList != null) {
+ map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+ }
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchExtractTypeSet(LegacyResultRepository repository,
+ GetIndicatorsForExtractRawDataAndResultsRequest request) {
+ boolean result = false;
+ if (repository.isMapsResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+ if (repository.isIndicatorsResult()) {
+ result = request.getExtractTypeList().contains(DataType.POPULATION) ||
+ request.getExtractTypeList().contains(DataType.COMMUNITY);
+ }
+ if (repository.isDataResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+ return result;
+ }
+
+ protected boolean matchZoneList(LegacyResultRepository repository,
+ GetIndicatorsForExtractRawDataAndResultsRequest request) {
+ return request.getZoneList().contains(repository.getZone());
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForExtractRawDataAndResultsCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,91 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetIndicatorsForPopulationIndicatorResultRequest;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetIndicatorsForPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetIndicatorsForPopulationIndicatorResultRequest> {
+
+ @Override
+ public Class<GetIndicatorsForPopulationIndicatorResultRequest> getRequestType() {
+ return GetIndicatorsForPopulationIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetIndicatorsForPopulationIndicatorResultRequest request) {
+ return repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchSpecies(repository, request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository,
+ GetIndicatorsForPopulationIndicatorResultRequest request) {
+
+ Set<String> indicatorList = repository.getPopulationIndicators(request.getSpecies());
+ Map<String, String> map = repository.getIndicatorsMap().getIndicatorsValues(indicatorList, request.getLocale());
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(LegacyResultRepository repository,
+ GetIndicatorsForPopulationIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String species = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchPopulationSpecies(tuple, species)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetIndicatorsForPopulationIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/MapResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,75 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetMapResultRequest;
+
+import java.io.File;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetMapResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetMapResultRequest> {
+
+ @Override
+ public Class<GetMapResultRequest> getRequestType() {
+ return GetMapResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetMapResultRequest request) {
+ return repository.isMapsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchSpecies(repository, request);
+ }
+
+ @Override
+ public FileResult execute(LegacyResultRepository repository,
+ GetMapResultRequest r) {
+
+ File resultZip = repository.getMapSpeciesFile(r.getSpecies());
+
+ FileResult result = new FileResult(repository.getId(), resultZip);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(LegacyResultRepository repository,
+ GetMapResultRequest request) {
+ String species = request.getSpecies();
+ File file = repository.getMapSpeciesFile(species);
+ return file != null;
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/PopulationIndicatorResultProducer.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,288 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.CoserTechnicalException;
+import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
+import fr.ifremer.coser.storage.DataStorage;
+import fr.ifremer.coser.storage.DataStorages;
+import fr.ifremer.coser.storage.MemoryDataStorage;
+import org.apache.commons.lang3.StringUtils;
+import org.jfree.chart.ChartUtilities;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.CategoryAxis;
+import org.jfree.chart.axis.CategoryLabelPositions;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.ValueAxis;
+import org.jfree.chart.plot.CategoryPlot;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.renderer.category.CategoryItemRenderer;
+import org.jfree.chart.renderer.category.StatisticalLineAndShapeRenderer;
+import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetPopulationIndicatorResultRequest> {
+
+ @Override
+ public Class<GetPopulationIndicatorResultRequest> getRequestType() {
+ return GetPopulationIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetPopulationIndicatorResultRequest request) {
+ return repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchSpeciesAndIndicator(repository, request);
+ }
+
+ @Override
+ public FileResult execute(LegacyResultRepository repository,
+ GetPopulationIndicatorResultRequest request) {
+
+ File file = null;
+ switch (request.getIndicatorResultType()) {
+ case DATA:
+ file = getPopulationIndicatorDataFile(repository,
+ request.getIndicator(),
+ request.getSpecies());
+ break;
+
+ case GRAPH:
+ file = getPopulationIndicatorGraphFile(repository,
+ request.getLocale(),
+ request.getZone(),
+ request.getIndicator(),
+ request.getSpecies());
+ break;
+ }
+
+
+ FileResult result = new FileResult(repository.getId(), file);
+ return result;
+ }
+
+ protected File getPopulationIndicatorDataFile(LegacyResultRepository repository,
+ String species,
+ String indicator) {
+
+ DataStorage dataStorage = new MemoryDataStorage();
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(false);
+
+ // add header
+ dataStorage.add(iterator.next());
+
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
+ dataStorage.add(tuple);
+ }
+ }
+ File result = DataStorages.save(dataStorage, "coser-chart-population-indicator",
+ ".csv"
+ );
+ return result;
+ }
+
+ protected File getPopulationIndicatorGraphFile(LegacyResultRepository repository,
+ Locale locale,
+ String zone,
+ String species,
+ String indicator) {
+
+ int multiplicator = 1;
+ int minYear = Integer.MAX_VALUE;
+ int maxYear = Integer.MIN_VALUE;
+ boolean indicatorFound = false;
+ Map<Integer, Double[]> graphData = new HashMap<Integer, Double[]>();
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+
+ if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
+ indicatorFound = true;
+
+ // XXX echatellier, maybe take care of list here ?
+
+ Double estimation = Double.parseDouble(tuple[6]);
+ Double ecart = Double.parseDouble(tuple[7]);
+ int year = Integer.parseInt(tuple[5]);
+
+ if (year < minYear) {
+ minYear = year;
+ }
+ if (year > maxYear) {
+ maxYear = year;
+ }
+ graphData.put(year, new Double[]{estimation, ecart});
+
+ // si les données sont énormes, on affiche les données
+ // / multiplicator et on le mentionne dans la légende
+ if (estimation > 1e9) {
+ multiplicator = 1000000;
+ }
+ if (estimation > 1e6 && multiplicator < 1000000) {
+ multiplicator = 1000;
+ }
+ }
+ }
+
+ File result = null;
+
+ // avec l'extraction des données, on peut demander a générer un graphique
+ // sur un indicateur qui n'est pas présent dans le projet courant,
+ // dans ce cas, on retourne null
+ if (indicatorFound) {
+
+ String zoneDisplayName = repository.getZonesMap().getZoneFullName(zone);
+ String indicatorName = repository.getIndicatorsMap().getIndicatorValue(indicator, locale);
+ String unit = repository.getIndicatorsMap().getIndicatorUnit(indicator);
+
+ // get graph title
+ String title = zoneDisplayName;
+ title += " - " + indicatorName;
+ title += " - " + repository.getSpeciesMap().getReportDisplayName(species);
+
+ // generate dataset with sorted data
+ DefaultStatisticalCategoryDataset statisticalDataset = new DefaultStatisticalCategoryDataset();
+ for (int indexYear = minYear; indexYear <= maxYear; ++indexYear) {
+ Double[] entry = graphData.get(indexYear);
+ if (entry != null) {
+ Double estimation = entry[0] / multiplicator;
+ Double ecart = entry[1] / multiplicator;
+ statisticalDataset.add(estimation, ecart, "Serie1", (Comparable) indexYear);
+ } else {
+ statisticalDataset.add(null, null, "Serie1", indexYear);
+ }
+ }
+
+ // configure chart
+ //CategoryAxis categoryAxis = new CategoryAxis(t("coser.business.common.year"));
+ String yearAxis = repository.getReports().getYearChartTitle(locale);
+ CategoryAxis categoryAxis = new CategoryAxis(yearAxis);
+ categoryAxis.setCategoryMargin(0);
+ categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
+ // label horizontaux
+ String legendY = indicatorName;
+ if (multiplicator != 1) {
+ // affiche par exemple : cm * 1000
+ legendY += " (" + unit + "*" + multiplicator + ")";
+ } else if (StringUtils.isNotEmpty(unit)) {
+ legendY += " (" + unit + ")";
+ }
+ ValueAxis valueAxis = new NumberAxis(legendY);
+ valueAxis.setUpperMargin(0.1);
+
+ CategoryItemRenderer renderer = new StatisticalLineAndShapeRenderer(false, true);
+
+ // n'affiche pas les nombre sur le graphique
+ //StandardCategoryItemLabelGenerator itemLabelGenerator = new StandardCategoryItemLabelGenerator();
+ //renderer.setBaseItemLabelGenerator(itemLabelGenerator);
+ //renderer.setBaseItemLabelsVisible(true);
+
+ CategoryPlot plot = new CategoryPlot(statisticalDataset, categoryAxis, valueAxis, renderer);
+ plot.setOrientation(PlotOrientation.VERTICAL);
+ JFreeChart chart = new JFreeChart(title,
+ JFreeChart.DEFAULT_TITLE_FONT, plot, true);
+
+ // remove series legend
+ chart.removeLegend();
+ // white background
+ chart.setBackgroundPaint(Color.WHITE);
+
+ try {
+ result = File.createTempFile("coser-chart-population-indicator-", ".png");
+ result.deleteOnExit();
+ ChartUtilities.saveChartAsPNG(result, chart, 800, 400);
+ } catch (IOException ex) {
+ throw new CoserTechnicalException("Can't save chart", ex);
+ }
+ }
+
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(LegacyResultRepository repository,
+ GetPopulationIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String species = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchPopulationSpecies(tuple, species)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchSpeciesAndIndicator(LegacyResultRepository repository,
+ GetPopulationIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String species = request.getSpecies();
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,61 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetSpeciesForMapResultRequest;
+
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForMapResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesForMapResultRequest> {
+
+ @Override
+ public Class<GetSpeciesForMapResultRequest> getRequestType() {
+ return GetSpeciesForMapResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository, GetSpeciesForMapResultRequest request) {
+ return repository.isMapsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository, GetSpeciesForMapResultRequest request) {
+
+ Map<String, String> map = repository.getPopulationIndicatorSpecies();
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForMapResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,63 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetSpeciesForPopulationIndicatorResultRequest;
+
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesForPopulationIndicatorResultRequest> {
+
+ @Override
+ public Class<GetSpeciesForPopulationIndicatorResultRequest> getRequestType() {
+ return GetSpeciesForPopulationIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetSpeciesForPopulationIndicatorResultRequest request) {
+ return repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository,
+ GetSpeciesForPopulationIndicatorResultRequest request) {
+
+ Map<String, String> map = repository.getPopulationIndicatorSpecies();
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesForPopulationIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,90 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetSpeciesListForCommunityIndicatorResultRequest;
+
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesListForCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesListForCommunityIndicatorResultRequest> {
+
+ @Override
+ public Class<GetSpeciesListForCommunityIndicatorResultRequest> getRequestType() {
+ return GetSpeciesListForCommunityIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetSpeciesListForCommunityIndicatorResultRequest request) {
+ return repository.isIndicatorsResult() &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchIndicator(repository, request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository,
+ GetSpeciesListForCommunityIndicatorResultRequest request) {
+
+ Map<String, String> map = repository.getCommunityIndicatorSpecies(request.getLocale(),
+ request.getIndicator());
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchIndicator(LegacyResultRepository repository,
+ GetSpeciesListForCommunityIndicatorResultRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchCommunityIndicator(tuple, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForCommunityIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,93 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetSpeciesListForExtractRawDataAndResultsRequest;
+import fr.ifremer.coser.util.DataType;
+
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesListForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetSpeciesListForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public Class<GetSpeciesListForExtractRawDataAndResultsRequest> getRequestType() {
+ return GetSpeciesListForExtractRawDataAndResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetSpeciesListForExtractRawDataAndResultsRequest request) {
+ return matchExtractTypeSet(repository, request) &&
+ matchZoneList(repository, request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository,
+ GetSpeciesListForExtractRawDataAndResultsRequest request) {
+
+ Map<String, String> map = Maps.newHashMap();
+
+ // get all species for population indicators
+ map.putAll(repository.getPopulationIndicatorSpecies());
+ // get all species for community indicators
+ map.putAll(repository.getCommunityIndicatorSpecies());
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchExtractTypeSet(LegacyResultRepository repository,
+ GetSpeciesListForExtractRawDataAndResultsRequest request) {
+ boolean result = false;
+ if (repository.isMapsResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+ if (repository.isIndicatorsResult()) {
+ result = request.getExtractTypeList().contains(DataType.POPULATION) ||
+ request.getExtractTypeList().contains(DataType.COMMUNITY);
+ }
+ if (repository.isDataResult()) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+ return result;
+ }
+
+ protected boolean matchZoneList(LegacyResultRepository repository,
+ GetSpeciesListForExtractRawDataAndResultsRequest request) {
+ return request.getZoneList().contains(repository.getZone());
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetSpeciesListForExtractRawDataAndResultsCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,64 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForCommunityIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForCommunityIndicatorResultRequest> {
+
+ @Override
+ public Class<GetZonesForCommunityIndicatorResultRequest> getRequestType() {
+ return GetZonesForCommunityIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository, GetZonesForCommunityIndicatorResultRequest request) {
+ return repository.isIndicatorsResult() && repository.matchFacade(request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository, GetZonesForCommunityIndicatorResultRequest request) {
+
+ ZoneMap zonesMap = repository.getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForCommunityIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,66 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForExtractRawDataCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForExtractRawDataRequest> {
+
+ @Override
+ public Class<GetZonesForExtractRawDataRequest> getRequestType() {
+ return GetZonesForExtractRawDataRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetZonesForExtractRawDataRequest request) {
+ return repository.isDataResult() &&
+ repository.matchFacade(request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository,
+ GetZonesForExtractRawDataRequest request) {
+
+ ZoneMap zonesMap = repository.getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForExtractRawDataCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,66 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForMapResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForMapResultRequest> {
+
+ @Override
+ public Class<GetZonesForMapResultRequest> getRequestType() {
+ return GetZonesForMapResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetZonesForMapResultRequest request) {
+ return repository.isMapsResult() &&
+ repository.matchFacade(request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository,
+ GetZonesForMapResultRequest request) {
+
+ ZoneMap zonesMap = repository.getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForMapResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,66 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForPopulationIndicatorResultCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForPopulationIndicatorResultRequest> {
+
+ @Override
+ public Class<GetZonesForPopulationIndicatorResultRequest> getRequestType() {
+ return GetZonesForPopulationIndicatorResultRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetZonesForPopulationIndicatorResultRequest request) {
+ return repository.isIndicatorsResult() &&
+ repository.matchFacade(request);
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository,
+ GetZonesForPopulationIndicatorResultRequest request) {
+
+ ZoneMap zonesMap = repository.getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(request.getFacade());
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesForPopulationIndicatorResultCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,63 @@
+package fr.ifremer.coser.result.repository.legacy.command;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommand;
+import fr.ifremer.coser.result.repository.legacy.LegacyResultRepository;
+import fr.ifremer.coser.result.request.GetZonesForExtractRawDataAndResultsRequest;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesListForExtractRawDataAndResultsCommand implements ResultRepositoryCommand<LegacyResultRepository, GetZonesForExtractRawDataAndResultsRequest> {
+
+ @Override
+ public Class<GetZonesForExtractRawDataAndResultsRequest> getRequestType() {
+ return GetZonesForExtractRawDataAndResultsRequest.class;
+ }
+
+ @Override
+ public boolean accept(LegacyResultRepository repository,
+ GetZonesForExtractRawDataAndResultsRequest request) {
+ return true;
+ }
+
+ @Override
+ public MapResult execute(LegacyResultRepository repository,
+ GetZonesForExtractRawDataAndResultsRequest request) {
+ ZoneMap zonesMap = repository.getZonesMap();
+ List<String> allowedZones = zonesMap.getZonesForFacade(null);
+ Map<String, String> map = zonesMap.getSubZonesMap(repository.getZone(), allowedZones);
+ MapResult result = new MapResult(repository.getId(), map);
+ return result;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/command/GetZonesListForExtractRawDataAndResultsCommand.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java (from rev 1141, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/AbstractGetIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,122 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain indicator results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public abstract class AbstractGetIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware, CoserRequestSpeciesAware, CoserRequestIndicatorAware {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Type of result.
+ */
+ public enum IndicatorResultType {
+ DATA,
+ GRAPH
+ }
+
+ protected Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+
+ protected String indicator;
+
+ protected IndicatorResultType indicatorResultType;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null ||
+ facade == null ||
+ zone == null ||
+ indicatorResultType == null ||
+ indicator == null);
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+
+ public IndicatorResultType getIndicatorResultType() {
+ return indicatorResultType;
+ }
+
+ public void setIndicatorResultType(IndicatorResultType indicatorResultType) {
+ Preconditions.checkNotNull(indicatorResultType);
+ this.indicatorResultType = indicatorResultType;
+ }
+
+ @Override
+ public String getIndicator() {
+ return indicator;
+ }
+
+ @Override
+ public void setIndicator(String indicator) {
+ Preconditions.checkNotNull(indicator);
+ this.indicator = indicator;
+ }
+
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,56 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-
-/**
- * Request to obtain community indicator results.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class CommunityIndicatorRequest extends IndicatorRequest {
-
- private static final long serialVersionUID = 1L;
-
- protected String species;
-
- @Override
- public String getSpecies() {
- return species;
- }
-
- @Override
- public void setSpecies(String species) {
- Preconditions.checkNotNull(facade);
- this.species = species;
- }
-
- @Override
- public boolean isFilled() {
- return super.isFilled() && species != null;
- }
-}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestBuilder.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,7 +22,10 @@
* #L%
*/
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.CoserTechnicalException;
import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.ResultType;
import fr.ifremer.coser.util.DataType;
import org.apache.commons.collections4.CollectionUtils;
@@ -37,7 +40,7 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public class CoserRequestBuilder {
+public class CoserRequestBuilder<R extends CoserRequest> {
protected final Locale locale;
@@ -49,7 +52,7 @@
protected String indicator;
- protected IndicatorRequest.ResultType resultType;
+ protected AbstractGetIndicatorResultRequest.IndicatorResultType indicatorResultType;
protected List<DataType> extractTypeList;
@@ -61,91 +64,92 @@
protected List<String> communityIndicatorList;
- public CoserRequestBuilder(Locale locale) {
+ protected String resultRepositoryType;
+
+ protected ResultType resultType;
+
+ protected final Class<R> requestType;
+
+ public CoserRequestBuilder(Locale locale, Class<R> requestType) {
+ Preconditions.checkNotNull(locale);
+ Preconditions.checkNotNull(requestType);
this.locale = locale;
+ this.requestType = requestType;
}
- public CoserRequestBuilder addFacade(String facade) {
+ public CoserRequestBuilder<R> addFacade(String facade) {
this.facade = facade;
return this;
}
- public CoserRequestBuilder addZone(String zone) {
+ public CoserRequestBuilder<R> addZone(String zone) {
this.zone = zone;
return this;
}
- public CoserRequestBuilder addSpecies(String species) {
+ public CoserRequestBuilder<R> addSpecies(String species) {
this.species = species;
return this;
}
- public CoserRequestBuilder addIndicator(String indicator) {
+ public CoserRequestBuilder<R> addIndicator(String indicator) {
this.indicator = indicator;
return this;
}
- public CoserRequestBuilder addResultType(IndicatorRequest.ResultType resultType) {
- this.resultType = resultType;
+ public CoserRequestBuilder<R> addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType indicatorResultType) {
+ this.indicatorResultType = indicatorResultType;
return this;
}
- public CoserRequestBuilder addExtractTypeList(List<DataType> extractTypeSet) {
+ public CoserRequestBuilder<R> addExtractTypeList(List<DataType> extractTypeSet) {
this.extractTypeList = extractTypeSet;
return this;
}
- public CoserRequestBuilder addZoneList(List<String> zoneList) {
+ public CoserRequestBuilder<R> addZoneList(List<String> zoneList) {
this.zoneList = zoneList;
return this;
}
- public CoserRequestBuilder addSpeciesList(List<String> speciesList) {
+ public CoserRequestBuilder<R> addSpeciesList(List<String> speciesList) {
this.speciesList = speciesList;
return this;
}
- public CoserRequestBuilder addPopulationIndicatorList(List<String> populationIndicatorList) {
+ public CoserRequestBuilder<R> addPopulationIndicatorList(List<String> populationIndicatorList) {
this.populationIndicatorList = populationIndicatorList;
return this;
}
- public CoserRequestBuilder addCommunityIndicatorList(List<String> communityIndicatorList) {
+ public CoserRequestBuilder<R> addCommunityIndicatorList(List<String> communityIndicatorList) {
this.communityIndicatorList = communityIndicatorList;
return this;
}
- public MapRequest toMapRequest() {
- MapRequest request = new MapRequest();
- flush(request);
- return request;
+ public CoserRequestBuilder<R> addResultRepositoryType(String resultRepositoryType) {
+ this.resultRepositoryType = resultRepositoryType;
+ return this;
}
- public RawDataRequest toRawDataRequest() {
- RawDataRequest request = new RawDataRequest();
- flush(request);
- return request;
+ public CoserRequestBuilder<R> addResultType(ResultType resultType) {
+ this.resultType = resultType;
+ return this;
}
- public PopulationIndicatorRequest toPopulationIndicatorRequest() {
- PopulationIndicatorRequest request = new PopulationIndicatorRequest();
- flush(request);
- return request;
+ public R toRequest() {
+ try {
+ R request = requestType.newInstance();
+ flush(request);
+ return request;
+ } catch (InstantiationException e) {
+ throw new CoserTechnicalException(e);
+ } catch (IllegalAccessException e) {
+ throw new CoserTechnicalException(e);
+ }
}
- public CommunityIndicatorRequest toCommunityIndicatorRequest() {
- CommunityIndicatorRequest request = new CommunityIndicatorRequest();
- flush(request);
- return request;
- }
-
- public ExtractRequest toExtractRequest() {
- ExtractRequest request = new ExtractRequest();
- flush(request);
- return request;
- }
-
- protected <R extends CoserRequest> void flush(R request) {
+ protected void flush(R request) {
request.setLocale(locale);
if (request instanceof CoserRequestFacadeAware) {
if (facade != null) {
@@ -162,34 +166,56 @@
((CoserRequestSpeciesAware) request).setSpecies(species);
}
}
-
- if (request instanceof IndicatorRequest) {
+ if (request instanceof CoserRequestZoneListAware) {
+ if (CollectionUtils.isNotEmpty(zoneList)) {
+ ((CoserRequestZoneListAware) request).setZoneList(zoneList);
+ }
+ }
+ if (request instanceof CoserRequestIndicatorAware) {
if (indicator != null) {
- ((IndicatorRequest) request).setIndicator(indicator);
+ ((CoserRequestIndicatorAware) request).setIndicator(indicator);
}
- if (resultType != null) {
- ((IndicatorRequest) request).setResultType(resultType);
+ }
+
+ if (request instanceof AbstractGetIndicatorResultRequest) {
+ if (indicatorResultType != null) {
+ ((AbstractGetIndicatorResultRequest) request).setIndicatorResultType(indicatorResultType);
}
}
- if (request instanceof ExtractRequest) {
+ if (request instanceof ExtractRawDataAndResultsRequest) {
if (CollectionUtils.isNotEmpty(extractTypeList)) {
- ((ExtractRequest) request).setExtractTypeList(extractTypeList);
+ ((ExtractRawDataAndResultsRequest) request).setExtractTypeList(extractTypeList);
}
- if (CollectionUtils.isNotEmpty(zoneList)) {
- ((ExtractRequest) request).setZoneList(zoneList);
- }
if (CollectionUtils.isNotEmpty(populationIndicatorList)) {
- ((ExtractRequest) request).setPopulationIndicatorList(populationIndicatorList);
+ ((ExtractRawDataAndResultsRequest) request).setPopulationIndicatorList(populationIndicatorList);
}
if (CollectionUtils.isNotEmpty(communityIndicatorList)) {
- ((ExtractRequest) request).setCommunityIndicatorList(communityIndicatorList);
+ ((ExtractRawDataAndResultsRequest) request).setCommunityIndicatorList(communityIndicatorList);
}
if (CollectionUtils.isNotEmpty(speciesList)) {
- ((ExtractRequest) request).setSpeciesList(speciesList);
+ ((ExtractRawDataAndResultsRequest) request).setSpeciesList(speciesList);
}
}
+
+ if (request instanceof DeleteResultsRequest) {
+ if (resultRepositoryType != null) {
+ ((DeleteResultsRequest) request).setResultRepositoryType(resultRepositoryType);
+ }
+ if (resultType != null) {
+ ((DeleteResultsRequest) request).setResultType(resultType);
+ }
+ }
+
+ if (request instanceof GetAllResultsRequest) {
+ if (resultRepositoryType != null) {
+ ((GetAllResultsRequest) request).setResultRepositoryType(resultRepositoryType);
+ }
+ if (resultType != null) {
+ ((GetAllResultsRequest) request).setResultType(resultType);
+ }
+ }
}
}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestIndicatorAware.java (from rev 1134, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestIndicatorAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestIndicatorAware.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,40 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserRequest;
+
+/**
+ * Place this on any request which involve a {@code indicator}.
+ * <p/>
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestIndicatorAware extends CoserRequest {
+
+ String getIndicator();
+
+ void setIndicator(String indicator);
+}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -30,7 +30,7 @@
* Created on 3/7/14.
*
* @author Tony Chemit <chemit(a)codelutin.com>
- * @since XXX
+ * @since 1.5
*/
public interface CoserRequestZoneAware extends CoserRequest {
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneListAware.java (from rev 1134, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneAware.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneListAware.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CoserRequestZoneListAware.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,42 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.List;
+
+/**
+ * Place this on any request which involve a {@code zone}.
+ * <p/>
+ * Created on 3/7/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserRequestZoneListAware extends CoserRequest {
+
+ List<String> getZoneList();
+
+ void setZoneList(List<String> zoneList);
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteRequest.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,74 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.util.DataType;
-import org.apache.commons.collections4.CollectionUtils;
-
-import java.util.List;
-import java.util.Locale;
-
-/**
- * To delete some results.
- * Created on 3/11/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class DeleteRequest implements CoserRequest {
-
- private static final long serialVersionUID = 1L;
-
- protected Locale locale;
-
- protected List<String> zoneList;
-
- protected List<String> populationIndicatorList;
-
- protected List<String> communityIndicatorList;
-
- protected List<String> speciesList;
-
- protected List<DataType> extractTypeList;
-
- @Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
-
- @Override
- public boolean isFilled() {
- return !(locale == null ||
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList) ||
- CollectionUtils.isEmpty(populationIndicatorList) ||
- CollectionUtils.isEmpty(communityIndicatorList) ||
- CollectionUtils.isEmpty(speciesList));
- }
-}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java (from rev 1144, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,110 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * To delete some results.
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DeleteResultsRequest implements CoserRequest, CoserRequestZoneListAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ /**
+ * Id of matching result repository type.
+ *
+ * @see ResultRepositoryType#getId()
+ */
+ protected String resultRepositoryType;
+
+ /**
+ * Type of matching result.
+ */
+ protected ResultType resultType;
+
+ /**
+ * Ids of matching zone to delete.
+ */
+ protected List<String> zoneList;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null ||
+ resultRepositoryType == null ||
+ resultType == null ||
+ CollectionUtils.isEmpty(zoneList));
+ }
+
+ public String getResultRepositoryType() {
+ return resultRepositoryType;
+ }
+
+ public void setResultRepositoryType(String resultRepositoryType) {
+ Preconditions.checkNotNull(resultRepositoryType);
+ this.resultRepositoryType = resultRepositoryType;
+ }
+
+ public ResultType getResultType() {
+ return resultType;
+ }
+
+ public void setResultType(ResultType resultType) {
+ Preconditions.checkNotNull(resultType);
+ this.resultType = resultType;
+ }
+
+ @Override
+ public List<String> getZoneList() {
+ return zoneList;
+ }
+
+ @Override
+ public void setZoneList(List<String> zoneList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
+ this.zoneList = zoneList;
+ }
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java (from rev 1141, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,124 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.util.DataType;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Request to extract data.
+ * <p/>
+ * Created on 3/9/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ExtractRawDataAndResultsRequest implements CoserRequest, CoserRequestZoneListAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected List<String> zoneList;
+
+ protected List<String> populationIndicatorList;
+
+ protected List<String> communityIndicatorList;
+
+ protected List<String> speciesList;
+
+ protected List<DataType> extractTypeList;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null ||
+ CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList) ||
+ CollectionUtils.isEmpty(populationIndicatorList) ||
+ CollectionUtils.isEmpty(communityIndicatorList) ||
+ CollectionUtils.isEmpty(speciesList));
+ }
+
+ public List<DataType> getExtractTypeList() {
+ return extractTypeList;
+ }
+
+ public void setExtractTypeList(List<DataType> extractTypeSet) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
+ this.extractTypeList = extractTypeSet;
+ }
+
+ @Override
+ public List<String> getZoneList() {
+ return zoneList;
+ }
+
+ @Override
+ public void setZoneList(List<String> zoneList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
+ this.zoneList = zoneList;
+ }
+
+ public List<String> getPopulationIndicatorList() {
+ return populationIndicatorList;
+ }
+
+ public void setPopulationIndicatorList(List<String> populationIndicatorList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(populationIndicatorList));
+ this.populationIndicatorList = populationIndicatorList;
+ }
+
+ public List<String> getCommunityIndicatorList() {
+ return communityIndicatorList;
+ }
+
+ public void setCommunityIndicatorList(List<String> communityIndicatorList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(communityIndicatorList));
+ this.communityIndicatorList = communityIndicatorList;
+ }
+
+ public List<String> getSpeciesList() {
+ return speciesList;
+ }
+
+ public void setSpeciesList(List<String> speciesList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(speciesList));
+ this.speciesList = speciesList;
+ }
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java (from rev 1134, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRawDataRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,85 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain raw data results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class ExtractRawDataRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null || facade == null || zone == null);
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRequest.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/ExtractRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,122 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.CoserRequest;
-import fr.ifremer.coser.util.DataType;
-import org.apache.commons.collections4.CollectionUtils;
-
-import java.util.List;
-import java.util.Locale;
-
-/**
- * Request to extract data.
- * <p/>
- * Created on 3/9/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class ExtractRequest implements CoserRequest {
-
- private static final long serialVersionUID = 1L;
-
- protected Locale locale;
-
- protected List<String> zoneList;
-
- protected List<String> populationIndicatorList;
-
- protected List<String> communityIndicatorList;
-
- protected List<String> speciesList;
-
- protected List<DataType> extractTypeList;
-
- @Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
- public boolean isFilled() {
- return !(locale == null ||
- CollectionUtils.isEmpty(extractTypeList) ||
- CollectionUtils.isEmpty(zoneList) ||
- CollectionUtils.isEmpty(populationIndicatorList) ||
- CollectionUtils.isEmpty(communityIndicatorList) ||
- CollectionUtils.isEmpty(speciesList));
- }
-
- public List<DataType> getExtractTypeList() {
- return extractTypeList;
- }
-
- public void setExtractTypeList(List<DataType> extractTypeSet) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
- this.extractTypeList = extractTypeSet;
- }
-
- public List<String> getZoneList() {
- return zoneList;
- }
-
- public void setZoneList(List<String> zoneList) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
- this.zoneList = zoneList;
- }
-
- public List<String> getPopulationIndicatorList() {
- return populationIndicatorList;
- }
-
- public void setPopulationIndicatorList(List<String> populationIndicatorList) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(populationIndicatorList));
- this.populationIndicatorList = populationIndicatorList;
- }
-
- public List<String> getCommunityIndicatorList() {
- return communityIndicatorList;
- }
-
- public void setCommunityIndicatorList(List<String> communityIndicatorList) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(communityIndicatorList));
- this.communityIndicatorList = communityIndicatorList;
- }
-
- public List<String> getSpeciesList() {
- return speciesList;
- }
-
- public void setSpeciesList(List<String> speciesList) {
- Preconditions.checkArgument(CollectionUtils.isNotEmpty(speciesList));
- this.speciesList = speciesList;
- }
-}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,90 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+
+import java.util.Locale;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetAllResultsRequest implements CoserRequest {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ /**
+ * Id of matching result repository type.
+ *
+ * @see ResultRepositoryType#getId()
+ */
+ protected String resultRepositoryType;
+
+ /**
+ * Type of matching result.
+ */
+ protected ResultType resultType;
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null || resultRepositoryType == null || resultType == null);
+ }
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ public String getResultRepositoryType() {
+ return resultRepositoryType;
+ }
+
+ public void setResultRepositoryType(String resultRepositoryType) {
+ Preconditions.checkNotNull(resultRepositoryType);
+ this.resultRepositoryType = resultRepositoryType;
+ }
+
+ public ResultType getResultType() {
+ return resultType;
+ }
+
+ public void setResultType(ResultType resultType) {
+ Preconditions.checkNotNull(resultType);
+ this.resultType = resultType;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetAllResultsRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java (from rev 1134, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/CommunityIndicatorRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,56 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+
+/**
+ * Request to obtain community indicator results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetCommunityIndicatorResultRequest extends AbstractGetIndicatorResultRequest {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String species;
+
+ @Override
+ public String getSpecies() {
+ return species;
+ }
+
+ @Override
+ public void setSpecies(String species) {
+ Preconditions.checkNotNull(facade);
+ this.species = species;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return super.isFilled() && species != null;
+ }
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,88 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain community indicator results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetIndicatorsForCommunityIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null ||
+ facade == null ||
+ zone == null);
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForCommunityIndicatorResultRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,110 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.util.DataType;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Request to extract data.
+ * <p/>
+ * Created on 3/9/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetIndicatorsForExtractRawDataAndResultsRequest implements CoserRequest {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected List<String> zoneList;
+
+ protected List<String> populationIndicatorList;
+
+ protected List<String> communityIndicatorList;
+
+ protected List<DataType> extractTypeList;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null ||
+ CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList) ||
+ CollectionUtils.isEmpty(populationIndicatorList) ||
+ CollectionUtils.isEmpty(communityIndicatorList));
+ }
+
+ public List<DataType> getExtractTypeList() {
+ return extractTypeList;
+ }
+
+ public void setExtractTypeList(List<DataType> extractTypeSet) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
+ this.extractTypeList = extractTypeSet;
+ }
+
+ public List<String> getZoneList() {
+ return zoneList;
+ }
+
+ public void setZoneList(List<String> zoneList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
+ this.zoneList = zoneList;
+ }
+
+ public List<String> getPopulationIndicatorList() {
+ return populationIndicatorList;
+ }
+
+ public void setPopulationIndicatorList(List<String> populationIndicatorList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(populationIndicatorList));
+ this.populationIndicatorList = populationIndicatorList;
+ }
+
+ public List<String> getCommunityIndicatorList() {
+ return communityIndicatorList;
+ }
+
+ public void setCommunityIndicatorList(List<String> communityIndicatorList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(communityIndicatorList));
+ this.communityIndicatorList = communityIndicatorList;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForExtractRawDataAndResultsRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,100 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain community indicator results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetIndicatorsForPopulationIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware , CoserRequestSpeciesAware{
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+ protected String species;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null ||
+ facade == null ||
+ zone == null ||
+ species==null);
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+
+ @Override
+ public String getSpecies() {
+ return species;
+ }
+
+ @Override
+ public void setSpecies(String species) {
+ Preconditions.checkNotNull(species);
+ this.species = species;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetIndicatorsForPopulationIndicatorResultRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java (from rev 1134, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetMapResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,105 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain map results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetMapResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware, CoserRequestSpeciesAware {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Used to have map with no species, we prefer to keep a not null value
+ * to still make request consistent.
+ */
+ public static final String NULL_SPECIES = "Repartition-stations";
+
+ protected Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+
+ protected String species;
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null || facade == null || zone == null && species == null);
+ }
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+
+ @Override
+ public String getSpecies() {
+ return species;
+ }
+
+ @Override
+ public void setSpecies(String species) {
+ Preconditions.checkNotNull(species);
+ this.species = species;
+ }
+
+}
Copied: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java (from rev 1134, trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java)
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,56 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+
+/**
+ * Request to obtain population indicator results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetPopulationIndicatorResultRequest extends AbstractGetIndicatorResultRequest {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String species;
+
+ @Override
+ public String getSpecies() {
+ return species;
+ }
+
+ @Override
+ public void setSpecies(String species) {
+ Preconditions.checkNotNull(species);
+ this.species = species;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return super.isFilled() && species != null;
+ }
+}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,86 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain available species for map results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForMapResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null || facade == null || zone == null);
+ }
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForMapResultRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,88 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain community indicator results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesForPopulationIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null ||
+ facade == null ||
+ zone == null);
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesForPopulationIndicatorResultRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,102 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain community indicator results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesListForCommunityIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware, CoserRequestIndicatorAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected String facade;
+
+ protected String zone;
+
+ protected String indicator;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null ||
+ facade == null ||
+ zone == null ||
+ indicator == null);
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+ @Override
+ public String getZone() {
+ return zone;
+ }
+
+ @Override
+ public void setZone(String zone) {
+ Preconditions.checkNotNull(zone);
+ this.zone = zone;
+ }
+
+ @Override
+ public String getIndicator() {
+ return indicator;
+ }
+
+ @Override
+ public void setIndicator(String indicator) {
+ Preconditions.checkNotNull(indicator);
+ this.indicator = indicator;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForCommunityIndicatorResultRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,86 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.util.DataType;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Request to extract data.
+ * <p/>
+ * Created on 3/9/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetSpeciesListForExtractRawDataAndResultsRequest implements CoserRequest {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected List<String> zoneList;
+
+ protected List<DataType> extractTypeList;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null ||
+ CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList));
+ }
+
+ public List<DataType> getExtractTypeList() {
+ return extractTypeList;
+ }
+
+ public void setExtractTypeList(List<DataType> extractTypeSet) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(extractTypeSet));
+ this.extractTypeList = extractTypeSet;
+ }
+
+ public List<String> getZoneList() {
+ return zoneList;
+ }
+
+ public void setZoneList(List<String> zoneList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
+ this.zoneList = zoneList;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetSpeciesListForExtractRawDataAndResultsRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,72 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain available zones for community indicator results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForCommunityIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected String facade;
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null || facade == null);
+ }
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForCommunityIndicatorResultRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,73 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Request to extract data.
+ * <p/>
+ * Created on 3/9/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForExtractRawDataAndResultsRequest implements CoserRequest {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected List<String> zoneList;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null || CollectionUtils.isEmpty(zoneList));
+ }
+
+ public List<String> getZoneList() {
+ return zoneList;
+ }
+
+ public void setZoneList(List<String> zoneList) {
+ Preconditions.checkArgument(CollectionUtils.isNotEmpty(zoneList));
+ this.zoneList = zoneList;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataAndResultsRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,72 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain raw data results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForExtractRawDataRequest implements CoserRequest, CoserRequestFacadeAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected String facade;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null || facade == null);
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForExtractRawDataRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,73 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain available zones for map results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForMapResultRequest implements CoserRequest, CoserRequestFacadeAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected String facade;
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null || facade == null);
+ }
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForMapResultRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,72 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.result.CoserRequest;
+
+import java.util.Locale;
+
+/**
+ * Request to obtain available zones for community indicator results.
+ * <p/>
+ * Created on 3/4/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class GetZonesForPopulationIndicatorResultRequest implements CoserRequest, CoserRequestFacadeAware {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected String facade;
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null || facade == null);
+ }
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ Preconditions.checkNotNull(locale);
+ this.locale = locale;
+ }
+
+ @Override
+ public String getFacade() {
+ return facade;
+ }
+
+ @Override
+ public void setFacade(String facade) {
+ Preconditions.checkNotNull(facade);
+ this.facade = facade;
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/GetZonesForPopulationIndicatorResultRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/IndicatorRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,116 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.CoserRequest;
-
-import java.util.Locale;
-
-/**
- * Request to obtain indicator results.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public abstract class IndicatorRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware, CoserRequestSpeciesAware {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Type of result.
- */
- public enum ResultType {
- DATA,
- GRAPH
- }
-
- protected Locale locale;
-
- protected String facade;
-
- protected String zone;
-
- protected String indicator;
-
- protected ResultType resultType;
-
- @Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
- public boolean isFilled() {
- return !(locale == null || facade == null || zone == null || resultType == null || indicator == null);
- }
-
- @Override
- public String getFacade() {
- return facade;
- }
-
- @Override
- public void setFacade(String facade) {
- Preconditions.checkNotNull(facade);
- this.facade = facade;
- }
-
- @Override
- public String getZone() {
- return zone;
- }
-
- @Override
- public void setZone(String zone) {
- Preconditions.checkNotNull(zone);
- this.zone = zone;
- }
-
- public ResultType getResultType() {
- return resultType;
- }
-
- public void setResultType(ResultType resultType) {
- Preconditions.checkNotNull(resultType);
- this.resultType = resultType;
- }
-
- public String getIndicator() {
- return indicator;
- }
-
- public void setIndicator(String indicator) {
- Preconditions.checkNotNull(indicator);
- this.indicator = indicator;
- }
-
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/MapRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,105 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.CoserRequest;
-
-import java.util.Locale;
-
-/**
- * Request to obtain map results.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class MapRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware, CoserRequestSpeciesAware {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Used to have map with no species, we prefer to keep a not null value
- * to still make request consistent.
- */
- public static final String NULL_SPECIES = "Repartition-stations";
-
- protected Locale locale;
-
- protected String facade;
-
- protected String zone;
-
- protected String species;
-
- @Override
- public boolean isFilled() {
- return !(locale == null || facade == null || zone == null && species == null);
- }
-
- @Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
- public String getFacade() {
- return facade;
- }
-
- @Override
- public void setFacade(String facade) {
- Preconditions.checkNotNull(facade);
- this.facade = facade;
- }
-
- @Override
- public String getZone() {
- return zone;
- }
-
- @Override
- public void setZone(String zone) {
- Preconditions.checkNotNull(zone);
- this.zone = zone;
- }
-
- @Override
- public String getSpecies() {
- return species;
- }
-
- @Override
- public void setSpecies(String species) {
- Preconditions.checkNotNull(species);
- this.species = species;
- }
-
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/PopulationIndicatorRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,56 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-
-/**
- * Request to obtain population indicator results.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class PopulationIndicatorRequest extends IndicatorRequest {
-
- private static final long serialVersionUID = 1L;
-
- protected String species;
-
- @Override
- public String getSpecies() {
- return species;
- }
-
- @Override
- public void setSpecies(String species) {
- Preconditions.checkNotNull(facade);
- this.species = species;
- }
-
- @Override
- public boolean isFilled() {
- return super.isFilled() && species != null;
- }
-}
Deleted: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/RawDataRequest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -1,85 +0,0 @@
-package fr.ifremer.coser.result.request;
-
-/*
- * #%L
- * Coser :: Business
- * %%
- * Copyright (C) 2010 - 2014 Ifremer, Codelutin, Chemit Tony
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-
-import com.google.common.base.Preconditions;
-import fr.ifremer.coser.result.CoserRequest;
-
-import java.util.Locale;
-
-/**
- * Request to obtain raw data results.
- * <p/>
- * Created on 3/4/14.
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
- * @since 1.5
- */
-public class RawDataRequest implements CoserRequest, CoserRequestFacadeAware, CoserRequestZoneAware {
-
- private static final long serialVersionUID = 1L;
-
- protected Locale locale;
-
- protected String facade;
-
- protected String zone;
-
- @Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public void setLocale(Locale locale) {
- Preconditions.checkNotNull(locale);
- this.locale = locale;
- }
-
- @Override
- public boolean isFilled() {
- return !(locale == null || facade == null || zone == null);
- }
-
- @Override
- public String getFacade() {
- return facade;
- }
-
- @Override
- public void setFacade(String facade) {
- Preconditions.checkNotNull(facade);
- this.facade = facade;
- }
-
- @Override
- public String getZone() {
- return zone;
- }
-
- @Override
- public void setZone(String zone) {
- Preconditions.checkNotNull(zone);
- this.zone = zone;
- }
-}
Added: trunk/coser-business/src/main/resources/META-INF/services/fr.ifremer.coser.result.repository.ResultRepositoryType
===================================================================
--- trunk/coser-business/src/main/resources/META-INF/services/fr.ifremer.coser.result.repository.ResultRepositoryType (rev 0)
+++ trunk/coser-business/src/main/resources/META-INF/services/fr.ifremer.coser.result.repository.ResultRepositoryType 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,2 @@
+fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryType
+fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryType
\ No newline at end of file
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_en_GB.properties 2014-03-12 17:35:43 UTC (rev 1145)
@@ -143,6 +143,8 @@
coser.business.publication.selectionchoices=Selection choices
coser.business.publication.selectionlogexporttitle=Selection report for %s (project %s)
coser.business.publication.stratafilename=Strata file name
+coser.business.result.repository.type.echobase=EchoBase results
+coser.business.result.repository.type.legacy=RSufi results
coser.business.result.rsufiResultAlreadyExists=Result %s already exists \!
coser.business.resultupload.duplicatedresult=Result %s/%s/%s duplicate another result for zone %s \!
coser.business.selection.notValidatedControl=Not validated control \!
Modified: trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties
===================================================================
--- trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/main/resources/i18n/coser-business_fr_FR.properties 2014-03-12 17:35:43 UTC (rev 1145)
@@ -143,6 +143,8 @@
coser.business.publication.selectionchoices=Choix de sélections
coser.business.publication.selectionlogexporttitle=Rapport de la sélection %s (projet %s)
coser.business.publication.stratafilename=Nom du fichier strates
+coser.business.result.repository.type.echobase=Résultats EchoBase
+coser.business.result.repository.type.legacy=Résultats RSufi
coser.business.result.rsufiResultAlreadyExists=Le résultat %s existe déjà \!
coser.business.resultupload.duplicatedresult=Le résultat %s/%s/%s duplique un autre résultat pour la zone %s \!
coser.business.selection.notValidatedControl=Contrôle non validé \!
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,9 +22,10 @@
* #L%
*/
-import fr.ifremer.coser.result.request.CommunityIndicatorRequest;
-import fr.ifremer.coser.result.request.MapRequest;
-import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.result.repository.ResultRepositoryCommandEngine;
+import fr.ifremer.coser.result.request.GetZonesForCommunityIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForMapResultRequest;
+import fr.ifremer.coser.result.request.GetZonesForPopulationIndicatorResultRequest;
import fr.ifremer.coser.services.CoserTestAbstract;
import org.junit.Assert;
import org.junit.Assume;
@@ -44,9 +45,9 @@
*/
public class EchoBaseResultRepositoryTest extends CoserTestAbstract {
- protected EchoBaseResultRepository repository1;
+ protected ResultRepositoryCommandEngine repository1;
- protected EchoBaseResultRepository repository2;
+ protected ResultRepositoryCommandEngine repository2;
@Override
public void initProjectDatabase() throws IOException {
@@ -60,9 +61,9 @@
for (EchoBaseResultRepository repository : repositories) {
String projectName = repository.project.getName();
if ("project1".equals(projectName)) {
- repository1 = repository;
+ repository1 = repositoryProvider.newEngine(repository);
} else if ("project2".equals(projectName)) {
- repository2 = repository;
+ repository2 = repositoryProvider.newEngine(repository);
}
}
Assume.assumeTrue("Could not find repository named *project1*", repository1 != null);
@@ -74,13 +75,14 @@
// Map request
- MapRequest mapRequest = new MapRequest();
+ GetZonesForMapResultRequest mapRequest = new GetZonesForMapResultRequest();
mapRequest.setLocale(Locale.FRANCE);
mapRequest.setFacade("atlantique");
Map<String, String> availableZones;
- availableZones = repository1.getAvailableZones(mapRequest);
+ Assert.assertTrue(repository1.acceptRequest(mapRequest));
+ availableZones = (Map<String, String>) repository1.executeRequest(mapRequest).getResult();
Assert.assertNotNull(availableZones);
Assert.assertEquals(1, availableZones.size());
Assert.assertTrue(availableZones.containsKey("gdgciem8"));
@@ -88,21 +90,24 @@
// pas de zones pour la facade
mapRequest.setFacade("mediteranee");
- availableZones = repository1.getAvailableZones(mapRequest);
- Assert.assertNull(availableZones);
+ Assert.assertFalse(repository1.acceptRequest(mapRequest));
+// availableZones = (Map<String, String>) repository1.executeRequest(mapRequest).getResult();
+// Assert.assertNull(availableZones);
// facade inconnue
mapRequest.setFacade("mediteranee2");
- availableZones = repository1.getAvailableZones(mapRequest);
- Assert.assertNull(availableZones);
+ Assert.assertFalse(repository1.acceptRequest(mapRequest));
+// availableZones = (Map<String, String>) repository1.executeRequest(mapRequest).getResult();
+// Assert.assertNull(availableZones);
// Population request
- PopulationIndicatorRequest popRequest = new PopulationIndicatorRequest();
+ GetZonesForPopulationIndicatorResultRequest popRequest = new GetZonesForPopulationIndicatorResultRequest();
popRequest.setLocale(Locale.FRANCE);
popRequest.setFacade("atlantique");
- availableZones = repository1.getAvailableZones(popRequest);
+ Assert.assertTrue(repository1.acceptRequest(popRequest));
+ availableZones = (Map<String, String>) repository1.executeRequest(popRequest).getResult();
Assert.assertNotNull(availableZones);
Assert.assertEquals(1, availableZones.size());
Assert.assertTrue(availableZones.containsKey("gdgciem8"));
@@ -110,21 +115,24 @@
// pas de zones pour la facade
popRequest.setFacade("mediteranee");
- availableZones = repository1.getAvailableZones(popRequest);
- Assert.assertNull(availableZones);
+ Assert.assertFalse(repository1.acceptRequest(popRequest));
+// availableZones = (Map<String, String>) repository1.executeRequest(popRequest).getResult();
+// Assert.assertNull(availableZones);
// facade inconnue
popRequest.setFacade("mediteranee2");
- availableZones = repository1.getAvailableZones(popRequest);
- Assert.assertNull(availableZones);
+ Assert.assertFalse(repository1.acceptRequest(popRequest));
+// availableZones = (Map<String, String>) repository1.executeRequest(popRequest).getResult();
+// Assert.assertNull(availableZones);
// Community request
- CommunityIndicatorRequest comRequest = new CommunityIndicatorRequest();
+ GetZonesForCommunityIndicatorResultRequest comRequest = new GetZonesForCommunityIndicatorResultRequest();
comRequest.setLocale(Locale.FRANCE);
comRequest.setFacade("atlantique");
- availableZones = repository1.getAvailableZones(comRequest);
+ Assert.assertTrue(repository1.acceptRequest(comRequest));
+ availableZones = (Map<String, String>) repository1.executeRequest(comRequest).getResult();
Assert.assertNotNull(availableZones);
Assert.assertEquals(1, availableZones.size());
Assert.assertTrue(availableZones.containsKey("gdgciem8"));
@@ -132,13 +140,15 @@
// pas de zones pour la facade
comRequest.setFacade("mediteranee");
- availableZones = repository1.getAvailableZones(comRequest);
- Assert.assertNull(availableZones);
+ Assert.assertFalse(repository1.acceptRequest(comRequest));
+// availableZones = (Map<String, String>) repository1.executeRequest(comRequest).getResult();
+// Assert.assertNull(availableZones);
// facade inconnue
comRequest.setFacade("mediteranee2");
- availableZones = repository1.getAvailableZones(comRequest);
- Assert.assertNull(availableZones);
+ Assert.assertFalse(repository1.acceptRequest(comRequest));
+// availableZones = (Map<String, String>) repository1.executeRequest(comRequest).getResult();
+// Assert.assertNull(availableZones);
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -24,6 +24,8 @@
import com.google.common.base.Preconditions;
import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.DefaultCoserServiceContext;
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
import fr.ifremer.coser.result.CoserResultEngine;
import fr.ifremer.coser.services.WebService;
import org.nuiton.config.ArgumentsParserException;
@@ -59,7 +61,7 @@
/**
* Business layer context.
*/
- protected CoserServiceContext businessContext;
+ protected CoserServiceContext serviceContext;
/**
* Web config.
@@ -73,7 +75,10 @@
public CoserApplicationContext() {
- I18n.init(new DefaultI18nInitializer("coser-i18n"), null);
+ DefaultI18nInitializer i18nInitializer = new DefaultI18nInitializer("coser-i18n");
+ // To see on screen none translated sentences
+ i18nInitializer.setMissingKeyReturnNull(true);
+ I18n.init(i18nInitializer, null);
config = new CoserWebConfig();
@@ -83,10 +88,10 @@
throw new CoserWebException("Can't read configuration", ex);
}
- businessContext = new DefaultCoserServiceContext(config);
+ serviceContext = new DefaultCoserServiceContext(config);
webService = new WebService(config);
- resultService = new CoserResultEngine(businessContext);
+ resultService = new CoserResultEngine(serviceContext);
}
public WebService getWebService() {
@@ -100,4 +105,13 @@
public CoserWebConfig getConfig() {
return config;
}
+
+ public IndicatorMap getIndicatorsMap() {
+ return serviceContext.getIndicatorsMap();
+ }
+
+ public ZoneMap getZonesMap() {
+ return serviceContext.getZonesMap();
+ }
+
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,16 +22,19 @@
*/
import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.result.CoserResult;
import fr.ifremer.coser.result.CoserResultEngine;
import fr.ifremer.coser.result.FileResult;
+import fr.ifremer.coser.result.MapResult;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
import fr.ifremer.coser.result.request.CoserRequestSpeciesAware;
import fr.ifremer.coser.result.request.CoserRequestZoneAware;
-import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.result.request.DeleteResultsRequest;
import fr.ifremer.coser.services.WebService;
-import fr.ifremer.coser.util.DataType;
import fr.ifremer.coser.web.actions.common.CoserAction;
import java.io.File;
@@ -60,25 +63,27 @@
protected final CoserWebConfig config;
+ protected final CoserApplicationContext applicationContext;
+
public ServiceHelper(CoserAction action) {
Preconditions.checkNotNull(action);
- CoserApplicationContext applicationContext = CoserApplicationContext.get();
+ this.applicationContext = CoserApplicationContext.get();
this.action = action;
this.webService = applicationContext.getWebService();
this.resultService = applicationContext.getResultService();
this.config = applicationContext.getConfig();
}
+ public Map<String, ResultRepositoryType> getRepositoryTypes() {
+ return resultService.getRepositoryTypes();
+ }
+
// --------------------------------------------------------------------- //
// --- Facade methods -------------------------------------------------- //
// --------------------------------------------------------------------- //
public Map<String, String> getFacades() {
- try {
- return webService.getFacades();
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not obtain facades", e);
- }
+ return applicationContext.getZonesMap().getFacades();
}
public String getFacadeDisplayName(String facade) {
@@ -91,47 +96,32 @@
// --------------------------------------------------------------------- //
public Map<String, List<String>> getZoneByFacade() {
- try {
- return webService.getZoneByFacade();
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not obtain zone by facade", e);
- }
+ return applicationContext.getZonesMap().getZoneByFacade();
}
public Map<String, String> getZonePictures() {
- try {
- return webService.getZonePictures();
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not obtain zone pictures", e);
- }
+ return applicationContext.getZonesMap().getZonePictures();
}
public Map<String, String> getZoneMetaInfo(Locale locale) {
- try {
- return webService.getZoneMetaInfo(locale);
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not obtain zone meta infos", e);
- }
+ return applicationContext.getZonesMap().getZoneMetaInfo(locale);
}
+ //FIXME Remove this
public Map<String, String> getAvailableZones(CoserRequest request) {
- return resultService.getAvailableZones(request);
+ return getMultipleResultAsMap(request);
}
- public Map<String, String> getZoneForFacade() {
- try {
- return webService.getZoneForFacade(null, false, false);
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not obtain zone for facades", e);
- }
- }
+// public Map<String, String> getZoneForFacade() {
+// try {
+// return webService.getZoneForFacade(null, false, false);
+// } catch (CoserBusinessException e) {
+// throw new CoserWebException("Could not obtain zone for facades", e);
+// }
+// }
public String getZoneFullName(String zoneId) {
- try {
- return webService.getZoneFullName(zoneId);
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not obtain zone full name", e);
- }
+ return applicationContext.getZonesMap().getZoneFullName(zoneId);
}
public String getZoneDisplayName(CoserRequestZoneAware request) {
@@ -144,6 +134,7 @@
// --- Species methods ------------------------------------------------- //
// --------------------------------------------------------------------- //
+ //FIXME Remove this
public Map<String, String> getAvailableSpecies(CoserRequest request) {
return resultService.getAvailableSpecies(request);
}
@@ -158,27 +149,28 @@
// --- Indicator methods ----------------------------------------------- //
// --------------------------------------------------------------------- //
+ //FIXME Remove this
public Map<String, String> getAvailableIndicators(CoserRequest request) {
return resultService.getAvailableIndicators(request);
}
- public Map<String, String> getIndicators(List<String> selectZones, DataType dataType) {
- try {
- return webService.getIndicators(selectZones, dataType, action.getLocale());
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not obtain indicators", e);
- }
- }
+// public Map<String, String> getIndicators(List<String> selectZones, DataType dataType) {
+// try {
+// return webService.getIndicators(selectZones, dataType, action.getLocale());
+// } catch (CoserBusinessException e) {
+// throw new CoserWebException("Could not obtain indicators", e);
+// }
+// }
- public Map<String, String> getSpecies(List<String> selectZones) {
- try {
- return webService.getSpecies(selectZones, false);
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not obtain species", e);
- }
- }
+// public Map<String, String> getSpecies(List<String> selectZones) {
+// try {
+// return webService.getSpecies(selectZones, false);
+// } catch (CoserBusinessException e) {
+// throw new CoserWebException("Could not obtain species", e);
+// }
+// }
- public String getIndicatorDisplayName(IndicatorRequest request) {
+ public String getIndicatorDisplayName(AbstractGetIndicatorResultRequest request) {
Map<String, String> availableIndicators = getAvailableIndicators(request);
String displayName = availableIndicators.get(request.getIndicator());
return displayName;
@@ -188,25 +180,25 @@
// --- Result methods -------------------------------------------------- //
// --------------------------------------------------------------------- //
- public Map<String, String> getIndicatorsResultsPerZone() {
- try {
- return webService.getIndicatorsResultsPerZone();
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not get indicators results per zone", e);
- }
- }
+// public Map<String, String> getIndicatorsResultsPerZone() {
+// try {
+// return webService.getIndicatorsResultsPerZone();
+// } catch (CoserBusinessException e) {
+// throw new CoserWebException("Could not get indicators results per zone", e);
+// }
+// }
- public Map<String, String> getMapsResultsPerZone() {
- try {
- return webService.getMapsResultsPerZone();
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not get map results per zone", e);
- }
- }
+// public Map<String, String> getMapsResultsPerZone() {
+// try {
+// return webService.getMapsResultsPerZone();
+// } catch (CoserBusinessException e) {
+// throw new CoserWebException("Could not get map results per zone", e);
+// }
+// }
public FileResult getFileResult(CoserRequest request) {
- CoserResult result = resultService.getResult(request);
+ CoserResult result = resultService.getUniqueResult(request);
if (!(result instanceof FileResult)) {
throw new CoserWebException(
@@ -216,22 +208,59 @@
return fileResult;
}
- public void deleteIndicatorsResult(List<String> indicatorsZonesId) {
- try {
- webService.deleteIndicatorsResult(indicatorsZonesId);
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not delete indicator results", e);
+ public MapResult getMapResult(CoserRequest request) {
+
+ CoserResult result = resultService.getUniqueResult(request);
+
+ if (!(result instanceof MapResult)) {
+ throw new CoserWebException(
+ "Result should a MapResult, but was: " + result);
}
+ MapResult fileResult = (MapResult) result;
+ return fileResult;
}
- public void deleteMapsResult(List<String> mapsZonesId) {
- try {
- webService.deleteMapsResult(mapsZonesId);
- } catch (CoserBusinessException e) {
- throw new CoserWebException("Could not delete map results", e);
+ public Map<String, String> getMultipleResultAsMap(CoserRequest request) {
+
+ List<CoserResult> result = resultService.getMultipleResult(request);
+
+ Map<String, String> resultAsMap = Maps.newHashMap();
+ for (CoserResult coserResult : result) {
+ if (!(coserResult instanceof MapResult)) {
+ throw new CoserWebException(
+ "Result should a MapResult, but was: " + result);
+ }
+ Map<String, String> map = ((MapResult) coserResult).getResult();
+ resultAsMap.putAll(map);
}
+ return resultAsMap;
}
+ public void deleteResults(DeleteResultsRequest request) {
+
+ // do delete results (don't care about result)
+ resultService.getMultipleResult(request);
+
+ // reload projects
+ resultService.resetRepositories();
+ }
+
+// public void deleteIndicatorsResult(List<String> indicatorsZonesId) {
+// try {
+// webService.deleteIndicatorsResult(indicatorsZonesId);
+// } catch (CoserBusinessException e) {
+// throw new CoserWebException("Could not delete indicator results", e);
+// }
+// }
+//
+// public void deleteMapsResult(List<String> mapsZonesId) {
+// try {
+// webService.deleteMapsResult(mapsZonesId);
+// } catch (CoserBusinessException e) {
+// throw new CoserWebException("Could not delete map results", e);
+// }
+// }
+
public void registerNewUploadedResults(String login, File resultFile) {
try {
webService.registerNewUploadedResults(login, resultFile);
@@ -247,4 +276,8 @@
public CoserWebConfig getConfig() {
return config;
}
+
+ public void reloadProjects() {
+ resultService.resetRepositories();
+ }
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/DeleteProjectsAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,8 +21,9 @@
package fr.ifremer.coser.web.actions.admin;
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.request.DeleteResultsRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
-import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.convention.annotation.InterceptorRef;
@@ -55,44 +56,73 @@
private static final Log log = LogFactory.getLog(DeleteProjectsAction.class);
/**
- * Contient les identifiants des zones dont on souhaites supprimer le
- * resultat conrespondant dans le stockage indicateur.
+ * Type of result repository.
*/
- protected List<String> indicatorsZonesId;
+ protected String repositoryType;
/**
- * Contient les identifiants des zones dont on souhaites supprimer le
- * resultat conrespondant dans le stockage cartes.
+ * Type of result to delete.
*/
- protected List<String> mapsZonesId;
+ protected ResultType resultType;
- public void setIndicatorsZonesId(List<String> indicatorsZonesId) {
- this.indicatorsZonesId = indicatorsZonesId;
+ /**
+ * List of result id to delete.
+ */
+ protected List<String> zonesId;
+
+ public void setRepositoryType(String repositoryType) {
+ this.repositoryType = repositoryType;
}
- public void setMapsZonesId(List<String> mapsZonesId) {
- this.mapsZonesId = mapsZonesId;
+ public void setResultType(ResultType resultType) {
+ this.resultType = resultType;
}
+ public void setZonesId(List<String> zonesId) {
+ this.zonesId = zonesId;
+ }
+
+ @Override
public String execute() {
- if (log.isDebugEnabled()) {
- log.debug("Delete indicators zone : " + indicatorsZonesId);
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Delete zone (type %s) (repository type %s) : %s",
+ resultType,
+ repositoryType,
+ zonesId));
}
- if (CollectionUtils.isNotEmpty(indicatorsZonesId)) {
- getService().deleteIndicatorsResult(indicatorsZonesId);
- }
- if (log.isDebugEnabled()) {
- log.debug("Delete maps zone : " + mapsZonesId);
- }
- if (CollectionUtils.isNotEmpty(mapsZonesId)) {
- getService().deleteMapsResult(mapsZonesId);
- }
+ DeleteResultsRequest request = requestBuilder().
+ addResultRepositoryType(repositoryType).
+ addResultType(resultType).
+ addZoneList(zonesId).
+ toDeleteResultsRequest();
+ getService().deleteResults(request);
+
return SUCCESS;
}
+// /**
+// * Contient les identifiants des zones dont on souhaite supprimer le
+// * resultat conrespondant dans le stockage indicateur.
+// */
+// protected List<String> indicatorsZonesId;
+//
+// /**
+// * Contient les identifiants des zones dont on souhaites supprimer le
+// * resultat conrespondant dans le stockage cartes.
+// */
+// protected List<String> mapsZonesId;
+//
+// public void setIndicatorsZonesId(List<String> indicatorsZonesId) {
+// this.indicatorsZonesId = indicatorsZonesId;
+// }
+//
+// public void setMapsZonesId(List<String> mapsZonesId) {
+// this.mapsZonesId = mapsZonesId;
+// }
+//
// public String execute() {
// WebService webService = ServiceFactory.getWebService();
//
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ListProjectsAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,13 +21,21 @@
package fr.ifremer.coser.web.actions.admin;
+import com.google.common.collect.Maps;
+import fr.ifremer.coser.result.ResultType;
+import fr.ifremer.coser.result.repository.ResultRepositoryType;
+import fr.ifremer.coser.result.request.GetAllResultsRequest;
+import fr.ifremer.coser.web.CoserWebException;
import fr.ifremer.coser.web.actions.common.CoserAction;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.ParentPackage;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* Project list action.
@@ -48,12 +56,34 @@
/** serialVersionUID. */
private static final long serialVersionUID = 6024588562104111883L;
+ // All types of result repository
+ protected Map<String, ResultRepositoryType> repositoryTypes;
+
+ // Selected result repository type
+ protected String selectedRepositoryType;
+
protected Map<String, String> facades;
+
protected Map<String, List<String>> zonesByFacades;
+ protected Map<ResultType, Map<String, String>> results;
+
protected Map<String, String> indicatorsResults;
+
protected Map<String, String> mapsResults;
+ public Map<String, ResultRepositoryType> getRepositoryTypes() {
+ return repositoryTypes;
+ }
+
+ public String getSelectedRepositoryType() {
+ return selectedRepositoryType;
+ }
+
+ public void setSelectedRepositoryType(String selectedRepositoryType) {
+ this.selectedRepositoryType = selectedRepositoryType;
+ }
+
public Map<String, String> getFacades() {
return facades;
}
@@ -62,28 +92,60 @@
return zonesByFacades;
}
- public Map<String, String> getIndicatorsResults() {
- return indicatorsResults;
+ public Map<String, String> getResults(ResultType resultType) {
+ return results.get(resultType);
}
- public Map<String, String> getMapsResults() {
- return mapsResults;
- }
-
public String getZoneDisplayName(String zoneId) {
return getService().getZoneFullName(zoneId);
}
+ @Override
public String execute() {
+ repositoryTypes = getService().getRepositoryTypes();
+ if (MapUtils.isEmpty(repositoryTypes)) {
+ throw new CoserWebException("No result repository type defined!");
+ }
+
+ if (StringUtils.isEmpty(selectedRepositoryType)) {
+
+ // use first value
+ ResultRepositoryType repositoryType = repositoryTypes.values().iterator().next();
+ selectedRepositoryType = repositoryType.getId();
+ }
+
facades = getService().getFacades();
zonesByFacades = getService().getZoneByFacade();
- indicatorsResults = getService().getIndicatorsResultsPerZone();
- mapsResults = getService().getMapsResultsPerZone();
+ GetAllResultsRequest request = requestBuilder().
+ addResultRepositoryType(getSelectedRepositoryType()).
+ toGetAllResultsRequest();
+
+ results = Maps.newEnumMap(ResultType.class);
+ if (selectedRepositoryType != null) {
+ ResultRepositoryType repositoryType = repositoryTypes.get(selectedRepositoryType);
+ Set<ResultType> resultTypes = repositoryType.getResultTypes();
+ for (ResultType resultType : resultTypes) {
+
+ // get projects for this type
+ request.setResultType(resultType);
+ Map<String, String> resultsForType = getService().getMultipleResultAsMap(request);
+ results.put(resultType, resultsForType);
+ }
+ }
+
return SUCCESS;
}
+// public Map<String, String> getIndicatorsResults() {
+// return indicatorsResults;
+// }
+//
+// public Map<String, String> getMapsResults() {
+// return mapsResults;
+// }
+//
// public String getZoneDisplayName(String zoneId) {
// WebService webService = ServiceFactory.getWebService();
// String zoneDisplayName = null;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/PerformLoginAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,7 +22,6 @@
package fr.ifremer.coser.web.actions.admin;
import fr.ifremer.coser.web.CoserWebConfig;
-import fr.ifremer.coser.web.ServiceFactory;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.SessionAware;
@@ -59,9 +58,6 @@
this.password = password;
}
- /*
- * @see org.apache.struts2.interceptor.SessionAware#setSession(java.util.Map)
- */
@Override
public void setSession(Map<String, Object> session) {
this.session = session;
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -0,0 +1,53 @@
+package fr.ifremer.coser.web.actions.admin;
+
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero 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 Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import fr.ifremer.coser.web.actions.common.CoserAction;
+import org.apache.struts2.convention.annotation.InterceptorRef;
+import org.apache.struts2.convention.annotation.InterceptorRefs;
+import org.apache.struts2.convention.annotation.ParentPackage;
+import org.apache.struts2.convention.annotation.Result;
+
+/**
+ * To reload all projects from disk configuration.
+ * <p/>
+ * Created on 3/12/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+@ParentPackage("admin")
+@InterceptorRefs({
+ @InterceptorRef("loginInterceptor"),
+ @InterceptorRef("defaultStack")
+ })
+@Result(name = "success", type = "redirect", location = "list-projects")
+public class ReloadProjectsAction extends CoserAction {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String execute() throws Exception {
+ getService().reloadProjects();
+ return SUCCESS;
+ }
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/admin/ReloadProjectsAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,8 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import java.util.Map;
@@ -54,7 +55,7 @@
/** La liste actuellement selectionnée (cas null géré). */
protected String list;
- protected IndicatorRequest request;
+ protected AbstractGetIndicatorResultRequest request;
public String getFacade() {
return facade;
@@ -107,12 +108,12 @@
@Override
public String execute() {
- request = requestBuilder().
+ request = requestBuilder(GetCommunityIndicatorResultRequest.class).
addFacade(facade).
addZone(zone).
addIndicator(indicator).
addSpecies(list).
- toCommunityIndicatorRequest();
+ toRequest();
lists = getService().getAvailableSpecies(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDataAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,7 +22,7 @@
package fr.ifremer.coser.web.actions.com;
import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -92,13 +92,13 @@
// @Action(results = {@Result(type = "stream", params = {"contentType", "image/png", "inputName", "inputStream"})})
@Action(results = {@Result(type = "stream", params = {"contentType", "image/png"})})
public String execute() {
- IndicatorRequest request = requestBuilder().
+ AbstractGetIndicatorResultRequest request = requestBuilder().
addFacade(facade).
addZone(zone).
addIndicator(indicator).
- addResultType(IndicatorRequest.ResultType.GRAPH).
+ addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.GRAPH).
addSpecies(list).
- toCommunityIndicatorRequest();
+ toGetCommunityIndicatorResultRequest();
if (list == null) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/GraphDownloadAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,7 +22,7 @@
package fr.ifremer.coser.web.actions.com;
import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -93,13 +93,13 @@
@Action(results = {@Result(type = "stream", params = {"contentType", "application/zip", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String execute() {
- IndicatorRequest request = requestBuilder().
+ AbstractGetIndicatorResultRequest request = requestBuilder().
addFacade(facade).
addZone(zone).
addIndicator(indicator).
- addResultType(IndicatorRequest.ResultType.DATA).
+ addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.DATA).
addSpecies(list).
- toCommunityIndicatorRequest();
+ toGetCommunityIndicatorResultRequest();
if (list == null) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/IndicatorAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.com;
-import fr.ifremer.coser.result.request.CommunityIndicatorRequest;
+import fr.ifremer.coser.result.request.GetCommunityIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CommonIndicator;
/**
@@ -39,10 +39,10 @@
private static final long serialVersionUID = 1663244944108703571L;
@Override
- protected CommunityIndicatorRequest createRequest() {
- return requestBuilder().
+ protected GetCommunityIndicatorResultRequest createRequest() {
+ return requestBuilder(GetCommunityIndicatorResultRequest.class).
addFacade(facade).
addZone(zone).
- toCommunityIndicatorRequest();
+ toRequest();
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/com/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -42,6 +42,6 @@
protected CoserRequest createRequest() {
return requestBuilder().
addFacade(facade).
- toCommunityIndicatorRequest();
+ toGetCommunityIndicatorResultRequest();
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CommonIndicator.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.common;
-import fr.ifremer.coser.result.request.IndicatorRequest;
+import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -54,9 +54,9 @@
protected Map<String, String> indicators;
- protected IndicatorRequest request;
+ protected AbstractGetIndicatorResultRequest request;
- protected abstract IndicatorRequest createRequest();
+ protected abstract AbstractGetIndicatorResultRequest createRequest();
public String getFacade() {
return facade;
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/common/CoserAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,6 +21,7 @@
package fr.ifremer.coser.web.actions.common;
+import fr.ifremer.coser.result.CoserRequest;
import fr.ifremer.coser.result.request.CoserRequestBuilder;
import fr.ifremer.coser.web.CoserWebConfig;
import fr.ifremer.coser.web.ServiceHelper;
@@ -88,17 +89,18 @@
* @return a new request builder.
* @since 1.5
*/
- protected CoserRequestBuilder requestBuilder() {
- return requestBuilder(getLocale());
+ protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Class<R> requestType) {
+ return requestBuilder(getLocale(), requestType);
}
/**
- * @param locale locale to use (while using execute and wait action we keep the locale in session...)
+ * @param locale locale to use (while using execute and wait action we keep the locale in session...)
+ * @param requestType type of request to build
* @return a new request builder.
* @since 1.5
*/
- protected CoserRequestBuilder requestBuilder(Locale locale) {
- return new CoserRequestBuilder(locale);
+ protected <R extends CoserRequest> CoserRequestBuilder<R> requestBuilder(Locale locale, Class<R> requestType) {
+ return new CoserRequestBuilder<R>(locale, requestType);
}
/**
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.request.MapRequest;
+import fr.ifremer.coser.result.request.GetMapResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
/**
@@ -44,7 +44,7 @@
protected String species;
- protected MapRequest request;
+ protected GetMapResultRequest request;
public void setFacade(String facade) {
this.facade = facade;
@@ -85,11 +85,11 @@
@Override
public String execute() throws Exception {
- request = requestBuilder().
+ request = requestBuilder(GetMapResultRequest.class).
addFacade(facade).
addZone(zone).
addSpecies(species).
- toMapRequest();
+ toRequest();
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/MapDataAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,7 +22,7 @@
package fr.ifremer.coser.web.actions.map;
import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.MapRequest;
+import fr.ifremer.coser.result.request.GetMapResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -84,11 +84,11 @@
@Action(results = {@Result(type = "stream", params = {"contentType", "image/png"})})
public String execute() {
// work with null species (get Repartition-stations map)
- MapRequest request = requestBuilder().
+ GetMapResultRequest request = requestBuilder().
addFacade(facade).
addZone(zone).
- addSpecies(species == null ? MapRequest.NULL_SPECIES : species).
- toMapRequest();
+ addSpecies(species == null ? GetMapResultRequest.NULL_SPECIES : species).
+ toGetMapResultRequest();
if (log.isInfoEnabled()) {
log.info("Looking for map of species: " + request.getSpecies());
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/SpeciesAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.request.MapRequest;
+import fr.ifremer.coser.result.request.GetMapResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -50,7 +50,7 @@
protected Map<String, String> species;
- protected MapRequest request;
+ protected GetMapResultRequest request;
public String getFacade() {
return facade;
@@ -86,7 +86,7 @@
request = requestBuilder().
addFacade(facade).
addZone(zone).
- toMapRequest();
+ toGetMapResultRequest();
if (log.isInfoEnabled()) {
log.info("Looking for species for zone " + zone);
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/map/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.map;
-import fr.ifremer.coser.result.request.MapRequest;
+import fr.ifremer.coser.result.request.GetMapResultRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
@@ -39,8 +39,8 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- protected MapRequest createRequest() {
- return requestBuilder().addFacade(facade).toMapRequest();
+ protected GetMapResultRequest createRequest() {
+ return requestBuilder().addFacade(facade).toGetMapResultRequest();
}
// @Override
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
/**
@@ -48,7 +48,7 @@
protected String indicator;
- protected PopulationIndicatorRequest request;
+ protected GetPopulationIndicatorResultRequest request;
public String getFacade() {
return facade;
@@ -106,7 +106,7 @@
addZone(zone).
addSpecies(species).
addIndicator(indicator).
- toPopulationIndicatorRequest();
+ toGetPopulationIndicatorResultRequest();
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDataAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,8 +22,8 @@
package fr.ifremer.coser.web.actions.pop;
import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.IndicatorRequest;
-import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -93,13 +93,13 @@
// @Action(results = {@Result(type = "stream", params = {"contentType", "image/png", "inputName", "inputStream"})})
@Action(results = {@Result(type = "stream", params = {"contentType", "image/png"})})
public String execute() {
- PopulationIndicatorRequest request = requestBuilder().
+ GetPopulationIndicatorResultRequest request = requestBuilder().
addFacade(facade).
addZone(zone).
addSpecies(species).
addIndicator(indicator).
- addResultType(IndicatorRequest.ResultType.GRAPH).
- toPopulationIndicatorRequest();
+ addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.GRAPH).
+ toGetPopulationIndicatorResultRequest();
result = getService().getFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/GraphDownloadAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -22,8 +22,8 @@
package fr.ifremer.coser.web.actions.pop;
import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.IndicatorRequest;
-import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.result.request.AbstractGetIndicatorResultRequest;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
@@ -91,13 +91,13 @@
// @Action(results = {@Result(type = "stream", params = {"contentType", "text/csv", "inputName", "inputStream", "contentDisposition", "attachment; filename=\"${filename}\""})})
@Action(results = {@Result(type = "stream", params = {"contentType", "text/csv", "contentDisposition", "attachment; filename=\"${filename}\""})})
public String execute() {
- PopulationIndicatorRequest request = requestBuilder().
+ GetPopulationIndicatorResultRequest request = requestBuilder().
addFacade(facade).
addZone(zone).
addSpecies(species).
addIndicator(indicator).
- addResultType( IndicatorRequest.ResultType.DATA).
- toPopulationIndicatorRequest();
+ addIndicatorResultType(AbstractGetIndicatorResultRequest.IndicatorResultType.DATA).
+ toGetPopulationIndicatorResultRequest();
result = getService().getFileResult(request);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/IndicatorAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CommonIndicator;
/**
@@ -39,11 +39,11 @@
private static final long serialVersionUID = 1663244944108703571L;
@Override
- protected PopulationIndicatorRequest createRequest() {
- return requestBuilder().
+ protected GetPopulationIndicatorResultRequest createRequest() {
+ return requestBuilder(GetPopulationIndicatorResultRequest.class).
addFacade(facade).
addZone(zone).
addSpecies(species).
- toPopulationIndicatorRequest();
+ toRequest();
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/SpeciesAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.pop;
-import fr.ifremer.coser.result.request.PopulationIndicatorRequest;
+import fr.ifremer.coser.result.request.GetPopulationIndicatorResultRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -52,7 +52,7 @@
protected String zonePicture;
- protected PopulationIndicatorRequest request;
+ protected GetPopulationIndicatorResultRequest request;
public String getFacade() {
return facade;
@@ -96,7 +96,7 @@
request = requestBuilder().
addFacade(facade).
addZone(zone).
- toPopulationIndicatorRequest();
+ toGetPopulationIndicatorResultRequest();
species = getService().getAvailableSpecies(request);
if (log.isDebugEnabled()) {
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/pop/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -42,6 +42,6 @@
protected CoserRequest createRequest() {
return requestBuilder().
addFacade(facade).
- toPopulationIndicatorRequest();
+ toGetPopulationIndicatorResultRequest();
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/search/ExtractAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -23,7 +23,7 @@
import com.google.common.collect.Lists;
import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.request.ExtractRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataAndResultsRequest;
import fr.ifremer.coser.util.DataType;
import fr.ifremer.coser.web.actions.common.CoserAction;
import org.apache.commons.collections4.CollectionUtils;
@@ -183,28 +183,28 @@
result = INPUT;
types = DataType.getExtractTypes(getLocale());
+
+ ExtractRawDataAndResultsRequest extractRawDataAndResultsRequest = requestBuilder().toExtractRawDataAndResultsRequest();
// renvoi la liste des id subzone-survey et leurs label associé
- zones = getService().getZoneForFacade();
+ zones = getService().getAvailableZones(extractRawDataAndResultsRequest);
if (CollectionUtils.isNotEmpty(selectZones)) {
- ExtractRequest extractRequest = requestBuilder().
- addZoneList(selectZones).
- toExtractRequest();
+ extractRawDataAndResultsRequest.setZoneList(selectZones);
- species = getService().getAvailableSpecies(extractRequest);
+ species = getService().getAvailableSpecies(extractRawDataAndResultsRequest);
if (selectTypes != null) {
if (selectTypes.contains(DataType.COMMUNITY)) {
- extractRequest.setExtractTypeList(Lists.newArrayList(DataType.COMMUNITY));
- comIndicators = getService().getAvailableIndicators(extractRequest);
+ extractRawDataAndResultsRequest.setExtractTypeList(Lists.newArrayList(DataType.COMMUNITY));
+ comIndicators = getService().getAvailableIndicators(extractRawDataAndResultsRequest);
}
if (selectTypes.contains(DataType.POPULATION)) {
- extractRequest.setExtractTypeList(Lists.newArrayList(DataType.POPULATION));
- popIndicators = getService().getAvailableIndicators(extractRequest);
+ extractRawDataAndResultsRequest.setExtractTypeList(Lists.newArrayList(DataType.POPULATION));
+ popIndicators = getService().getAvailableIndicators(extractRawDataAndResultsRequest);
}
}
}
@@ -270,15 +270,15 @@
Locale locale = (Locale) request.getSession().getAttribute(LOCALE_ATTRIBUTE);
- ExtractRequest extractRequest = requestBuilder(locale).
+ ExtractRawDataAndResultsRequest extractRawDataAndResultsRequest = requestBuilder(locale).
addZoneList(selectZones).
addExtractTypeList(selectTypes).
addSpeciesList(selectSpecies).
addCommunityIndicatorList(selectComIndicators).
addPopulationIndicatorList(selectPopIndicators).
- toExtractRequest();
+ toExtractRawDataAndResultsRequest();
- resultFile = getService().getFileResult(extractRequest);
+ resultFile = getService().getFileResult(extractRawDataAndResultsRequest);
return SUCCESS;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/SourceAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.source;
-import fr.ifremer.coser.result.request.RawDataRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataRequest;
import fr.ifremer.coser.web.actions.common.CoserAction;
import java.util.Map;
@@ -46,7 +46,7 @@
protected String zonePicture;
- protected RawDataRequest request;
+ protected ExtractRawDataRequest request;
public String getFacade() {
return facade;
@@ -83,12 +83,12 @@
return SUCCESS;
}
- protected RawDataRequest getRequest() {
+ protected ExtractRawDataRequest getRequest() {
if (request == null) {
request = requestBuilder().
addFacade(facade).
addZone(zone).
- toRawDataRequest();
+ toExtractRawDataRequest();
}
return request;
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/source/ZoneAction.java 2014-03-12 17:35:43 UTC (rev 1145)
@@ -21,7 +21,7 @@
package fr.ifremer.coser.web.actions.source;
-import fr.ifremer.coser.result.request.RawDataRequest;
+import fr.ifremer.coser.result.request.ExtractRawDataRequest;
import fr.ifremer.coser.web.actions.common.CommonZone;
/**
@@ -39,10 +39,10 @@
private static final long serialVersionUID = 3385467755357775199L;
@Override
- protected RawDataRequest createRequest() {
+ protected ExtractRawDataRequest createRequest() {
return requestBuilder().
addFacade(facade).
- toRawDataRequest();
+ toExtractRawDataRequest();
}
// @Override
Modified: trunk/coser-web/src/main/resources/i18n/coser-web_en_GB.properties
===================================================================
--- trunk/coser-web/src/main/resources/i18n/coser-web_en_GB.properties 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/resources/i18n/coser-web_en_GB.properties 2014-03-12 17:35:43 UTC (rev 1145)
@@ -9,6 +9,9 @@
message.admin.listprojects.indicatorsprojects=Indicators projects by zones
message.admin.listprojects.indicatorsprojects.comment=Removing an indicator project will also delete projet data source.
message.admin.listprojects.mapsprojects=Maps projects by zones
+message.admin.listprojects.projects=Projects by zones
+message.admin.listprojects.projects.comment=Removing a project will also delete projet data source.
+message.admin.listprojects.select.resultType=Select type of project
message.admin.listprojects.title=Projects management
message.admin.login=Login
message.admin.loginrequiered=Authentication required
Modified: trunk/coser-web/src/main/resources/i18n/coser-web_fr_FR.properties
===================================================================
--- trunk/coser-web/src/main/resources/i18n/coser-web_fr_FR.properties 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/resources/i18n/coser-web_fr_FR.properties 2014-03-12 17:35:43 UTC (rev 1145)
@@ -6,9 +6,12 @@
coser.config.coserWeb.configuration.description=Configuration du site des indicateurs
message.admin.indexaction=Actions d'administration
message.admin.listprojects.deleteselected=Supprimer les projets sélectionnés
-message.admin.listprojects.indicatorsprojects=Projects d'indicateur par zones
-message.admin.listprojects.indicatorsprojects.comment=La suppression d'un projets d'indicateur supprimera également la possibilité de télécharger les données sources du projet concerné.
+message.admin.listprojects.indicatorsprojects=Projets d'indicateur par zones
+message.admin.listprojects.indicatorsprojects.comment=La suppression d'un projet d'indicateur supprimera également la possibilité de télécharger les données sources du projet concerné.
message.admin.listprojects.mapsprojects=Projects de cartes par zones
+message.admin.listprojects.projects=Projects par zones
+message.admin.listprojects.projects.comment=La suppression d'un projet supprimera également la possibilité de télécharger les données sources du projet concerné.
+message.admin.listprojects.select.resultType=Sélectionner le type de projet
message.admin.listprojects.title=Gestion des projets
message.admin.login=Identifiant
message.admin.loginrequiered=Autentification requise
Modified: trunk/coser-web/src/main/resources/log4j.properties
===================================================================
--- trunk/coser-web/src/main/resources/log4j.properties 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/resources/log4j.properties 2014-03-12 17:35:43 UTC (rev 1145)
@@ -29,3 +29,4 @@
# Categories
log4j.category.fr.ifremer.coser=INFO
+log4j.category.org.nuiton=INFO
Modified: trunk/coser-web/src/main/webapp/WEB-INF/content/admin/list-projects.jsp
===================================================================
--- trunk/coser-web/src/main/webapp/WEB-INF/content/admin/list-projects.jsp 2014-03-11 16:45:58 UTC (rev 1144)
+++ trunk/coser-web/src/main/webapp/WEB-INF/content/admin/list-projects.jsp 2014-03-12 17:35:43 UTC (rev 1145)
@@ -29,56 +29,112 @@
<h2><s:text name="message.admin.listprojects.title" /></h2>
- <h3><s:text name="message.admin.listprojects.indicatorsprojects" /></h3>
+ <h3><s:text name="message.admin.listprojects.select.resultType" /></h3>
- <p><s:text name="message.admin.listprojects.indicatorsprojects.comment" /></p>
-
- <form action="delete-projects" class="listprojects" method="post">
- <s:iterator value="facades">
- <div class="listprojects-facade">
- <span class="title"><s:text name="message.common.facade" /> : <s:property value='value' /></span>
- <s:iterator value="%{getZonesByFacades().get(key)}" var="zone">
- <div class="listprojects-zone">
- <span class="title"><s:text name="message.common.zone" /> : <s:property value="getZoneDisplayName(#zone)"/></span>
- <div class="listprojects-result">
- <s:if test="%{indicatorsResults.get(#zone) == null}">
- Aucun projet trouvé
- </s:if>
- <s:else>
- <input type="checkbox" name="indicatorsZonesId" value="<s:property value="zone" />" />
- <s:property value="%{indicatorsResults.get(#zone)}" />
- </s:else>
+ <s:form action="list-projects" method="get">
+ <select name="selectedRepositoryType" id="selectedRepositoryType">
+ <s:iterator value="repositoryTypes" var="repositoryType">
+ <option value="<s:property value="key" />"
+ <s:if test="#repositoryType.key.equals(selectedRepositoryType)">
+ selected="selected"
+ </s:if>>
+ <s:property value="%{getText(#repositoryType.value.labelKey)}" /></option>
+ </s:iterator>
+ </select>
+ <s:submit value="%{getText('message.common.validform')}"/>
+ </s:form>
+
+ <s:if test="selectedRepositoryType == @fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryType@ID">
+ <h3><s:text name="message.admin.listprojects.projects" /></h3>
+ <p><s:text name="message.admin.listprojects.projects.comment" /></p>
+
+ <form action="delete-projects" class="listprojects" method="post">
+ <s:hidden name="repositoryType" value="%{selectedRepositoryType}"/>
+ <s:hidden name="resultType" value="%{@fr.ifremer.coser.result.ResultType@MAP_AND_INDICATOR}"/>
+ <s:set name="results" value="%{getResults(@fr.ifremer.coser.result.ResultType@MAP_AND_INDICATOR)}"/>
+ <s:iterator value="facades">
+ <div class="listprojects-facade">
+ <span class="title"><s:text name="message.common.facade" /> : <s:property value='value' /></span>
+ <s:iterator value="%{getZonesByFacades().get(key)}" var="zone">
+ <div class="listprojects-zone">
+ <span class="title"><s:text name="message.common.zone" /> : <s:property value="getZoneDisplayName(#zone)"/></span>
+ <div class="listprojects-result">
+ <s:if test="%{#results.get(#zone) == null}">
+ Aucun projet trouvé
+ </s:if>
+ <s:else>
+ <input type="checkbox" name="zonesId" value="<s:property value="zone" />" />
+ <s:property value="%{#results.get(#zone)}" />
+ </s:else>
+ </div>
</div>
- </div>
- </s:iterator>
- </div>
- </s:iterator>
- <s:submit value='%{getText("message.admin.listprojects.deleteselected")}'/>
- </form>
-
- <h3><s:text name="message.admin.listprojects.mapsprojects" /></h3>
-
- <form action="delete-projects" class="listprojects" method="post">
- <s:iterator value="facades">
- <div class="listprojects-facade">
- <span class="title"><s:text name="message.common.facade" /> : <s:property value='value' /></span>
- <s:iterator value="%{getZonesByFacades().get(key)}" var="zone">
- <div class="listprojects-zone">
- <span class="title"><s:text name="message.common.zone" /> : <s:property value="getZoneDisplayName(#zone)"/></span>
- <div class="listprojects-result">
- <s:if test="%{mapsResults.get(#zone) == null}">
- Aucun projet trouvé
- </s:if>
- <s:else>
- <input type="checkbox" name="mapsZonesId" value="<s:property value="zone" />" />
- <s:property value="%{mapsResults.get(#zone)}" />
- </s:else>
+ </s:iterator>
+ </div>
+ </s:iterator>
+ <s:submit value='%{getText("message.admin.listprojects.deleteselected")}'/>
+ </form>
+ </s:if>
+ <s:elseif test="selectedRepositoryType == @fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryType@ID">
+
+ <h3><s:text name="message.admin.listprojects.indicatorsprojects" /></h3>
+ <p><s:text name="message.admin.listprojects.indicatorsprojects.comment" /></p>
+
+ <form action="delete-projects" class="listprojects" method="post">
+ <s:hidden name="repositoryType" value="%{selectedRepositoryType}"/>
+ <s:hidden name="resultType" value="%{@fr.ifremer.coser.result.ResultType@INDICATOR}"/>
+ <s:set name="results" value="%{getResults(@fr.ifremer.coser.result.ResultType@INDICATOR)}"/>
+ <s:iterator value="facades">
+ <div class="listprojects-facade">
+ <span class="title"><s:text name="message.common.facade" /> : <s:property value='value' /></span>
+ <s:iterator value="%{getZonesByFacades().get(key)}" var="zone">
+ <div class="listprojects-zone">
+ <span class="title"><s:text name="message.common.zone" /> : <s:property value="getZoneDisplayName(#zone)"/></span>
+ <div class="listprojects-result">
+ <s:if test="%{#results.get(#zone) == null}">
+ Aucun projet trouvé
+ </s:if>
+ <s:else>
+ <input type="checkbox" name="zonesId" value="<s:property value="zone" />" />
+ <s:property value="%{#results.get(#zone)}" />
+ </s:else>
+ </div>
</div>
- </div>
- </s:iterator>
- </div>
- </s:iterator>
- <s:submit value='%{getText("message.admin.listprojects.deleteselected")}'/>
- </form>
+ </s:iterator>
+ </div>
+ </s:iterator>
+ <s:submit value='%{getText("message.admin.listprojects.deleteselected")}'/>
+ </form>
+
+ <h3><s:text name="message.admin.listprojects.mapsprojects" /></h3>
+
+ <form action="delete-projects" class="listprojects" method="post">
+ <s:hidden name="repositoryType" value="%{selectedRepositoryType}"/>
+ <s:hidden name="resultType" value="%{@fr.ifremer.coser.result.ResultType@MAP}"/>
+ <s:set name="results" value="%{getResults(@fr.ifremer.coser.result.ResultType@MAP)}"/>
+ <s:iterator value="facades">
+ <div class="listprojects-facade">
+ <span class="title"><s:text name="message.common.facade" /> : <s:property value='value' /></span>
+ <s:iterator value="%{getZonesByFacades().get(key)}" var="zone">
+ <div class="listprojects-zone">
+ <span class="title"><s:text name="message.common.zone" /> : <s:property value="getZoneDisplayName(#zone)"/></span>
+ <div class="listprojects-result">
+ <s:if test="%{#results.get(#zone) == null}">
+ Aucun projet trouvé
+ </s:if>
+ <s:else>
+ <input type="checkbox" name="zonesId" value="<s:property value="zone" />" />
+ <s:property value="%{#results.get(#zone)}" />
+ </s:else>
+ </div>
+ </div>
+ </s:iterator>
+ </div>
+ </s:iterator>
+ <s:submit value='%{getText("message.admin.listprojects.deleteselected")}'/>
+ </form>
+ </s:elseif>
+ <s:else>
+ TODO
+ </s:else>
</body>
</html>
1
0
12 Mar '14
See <http://ci.codelutin.com/jenkins/job/coser-nightly/6/changes>
Changes:
[Tony CHEMIT] move to mavenpom 5.0.1 + remove all svn keyworks from license headers
[Tony CHEMIT] refs-30 #4651 (+ add missing svn properties)
------------------------------------------
[...truncated 870 lines...]
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - ERROR Duplicated line for key : COSER_TEST|2010|TRAIT1|COSER_SPECIES2|i|NA|19.60|
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES1 (year : 2010)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES1 (year : 2011)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES2 (year : 2010)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES2 (year : 2011)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES3 (year : 2010)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES3 (year : 2011)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES4 (year : 2010)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES4 (year : 2011)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES2 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES1 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES1 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES4 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES3 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES3 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES2 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES4 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES4 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES1 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES3 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES2 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1 tuple in hauls
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3 tuple in hauls
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2 tuple in hauls
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR10 in haul file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR8 in haul file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR7 in haul file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR9 in haul file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing haul TRAIT10 in length file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing haul TRAIT20 in length file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing haul TRAIT30 in length file
01:05:45 WARN fr.ifremer.coser.services.ControlServiceTest:96 - []
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.94 sec - in fr.ifremer.coser.services.ControlServiceTest
Running fr.ifremer.coser.services.CommandServiceTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.129 sec - in fr.ifremer.coser.services.CommandServiceTest
Running fr.ifremer.coser.services.ProjectServiceTest
Tests run: 26, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.884 sec - in fr.ifremer.coser.services.ProjectServiceTest
Running fr.ifremer.coser.services.WebServiceTest
01:05:46 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:47 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:47 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:47 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:47 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.177 sec - in fr.ifremer.coser.services.WebServiceTest
Running fr.ifremer.coser.services.PublicationServiceTest
01:05:48 INFO fr.ifremer.coser.services.PublicationService:481 - Generating HTML report to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:48 INFO fr.ifremer.coser.services.PublicationService:585 - Generating HTML report to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
01:05:48 INFO fr.ifremer.coser.services.PublicationService:308 - Generating HTML report to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.117 sec - in fr.ifremer.coser.services.PublicationServiceTest
Running fr.ifremer.coser.services.CommonServiceTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec - in fr.ifremer.coser.services.CommonServiceTest
Running fr.ifremer.coser.bean.IndicatorMapTest
01:05:48 INFO fr.ifremer.coser.bean.IndicatorMap:61 - Loading Indicator file: <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.022 sec - in fr.ifremer.coser.bean.IndicatorMapTest
Running fr.ifremer.coser.bean.ZoneMapTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.021 sec - in fr.ifremer.coser.bean.ZoneMapTest
Running fr.ifremer.coser.storage.MemoryDataStorageTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in fr.ifremer.coser.storage.MemoryDataStorageTest
Results :
Tests run: 70, Failures: 0, Errors: 0, Skipped: 0
[JENKINS] Recording test results
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ coser-business ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
[INFO]
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) @ coser-business >>>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (ensure-no-container-api) @ coser-business ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ coser-business ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-redmine-login) @ coser-business ---
[INFO] Skipping goal (runOnce flag is on and goal was already executed).
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO]
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) @ coser-business <<<
[INFO]
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ coser-business ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
[INFO]
[INFO] --- maven-javadoc-plugin:2.9.1:jar (attach-javadocs) @ coser-business ---
[INFO]
26 warnings
[WARNING] Javadoc Warnings
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:302: warning - Tag @link: can't find storeDataWhithoutQuote(DataStorage, Writer, Map, Category) in fr.ifremer.coser.services.CommonService
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:302: warning - @param argument "project" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:327: warning - @param argument "file" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:327: warning - @param argument "project" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:3221: warning - @param argument "rsufiResult" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:337: warning - @return tag cannot be used in method with void return type.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:535: warning - @sincee is an unknown tag.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:535: warning - @return tag cannot be used in method with void return type.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:612: warning - @return tag cannot be used in method with void return type.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:689: warning - @return tag cannot be used in method with void return type.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:1171: warning - @param argument "indicator" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:1171: warning - @param argument "indicatorName" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:1171: warning - @param argument "unit" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:1394: warning - @param argument "indicator" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:1394: warning - @param argument "indicatorName" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:1394: warning - @param argument "unit" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:202: warning - @param argument "locale" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:1516: warning - @param argument "dataTypes" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:2515: warning - @param argument "selectZones" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:2515: warning - @param argument "selectTypes" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:2515: warning - @param argument "selectSpecies" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:2668: warning - @param argument "zone" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:2668: warning - @param argument "locale" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:2738: warning - @param argument "zone" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:2738: warning - @param argument "comIndicator" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/s…>:49: warning - @param argument "species" is not a parameter name.
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/coser-business/t…>
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ coser-business ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-pgp-passphrase) @ coser-business ---
[INFO] Exporting server [gpg-signer] username in ${gpg.keyname}
[INFO] Exporting server [gpg-signer] password in ${gpg.passphrase}
[INFO]
[INFO] --- helper-maven-plugin:2.1:collect-files (collect-build-artifacts) @ coser-business ---
[INFO] Loaded <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/target/collect-a…>
[INFO] Copying coser-business-1.5-SNAPSHOT.jar to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/target/collect/f…>
[INFO] Copying THIRD-PARTY.properties to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/target/collect/f…>
[INFO] Copying coser-business-1.5-SNAPSHOT-sources.jar to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/target/collect/f…>
[INFO] Copying coser-business-1.5-SNAPSHOT-javadoc.jar to <http://ci.codelutin.com/jenkins/job/coser-nightly/ws/trunk/target/collect/f…>
[INFO]
[INFO] --- helper-maven-plugin:2.1:collect-files (collect-build-attachements) @ coser-business ---
[WARNING] Skipping goal (No file to collect).
[INFO]
[INFO] --- maven-gpg-plugin:1.5:sign (sign-artifacts) @ coser-business ---
[INFO]
[INFO] --- maven-dependency-plugin:2.8:analyze-only (analyze) @ coser-business ---
[INFO] Used declared dependencies found:
[INFO] org.nuiton:nuiton-utils:jar:3.0-rc-2:compile
[INFO] org.nuiton:nuiton-config:jar:3.0-alpha-2:compile
[INFO] org.nuiton.i18n:nuiton-i18n:jar:3.0:compile
[INFO] org.nuiton.matrix:nuiton-matrix:jar:2.4-SNAPSHOT:compile
[INFO] junit:junit:jar:4.11:test
[INFO] commons-logging:commons-logging:jar:1.1.3:compile
[INFO] commons-beanutils:commons-beanutils:jar:1.9.1:compile
[INFO] org.apache.commons:commons-collections4:jar:4.0:compile
[INFO] commons-io:commons-io:jar:2.4:compile
[INFO] org.apache.commons:commons-lang3:jar:3.3:compile
[INFO] org.apache.commons:commons-email:jar:1.3.2:compile
[INFO] org.apache.commons:commons-math:jar:2.2:compile
[INFO] org.apache.httpcomponents:httpcore:jar:4.3.2:compile
[INFO] org.apache.httpcomponents:httpclient:jar:4.3.3:compile
[INFO] org.apache.httpcomponents:httpmime:jar:4.3.3:compile
[INFO] net.sf.opencsv:opencsv:jar:2.3:compile
[INFO] org.apache.struts.xwork:xwork-core:jar:2.3.16.1:compile
[INFO] org.jfree:jfreechart:jar:1.0.17:compile
[INFO] org.jfree:jcommon:jar:1.0.21:compile
[INFO] com.itextpdf:itextpdf:jar:5.5.0:compile
[INFO] org.xhtmlrenderer:flying-saucer-pdf-itext5:jar:9.0.4:compile
[INFO] org.freemarker:freemarker:jar:2.3.20:compile
[WARNING] Used undeclared dependencies found:
[WARNING] commons-collections:commons-collections:jar:3.2.1:compile
[WARNING] com.google.guava:guava:jar:16.0.1:compile
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[JENKINS] Archiving disabled
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Coser ............................................. SUCCESS [ 10.273 s]
[INFO] Coser :: Business ................................. FAILURE [ 27.726 s]
[INFO] Coser :: UI ....................................... SKIPPED
[INFO] Coser :: Web ...................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 40.082 s
[INFO] Finished at: 2014-03-08T01:05:56+01:00
[INFO] Final Memory: 65M/1442M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:analyze-only (analyze) on project coser-business: Dependency problems found -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:analyze-only (analyze) on project coser-business: Dependency problems found
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
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:108)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.jvnet.hudson.maven3.launcher.Maven31Launcher.main(Maven31Launcher.java:132)
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:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
at jenkins.maven3.agent.Maven31Main.launch(Maven31Main.java:181)
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:606)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:134)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:69)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:328)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.maven.plugin.MojoExecutionException: Dependency problems found
at org.apache.maven.plugin.dependency.analyze.AbstractAnalyzeMojo.execute(AbstractAnalyzeMojo.java:188)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 30 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :coser-business
Sending e-mails to: coser-commits(a)list.forge.codelutin.com chemit+codelutin-ci(a)codelutin.com
channel stopped
Skipping sonar analysis due to bad build status FAILURE
1
4
Build failed in Jenkins: coser-nightly » Coser :: Business #6
by admin+ci-codelutin.com@codelutin.com 12 Mar '14
by admin+ci-codelutin.com@codelutin.com 12 Mar '14
12 Mar '14
See <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
Changes:
[Tony CHEMIT] move to mavenpom 5.0.1 + remove all svn keyworks from license headers
[Tony CHEMIT] refs-30 #4651 (+ add missing svn properties)
------------------------------------------
[...truncated 99 lines...]
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:[445,13] org.apache.http.entity.mime.MultipartEntity in org.apache.http.entity.mime has been deprecated
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:[445,45] org.apache.http.entity.mime.MultipartEntity in org.apache.http.entity.mime has been deprecated
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:[448,36] StringBody(java.lang.String,java.nio.charset.Charset) in org.apache.http.entity.mime.content.StringBody has been deprecated
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:[451,39] StringBody(java.lang.String,java.nio.charset.Charset) in org.apache.http.entity.mime.content.StringBody has been deprecated
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:[2265,54] escapeXml(java.lang.String) in org.apache.commons.lang3.StringEscapeUtils has been deprecated
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:[2266,53] escapeXml(java.lang.String) in org.apache.commons.lang3.StringEscapeUtils has been deprecated
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>: Some input files use unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- animal-sniffer-maven-plugin:1.10:check (default) @ coser-business ---
[INFO] Checking unresolved references to org.codehaus.mojo.signature:java16:1.1
[INFO]
[INFO] --- jredmine-maven-plugin:1.6:generate-changes (jredmine-generate-changes) @ coser-business ---
[INFO] Skipping goal (skipGenerateChanges flag is on).
[INFO]
[INFO] --- maven-antrun-plugin:1.7:run (generate-surefire-workdir) @ coser-business ---
[INFO] Executing tasks
main:
[mkdir] Created dir: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
[INFO] Executed tasks
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ coser-business ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 83 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ coser-business ---
[INFO] Compiling 14 source files to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
[WARNING] bootstrap class path not set in conjunction with -source 1.6
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> uses unchecked or unsafe operations.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-surefire-plugin:2.16:test (default-test) @ coser-business ---
[INFO] Surefire report directory: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProviderTest
01:05:44 INFO fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider:71 - Scan for projects from basedir: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:44 INFO fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository:148 - New result repository: echobase::<http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:44 INFO fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository:148 - New result repository: echobase::<http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:44 INFO fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider:103 - Found 2 result repository(ies) from basedir: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.331 sec - in fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProviderTest
Running fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryTest
01:05:44 INFO fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider:71 - Scan for projects from basedir: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:44 INFO fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository:148 - New result repository: echobase::<http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:44 INFO fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepository:148 - New result repository: echobase::<http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:44 INFO fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider:103 - Found 2 result repository(ies) from basedir: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.054 sec - in fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryTest
Running fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProviderTest
01:05:44 INFO fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider:75 - Scan for projects from basedir: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:44 INFO fr.ifremer.coser.result.repository.legacy.LegacyResultRepository:185 - New result repository: rsufi::<http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>::Indicator
01:05:44 INFO fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider:138 - Detected result: projectctrvalidated - testresult2
01:05:44 INFO fr.ifremer.coser.result.repository.legacy.LegacyResultRepository:185 - New result repository: rsufi::<http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>::Indicator
01:05:44 INFO fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider:138 - Detected result: projectctrvalidated - testresult1
01:05:44 INFO fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProvider:85 - Found 2 result repository(ies) from basedir: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.093 sec - in fr.ifremer.coser.result.repository.legacy.LegacyResultRepositoryProviderTest
Running fr.ifremer.coser.CoserUtilsTest
[Fatal Error] :1:7: XML document structures must start and end within the same entity.
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.022 sec - in fr.ifremer.coser.CoserUtilsTest
Running fr.ifremer.coser.services.ControlServiceTest
01:05:44 WARN fr.ifremer.coser.services.ControlServiceTest:83 - []
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING lat must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING long must contain at least 4 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL sweptSurface must contain at least 3 decimals
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - ERROR Duplicated line for key : COSER_TEST|2010|TRAIT1|COSER_SPECIES2|i|NA|19.60|
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES1 (year : 2010)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES1 (year : 2011)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES2 (year : 2010)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES2 (year : 2011)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES3 (year : 2010)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES3 (year : 2011)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES4 (year : 2010)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Differences between length and catch for species COSER_SPECIES4 (year : 2011)
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES2 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES1 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES1 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES4 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES3 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2|COSER_SPECIES3 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES2 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1|COSER_SPECIES4 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES4 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES1 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES3 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3|COSER_SPECIES2 tuple in catch
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT1 tuple in hauls
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT3 tuple in hauls
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - FATAL Missing 2011|TRAIT2 tuple in hauls
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR10 in haul file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR8 in haul file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR7 in haul file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing strata STR9 in haul file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing haul TRAIT10 in length file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing haul TRAIT20 in length file
01:05:45 INFO fr.ifremer.coser.services.ControlServiceTest:168 - WARNING Missing haul TRAIT30 in length file
01:05:45 WARN fr.ifremer.coser.services.ControlServiceTest:96 - []
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.94 sec - in fr.ifremer.coser.services.ControlServiceTest
Running fr.ifremer.coser.services.CommandServiceTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.129 sec - in fr.ifremer.coser.services.CommandServiceTest
Running fr.ifremer.coser.services.ProjectServiceTest
Tests run: 26, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.884 sec - in fr.ifremer.coser.services.ProjectServiceTest
Running fr.ifremer.coser.services.WebServiceTest
01:05:46 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:47 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:47 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:47 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:47 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:48 INFO fr.ifremer.coser.services.WebService:755 - Unzipping file <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…> to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
Tests run: 15, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.177 sec - in fr.ifremer.coser.services.WebServiceTest
Running fr.ifremer.coser.services.PublicationServiceTest
01:05:48 INFO fr.ifremer.coser.services.PublicationService:481 - Generating HTML report to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:48 INFO fr.ifremer.coser.services.PublicationService:585 - Generating HTML report to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
01:05:48 INFO fr.ifremer.coser.services.PublicationService:308 - Generating HTML report to <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.117 sec - in fr.ifremer.coser.services.PublicationServiceTest
Running fr.ifremer.coser.services.CommonServiceTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.042 sec - in fr.ifremer.coser.services.CommonServiceTest
Running fr.ifremer.coser.bean.IndicatorMapTest
01:05:48 INFO fr.ifremer.coser.bean.IndicatorMap:61 - Loading Indicator file: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.022 sec - in fr.ifremer.coser.bean.IndicatorMapTest
Running fr.ifremer.coser.bean.ZoneMapTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.021 sec - in fr.ifremer.coser.bean.ZoneMapTest
Running fr.ifremer.coser.storage.MemoryDataStorageTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in fr.ifremer.coser.storage.MemoryDataStorageTest
Results :
Tests run: 70, Failures: 0, Errors: 0, Skipped: 0
[JENKINS] Recording test results
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ coser-business ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
[INFO]
[INFO] >>> maven-source-plugin:2.2.1:jar (attach-sources) @ coser-business >>>
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (ensure-no-container-api) @ coser-business ---
[INFO]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (check-project-files) @ coser-business ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-redmine-login) @ coser-business ---
[INFO] Skipping goal (runOnce flag is on and goal was already executed).
[WARNING] Failed to getClass for org.apache.maven.plugin.source.SourceJarMojo
[INFO]
[INFO] <<< maven-source-plugin:2.2.1:jar (attach-sources) @ coser-business <<<
[INFO]
[INFO] --- maven-source-plugin:2.2.1:jar (attach-sources) @ coser-business ---
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
[INFO]
[INFO] --- maven-javadoc-plugin:2.9.1:jar (attach-javadocs) @ coser-business ---
[INFO]
26 warnings
[WARNING] Javadoc Warnings
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:302: warning - Tag @link: can't find storeDataWhithoutQuote(DataStorage, Writer, Map, Category) in fr.ifremer.coser.services.CommonService
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:302: warning - @param argument "project" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:327: warning - @param argument "file" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:327: warning - @param argument "project" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:3221: warning - @param argument "rsufiResult" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:337: warning - @return tag cannot be used in method with void return type.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:535: warning - @sincee is an unknown tag.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:535: warning - @return tag cannot be used in method with void return type.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:612: warning - @return tag cannot be used in method with void return type.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:689: warning - @return tag cannot be used in method with void return type.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:1171: warning - @param argument "indicator" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:1171: warning - @param argument "indicatorName" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:1171: warning - @param argument "unit" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:1394: warning - @param argument "indicator" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:1394: warning - @param argument "indicatorName" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:1394: warning - @param argument "unit" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:202: warning - @param argument "locale" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:1516: warning - @param argument "dataTypes" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:2515: warning - @param argument "selectZones" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:2515: warning - @param argument "selectTypes" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:2515: warning - @param argument "selectSpecies" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:2668: warning - @param argument "zone" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:2668: warning - @param argument "locale" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:2738: warning - @param argument "zone" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:2738: warning - @param argument "comIndicator" is not a parameter name.
[WARNING] <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>:49: warning - @param argument "species" is not a parameter name.
[INFO] Building jar: <http://ci.codelutin.com/jenkins/job/coser-nightly/fr.ifremer.coser$coser-bu…>
[INFO]
[INFO] --- maven-site-plugin:3.3:attach-descriptor (attach-descriptor) @ coser-business ---
[INFO]
[INFO] --- helper-maven-plugin:2.1:share-server-secret (get-pgp-passphrase) @ coser-business ---
[INFO] Exporting server [gpg-signer] username in ${gpg.keyname}
[INFO] Exporting server [gpg-signer] password in ${gpg.passphrase}
[INFO]
[INFO] --- helper-maven-plugin:2.1:collect-files (collect-build-artifacts) @ coser-business ---
[INFO] Loaded /var/local/forge/data/codelutin.com/jenkins/workspace/coser-nightly/trunk/target/collect-artifacts.txt
[INFO] Copying coser-business-1.5-SNAPSHOT.jar to /var/local/forge/data/codelutin.com/jenkins/workspace/coser-nightly/trunk/target/collect/fr.ifremer.coser--coser-business/coser-business-1.5-SNAPSHOT.jar
[INFO] Copying THIRD-PARTY.properties to /var/local/forge/data/codelutin.com/jenkins/workspace/coser-nightly/trunk/target/collect/fr.ifremer.coser--coser-business/THIRD-PARTY.properties
[INFO] Copying coser-business-1.5-SNAPSHOT-sources.jar to /var/local/forge/data/codelutin.com/jenkins/workspace/coser-nightly/trunk/target/collect/fr.ifremer.coser--coser-business/coser-business-1.5-SNAPSHOT-sources.jar
[INFO] Copying coser-business-1.5-SNAPSHOT-javadoc.jar to /var/local/forge/data/codelutin.com/jenkins/workspace/coser-nightly/trunk/target/collect/fr.ifremer.coser--coser-business/coser-business-1.5-SNAPSHOT-javadoc.jar
[INFO]
[INFO] --- helper-maven-plugin:2.1:collect-files (collect-build-attachements) @ coser-business ---
[WARNING] Skipping goal (No file to collect).
[INFO]
[INFO] --- maven-gpg-plugin:1.5:sign (sign-artifacts) @ coser-business ---
[INFO]
[INFO] --- maven-dependency-plugin:2.8:analyze-only (analyze) @ coser-business ---
[INFO] Used declared dependencies found:
[INFO] org.nuiton:nuiton-utils:jar:3.0-rc-2:compile
[INFO] org.nuiton:nuiton-config:jar:3.0-alpha-2:compile
[INFO] org.nuiton.i18n:nuiton-i18n:jar:3.0:compile
[INFO] org.nuiton.matrix:nuiton-matrix:jar:2.4-SNAPSHOT:compile
[INFO] junit:junit:jar:4.11:test
[INFO] commons-logging:commons-logging:jar:1.1.3:compile
[INFO] commons-beanutils:commons-beanutils:jar:1.9.1:compile
[INFO] org.apache.commons:commons-collections4:jar:4.0:compile
[INFO] commons-io:commons-io:jar:2.4:compile
[INFO] org.apache.commons:commons-lang3:jar:3.3:compile
[INFO] org.apache.commons:commons-email:jar:1.3.2:compile
[INFO] org.apache.commons:commons-math:jar:2.2:compile
[INFO] org.apache.httpcomponents:httpcore:jar:4.3.2:compile
[INFO] org.apache.httpcomponents:httpclient:jar:4.3.3:compile
[INFO] org.apache.httpcomponents:httpmime:jar:4.3.3:compile
[INFO] net.sf.opencsv:opencsv:jar:2.3:compile
[INFO] org.apache.struts.xwork:xwork-core:jar:2.3.16.1:compile
[INFO] org.jfree:jfreechart:jar:1.0.17:compile
[INFO] org.jfree:jcommon:jar:1.0.21:compile
[INFO] com.itextpdf:itextpdf:jar:5.5.0:compile
[INFO] org.xhtmlrenderer:flying-saucer-pdf-itext5:jar:9.0.4:compile
[INFO] org.freemarker:freemarker:jar:2.3.20:compile
[WARNING] Used undeclared dependencies found:
[WARNING] commons-collections:commons-collections:jar:3.2.1:compile
[WARNING] com.google.guava:guava:jar:16.0.1:compile
[JENKINS] Archiving disabled
1
4
11 Mar '14
Author: tchemit
Date: 2014-03-11 17:45:58 +0100 (Tue, 11 Mar 2014)
New Revision: 1144
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1144
Log:
refs #4664 (nearly done...)
Added:
trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteRequest.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java
Modified:
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/CommunityIndicatorResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/ExtractResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/MapResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/PopulationIndicatorResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/RawDataResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/CommunityIndicatorResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/ExtractResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/MapResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/PopulationIndicatorResultProducer.java
trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/RawDataResultProducer.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java
trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -0,0 +1,46 @@
+package fr.ifremer.coser;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public interface CoserServiceContext {
+
+ CoserBusinessConfig getConfig();
+
+ Set<ResultRepositoryProvider<?>> getProviders();
+
+ IndicatorMap getIndicatorsMap();
+
+ ZoneMap getZonesMap();
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/CoserServiceContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -0,0 +1,93 @@
+package fr.ifremer.coser;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.bean.IndicatorMap;
+import fr.ifremer.coser.bean.ZoneMap;
+import fr.ifremer.coser.result.CoserResultEngine;
+import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
+
+import java.util.Set;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DefaultCoserServiceContext implements CoserServiceContext {
+
+ /**
+ * Application configuration.
+ */
+ protected CoserBusinessConfig config;
+
+ /**
+ * Result repositories providers.
+ */
+ protected Set<ResultRepositoryProvider<?>> providers;
+
+ /**
+ * Cache of indicator definition.
+ */
+ protected IndicatorMap indicatorsMap;
+
+ /**
+ * Cache of zone definition.
+ */
+ protected ZoneMap zonesMap;
+
+ public DefaultCoserServiceContext(CoserBusinessConfig config) {
+ this.config = config;
+ }
+
+ @Override
+ public CoserBusinessConfig getConfig() {
+ return config;
+ }
+
+ @Override
+ public Set<ResultRepositoryProvider<?>> getProviders() {
+ if (providers == null) {
+ providers = CoserResultEngine.createDefaultRepositoryProviders(config);
+ }
+ return providers;
+ }
+
+ @Override
+ public IndicatorMap getIndicatorsMap() {
+ if (indicatorsMap == null) {
+ indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
+ }
+ return indicatorsMap;
+ }
+
+ @Override
+ public ZoneMap getZonesMap() {
+ if (zonesMap == null) {
+ zonesMap = new ZoneMap(config.getWebZonesFile());
+ }
+ return zonesMap;
+ }
+
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/DefaultCoserServiceContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserRequest.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -33,7 +33,7 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 1.5
*/
-public interface CoserRequest extends Serializable{
+public interface CoserRequest extends Serializable {
Locale getLocale();
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/CoserResultEngine.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -27,6 +27,7 @@
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.result.repository.ResultRepository;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
import fr.ifremer.coser.result.repository.echobase.EchoBaseResultRepositoryProvider;
@@ -57,39 +58,36 @@
/** Logger. */
private static final Log log = LogFactory.getLog(CoserResultEngine.class);
- /**
- * List of result repository providers.
- */
- protected final Set<ResultRepositoryProvider<?>> repositoryProviders;
-
- /**
- * Result repositories loaded lazy from their provider.
- *
- * @see #getRepositories()
- */
- protected Set<ResultRepository> repositories;
-
public static Set<ResultRepositoryProvider<?>> createDefaultRepositoryProviders(CoserBusinessConfig config) {
Preconditions.checkNotNull(config);
Set<ResultRepositoryProvider<?>> result = Sets.newHashSet();
// add legacy map repository
Preconditions.checkNotNull(config.getWebMapsProjectsDirectory());
- result.add(new LegacyResultRepositoryProvider(config, config.getWebMapsProjectsDirectory()));
+ result.add(new LegacyResultRepositoryProvider(config.getWebMapsProjectsDirectory()));
// add legacy indicators repository
Preconditions.checkNotNull(config.getWebIndicatorsProjectsDirectory());
- result.add(new LegacyResultRepositoryProvider(config, config.getWebIndicatorsProjectsDirectory()));
+ result.add(new LegacyResultRepositoryProvider(config.getWebIndicatorsProjectsDirectory()));
// add EchoBase repository
Preconditions.checkNotNull(config.getWebEchobaseProjectsDirectory());
- result.add(new EchoBaseResultRepositoryProvider(config, config.getWebEchobaseProjectsDirectory()));
+ result.add(new EchoBaseResultRepositoryProvider(config.getWebEchobaseProjectsDirectory()));
return result;
}
- public CoserResultEngine(Set<ResultRepositoryProvider<?>> repositoryProviders) {
- Preconditions.checkNotNull(repositoryProviders);
- this.repositoryProviders = repositoryProviders;
+ /**
+ * Result repositories loaded lazy from their provider.
+ *
+ * @see #getRepositories()
+ */
+ protected Set<ResultRepository> repositories;
+
+ protected final CoserServiceContext serviceContext;
+
+ public CoserResultEngine(CoserServiceContext serviceContext) {
+ Preconditions.checkNotNull(serviceContext);
+ this.serviceContext = serviceContext;
}
public void resetRepositories() {
@@ -154,8 +152,8 @@
if (repositories == null) {
Set<String> ids = Sets.newHashSet();
repositories = Sets.newHashSet();
- for (ResultRepositoryProvider repositoryProvider : repositoryProviders) {
- Set<ResultRepository> resultRepositories = repositoryProvider.loadRepositories();
+ for (ResultRepositoryProvider repositoryProvider : serviceContext.getProviders()) {
+ Set<ResultRepository> resultRepositories = repositoryProvider.loadRepositories(serviceContext);
// check all repository use a unique id
for (ResultRepository resultRepository : resultRepositories) {
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -39,6 +39,8 @@
ResultRepository getRepository();
+ boolean acceptResult(R request);
+
Map<String, String> getAvailableZones(R request);
Map<String, String> getAvailableSpecies(R request);
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepository.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -48,7 +48,7 @@
* @param request request
* @return all available zones for the given request
*/
- Map<String, String> getAvailableZones(CoserRequest request);
+ <R extends CoserRequest> Map<String, String> getAvailableZones(R request);
/**
* Get all available species (or speciesList) for the given request.
@@ -56,7 +56,7 @@
* @param request request
* @return all available species for the given request.
*/
- Map<String, String> getAvailableSpecies(CoserRequest request);
+ <R extends CoserRequest> Map<String, String> getAvailableSpecies(R request);
/**
* Get all available indicators for the given request.
@@ -64,14 +64,14 @@
* @param request request
* @return all available indicators for the given request.
*/
- Map<String, String> getAvailableIndicators(CoserRequest request);
+ <R extends CoserRequest> Map<String, String> getAvailableIndicators(R request);
/**
* @param request request to test
* @return {@code true} if this repository has some result for the given
* request, {@code false} otherwise
*/
- boolean acceptResult(CoserRequest request);
+ <R extends CoserRequest> boolean acceptResult(R request);
/**
* Get result for the given request.
@@ -81,5 +81,5 @@
* @param request request to obtain result
* @return the result for the given request
*/
- CoserResult getResult(CoserRequest request);
+ <R extends CoserRequest> CoserResult getResult(R request);
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/ResultRepositoryProvider.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -22,6 +22,7 @@
* #L%
*/
+import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.result.ResultRepositoryInitializationException;
import java.util.Set;
@@ -37,7 +38,8 @@
public interface ResultRepositoryProvider<R extends ResultRepository> {
/**
+ * @param serviceContext service context
* @return the set of provided result repositories.
*/
- Set<R> loadRepositories() throws ResultRepositoryInitializationException;
+ Set<R> loadRepositories(CoserServiceContext serviceContext) throws ResultRepositoryInitializationException;
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/CommunityIndicatorResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/CommunityIndicatorResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/CommunityIndicatorResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -90,6 +90,13 @@
}
@Override
+ public boolean acceptResult(CommunityIndicatorRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchIndicatorAndSpeciesList(request);
+ }
+
+ @Override
public Map<String, String> getAvailableZones(CommunityIndicatorRequest request) {
Preconditions.checkNotNull(request.getFacade());
@@ -112,7 +119,7 @@
boolean match = repository.matchFacade(request) &&
repository.matchZone(request) &&
- repository.matchIndicator(request);
+ matchIndicator(request);
Map<String, String> result = null;
@@ -389,4 +396,46 @@
return result;
}
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchIndicator(CommunityIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorIndicator(tuple, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchIndicatorAndSpeciesList(CommunityIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String indicator = request.getIndicator();
+ String speciesList = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepository.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -27,7 +27,7 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.EchoBaseProject;
import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.SpeciesMap;
@@ -46,7 +46,6 @@
import fr.ifremer.coser.result.request.RawDataRequest;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.util.DataType;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -84,11 +83,6 @@
protected final File mapsDirectory;
/**
- * Application config.
- */
- protected final CoserBusinessConfig config;
-
- /**
* Transform a map result species file to the species code.
*/
protected final Function<File, String> mapFileToSpeciesCode;
@@ -104,36 +98,26 @@
protected final FilenameFilter mapSpeciesFilenameFilter;
/**
- * Cache of species definition.
+ * Service context.
*/
- protected SpeciesMap speciesMap;
+ protected final CoserServiceContext serviceContext;
/**
- * Cache of indicator definition.
- */
- protected IndicatorMap indicatorsMap;
-
- /**
- * Cache of zone definition.
- */
- protected ZoneMap zonesMap;
-
- /**
* Cache of species definition.
*/
- protected DataStorage speciesDefinition;
+ protected SpeciesMap speciesMap;
/**
* Report helper.
*/
protected final Reports reports;
- protected final Map<Class<?>, ResultProducer<?>> resultProducers;
+ protected final Map<String, ResultProducer<?>> resultProducers;
- public EchoBaseResultRepository(CoserBusinessConfig config, EchoBaseProject project) {
- Preconditions.checkNotNull(config);
+ public EchoBaseResultRepository(CoserServiceContext serviceContext, EchoBaseProject project) {
+ this.serviceContext = serviceContext;
+ Preconditions.checkNotNull(serviceContext);
Preconditions.checkNotNull(project);
- this.config = config;
this.project = project;
this.mapsDirectory = project.getMapsDirectory();
this.reports = new Reports();
@@ -144,11 +128,11 @@
this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
this.resultProducers = Maps.newHashMap();
- this.resultProducers.put(MapRequest.class, new MapResultProducer(this));
- this.resultProducers.put(CommunityIndicatorRequest.class, new CommunityIndicatorResultProducer(this));
- this.resultProducers.put(PopulationIndicatorRequest.class, new PopulationIndicatorResultProducer(this));
- this.resultProducers.put(RawDataRequest.class, new RawDataResultProducer(this));
- this.resultProducers.put(ExtractRequest.class, new ExtractResultProducer(this));
+ this.resultProducers.put(MapRequest.class.getName(), new MapResultProducer(this));
+ this.resultProducers.put(CommunityIndicatorRequest.class.getName(), new CommunityIndicatorResultProducer(this));
+ this.resultProducers.put(PopulationIndicatorRequest.class.getName(), new PopulationIndicatorResultProducer(this));
+ this.resultProducers.put(RawDataRequest.class.getName(), new RawDataResultProducer(this));
+ this.resultProducers.put(ExtractRequest.class.getName(), new ExtractResultProducer(this));
if (log.isInfoEnabled()) {
log.info("New result repository: " + getId());
@@ -165,9 +149,9 @@
}
@Override
- public Map<String, String> getAvailableZones(CoserRequest request) {
-
- ResultProducer resultProducer = getProducer(request.getClass());
+ public <R extends CoserRequest> Map<String, String> getAvailableZones(R request) {
+ Preconditions.checkNotNull(request);
+ ResultProducer<R> resultProducer = getProducer(request);
Preconditions.checkNotNull(resultProducer);
Map<String, String> result = resultProducer.getAvailableZones(request);
@@ -175,9 +159,9 @@
}
@Override
- public Map<String, String> getAvailableSpecies(CoserRequest request) {
-
- ResultProducer resultProducer = getProducer(request.getClass());
+ public <R extends CoserRequest> Map<String, String> getAvailableSpecies(R request) {
+ Preconditions.checkNotNull(request);
+ ResultProducer<R> resultProducer = getProducer(request);
Preconditions.checkNotNull(resultProducer);
Map<String, String> result = resultProducer.getAvailableSpecies(request);
@@ -185,9 +169,9 @@
}
@Override
- public Map<String, String> getAvailableIndicators(CoserRequest request) {
-
- ResultProducer resultProducer = getProducer(request.getClass());
+ public <R extends CoserRequest> Map<String, String> getAvailableIndicators(R request) {
+ Preconditions.checkNotNull(request);
+ ResultProducer<R> resultProducer = getProducer(request);
Preconditions.checkNotNull(resultProducer);
Map<String, String> result = resultProducer.getAvailableIndicators(request);
@@ -195,74 +179,36 @@
}
@Override
- public boolean acceptResult(CoserRequest request) {
-
+ public <R extends CoserRequest> boolean acceptResult(R request) {
+ Preconditions.checkNotNull(request);
Preconditions.checkArgument(request.isFilled());
- boolean result = false;
-
- if (request instanceof MapRequest) {
-
- // must match facade + zone + species
- MapRequest r = (MapRequest) request;
-
- result = matchFacade(r) &&
- matchZone(r) &&
- matchSpecies(r);
- } else if (request instanceof RawDataRequest) {
-
- // must match facade + zone
- RawDataRequest r = (RawDataRequest) request;
- result = matchFacade(r) && matchZone(r);
-
- } else if (request instanceof CommunityIndicatorRequest) {
-
- // must match facade + zone + (indicator + speciesList)
- CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
-
- result = matchFacade(r) &&
- matchZone(r) &&
- matchIndicatorAndSpeciesList(r);
- } else if (request instanceof PopulationIndicatorRequest) {
-
- // must match facade + zone + (species + indicator)
- PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
-
- result = matchFacade(r) &&
- matchZone(r) &&
- matchSpeciesAndIndicator(r);
- } else if (request instanceof ExtractRequest) {
-
- // must match extract type + zone + (species + indicator)
- ExtractRequest r = (ExtractRequest) request;
-
- result = matchExtractTypeSet(r) &&
- matchZoneList(r) &&
- (matchPopulationIndicatorListAndSpeciesList(r) ||
- matchCommunityIndicatorListAndSpeciesList(r));
- }
+ ResultProducer<R> resultProducer = getProducer(request);
+ Preconditions.checkNotNull(resultProducer);
+ boolean result = resultProducer.acceptResult(request);
return result;
}
@Override
- public CoserResult getResult(CoserRequest request) {
-
+ public <R extends CoserRequest> CoserResult getResult(R request) {
+ Preconditions.checkNotNull(request);
Preconditions.checkArgument(request.isFilled());
Preconditions.checkArgument(acceptResult(request));
- ResultProducer resultProducer = getProducer(request.getClass());
+ ResultProducer<R> resultProducer = getProducer(request);
Preconditions.checkNotNull(resultProducer);
CoserResult result = resultProducer.produceResult(request);
return result;
}
- protected <R extends CoserRequest> ResultProducer<R> getProducer(Class<R> requestType) {
- return (ResultProducer<R>) resultProducers.get(requestType);
+ protected <R extends CoserRequest> ResultProducer<R> getProducer(R request) {
+ String requestTypeName = request.getClass().getName();
+ return (ResultProducer<R>) resultProducers.get(requestTypeName);
}
// --------------------------------------------------------------------- //
- // --- Common matchers ------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
// --------------------------------------------------------------------- //
protected boolean matchFacade(CoserRequestFacadeAware request) {
@@ -273,26 +219,6 @@
return project.getZoneName().equals(request.getZone());
}
- // --------------------------------------------------------------------- //
- // --- MapRequest matchers --------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(MapRequest request) {
- String species = request.getSpecies();
- File file = getMapSpeciesFile(species);
- return file != null && file.exists();
- }
-
- // --------------------------------------------------------------------- //
- // --- RawDataRequest matchers ----------------------------------------- //
- // --------------------------------------------------------------------- //
-
- // None
-
- // --------------------------------------------------------------------- //
- // --- IndicatorRequest matchers --------------------------------------- //
- // --------------------------------------------------------------------- //
-
protected boolean matchIndicatorSpecies(String[] tuple, String species) {
String speciesCode = tuple[3];
boolean result = species.equals(speciesCode);
@@ -310,190 +236,21 @@
String indicator) {
String speciesCode = tuple[3];
String indicatorCode = tuple[1];
- boolean result = species.equals(speciesCode) && indicator.equals(indicatorCode);
+ boolean result = species.equals(speciesCode) &&
+ indicator.equals(indicatorCode);
return result;
}
- // --------------------------------------------------------------------- //
- // --- PopulationIndicatorRequest matchers ----------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
-
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchSpeciesAndIndicator(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
- Preconditions.checkNotNull(request.getIndicator());
-
- String species = request.getSpecies();
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- // --------------------------------------------------------------------- //
- // --- CommunityIndicatorRequest matchers ------------------------------ //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchIndicatorAndSpeciesList(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
- Preconditions.checkNotNull(request.getSpecies());
-
- String indicator = request.getIndicator();
- String speciesList = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
protected boolean matchCommunityIndicatorAndSpeciesList(String[] tuple,
String indicator,
String speciesList) {
String indicatorCode = tuple[1];
String speciesListCode = tuple[2];
- boolean result = indicator.equals(indicatorCode) && speciesList.equals(speciesListCode);
+ boolean result = indicator.equals(indicatorCode) &&
+ speciesList.equals(speciesListCode);
return result;
}
- // --------------------------------------------------------------------- //
- // --- ExtractRequest matchers ----------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(ExtractRequest request) {
- //TODO Should deal also with raw-data type
- return !request.getExtractTypeList().contains(DataType.SOURCE);
- }
-
- protected boolean matchZoneList(ExtractRequest request) {
- return request.getZoneList().contains(project.getZoneName());
- }
-
- protected boolean matchCommunityIndicatorList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorListAndSpeciesList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchCommunityIndicatorListAndSpeciesList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
protected boolean matchIndicatorList(String[] tuple, List<String> indicatorList) {
String indicatorCode = tuple[1];
boolean result = indicatorList.contains(indicatorCode);
@@ -505,7 +262,8 @@
List<String> speciesList) {
String indicatorCode = tuple[1];
String speciesCode = tuple[3];
- boolean result = indicatorList.contains(indicatorCode) && speciesList.contains(speciesCode);
+ boolean result = indicatorList.contains(indicatorCode) &&
+ speciesList.contains(speciesCode);
return result;
}
@@ -613,26 +371,18 @@
protected SpeciesMap getSpeciesMap() {
if (speciesMap == null) {
-
File file = project.getSpeciesDefinitionFile();
-
speciesMap = new SpeciesMap(file);
}
return speciesMap;
}
protected IndicatorMap getIndicatorsMap() {
- if (indicatorsMap == null) {
- indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
- }
- return indicatorsMap;
+ return serviceContext.getIndicatorsMap();
}
public ZoneMap getZonesMap() {
- if (zonesMap == null) {
- zonesMap = new ZoneMap(config.getWebZonesFile());
- }
- return zonesMap;
+ return serviceContext.getZonesMap();
}
// --------------------------------------------------------------------- //
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProvider.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -24,7 +24,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserBusinessConfig;
+import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.EchoBaseProject;
import fr.ifremer.coser.result.ResultRepositoryInitializationException;
import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
@@ -55,17 +55,13 @@
*/
protected final File basedir;
- protected final CoserBusinessConfig config;
-
- public EchoBaseResultRepositoryProvider(CoserBusinessConfig config, File basedir) {
- this.config = config;
- Preconditions.checkNotNull(config);
+ public EchoBaseResultRepositoryProvider(File basedir) {
Preconditions.checkNotNull(basedir);
this.basedir = basedir;
}
@Override
- public Set<EchoBaseResultRepository> loadRepositories() {
+ public Set<EchoBaseResultRepository> loadRepositories(CoserServiceContext serviceContext) {
if (log.isInfoEnabled()) {
log.info(String.format("Scan for projects from basedir: %s", basedir));
@@ -96,7 +92,7 @@
} catch (IOException e) {
throw new ResultRepositoryInitializationException(this, "Could not load project file", e);
}
- result.add(new EchoBaseResultRepository(config, project));
+ result.add(new EchoBaseResultRepository(serviceContext, project));
}
}
if (log.isInfoEnabled()) {
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/ExtractResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/ExtractResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/ExtractResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -102,6 +102,14 @@
}
@Override
+ public boolean acceptResult(ExtractRequest request) {
+ return matchExtractTypeSet(request) &&
+ matchZoneList(request) &&
+ (matchPopulationIndicatorListAndSpeciesList(request) ||
+ matchCommunityIndicatorListAndSpeciesList(request));
+ }
+
+ @Override
public Map<String, String> getAvailableZones(ExtractRequest request) {
ZoneMap zonesMap = repository.getZonesMap();
@@ -114,7 +122,7 @@
public Map<String, String> getAvailableSpecies(ExtractRequest request) {
Preconditions.checkNotNull(request.getZoneList());
- boolean match = repository.matchZoneList(request);
+ boolean match = matchZoneList(request);
Map<String, String> result = null;
if (match) {
@@ -136,7 +144,7 @@
Map<String, String> result = null;
- boolean match = repository.matchZoneList(request);
+ boolean match = matchZoneList(request);
if (match) {
Set<String> indicatorList = null;
@@ -682,4 +690,91 @@
return result;
}
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchExtractTypeSet(ExtractRequest request) {
+ //TODO Should deal also with raw-data type
+ return !request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+
+ protected boolean matchZoneList(ExtractRequest request) {
+ return request.getZoneList().contains(project.getZoneName());
+ }
+
+ protected boolean matchCommunityIndicatorList(ExtractRequest request) {
+ Preconditions.checkNotNull(request.getCommunityIndicatorList());
+
+ List<String> indicatorList = request.getCommunityIndicatorList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorList(tuple, indicatorList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchPopulationIndicatorList(ExtractRequest request) {
+ Preconditions.checkNotNull(request.getPopulationIndicatorList());
+
+ List<String> indicatorList = request.getPopulationIndicatorList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorList(tuple, indicatorList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchPopulationIndicatorListAndSpeciesList(ExtractRequest request) {
+ Preconditions.checkNotNull(request.getPopulationIndicatorList());
+
+ List<String> indicatorList = request.getPopulationIndicatorList();
+ List<String> speciesList = request.getSpeciesList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchCommunityIndicatorListAndSpeciesList(ExtractRequest request) {
+ Preconditions.checkNotNull(request.getCommunityIndicatorList());
+
+ List<String> indicatorList = request.getCommunityIndicatorList();
+ List<String> speciesList = request.getSpeciesList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/MapResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/MapResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/MapResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -58,6 +58,13 @@
}
@Override
+ public boolean acceptResult(MapRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchSpecies(request);
+ }
+
+ @Override
public Map<String, String> getAvailableZones(MapRequest request) {
Preconditions.checkNotNull(request.getFacade());
@@ -105,4 +112,13 @@
return result;
}
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(MapRequest request) {
+ String species = request.getSpecies();
+ File file = repository.getMapSpeciesFile(species);
+ return file != null && file.exists();
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/PopulationIndicatorResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/PopulationIndicatorResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/PopulationIndicatorResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -82,6 +82,13 @@
}
@Override
+ public boolean acceptResult(PopulationIndicatorRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchSpeciesAndIndicator(request);
+ }
+
+ @Override
public Map<String, String> getAvailableZones(PopulationIndicatorRequest request) {
boolean match = repository.matchFacade(request);
@@ -289,4 +296,46 @@
return result;
}
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(PopulationIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String species = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorSpecies(tuple, species)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchSpeciesAndIndicator(PopulationIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String species = request.getSpecies();
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorSpeciesAndIndicator(tuple, species, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/RawDataResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/RawDataResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/echobase/RawDataResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -57,6 +57,12 @@
}
@Override
+ public boolean acceptResult(RawDataRequest request) {
+ return repository.matchFacade(request) &&
+ repository.matchZone(request);
+ }
+
+ @Override
public Map<String, String> getAvailableZones(RawDataRequest request) {
Preconditions.checkNotNull(request.getFacade());
@@ -88,4 +94,10 @@
throw RequestUnavailableForProducerException.newException("produceResult", this);
}
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ //TODO
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/CommunityIndicatorResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/CommunityIndicatorResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/CommunityIndicatorResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -100,6 +100,14 @@
}
@Override
+ public boolean acceptResult(CommunityIndicatorRequest request) {
+ return repository.indicatorsResult &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchIndicatorAndSpeciesList(request);
+ }
+
+ @Override
public Map<String, String> getAvailableZones(CommunityIndicatorRequest request) {
Preconditions.checkNotNull(request.getFacade());
@@ -125,7 +133,7 @@
boolean match = repository.indicatorsResult &&
repository.matchFacade(request) &&
repository.matchZone(request) &&
- repository.matchIndicator(request);
+ matchIndicator(request);
if (match) {
// get all map species for given facade + zone
@@ -402,4 +410,46 @@
return result;
}
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchIndicator(CommunityIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchCommunityIndicator(tuple, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchIndicatorAndSpeciesList(CommunityIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getIndicator());
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String indicator = request.getIndicator();
+ String speciesList = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/ExtractResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/ExtractResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/ExtractResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -112,6 +112,14 @@
}
@Override
+ public boolean acceptResult(ExtractRequest request) {
+ return matchExtractTypeSet(request) &&
+ matchZoneList(request) &&
+ (matchPopulationIndicatorListAndSpeciesList(request) ||
+ matchCommunityIndicatorListAndSpeciesList(request));
+ }
+
+ @Override
public Map<String, String> getAvailableZones(ExtractRequest request) {
ZoneMap zonesMap = repository.getZonesMap();
@@ -126,7 +134,7 @@
Map<String, String> result = null;
- boolean match = repository.matchZoneList(request);
+ boolean match = matchZoneList(request);
if (match) {
result = Maps.newHashMap();
@@ -146,7 +154,7 @@
Map<String, String> result = null;
- boolean match = repository.matchZoneList(request);
+ boolean match = matchZoneList(request);
if (match) {
Set<String> indicatorList = null;
@@ -727,4 +735,101 @@
return result;
}
+
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchExtractTypeSet(ExtractRequest request) {
+ boolean result = false;
+ if (repository.mapsResult) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+ if (repository.indicatorsResult) {
+ result = request.getExtractTypeList().contains(DataType.POPULATION) ||
+ request.getExtractTypeList().contains(DataType.COMMUNITY);
+ }
+ if (repository.dataResult) {
+ result = request.getExtractTypeList().contains(DataType.SOURCE);
+ }
+ return result;
+ }
+
+ protected boolean matchZoneList(ExtractRequest request) {
+ return request.getZoneList().contains(path.getRsufiResult().getZone());
+ }
+
+ protected boolean matchCommunityIndicatorList(ExtractRequest request) {
+ Preconditions.checkNotNull(request.getCommunityIndicatorList());
+
+ List<String> indicatorList = request.getCommunityIndicatorList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorList(tuple, indicatorList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchPopulationIndicatorList(ExtractRequest request) {
+ Preconditions.checkNotNull(request.getPopulationIndicatorList());
+
+ List<String> indicatorList = request.getPopulationIndicatorList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorList(tuple, indicatorList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchPopulationIndicatorListAndSpeciesList(ExtractRequest request) {
+ Preconditions.checkNotNull(request.getPopulationIndicatorList());
+
+ List<String> indicatorList = request.getPopulationIndicatorList();
+ List<String> speciesList = request.getSpeciesList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchCommunityIndicatorListAndSpeciesList(ExtractRequest request) {
+ Preconditions.checkNotNull(request.getCommunityIndicatorList());
+
+ List<String> indicatorList = request.getCommunityIndicatorList();
+ List<String> speciesList = request.getSpeciesList();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadCommunityIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepository.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -28,6 +28,7 @@
import com.google.common.collect.Sets;
import fr.ifremer.coser.CoserBusinessConfig;
import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.EchoBaseProject;
import fr.ifremer.coser.bean.IndicatorMap;
import fr.ifremer.coser.bean.RSufiResultPath;
@@ -49,7 +50,6 @@
import fr.ifremer.coser.services.ProjectService;
import fr.ifremer.coser.storage.DataStorage;
import fr.ifremer.coser.storage.DataStorages;
-import fr.ifremer.coser.util.DataType;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
@@ -117,9 +117,9 @@
protected final FilenameFilter mapSpeciesFilenameFilter;
/**
- * Application config.
+ * Service context.
*/
- protected final CoserBusinessConfig config;
+ protected final CoserServiceContext serviceContext;
/**
* Survey name (used to get maps).
@@ -137,16 +137,6 @@
protected SpeciesListMap speciesListMap;
/**
- * Cache of indicator definition.
- */
- protected IndicatorMap indicatorsMap;
-
- /**
- * Cache of zone definition.
- */
- protected ZoneMap zonesMap;
-
- /**
* Is the result contains maps ?
*/
protected final boolean mapsResult;
@@ -166,19 +156,19 @@
*/
protected final Reports reports;
- protected final Map<Class<?>, ResultProducer<?>> resultProducers;
+ protected final Map<String, ResultProducer<?>> resultProducers;
protected final ProjectService projectService;
- public LegacyResultRepository(CoserBusinessConfig config,
+ public LegacyResultRepository(CoserServiceContext serviceContext,
File basedir,
RSufiResultPath path,
String surveyName) {
- Preconditions.checkNotNull(config);
+ Preconditions.checkNotNull(serviceContext);
Preconditions.checkNotNull(basedir);
Preconditions.checkNotNull(path);
Preconditions.checkNotNull(surveyName);
- this.config = config;
+ this.serviceContext = serviceContext;
this.basedir = basedir;
this.surveyName = surveyName;
this.resultDirectory = FileUtils.getFile(
@@ -197,13 +187,13 @@
this.mapFileToSpeciesCode = EchoBaseProject.newMapFileToSpeciesCode(surveyName);
this.speciesCodeToMapFile = EchoBaseProject.newSpeciesCodeToMapFileName(surveyName);
this.mapSpeciesFilenameFilter = EchoBaseProject.newMapSpeciesFilenameFilter(surveyName);
- this.projectService = new ProjectService(config);
+ this.projectService = new ProjectService(serviceContext.getConfig());
this.resultProducers = Maps.newHashMap();
- this.resultProducers.put(MapRequest.class, new MapResultProducer(this));
- this.resultProducers.put(CommunityIndicatorRequest.class, new CommunityIndicatorResultProducer(this));
- this.resultProducers.put(PopulationIndicatorRequest.class, new PopulationIndicatorResultProducer(this));
- this.resultProducers.put(RawDataRequest.class, new RawDataResultProducer(this));
- this.resultProducers.put(ExtractRequest.class, new ExtractResultProducer(this));
+ this.resultProducers.put(MapRequest.class.getName(), new MapResultProducer(this));
+ this.resultProducers.put(CommunityIndicatorRequest.class.getName(), new CommunityIndicatorResultProducer(this));
+ this.resultProducers.put(PopulationIndicatorRequest.class.getName(), new PopulationIndicatorResultProducer(this));
+ this.resultProducers.put(RawDataRequest.class.getName(), new RawDataResultProducer(this));
+ this.resultProducers.put(ExtractRequest.class.getName(), new ExtractResultProducer(this));
if (log.isInfoEnabled()) {
log.info("New result repository: " + getId());
@@ -224,19 +214,19 @@
}
@Override
- public Map<String, String> getAvailableZones(CoserRequest request) {
-
- ResultProducer resultProducer = getProducer(request.getClass());
+ public <R extends CoserRequest> Map<String, String> getAvailableZones(R request) {
+ Preconditions.checkNotNull(request);
+ ResultProducer<R> resultProducer = getProducer(request);
Preconditions.checkNotNull(resultProducer);
- Map result = resultProducer.getAvailableZones(request);
+ Map<String, String> result = resultProducer.getAvailableZones(request);
return result;
}
@Override
- public Map<String, String> getAvailableSpecies(CoserRequest request) {
-
- ResultProducer resultProducer = getProducer(request.getClass());
+ public <R extends CoserRequest> Map<String, String> getAvailableSpecies(R request) {
+ Preconditions.checkNotNull(request);
+ ResultProducer<R> resultProducer = getProducer(request);
Preconditions.checkNotNull(resultProducer);
Map<String, String> result = resultProducer.getAvailableSpecies(request);
@@ -244,9 +234,9 @@
}
@Override
- public Map<String, String> getAvailableIndicators(CoserRequest request) {
-
- ResultProducer resultProducer = getProducer(request.getClass());
+ public <R extends CoserRequest> Map<String, String> getAvailableIndicators(R request) {
+ Preconditions.checkNotNull(request);
+ ResultProducer<R> resultProducer = getProducer(request);
Preconditions.checkNotNull(resultProducer);
Map<String, String> result = resultProducer.getAvailableIndicators(request);
@@ -254,76 +244,31 @@
}
@Override
- public boolean acceptResult(CoserRequest request) {
-
+ public <R extends CoserRequest> boolean acceptResult(R request) {
+ Preconditions.checkNotNull(request);
Preconditions.checkArgument(request.isFilled());
- boolean result = false;
-
- if (request instanceof MapRequest) {
-
- // must match facade + zone + species
- MapRequest r = (MapRequest) request;
-
- result = mapsResult &&
- matchFacade(r) &&
- matchZone(r) &&
- matchSpecies(r);
- } else if (request instanceof RawDataRequest) {
-
- // must match facade + zone
- RawDataRequest r = (RawDataRequest) request;
- result = dataResult && matchFacade(r) && matchZone(r);
-
- } else if (request instanceof CommunityIndicatorRequest) {
-
- // must match facade + zone + (indicator + speciesList)
- CommunityIndicatorRequest r = (CommunityIndicatorRequest) request;
-
- result = indicatorsResult &&
- matchFacade(r) &&
- matchZone(r) &&
- matchIndicatorAndSpeciesList(r);
- } else if (request instanceof PopulationIndicatorRequest) {
-
- // must match facade + zone + (species + indicator)
- PopulationIndicatorRequest r = (PopulationIndicatorRequest) request;
-
- result = indicatorsResult &&
- matchFacade(r) &&
- matchZone(r) &&
- matchSpeciesAndIndicator(r);
- } else if (request instanceof ExtractRequest) {
-
- // must match extract type + zone + (species + indicator)
- ExtractRequest r = (ExtractRequest) request;
-
- result = matchExtractTypeSet(r) &&
- matchZoneList(r) &&
- (matchPopulationIndicatorListAndSpeciesList(r) ||
- matchCommunityIndicatorListAndSpeciesList(r));
- }
+ ResultProducer<R> resultProducer = getProducer(request);
+ Preconditions.checkNotNull(resultProducer);
+ boolean result = resultProducer.acceptResult(request);
return result;
}
@Override
- public CoserResult getResult(CoserRequest request) {
+ public <R extends CoserRequest> CoserResult getResult(R request) {
+ Preconditions.checkNotNull(request);
Preconditions.checkArgument(request.isFilled());
Preconditions.checkArgument(acceptResult(request));
- ResultProducer resultProducer = getProducer(request.getClass());
+ ResultProducer<R> resultProducer = getProducer(request);
Preconditions.checkNotNull(resultProducer);
CoserResult result = resultProducer.produceResult(request);
return result;
}
- protected <R extends CoserRequest> ResultProducer<R> getProducer(Class<R> requestType) {
- return (ResultProducer<R>) resultProducers.get(requestType);
- }
-
// --------------------------------------------------------------------- //
- // --- Common matchers ------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
// --------------------------------------------------------------------- //
protected boolean matchFacade(CoserRequestFacadeAware request) {
@@ -334,66 +279,6 @@
return path.getRsufiResult().getZone().equals(request.getZone());
}
- // --------------------------------------------------------------------- //
- // --- MapRequest matchers --------------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(MapRequest request) {
- String species = request.getSpecies();
- File file = getMapSpeciesFile(species);
- return file != null;
- }
-
- // --------------------------------------------------------------------- //
- // --- RawDataRequest matchers ----------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchZone(RawDataRequest request) {
- return path.getRsufiResult().getZone().equals(request.getZone());
- }
-
- // --------------------------------------------------------------------- //
- // --- PopulationIndicatorRequest matchers ----------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchSpecies(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
-
- String species = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchPopulationSpecies(tuple, species)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchSpeciesAndIndicator(PopulationIndicatorRequest request) {
- Preconditions.checkNotNull(request.getSpecies());
- Preconditions.checkNotNull(request.getIndicator());
-
- String species = request.getSpecies();
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
protected boolean matchPopulationSpecies(String[] tuple, String species) {
String speciesCode = tuple[3];
boolean result = species.equals(speciesCode);
@@ -406,48 +291,6 @@
return result;
}
- // --------------------------------------------------------------------- //
- // --- CommunityIndicatorRequest matchers ------------------------------ //
- // --------------------------------------------------------------------- //
-
- protected boolean matchIndicator(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
-
- String indicator = request.getIndicator();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchCommunityIndicator(tuple, indicator)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchIndicatorAndSpeciesList(CommunityIndicatorRequest request) {
- Preconditions.checkNotNull(request.getIndicator());
- Preconditions.checkNotNull(request.getSpecies());
-
- String indicator = request.getIndicator();
- String speciesList = request.getSpecies();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchCommunityIndicatorAndSpeciesList(tuple, indicator, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
protected boolean matchCommunityIndicator(String[] tuple, String indicator) {
String indicatorCode = tuple[1];
boolean result = indicator.equals(indicatorCode);
@@ -461,103 +304,6 @@
return result;
}
- // --------------------------------------------------------------------- //
- // --- ExtractRequest matchers ----------------------------------------- //
- // --------------------------------------------------------------------- //
-
- protected boolean matchExtractTypeSet(ExtractRequest request) {
- boolean result = false;
- if (mapsResult) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- if (indicatorsResult) {
- result = request.getExtractTypeList().contains(DataType.POPULATION) ||
- request.getExtractTypeList().contains(DataType.COMMUNITY);
- }
- if (dataResult) {
- result = request.getExtractTypeList().contains(DataType.SOURCE);
- }
- return result;
- }
-
- protected boolean matchZoneList(ExtractRequest request) {
- return request.getZoneList().contains(path.getRsufiResult().getZone());
- }
-
- protected boolean matchCommunityIndicatorList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorList(tuple, indicatorList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchPopulationIndicatorListAndSpeciesList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getPopulationIndicatorList());
-
- List<String> indicatorList = request.getPopulationIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadPopulationIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
- protected boolean matchCommunityIndicatorListAndSpeciesList(ExtractRequest request) {
- Preconditions.checkNotNull(request.getCommunityIndicatorList());
-
- List<String> indicatorList = request.getCommunityIndicatorList();
- List<String> speciesList = request.getSpeciesList();
-
- boolean result = false;
-
- Iterator<String[]> iterator = loadCommunityIndicatorStorage(true);
- while (iterator.hasNext()) {
- String[] tuple = iterator.next();
- if (matchIndicatorListAndSpeciesList(tuple, indicatorList, speciesList)) {
- result = true;
- break;
- }
- }
- return result;
- }
-
protected boolean matchIndicatorList(String[] tuple, List<String> indicatorList) {
String indicatorCode = tuple[1];
boolean result = indicatorList.contains(indicatorCode);
@@ -706,17 +452,11 @@
}
protected IndicatorMap getIndicatorsMap() {
- if (indicatorsMap == null) {
- indicatorsMap = new IndicatorMap(config.getWebIndicatorsFile());
- }
- return indicatorsMap;
+ return serviceContext.getIndicatorsMap();
}
public ZoneMap getZonesMap() {
- if (zonesMap == null) {
- zonesMap = new ZoneMap(config.getWebZonesFile());
- }
- return zonesMap;
+ return serviceContext.getZonesMap();
}
// --------------------------------------------------------------------- //
@@ -739,4 +479,12 @@
return iterator;
}
+ protected <R extends CoserRequest> ResultProducer<R> getProducer(R request) {
+ String requestTypeName = request.getClass().getName();
+ return (ResultProducer<R>) resultProducers.get(requestTypeName);
+ }
+
+ protected CoserBusinessConfig getConfig() {
+ return serviceContext.getConfig();
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProvider.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -24,9 +24,9 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Sets;
-import fr.ifremer.coser.CoserBusinessConfig;
import fr.ifremer.coser.CoserBusinessException;
import fr.ifremer.coser.CoserConstants;
+import fr.ifremer.coser.CoserServiceContext;
import fr.ifremer.coser.bean.Project;
import fr.ifremer.coser.bean.RSufiResult;
import fr.ifremer.coser.bean.RSufiResultPath;
@@ -56,27 +56,20 @@
*/
protected final File basedir;
- protected final ProjectService projectService;
-
- protected final CoserBusinessConfig config;
-
- public LegacyResultRepositoryProvider(CoserBusinessConfig config, File basedir) {
- this.config = config;
- Preconditions.checkNotNull(config);
+ public LegacyResultRepositoryProvider(File basedir) {
Preconditions.checkNotNull(basedir);
- this.projectService = new ProjectService(config);
this.basedir = basedir;
}
@Override
- public Set<LegacyResultRepository> loadRepositories() {
+ public Set<LegacyResultRepository> loadRepositories(CoserServiceContext serviceContext) {
if (log.isInfoEnabled()) {
log.info(String.format("Scan for projects from basedir: %s", basedir));
}
Set<LegacyResultRepository> result;
try {
- result = findAllProjectWithResult();
+ result = findAllProjectWithResult(serviceContext);
} catch (CoserBusinessException e) {
throw new ResultRepositoryInitializationException(this, "Could not find projects", e);
}
@@ -93,10 +86,14 @@
* De la forme d'une liste de de path (à la tree path) :
* ProjetName/SelectionName/ResultName
*
+ * @param serviceContext service context
* @return results paths
* @throws CoserBusinessException
*/
- public Set<LegacyResultRepository> findAllProjectWithResult() throws CoserBusinessException {
+ public Set<LegacyResultRepository> findAllProjectWithResult(CoserServiceContext serviceContext) throws CoserBusinessException {
+
+ ProjectService projectService = new ProjectService(serviceContext.getConfig());
+
Set<LegacyResultRepository> result = Sets.newHashSet();
// loop on projets
File[] projects = basedir.listFiles();
@@ -131,7 +128,7 @@
}
String surveyName = projectService.getProjectSurveyName(rSufiResult, r);
- LegacyResultRepository repository = new LegacyResultRepository(config, existingProject, path, surveyName);
+ LegacyResultRepository repository = new LegacyResultRepository(serviceContext, existingProject, path, surveyName);
if (log.isInfoEnabled()) {
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/MapResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/MapResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/MapResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -57,6 +57,14 @@
}
@Override
+ public boolean acceptResult(MapRequest request) {
+ return repository.mapsResult &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchSpecies(request);
+ }
+
+ @Override
public Map<String, String> getAvailableZones(MapRequest request) {
Preconditions.checkNotNull(request.getFacade());
@@ -103,4 +111,13 @@
return result;
}
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(MapRequest request) {
+ String species = request.getSpecies();
+ File file = repository.getMapSpeciesFile(species);
+ return file != null;
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/PopulationIndicatorResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/PopulationIndicatorResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/PopulationIndicatorResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -88,6 +88,14 @@
}
@Override
+ public boolean acceptResult(PopulationIndicatorRequest request) {
+ return repository.indicatorsResult &&
+ repository.matchFacade(request) &&
+ repository.matchZone(request) &&
+ matchSpeciesAndIndicator(request);
+ }
+
+ @Override
public Map<String, String> getAvailableZones(PopulationIndicatorRequest request) {
Preconditions.checkNotNull(request.getFacade());
@@ -131,7 +139,7 @@
boolean match = repository.indicatorsResult &&
repository.matchFacade(request) &&
repository.matchZone(request) &&
- repository.matchSpecies(request);
+ matchSpecies(request);
if (match) {
@@ -192,7 +200,6 @@
String species,
String indicator) {
-
int multiplicator = 1;
int minYear = Integer.MAX_VALUE;
int maxYear = Integer.MIN_VALUE;
@@ -305,4 +312,45 @@
return result;
}
+ // --------------------------------------------------------------------- //
+ // --- Matchers -------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchSpecies(PopulationIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+
+ String species = request.getSpecies();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchPopulationSpecies(tuple, species)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected boolean matchSpeciesAndIndicator(PopulationIndicatorRequest request) {
+ Preconditions.checkNotNull(request.getSpecies());
+ Preconditions.checkNotNull(request.getIndicator());
+
+ String species = request.getSpecies();
+ String indicator = request.getIndicator();
+
+ boolean result = false;
+
+ Iterator<String[]> iterator = repository.loadPopulationIndicatorStorage(true);
+ while (iterator.hasNext()) {
+ String[] tuple = iterator.next();
+ if (repository.matchPopulationSpeciesAndIndicator(tuple, species, indicator)) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
}
Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/RawDataResultProducer.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/RawDataResultProducer.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/repository/legacy/RawDataResultProducer.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -75,7 +75,7 @@
this.reports = repository.reports;
this.projectService = repository.projectService;
this.basedir = repository.basedir;
- this.config = repository.config;
+ this.config = repository.getConfig();
this.surveyName = repository.surveyName;
}
@@ -85,6 +85,13 @@
}
@Override
+ public boolean acceptResult(RawDataRequest request) {
+ return repository.dataResult &&
+ repository.matchFacade(request) &&
+ matchZone(request);
+ }
+
+ @Override
public Map<String, String> getAvailableZones(RawDataRequest request) {
boolean match = repository.matchFacade(request);
@@ -160,4 +167,12 @@
return result;
}
+ // --------------------------------------------------------------------- //
+ // --- Matchers ------------------------------------------------------- //
+ // --------------------------------------------------------------------- //
+
+ protected boolean matchZone(RawDataRequest request) {
+ return path.getRsufiResult().getZone().equals(request.getZone());
+ }
+
}
Added: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteRequest.java
===================================================================
--- trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteRequest.java (rev 0)
+++ trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteRequest.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -0,0 +1,74 @@
+package fr.ifremer.coser.result.request;
+
+/*
+ * #%L
+ * Coser :: Business
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.coser.result.CoserRequest;
+import fr.ifremer.coser.util.DataType;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * To delete some results.
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class DeleteRequest implements CoserRequest {
+
+ private static final long serialVersionUID = 1L;
+
+ protected Locale locale;
+
+ protected List<String> zoneList;
+
+ protected List<String> populationIndicatorList;
+
+ protected List<String> communityIndicatorList;
+
+ protected List<String> speciesList;
+
+ protected List<DataType> extractTypeList;
+
+ @Override
+ public Locale getLocale() {
+ return locale;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFilled() {
+ return !(locale == null ||
+ CollectionUtils.isEmpty(extractTypeList) ||
+ CollectionUtils.isEmpty(zoneList) ||
+ CollectionUtils.isEmpty(populationIndicatorList) ||
+ CollectionUtils.isEmpty(communityIndicatorList) ||
+ CollectionUtils.isEmpty(speciesList));
+ }
+}
Property changes on: trunk/coser-business/src/main/java/fr/ifremer/coser/result/request/DeleteRequest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryProviderTest.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -48,9 +48,9 @@
File basedir = config.getWebEchobaseProjectsDirectory();
- EchoBaseResultRepositoryProvider provider = new EchoBaseResultRepositoryProvider(config, basedir);
+ EchoBaseResultRepositoryProvider provider = new EchoBaseResultRepositoryProvider(basedir);
- Set<EchoBaseResultRepository> resultRepositories = provider.loadRepositories();
+ Set<EchoBaseResultRepository> resultRepositories = provider.loadRepositories(serviceContext);
Assert.assertNotNull(resultRepositories);
Assert.assertEquals(2, resultRepositories.size());
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/echobase/EchoBaseResultRepositoryTest.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -53,9 +53,9 @@
File projectsDirectory = config.getWebEchobaseProjectsDirectory();
copyDirectoryContent("src.test.resources.web.echobaseprojects", projectsDirectory);
- EchoBaseResultRepositoryProvider repositoryProvider = new EchoBaseResultRepositoryProvider(config, projectsDirectory);
+ EchoBaseResultRepositoryProvider repositoryProvider = new EchoBaseResultRepositoryProvider(projectsDirectory);
- Set<EchoBaseResultRepository> repositories = repositoryProvider.loadRepositories();
+ Set<EchoBaseResultRepository> repositories = repositoryProvider.loadRepositories(serviceContext);
for (EchoBaseResultRepository repository : repositories) {
String projectName = repository.project.getName();
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/result/repository/legacy/LegacyResultRepositoryProviderTest.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -49,9 +49,9 @@
File basedir = config.getWebIndicatorsProjectsDirectory();
- LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(config, basedir);
+ LegacyResultRepositoryProvider provider = new LegacyResultRepositoryProvider(basedir);
- Set<LegacyResultRepository> resultRepositories = provider.loadRepositories();
+ Set<LegacyResultRepository> resultRepositories = provider.loadRepositories(serviceContext);
Assert.assertNotNull(resultRepositories);
Assert.assertEquals(2, resultRepositories.size());
}
Modified: trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java
===================================================================
--- trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-business/src/test/java/fr/ifremer/coser/services/CoserTestAbstract.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -30,6 +30,8 @@
import java.util.Locale;
import java.util.Map;
+import fr.ifremer.coser.CoserServiceContext;
+import fr.ifremer.coser.DefaultCoserServiceContext;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -59,6 +61,7 @@
private static final Log log = LogFactory.getLog(CoserTestAbstract.class);
protected static CoserBusinessConfig config;
+ protected static CoserServiceContext serviceContext;
protected static File testDirectory;
@@ -83,6 +86,7 @@
config.setWebIndicatorsFile(CoserTestAbstract.class.getResource("/webindicators.csv").getFile());
config.setWebZonesFile(CoserTestAbstract.class.getResource("/webzones.csv").getFile());
+ serviceContext = new DefaultCoserServiceContext(config);
}
@AfterClass
Added: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java (rev 0)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -0,0 +1,103 @@
+package fr.ifremer.coser.web;
+
+/*
+ * #%L
+ * Coser :: Web
+ * %%
+ * Copyright (C) 2010 - 2014 Ifremer, Codelutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero 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 Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.coser.CoserServiceContext;
+import fr.ifremer.coser.DefaultCoserServiceContext;
+import fr.ifremer.coser.result.CoserResultEngine;
+import fr.ifremer.coser.services.WebService;
+import org.nuiton.config.ArgumentsParserException;
+import org.nuiton.i18n.I18n;
+import org.nuiton.i18n.init.DefaultI18nInitializer;
+
+/**
+ * Created on 3/11/14.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 1.5
+ */
+public class CoserApplicationContext {
+
+ /**
+ * Shared application context.
+ */
+ protected static CoserApplicationContext context;
+
+ public static CoserApplicationContext get() {
+ Preconditions.checkState(context != null, "Application was not initialized!");
+ return context;
+ }
+
+ public static void init() {
+ context = new CoserApplicationContext();
+ }
+
+ public static void close() {
+ context = null;
+ }
+
+ /**
+ * Business layer context.
+ */
+ protected CoserServiceContext businessContext;
+
+ /**
+ * Web config.
+ */
+ protected CoserWebConfig config;
+
+ //TODO Remove this soon
+ protected WebService webService;
+
+ protected CoserResultEngine resultService;
+
+ public CoserApplicationContext() {
+
+ I18n.init(new DefaultI18nInitializer("coser-i18n"), null);
+
+ config = new CoserWebConfig();
+
+ try {
+ config.parse();
+ } catch (ArgumentsParserException ex) {
+ throw new CoserWebException("Can't read configuration", ex);
+ }
+
+ businessContext = new DefaultCoserServiceContext(config);
+
+ webService = new WebService(config);
+ resultService = new CoserResultEngine(businessContext);
+ }
+
+ public WebService getWebService() {
+ return webService;
+ }
+
+ public CoserResultEngine getResultService() {
+ return resultService;
+ }
+
+ public CoserWebConfig getConfig() {
+ return config;
+ }
+}
Property changes on: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationContext.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/CoserApplicationListener.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -31,9 +31,9 @@
/**
* To listen start and end of the application.
* <p/>
- * On start we will init the service helper ({@link ServiceHelper#init()}).
+ * On start we will init the application context ({@link CoserApplicationContext#init()}).
* <p/>
- * On stop, just release close the service helper ({@link ServiceHelper#close()}).
+ * On stop, just release close the application context ({@link CoserApplicationContext#close()}).
*
* @author tchemit <chemit(a)codelutin.com>
* @since 1.5
@@ -50,9 +50,7 @@
if (log.isInfoEnabled()) {
log.info("Application starting at " + new Date() + "...");
}
-
- ServiceHelper.init();
-
+ CoserApplicationContext.init();
}
@Override
@@ -60,8 +58,6 @@
if (log.isInfoEnabled()) {
log.info("Application is ending at " + new Date() + "...");
}
-
- ServiceHelper.close();
-
+ CoserApplicationContext.close();
}
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/ServiceHelper.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -27,23 +27,17 @@
import fr.ifremer.coser.result.CoserResult;
import fr.ifremer.coser.result.CoserResultEngine;
import fr.ifremer.coser.result.FileResult;
-import fr.ifremer.coser.result.repository.ResultRepositoryProvider;
import fr.ifremer.coser.result.request.CoserRequestSpeciesAware;
import fr.ifremer.coser.result.request.CoserRequestZoneAware;
import fr.ifremer.coser.result.request.IndicatorRequest;
import fr.ifremer.coser.services.WebService;
import fr.ifremer.coser.util.DataType;
import fr.ifremer.coser.web.actions.common.CoserAction;
-import org.nuiton.config.ArgumentsParserException;
-import org.nuiton.i18n.I18n;
-import org.nuiton.i18n.init.DefaultI18nInitializer;
import java.io.File;
-import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.Set;
/**
* Wrap any call to business layer.
@@ -58,50 +52,21 @@
*/
public class ServiceHelper {
- private static WebService webService;
+ protected final CoserAction action;
- private static CoserResultEngine resultService;
+ protected final WebService webService;
- private static CoserWebConfig config;
+ protected final CoserResultEngine resultService;
+ protected final CoserWebConfig config;
- // --------------------------------------------------------------------- //
- // --- Application context methods ------------------------------------- //
- // --------------------------------------------------------------------- //
-
- public static void init() {
-
- // on a pas trop de locale là :(
- I18n.init(new DefaultI18nInitializer("coser-i18n"), null);
-
- config = new CoserWebConfig();
- try {
- config.parse();
- } catch (ArgumentsParserException ex) {
- throw new CoserWebException("Can't read configuration", ex);
- }
-
- webService = new WebService(config);
-
- Set<ResultRepositoryProvider<?>> providers =
- CoserResultEngine.createDefaultRepositoryProviders(config);
- resultService = new CoserResultEngine(providers);
- }
-
- public static void close() {
- webService = null;
- resultService = null;
- config = null;
- }
-
- private final CoserAction action;
-
public ServiceHelper(CoserAction action) {
- Preconditions.checkNotNull(config);
- Preconditions.checkNotNull(webService);
- Preconditions.checkNotNull(resultService);
Preconditions.checkNotNull(action);
+ CoserApplicationContext applicationContext = CoserApplicationContext.get();
this.action = action;
+ this.webService = applicationContext.getWebService();
+ this.resultService = applicationContext.getResultService();
+ this.config = applicationContext.getConfig();
}
// --------------------------------------------------------------------- //
@@ -279,12 +244,7 @@
// --- Misc methods ---------------------------------------------------- //
// --------------------------------------------------------------------- //
- public Date getLastDataUpdateDate() {
- return getConfig().getLastDataUpdateDate();
- }
-
public CoserWebConfig getConfig() {
return config;
}
-
}
Modified: trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java
===================================================================
--- trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2014-03-11 14:45:05 UTC (rev 1143)
+++ trunk/coser-web/src/main/java/fr/ifremer/coser/web/actions/IndexAction.java 2014-03-11 16:45:58 UTC (rev 1144)
@@ -67,7 +67,7 @@
@Override
public String execute() {
- dataUpdateDate = getService().getLastDataUpdateDate();
+ dataUpdateDate = getService().getConfig().getLastDataUpdateDate();
return SUCCESS;
}
1
0
Author: tchemit
Date: 2014-03-11 15:45:05 +0100 (Tue, 11 Mar 2014)
New Revision: 1143
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1143
Log:
fix dependencies
Modified:
trunk/coser-ui/pom.xml
Modified: trunk/coser-ui/pom.xml
===================================================================
--- trunk/coser-ui/pom.xml 2014-03-11 13:54:41 UTC (rev 1142)
+++ trunk/coser-ui/pom.xml 2014-03-11 14:45:05 UTC (rev 1143)
@@ -93,6 +93,10 @@
<artifactId>commons-email</artifactId>
</dependency>
<dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
1
0
Author: tchemit
Date: 2014-03-11 14:54:41 +0100 (Tue, 11 Mar 2014)
New Revision: 1142
Url: http://forge.codelutin.com/projects/coser/repository/revisions/1142
Log:
use last mavenpom
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-03-11 09:28:43 UTC (rev 1141)
+++ trunk/pom.xml 2014-03-11 13:54:41 UTC (rev 1142)
@@ -5,7 +5,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>5.0.1-SNAPSHOT</version>
+ <version>5.0.1</version>
</parent>
<groupId>fr.ifremer</groupId>
1
0