T3-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
- 424 discussions
[Git][ultreiaio/ird-t3][develop] [jgitflow-maven-plugin]updating poms for 2.6-SNAPSHOT development[skip ci]
by Tony CHEMIT 23 Mar '18
by Tony CHEMIT 23 Mar '18
23 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
cdf9ffad by Tony CHEMIT at 2018-03-23T17:54:11Z
[jgitflow-maven-plugin]updating poms for 2.6-SNAPSHOT development[skip ci]
- - - - -
11 changed files:
- pom.xml
- t3-actions/pom.xml
- t3-domain/pom.xml
- t3-input-avdthv33/pom.xml
- t3-input-avdthv35/pom.xml
- t3-input-avdthv36/pom.xml
- t3-installer/pom.xml
- t3-msaccess-importer/pom.xml
- t3-output-balbayav32/pom.xml
- t3-web/pom.xml
- t3/pom.xml
Changes:
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
<packaging>pom</packaging>
<name>T3 :: Pom</name>
=====================================
t3-actions/pom.xml
=====================================
--- a/t3-actions/pom.xml
+++ b/t3-actions/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
</parent>
<artifactId>t3-actions</artifactId>
=====================================
t3-domain/pom.xml
=====================================
--- a/t3-domain/pom.xml
+++ b/t3-domain/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
</parent>
<artifactId>t3-domain</artifactId>
=====================================
t3-input-avdthv33/pom.xml
=====================================
--- a/t3-input-avdthv33/pom.xml
+++ b/t3-input-avdthv33/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
</parent>
<artifactId>t3-input-avdthv33</artifactId>
=====================================
t3-input-avdthv35/pom.xml
=====================================
--- a/t3-input-avdthv35/pom.xml
+++ b/t3-input-avdthv35/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
</parent>
<artifactId>t3-input-avdthv35</artifactId>
=====================================
t3-input-avdthv36/pom.xml
=====================================
--- a/t3-input-avdthv36/pom.xml
+++ b/t3-input-avdthv36/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
</parent>
<artifactId>t3-input-avdthv36</artifactId>
=====================================
t3-installer/pom.xml
=====================================
--- a/t3-installer/pom.xml
+++ b/t3-installer/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
</parent>
<artifactId>t3-installer</artifactId>
=====================================
t3-msaccess-importer/pom.xml
=====================================
--- a/t3-msaccess-importer/pom.xml
+++ b/t3-msaccess-importer/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
</parent>
<artifactId>t3-msaccess-importer</artifactId>
=====================================
t3-output-balbayav32/pom.xml
=====================================
--- a/t3-output-balbayav32/pom.xml
+++ b/t3-output-balbayav32/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
</parent>
<artifactId>t3-output-balbayav32</artifactId>
=====================================
t3-web/pom.xml
=====================================
--- a/t3-web/pom.xml
+++ b/t3-web/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
</parent>
<artifactId>t3-web</artifactId>
=====================================
t3/pom.xml
=====================================
--- a/t3/pom.xml
+++ b/t3/pom.xml
@@ -26,7 +26,7 @@
<parent>
<groupId>fr.ird.t3</groupId>
<artifactId>ird-t3</artifactId>
- <version>2.5-SNAPSHOT</version>
+ <version>2.6-SNAPSHOT</version>
</parent>
<artifactId>t3</artifactId>
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/cdf9ffad7f04258a53c81954f5495c0d…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/cdf9ffad7f04258a53c81954f5495c0d…
You're receiving this email because of your account on gitlab.com.
1
0
Tony CHEMIT pushed new branch release/2.5 at ultreiaio / ird-t3
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/tree/release/2.5
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-t3][develop] Simplification des bases en entrée (Closes #302)
by Tony CHEMIT 23 Mar '18
by Tony CHEMIT 23 Mar '18
23 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
d5e63496 by Tony CHEMIT at 2018-03-23T17:41:36Z
Simplification des bases en entrée (Closes #302)
- - - - -
7 changed files:
- t3-domain/src/main/java/fr/ird/t3/entities/user/UserDatabase.java
- t3-domain/src/main/java/fr/ird/t3/services/UserService.java
- t3-web/src/main/java/fr/ird/t3/web/actions/admin/AbstractUserDatabaseAction.java
- t3-web/src/main/resources/i18n/t3-web_en_GB.properties
- t3-web/src/main/resources/i18n/t3-web_fr_FR.properties
- t3-web/src/main/webapp/WEB-INF/jsp/admin/databaseConfigurationForm.jsp
- t3-web/src/main/webapp/WEB-INF/jsp/user/selectUserInputDatabase.jsp
Changes:
=====================================
t3-domain/src/main/java/fr/ird/t3/entities/user/UserDatabase.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/entities/user/UserDatabase.java
+++ b/t3-domain/src/main/java/fr/ird/t3/entities/user/UserDatabase.java
@@ -10,12 +10,12 @@ package fr.ird.t3.entities.user;
* 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%
@@ -34,6 +34,8 @@ public class UserDatabase extends AbstractJavaBean implements Idable {
protected String login;
+ protected String password;
+
protected String id;
public String getUrl() {
@@ -67,4 +69,12 @@ public class UserDatabase extends AbstractJavaBean implements Idable {
public void setId(String id) {
this.id = id;
}
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
}
=====================================
t3-domain/src/main/java/fr/ird/t3/services/UserService.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/services/UserService.java
+++ b/t3-domain/src/main/java/fr/ird/t3/services/UserService.java
@@ -8,12 +8,12 @@
* 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%
@@ -40,6 +40,10 @@ import java.util.UUID;
*/
public class UserService extends T3ServiceSupport implements T3ServiceInjectable {
+ private static String encodePassword(String password) {
+ return StringUtil.encodeMD5(password);
+ }
+
public Optional<T3User> getUserByLogin(String login) {
return getT3Users().usersStream().whereLogin().isEquals(login).filter().findFirst();
}
@@ -79,7 +83,6 @@ public class UserService extends T3ServiceSupport implements T3ServiceInjectable
commit();
}
-
public void deleteUser(String userId) {
T3User user = getUserById(userId);
getT3Users().getUsers().remove(user);
@@ -93,6 +96,7 @@ public class UserService extends T3ServiceSupport implements T3ServiceInjectable
.description(dbConfiguration.getDescription())
.login(dbConfiguration.getLogin())
.url(dbConfiguration.getUrl())
+ .password(dbConfiguration.getPassword())
.build();
user.getInputs().add(dbConfigurationToSave);
dbConfiguration.setId(dbConfigurationToSave.getId());
@@ -101,7 +105,7 @@ public class UserService extends T3ServiceSupport implements T3ServiceInjectable
public void updateUserInputDatabase(UserDatabase dbConfiguration) {
UserDatabase dbConfigurationToSave = getUserInputDatabase(dbConfiguration.getId());
- updateDatabaseConfiguration(dbConfiguration, dbConfigurationToSave);
+ dbConfiguration.copy(dbConfigurationToSave);
commit();
}
@@ -119,6 +123,7 @@ public class UserService extends T3ServiceSupport implements T3ServiceInjectable
.description(dbConfiguration.getDescription())
.login(dbConfiguration.getLogin())
.url(dbConfiguration.getUrl())
+ .password(dbConfiguration.getPassword())
.build();
user.getOutputs().add(dbConfigurationToSave);
dbConfiguration.setId(dbConfigurationToSave.getId());
@@ -127,7 +132,7 @@ public class UserService extends T3ServiceSupport implements T3ServiceInjectable
public void updateUserOutputDatabase(UserDatabase dbConfiguration) {
UserDatabase dbConfigurationToSave = getUserOutputDatabase(dbConfiguration.getId());
- updateDatabaseConfiguration(dbConfiguration, dbConfigurationToSave);
+ dbConfiguration.copy(dbConfigurationToSave);
commit();
}
@@ -151,16 +156,6 @@ public class UserService extends T3ServiceSupport implements T3ServiceInjectable
return s.equals(user.getPassword());
}
- private static String encodePassword(String password) {
- return StringUtil.encodeMD5(password);
- }
-
- private void updateDatabaseConfiguration(UserDatabase dbConfiguration, UserDatabase dbConfigurationToSave) {
- dbConfigurationToSave.setDescription(dbConfiguration.getDescription());
- dbConfigurationToSave.setUrl(dbConfiguration.getUrl());
- dbConfigurationToSave.setLogin(dbConfiguration.getLogin());
- }
-
private void commit() {
getT3Users().save();
}
=====================================
t3-web/src/main/java/fr/ird/t3/web/actions/admin/AbstractUserDatabaseAction.java
=====================================
--- a/t3-web/src/main/java/fr/ird/t3/web/actions/admin/AbstractUserDatabaseAction.java
+++ b/t3-web/src/main/java/fr/ird/t3/web/actions/admin/AbstractUserDatabaseAction.java
@@ -108,6 +108,7 @@ public abstract class AbstractUserDatabaseAction extends T3ActionSupport impleme
String userId = getUser().getId();
String description = configuration.getDescription();
String login = configuration.getLogin();
+ String password = configuration.getPassword();
String url = configuration.getUrl();
String id = configuration.getId();
boolean noError = true;
@@ -129,7 +130,11 @@ public abstract class AbstractUserDatabaseAction extends T3ActionSupport impleme
addFieldError("databaseConfiguration.login", t("t3.error.required.login"));
noError = false;
}
-
+ if (StringUtils.isEmpty(password)) {
+ // empty user password
+ addFieldError("databaseConfiguration.password", t("t3.error.required.password"));
+ noError = false;
+ }
if (noError) {
// check now the configuration does not already exist with same description for this user
T3User t3User = getUserService().getUserById(userId);
@@ -169,6 +174,11 @@ public abstract class AbstractUserDatabaseAction extends T3ActionSupport impleme
addFieldError("databaseConfiguration.login", t("t3.error.required.login"));
noError = false;
}
+ if (StringUtils.isEmpty(password)) {
+ // empty user password
+ addFieldError("databaseConfiguration.password", t("t3.error.required.password"));
+ noError = false;
+ }
if (noError) {
// check now the configuration does not already exist with same description for this user
T3User t3User = getUserService().getUserById(userId);
=====================================
t3-web/src/main/resources/i18n/t3-web_en_GB.properties
=====================================
--- a/t3-web/src/main/resources/i18n/t3-web_en_GB.properties
+++ b/t3-web/src/main/resources/i18n/t3-web_en_GB.properties
@@ -1,3 +1,4 @@
+t3.common.password=Password
t3.action.applyFilter=Apply
t3.action.back.to.configuration.step1=Back to step 1 of configuration
t3.action.back.to.configuration.step2=Back to step 2 of configuration
=====================================
t3-web/src/main/resources/i18n/t3-web_fr_FR.properties
=====================================
--- a/t3-web/src/main/resources/i18n/t3-web_fr_FR.properties
+++ b/t3-web/src/main/resources/i18n/t3-web_fr_FR.properties
@@ -9,6 +9,7 @@ t3.action.connectToDatabase=Se connecter à la base
t3.action.create=Créer
t3.action.create.parametersProfile=Créer un profile de paramètre
t3.action.create.user=Créer un utilisateur
+t3.common.password=Mot de passe
t3.action.delete=Supprimer
t3.action.deleteComputedData=Suppression des données calculées
t3.action.deleteTrips=Suppression des marées
=====================================
t3-web/src/main/webapp/WEB-INF/jsp/admin/databaseConfigurationForm.jsp
=====================================
--- a/t3-web/src/main/webapp/WEB-INF/jsp/admin/databaseConfigurationForm.jsp
+++ b/t3-web/src/main/webapp/WEB-INF/jsp/admin/databaseConfigurationForm.jsp
@@ -37,16 +37,13 @@
</s:elseif>
<s:if test="databaseEditAction == 'create'">
- <s:set name="title"><s:text
- name="t3.label.admin.databaseconfiguration.create"/></s:set>
+ <s:set name="title"><s:text name="t3.label.admin.databaseconfiguration.create"/></s:set>
</s:if>
<s:elseif test="databaseEditAction =='edit'">
- <s:set name="title"><s:text
- name="t3.label.admin.databaseconfiguration.edit"/></s:set>
+ <s:set name="title"><s:text name="t3.label.admin.databaseconfiguration.edit"/></s:set>
</s:elseif>
<s:elseif test="databaseEditAction == 'delete'">
- <s:set name="title"><s:text
- name="t3.label.admin.databaseconfiguration.delete"/></s:set>
+ <s:set name="title"><s:text name="t3.label.admin.databaseconfiguration.delete"/></s:set>
</s:elseif>
<title><s:property value="#title"/></title>
@@ -65,8 +62,12 @@
<s:hidden name="userEditAction" value="edit"/>
<s:hidden key="user.id" label=""/>
<s:textfield key="databaseConfiguration.url" label="%{getText('t3.common.url')}" size="40" requiredLabel="true"/>
- <s:textfield key="databaseConfiguration.description" label="%{getText('t3.common.description')}" size="40" requiredLabel="true"/>
- <s:textfield key="databaseConfiguration.login" label="%{getText('t3.common.login')}" size="40" requiredLabel="true"/>
+ <s:textfield key="databaseConfiguration.description" label="%{getText('t3.common.description')}" size="40"
+ requiredLabel="true"/>
+ <s:textfield key="databaseConfiguration.login" label="%{getText('t3.common.login')}" size="40"
+ requiredLabel="true"/>
+ <s:textfield key="databaseConfiguration.password" label="%{getText('t3.common.password')}" size="40"
+ requiredLabel="true"/>
</fieldset>
<br/>
<s:submit action="%{databaseAction}!doCreate" key="t3.action.create" align="right"/>
@@ -86,8 +87,12 @@
<s:hidden key="user.id" label=""/>
<s:hidden name="databaseConfiguration.id" label=""/>
<s:textfield key="databaseConfiguration.url" label="%{getText('t3.common.url')}" size="40" requiredLabel="true"/>
- <s:textfield key="databaseConfiguration.description" label="%{getText('t3.common.description')}" size="40" requiredLabel="true"/>
- <s:textfield key="databaseConfiguration.login" label="%{getText('t3.common.login')}" size="40" requiredLabel="true"/>
+ <s:textfield key="databaseConfiguration.description" label="%{getText('t3.common.description')}" size="40"
+ requiredLabel="true"/>
+ <s:textfield key="databaseConfiguration.login" label="%{getText('t3.common.login')}" size="40"
+ requiredLabel="true"/>
+ <s:textfield key="databaseConfiguration.password" label="%{getText('t3.common.password')}" size="40"
+ requiredLabel="true"/>
</fieldset>
<br/>
<s:submit action="%{databaseAction}!doUpdate" key="t3.action.save" align="right"/>
@@ -105,26 +110,18 @@
<s:hidden key="userEditAction" label="" value="edit"/>
<s:hidden key="user.id" label=""/>
<s:hidden name="databaseConfiguration.id" label=""/>
- <s:textfield key="databaseConfiguration.url"
- label="%{getText('t3.common.url')}"
- size="40" disabled="true"/>
- <s:textfield key="databaseConfiguration.description"
- label="%{getText('t3.common.description')}" size="40"
- disabled="true"/>
- <s:textfield key="databaseConfiguration.login"
- label="%{getText('t3.common.login')}"
- size="40" disabled="true"/>
+ <s:textfield key="databaseConfiguration.url" label="%{getText('t3.common.url')}" size="40" disabled="true"/>
+ <s:textfield key="databaseConfiguration.description" label="%{getText('t3.common.description')}" size="40" disabled="true"/>
+ <s:textfield key="databaseConfiguration.login" label="%{getText('t3.common.login')}" size="40" disabled="true"/>
</fieldset>
<br/>
- <s:submit action="%{databaseAction}!doDelete" key="t3.action.delete"
- align="right"/>
+ <s:submit action="%{databaseAction}!doDelete" key="t3.action.delete" align="right"/>
</s:form>
</s:elseif>
<s:form method="post" namespace="/user">
<s:hidden name="userEditAction" value="edit"/>
<s:hidden key="user.id" label=""/>
- <s:submit action="userForm!input" key="t3.label.admin.backToUser"
- align="right"/>
+ <s:submit action="userForm!input" key="t3.label.admin.backToUser" align="right"/>
</s:form>
=====================================
t3-web/src/main/webapp/WEB-INF/jsp/user/selectUserInputDatabase.jsp
=====================================
--- a/t3-web/src/main/webapp/WEB-INF/jsp/user/selectUserInputDatabase.jsp
+++ b/t3-web/src/main/webapp/WEB-INF/jsp/user/selectUserInputDatabase.jsp
@@ -35,7 +35,7 @@
var database = data.database;
$('[name="database.url"]').attr('value', database.url ? database.url : '');
$('[name="database.login"]').attr('value', database.login ? database.login : '');
- $('[name="database.password"]').attr('value', "");
+ $('[name="database.password"]').attr('value', database.password ? database.password : '');
}
);
});
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/d5e63496d000fbda8b8e3e911656ee86…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/d5e63496d000fbda8b8e3e911656ee86…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-t3][develop] use t3 data 1.6 + introduce Activity cache
by Tony CHEMIT 23 Mar '18
by Tony CHEMIT 23 Mar '18
23 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
772a1f75 by Tony CHEMIT at 2018-03-23T17:00:07Z
use t3 data 1.6 + introduce Activity cache
- - - - -
7 changed files:
- pom.xml
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelStratumConfigurationIterator.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
- t3-domain/src/main/java/fr/ird/t3/entities/T3TopiaPersistenceContext.java
- + t3-domain/src/main/java/fr/ird/t3/entities/cache/ActivityCache.java
Changes:
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -99,7 +99,7 @@
<projectId>ird-t3</projectId>
<stageId>frirdt3</stageId>
<applicationName>t3</applicationName>
- <t3-data.version>1.6-SNAPSHOT</t3-data.version>
+ <t3-data.version>1.6</t3-data.version>
<lib.version.java4all.i18n>4.0-alpha-11</lib.version.java4all.i18n>
<env>dev</env>
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
@@ -25,7 +25,6 @@ import fr.ird.t3.actions.stratum.LevelInputContext;
import fr.ird.t3.entities.data.CorrectedElementaryCatch;
import java.util.Collection;
-import java.util.concurrent.ExecutionException;
/**
* A context to get all input data for the execution of action.
@@ -40,8 +39,8 @@ public class Level2InputContext extends LevelInputContext<Level2Configuration, L
super(action);
}
- public Collection<CorrectedElementaryCatch> getCorrectedElementaryCatch(String activityId) throws ExecutionException {
- return getActivityCache().get(activityId).getCorrectedElementaryCatch();
+ public Collection<CorrectedElementaryCatch> getCorrectedElementaryCatch(String activityId) {
+ return getActivityCache().forId(activityId).getCorrectedElementaryCatch();
}
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
@@ -21,12 +21,10 @@ package fr.ird.t3.actions.stratum;
* #L%
*/
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
import fr.ird.t3.actions.T3Action;
import fr.ird.t3.entities.T3Predicates;
import fr.ird.t3.entities.T3TopiaPersistenceContext;
+import fr.ird.t3.entities.cache.ActivityCache;
import fr.ird.t3.entities.cache.LengthWeightConversionWithContextCache;
import fr.ird.t3.entities.cache.WeightCategoryTreatmentCache;
import fr.ird.t3.entities.cache.ZoneStratumCache;
@@ -53,7 +51,6 @@ import fr.ird.t3.services.ioc.InjectFromDAO;
import java.util.Collection;
import java.util.Date;
import java.util.List;
-import java.util.Objects;
import java.util.Set;
import java.util.function.Predicate;
import java.util.function.Supplier;
@@ -70,7 +67,7 @@ public abstract class LevelInputContext<C extends LevelConfigurationWithStratum,
/**
* Cache of activity (to avoid to reload them for catch and sample stratum).
*/
- private final LoadingCache<String, Activity> activityCache;
+ private final ActivityCache activityCache;
/**
* Cache of {@link WeightCategoryTreatment}.
*/
@@ -155,14 +152,8 @@ public abstract class LevelInputContext<C extends LevelConfigurationWithStratum,
} catch (Exception e) {
throw new IllegalStateException("can't inject to " + this, e);
}
- this.activityCache = CacheBuilder.newBuilder().build(
- new CacheLoader<String, Activity>() {
- @Override
- public Activity load(@SuppressWarnings("NullableProblems") String key) {
- return activityDAO.forTopiaIdEquals(Objects.requireNonNull(key)).findUnique();
- }
- });
T3TopiaPersistenceContext persistenceContext = action.getT3TopiaPersistenceContext().get();
+ this.activityCache = persistenceContext.newActivityCache();
this.weightCategoryCache = persistenceContext.newWeightCategoryTreatmentCache();
C configuration = action.getConfiguration();
configuration.setLocale(action.getLocale());
@@ -216,7 +207,7 @@ public abstract class LevelInputContext<C extends LevelConfigurationWithStratum,
return nbStratum;
}
- public LoadingCache<String, Activity> getActivityCache() {
+ public ActivityCache getActivityCache() {
return activityCache;
}
@@ -281,6 +272,6 @@ public abstract class LevelInputContext<C extends LevelConfigurationWithStratum,
}
public void clear() {
- activityCache.invalidateAll();
+ activityCache.clear();
}
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelStratumConfigurationIterator.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelStratumConfigurationIterator.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelStratumConfigurationIterator.java
@@ -119,6 +119,8 @@ public abstract class LevelStratumConfigurationIterator<C extends LevelConfigura
}
protected void nextSchoolType() {
+ // each time we change school type, we are sure to not cross again a previous loaded activity, so can clear cache
+ inputContext.getActivityCache().clear();
currentSchoolType = schoolTypeIterator.next();
currentZones = inputContext.getZones(currentSchoolType);
currentWeightCategoryTreatments = inputContext.getWeightCategoryTreatments(currentSchoolType);
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
@@ -39,7 +39,6 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import java.util.concurrent.ExecutionException;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.function.Predicate;
@@ -185,11 +184,7 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum, A ext
}
public Activity getActivity(String activityId) {
- try {
- return inputContext.getActivityCache().get(activityId);
- } catch (ExecutionException e) {
- throw new RuntimeException(String.format("Could not obtain activity %s", activityId), e);
- }
+ return inputContext.getActivityCache().forId(activityId);
}
@Override
=====================================
t3-domain/src/main/java/fr/ird/t3/entities/T3TopiaPersistenceContext.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/entities/T3TopiaPersistenceContext.java
+++ b/t3-domain/src/main/java/fr/ird/t3/entities/T3TopiaPersistenceContext.java
@@ -21,6 +21,7 @@ package fr.ird.t3.entities;
* #L%
*/
+import fr.ird.t3.entities.cache.ActivityCache;
import fr.ird.t3.entities.cache.LengthWeightConversionCache;
import fr.ird.t3.entities.cache.LengthWeightConversionWithContextCache;
import fr.ird.t3.entities.cache.WeightCategoryTreatmentCache;
@@ -37,6 +38,10 @@ public class T3TopiaPersistenceContext extends AbstractT3TopiaPersistenceContext
super(parameter);
}
+ public ActivityCache newActivityCache() {
+ return new ActivityCache(getActivityDao());
+ }
+
public WeightCategoryTreatmentCache newWeightCategoryTreatmentCache() {
return new WeightCategoryTreatmentCache(getWeightCategoryTreatmentDao());
}
=====================================
t3-domain/src/main/java/fr/ird/t3/entities/cache/ActivityCache.java
=====================================
--- /dev/null
+++ b/t3-domain/src/main/java/fr/ird/t3/entities/cache/ActivityCache.java
@@ -0,0 +1,59 @@
+/*
+ * #%L
+ * T3 :: Domain
+ * %%
+ * Copyright (C) 2010 - 2018 IRD, Code Lutin, Ultreia.io
+ * %%
+ * 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%
+ */
+package fr.ird.t3.entities.cache;
+
+import fr.ird.t3.entities.data.Activity;
+import fr.ird.t3.entities.data.ActivityTopiaDao;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * Created by tchemit on 23/03/2018.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ */
+public class ActivityCache {
+
+ private static final Log log = LogFactory.getLog(ActivityCache.class);
+ private final Map<String, Activity> cache;
+ private final ActivityTopiaDao activityDAO;
+
+ public ActivityCache(ActivityTopiaDao activityDAO) {
+ this.activityDAO = activityDAO;
+ this.cache = new TreeMap<>();
+ }
+
+ public Activity forId(String activityId) {
+ Activity result = cache.get(activityId);
+ if (result == null) {
+ log.info(String.format("Cache Activity [%d] for %s", cache.size(), activityId));
+ cache.put(activityId, result = activityDAO.forTopiaIdEquals(activityId).findUnique());
+ }
+ return result;
+ }
+
+ public void clear() {
+ cache.clear();
+ }
+}
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/772a1f75b68d30b42bad1caad164acc5…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/772a1f75b68d30b42bad1caad164acc5…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-t3][develop] use t3 data 1.6 + introduce Activity cache
by Tony CHEMIT 23 Mar '18
by Tony CHEMIT 23 Mar '18
23 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
620e32dd by Tony CHEMIT at 2018-03-23T16:54:04Z
use t3 data 1.6 + introduce Activity cache
- - - - -
6 changed files:
- pom.xml
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
- t3-domain/src/main/java/fr/ird/t3/entities/T3TopiaPersistenceContext.java
- + t3-domain/src/main/java/fr/ird/t3/entities/cache/ActivityCache.java
Changes:
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -99,7 +99,7 @@
<projectId>ird-t3</projectId>
<stageId>frirdt3</stageId>
<applicationName>t3</applicationName>
- <t3-data.version>1.6-SNAPSHOT</t3-data.version>
+ <t3-data.version>1.6</t3-data.version>
<lib.version.java4all.i18n>4.0-alpha-11</lib.version.java4all.i18n>
<env>dev</env>
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
@@ -25,7 +25,6 @@ import fr.ird.t3.actions.stratum.LevelInputContext;
import fr.ird.t3.entities.data.CorrectedElementaryCatch;
import java.util.Collection;
-import java.util.concurrent.ExecutionException;
/**
* A context to get all input data for the execution of action.
@@ -40,8 +39,8 @@ public class Level2InputContext extends LevelInputContext<Level2Configuration, L
super(action);
}
- public Collection<CorrectedElementaryCatch> getCorrectedElementaryCatch(String activityId) throws ExecutionException {
- return getActivityCache().get(activityId).getCorrectedElementaryCatch();
+ public Collection<CorrectedElementaryCatch> getCorrectedElementaryCatch(String activityId) {
+ return getActivityCache().forId(activityId).getCorrectedElementaryCatch();
}
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
@@ -21,12 +21,10 @@ package fr.ird.t3.actions.stratum;
* #L%
*/
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
import fr.ird.t3.actions.T3Action;
import fr.ird.t3.entities.T3Predicates;
import fr.ird.t3.entities.T3TopiaPersistenceContext;
+import fr.ird.t3.entities.cache.ActivityCache;
import fr.ird.t3.entities.cache.LengthWeightConversionWithContextCache;
import fr.ird.t3.entities.cache.WeightCategoryTreatmentCache;
import fr.ird.t3.entities.cache.ZoneStratumCache;
@@ -53,7 +51,6 @@ import fr.ird.t3.services.ioc.InjectFromDAO;
import java.util.Collection;
import java.util.Date;
import java.util.List;
-import java.util.Objects;
import java.util.Set;
import java.util.function.Predicate;
import java.util.function.Supplier;
@@ -70,7 +67,7 @@ public abstract class LevelInputContext<C extends LevelConfigurationWithStratum,
/**
* Cache of activity (to avoid to reload them for catch and sample stratum).
*/
- private final LoadingCache<String, Activity> activityCache;
+ private final ActivityCache activityCache;
/**
* Cache of {@link WeightCategoryTreatment}.
*/
@@ -155,14 +152,8 @@ public abstract class LevelInputContext<C extends LevelConfigurationWithStratum,
} catch (Exception e) {
throw new IllegalStateException("can't inject to " + this, e);
}
- this.activityCache = CacheBuilder.newBuilder().build(
- new CacheLoader<String, Activity>() {
- @Override
- public Activity load(@SuppressWarnings("NullableProblems") String key) {
- return activityDAO.forTopiaIdEquals(Objects.requireNonNull(key)).findUnique();
- }
- });
T3TopiaPersistenceContext persistenceContext = action.getT3TopiaPersistenceContext().get();
+ this.activityCache = persistenceContext.newActivityCache();
this.weightCategoryCache = persistenceContext.newWeightCategoryTreatmentCache();
C configuration = action.getConfiguration();
configuration.setLocale(action.getLocale());
@@ -216,7 +207,7 @@ public abstract class LevelInputContext<C extends LevelConfigurationWithStratum,
return nbStratum;
}
- public LoadingCache<String, Activity> getActivityCache() {
+ public ActivityCache getActivityCache() {
return activityCache;
}
@@ -281,6 +272,6 @@ public abstract class LevelInputContext<C extends LevelConfigurationWithStratum,
}
public void clear() {
- activityCache.invalidateAll();
+ activityCache.clear();
}
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
@@ -39,7 +39,6 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import java.util.concurrent.ExecutionException;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.function.Predicate;
@@ -185,11 +184,7 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum, A ext
}
public Activity getActivity(String activityId) {
- try {
- return inputContext.getActivityCache().get(activityId);
- } catch (ExecutionException e) {
- throw new RuntimeException(String.format("Could not obtain activity %s", activityId), e);
- }
+ return inputContext.getActivityCache().forId(activityId);
}
@Override
=====================================
t3-domain/src/main/java/fr/ird/t3/entities/T3TopiaPersistenceContext.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/entities/T3TopiaPersistenceContext.java
+++ b/t3-domain/src/main/java/fr/ird/t3/entities/T3TopiaPersistenceContext.java
@@ -21,6 +21,7 @@ package fr.ird.t3.entities;
* #L%
*/
+import fr.ird.t3.entities.cache.ActivityCache;
import fr.ird.t3.entities.cache.LengthWeightConversionCache;
import fr.ird.t3.entities.cache.LengthWeightConversionWithContextCache;
import fr.ird.t3.entities.cache.WeightCategoryTreatmentCache;
@@ -37,6 +38,10 @@ public class T3TopiaPersistenceContext extends AbstractT3TopiaPersistenceContext
super(parameter);
}
+ public ActivityCache newActivityCache() {
+ return new ActivityCache(getActivityDao());
+ }
+
public WeightCategoryTreatmentCache newWeightCategoryTreatmentCache() {
return new WeightCategoryTreatmentCache(getWeightCategoryTreatmentDao());
}
=====================================
t3-domain/src/main/java/fr/ird/t3/entities/cache/ActivityCache.java
=====================================
--- /dev/null
+++ b/t3-domain/src/main/java/fr/ird/t3/entities/cache/ActivityCache.java
@@ -0,0 +1,59 @@
+/*
+ * #%L
+ * T3 :: Domain
+ * %%
+ * Copyright (C) 2010 - 2018 IRD, Code Lutin, Ultreia.io
+ * %%
+ * 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%
+ */
+package fr.ird.t3.entities.cache;
+
+import fr.ird.t3.entities.data.Activity;
+import fr.ird.t3.entities.data.ActivityTopiaDao;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * Created by tchemit on 23/03/2018.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ */
+public class ActivityCache {
+
+ private static final Log log = LogFactory.getLog(ActivityCache.class);
+ private final Map<String, Activity> cache;
+ private final ActivityTopiaDao activityDAO;
+
+ public ActivityCache(ActivityTopiaDao activityDAO) {
+ this.activityDAO = activityDAO;
+ this.cache = new TreeMap<>();
+ }
+
+ public Activity forId(String activityId) {
+ Activity result = cache.get(activityId);
+ if (result == null) {
+ log.info(String.format("Cache Activity [%d] for %s", cache.size(), activityId));
+ cache.put(activityId, result = activityDAO.forTopiaIdEquals(activityId).findUnique());
+ }
+ return result;
+ }
+
+ public void clear() {
+ cache.clear();
+ }
+}
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/620e32dde6c9a0d4b7c2aaec09f837c6…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/620e32dde6c9a0d4b7c2aaec09f837c6…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-t3][develop] add more tests for cache + fix some harbour oceans and fix his request)
by Tony CHEMIT 23 Mar '18
by Tony CHEMIT 23 Mar '18
23 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
179ad7bb by Tony CHEMIT at 2018-03-23T15:01:26Z
add more tests for cache + fix some harbour oceans and fix his request)
- - - - -
10 changed files:
- t3-actions/src/main/java/fr/ird/t3/FakeT3ServiceContext.java
- t3-domain/pom.xml
- t3-domain/src/main/java/fr/ird/t3/entities/cache/WeightCategoryTreatmentCache.java
- t3-domain/src/main/java/fr/ird/t3/entities/cache/ZoneStratumCache.java
- t3-domain/src/main/java/fr/ird/t3/entities/reference/AbstractOceanTopiaDao.java
- t3-domain/src/main/java/fr/ird/t3/test/T3H2Database.java
- t3-domain/src/main/resources/db/migration/V2_1_09_fill-Harbour-ocean.sql
- + t3-domain/src/test/java/fr/ird/t3/entities/cache/WeightCategoryTreatmentCacheTest.java
- + t3-domain/src/test/java/fr/ird/t3/entities/cache/ZoneStratumCacheTest.java
- t3-domain/src/test/java/fr/ird/t3/entities/reference/OceanTopiaDaoPgTest.java
Changes:
=====================================
t3-actions/src/main/java/fr/ird/t3/FakeT3ServiceContext.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/FakeT3ServiceContext.java
+++ b/t3-actions/src/main/java/fr/ird/t3/FakeT3ServiceContext.java
@@ -21,28 +21,16 @@
package fr.ird.t3;
import fr.ird.t3.entities.T3TopiaApplicationContext;
-import fr.ird.t3.entities.T3TopiaApplicationContextBuilder;
import fr.ird.t3.entities.T3TopiaPersistenceContext;
import fr.ird.t3.entities.user.T3Users;
import fr.ird.t3.services.T3Service;
import fr.ird.t3.services.T3ServiceContext;
import fr.ird.t3.services.T3ServiceFactory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.Assume;
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-import org.mockito.Mockito;
+import fr.ird.t3.test.T3H2Database;
import org.nuiton.topia.persistence.TopiaException;
-import org.nuiton.util.FileUtil;
-import org.nuiton.version.Version;
-import java.io.Closeable;
-import java.io.File;
import java.util.Date;
import java.util.Locale;
-import java.util.Properties;
import java.util.function.Supplier;
/**
@@ -51,25 +39,19 @@ import java.util.function.Supplier;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.1.1
*/
-public class FakeT3ServiceContext implements TestRule, T3ServiceContext, Closeable {
-
- private static final Log log = LogFactory.getLog(FakeT3ServiceContext.class);
+public class FakeT3ServiceContext extends T3H2Database implements T3ServiceContext {
private final T3ServiceFactory serviceFactory = new T3ServiceFactory();
- private final boolean injectReferential;
protected T3TopiaPersistenceContext transaction;
- private T3TopiaApplicationContext rootContext;
- private File testDir;
- private T3Config applicationConfiguration;
private Locale locale;
- private boolean initOk;
+
public FakeT3ServiceContext() {
this(false);
}
public FakeT3ServiceContext(boolean injectReferential) {
- this.injectReferential = injectReferential;
+ super(injectReferential);
setLocale(Locale.FRANCE);
}
@@ -78,10 +60,6 @@ public class FakeT3ServiceContext implements TestRule, T3ServiceContext, Closeab
return null;
}
- public boolean isInitOk() {
- return initOk;
- }
-
/** May be used in test to get a fresh transaction. */
@Override
public Supplier<T3TopiaPersistenceContext> getT3TopiaPersistenceContext() {
@@ -90,11 +68,11 @@ public class FakeT3ServiceContext implements TestRule, T3ServiceContext, Closeab
@Override
public T3TopiaApplicationContext getApplicationContext() {
- return rootContext;
+ return topiaApplicationContext;
}
- public T3TopiaPersistenceContext newTransaction() throws TopiaException {
- return rootContext.newPersistenceContext();
+ private T3TopiaPersistenceContext newTransaction() throws TopiaException {
+ return topiaApplicationContext.newPersistenceContext();
}
@Override
@@ -108,11 +86,6 @@ public class FakeT3ServiceContext implements TestRule, T3ServiceContext, Closeab
}
@Override
- public T3Config getApplicationConfiguration() {
- return applicationConfiguration;
- }
-
- @Override
public T3ServiceFactory getServiceFactory() {
return serviceFactory;
}
@@ -132,58 +105,4 @@ public class FakeT3ServiceContext implements TestRule, T3ServiceContext, Closeab
return new Date();
}
- public File getTestDir() {
- return testDir;
- }
-
- private void starting(Description description) {
- testDir = T3IOUtil.getTestSpecificDirectory(description.getTestClass(), description.getMethodName());
- log.info(String.format("Test dir = %s", testDir));
- Properties defaultProps = new Properties();
- defaultProps.put(T3ConfigOption.DATA_DIRECTORY.getKey(), testDir);
- File treatmentDirectory = new File(testDir, "treatment");
- FileUtil.createDirectoryIfNecessary(treatmentDirectory);
- T3Config realConfiguration = new T3Config(defaultProps) {
- @Override
- public void init() {
- parse();
- }
- };
- realConfiguration.init();
- Version t3DataVersion = realConfiguration.getT3DataVersion();
- applicationConfiguration = Mockito.mock(T3Config.class);
- Mockito.when(applicationConfiguration.getDataDirectory()).thenReturn(testDir);
- Mockito.when(applicationConfiguration.getTreatmentWorkingDirectory()).thenReturn(treatmentDirectory);
- Mockito.when(applicationConfiguration.getT3DataVersion()).thenReturn(t3DataVersion);
- Mockito.when(applicationConfiguration.getTreatmentWorkingDirectory(Mockito.anyString(), Mockito.anyBoolean())).thenCallRealMethod();
- Mockito.when(applicationConfiguration.getApplicationVersion()).thenReturn(realConfiguration.getApplicationVersion());
- rootContext = T3TopiaApplicationContextBuilder.forH2Referential(testDir.toPath(), injectReferential ? t3DataVersion : null).build();
- }
-
- @Override
- public void close() {
- if (transaction != null) {
- transaction.close();
- }
- }
-
- @Override
- public Statement apply(Statement base, Description description) {
- return new Statement() {
- @Override
- public void evaluate() throws Throwable {
- try {
- starting(description);
- initOk=true;
- } catch (Exception e) {
- Assume.assumeNoException("Can't start test: " + e.getMessage(), e);
- }
- try {
- base.evaluate();
- } finally {
- close();
- }
- }
- };
- }
}
=====================================
t3-domain/pom.xml
=====================================
--- a/t3-domain/pom.xml
+++ b/t3-domain/pom.xml
@@ -178,6 +178,12 @@
<!--we have a test api in source-->
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <!--We don't want to create yet another module for tests, so just embedded them inside sources-->
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>com.h2database</groupId>
=====================================
t3-domain/src/main/java/fr/ird/t3/entities/cache/WeightCategoryTreatmentCache.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/entities/cache/WeightCategoryTreatmentCache.java
+++ b/t3-domain/src/main/java/fr/ird/t3/entities/cache/WeightCategoryTreatmentCache.java
@@ -56,24 +56,29 @@ public class WeightCategoryTreatmentCache {
return forOceanAndSchoolType(activity.getOcean(), activity.getSchoolType());
}
- private List<WeightCategoryTreatment> forOceanAndSchoolType(Ocean ocean, SchoolType schoolType) {
+ List<WeightCategoryTreatment> forOceanAndSchoolType(Ocean ocean, SchoolType schoolType) {
String key = ocean.getLabel1() + "#" + schoolType.getLabel1();
- List<WeightCategoryTreatment> weightCategoryTreatments = cache.get(key);
- if (weightCategoryTreatments == null) {
- weightCategoryTreatments = dao.forOceanEquals(ocean).addEquals(WeightCategoryTreatment.PROPERTY_SCHOOL_TYPE, schoolType).findAll();
- WeightCategories.sort(weightCategoryTreatments);
- cache.putAll(key, weightCategoryTreatments);
+ List<WeightCategoryTreatment> result;
+ if (cache.containsKey(key)) {
+ result = cache.get(key);
+ } else {
+ result = dao.forOceanEquals(ocean).addEquals(WeightCategoryTreatment.PROPERTY_SCHOOL_TYPE, schoolType).findAll();
+ WeightCategories.sort(result);
+ cache.putAll(key, result);
+ log.info(String.format("Cache WeightCategoryTreatment [%d] for %s (%d categories)", cache.keySet().size(), key, result.size()));
}
- return weightCategoryTreatments;
+ return result;
}
public List<WeightCategoryTreatment> forOceansAndSchoolType(Collection<Ocean> oceans, SchoolType schoolType) {
String key = Joiner.on("#").join(oceans.stream().map(Ocean::getLabel1).collect(Collectors.toList())) + "#" + schoolType.getLabel1();
- List<WeightCategoryTreatment> result = cache.get(key);
- if (result == null) {
+ List<WeightCategoryTreatment> result;
+ if (cache.containsKey(key)) {
+ result = cache.get(key);
+ } else {
result = dao.forOceanIn(oceans).addEquals(WeightCategoryTreatment.PROPERTY_SCHOOL_TYPE, schoolType).findAll();
WeightCategories.sort(result);
- log.info(String.format("Cache WeightCategoryTreatment [%d] for %s (%d categories)", cache.size(), key, result.size()));
+ log.info(String.format("Cache WeightCategoryTreatment [%d] for %s (%d categories)", cache.keySet().size(), key, result.size()));
cache.putAll(key, result);
}
return result;
=====================================
t3-domain/src/main/java/fr/ird/t3/entities/cache/ZoneStratumCache.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/entities/cache/ZoneStratumCache.java
+++ b/t3-domain/src/main/java/fr/ird/t3/entities/cache/ZoneStratumCache.java
@@ -1,5 +1,26 @@
package fr.ird.t3.entities.cache;
+/*-
+ * #%L
+ * T3 :: Domain
+ * %%
+ * Copyright (C) 2010 - 2018 IRD, Code Lutin, Ultreia.io
+ * %%
+ * 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.Joiner;
import com.google.common.collect.ArrayListMultimap;
import fr.ird.t3.entities.T3TopiaPersistenceContext;
@@ -39,10 +60,12 @@ public class ZoneStratumCache {
public List<ZoneStratumAware> forOceansAndSchoolType(Collection<Ocean> oceans, SchoolType schoolType) {
String key = Joiner.on("#").join(oceans.stream().map(Ocean::getLabel1).collect(Collectors.toList())) + "#" + schoolType.getLabel1();
- List<ZoneStratumAware> result = cache.get(key);
- if (result == null) {
+ List<ZoneStratumAware> result;
+ if (cache.containsKey(key)) {
+ result = cache.get(key);
+ } else {
result = zoneMeta.getZones(oceans, schoolType, zoneVersion, persistenceContext);
- log.info(String.format("Cache Zone [%d] for %s (%d zones)", cache.size(), key, result.size()));
+ log.info(String.format("Cache Zone [%d] for %s (%d zones)", cache.keySet().size(), key, result.size()));
cache.putAll(key, result);
}
return result;
=====================================
t3-domain/src/main/java/fr/ird/t3/entities/reference/AbstractOceanTopiaDao.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/entities/reference/AbstractOceanTopiaDao.java
+++ b/t3-domain/src/main/java/fr/ird/t3/entities/reference/AbstractOceanTopiaDao.java
@@ -84,7 +84,7 @@ public class AbstractOceanTopiaDao<E extends Ocean> extends GeneratedOceanTopiaD
public PreparedStatement prepareQuery(Connection connection) throws SQLException {
@SuppressWarnings("SqlResolve")
PreparedStatement ps = connection.prepareStatement(
- String.format("SELECT o.topiaid FROM %s a, Ocean o WHERE a.topiaId = ? AND ST_Contains(o.the_geom, a.%s)", tableName, geoColumnName));
+ String.format("SELECT o.topiaid FROM %s a, Ocean o WHERE a.topiaId = ? AND ST_DWithin(a.the_geom, o.%s, 1)", tableName, geoColumnName));
ps.setString(1, id);
return ps;
}
=====================================
t3-domain/src/main/java/fr/ird/t3/test/T3H2Database.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/test/T3H2Database.java
+++ b/t3-domain/src/main/java/fr/ird/t3/test/T3H2Database.java
@@ -21,18 +21,27 @@ package fr.ird.t3.test;
* #L%
*/
+import fr.ird.t3.T3Config;
+import fr.ird.t3.T3ConfigOption;
import fr.ird.t3.T3IOUtil;
import fr.ird.t3.entities.T3EntityHelper;
import fr.ird.t3.entities.T3TopiaApplicationContext;
import fr.ird.t3.entities.T3TopiaApplicationContextBuilder;
import fr.ird.t3.entities.T3TopiaPersistenceContext;
-import org.junit.rules.TestWatcher;
+import org.junit.Assume;
+import org.junit.rules.TestRule;
import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+import org.mockito.Mockito;
import org.nuiton.topia.persistence.TopiaException;
+import org.nuiton.util.FileUtil;
+import org.nuiton.version.Version;
+import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Properties;
/**
* A new database created for each test.
@@ -40,21 +49,48 @@ import java.io.InputStream;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.0
*/
-public class T3H2Database extends TestWatcher {
+public class T3H2Database implements TestRule, Closeable {
+ private final boolean injectReferential;
private File testBasedir;
+ protected T3TopiaApplicationContext topiaApplicationContext;
+ private T3Config applicationConfiguration;
+ private boolean initOk;
+ public T3H2Database() {
+ this(false);
+ }
- private T3TopiaApplicationContext topiaApplicationContext;
+ public T3H2Database(boolean injectReferential) {
+ this.injectReferential = injectReferential;
+ }
- @Override
- protected void starting(Description description) {
+ private void starting(Description description) {
testBasedir = T3IOUtil.getTestSpecificDirectory(description.getTestClass(), description.getMethodName());
- topiaApplicationContext = T3TopiaApplicationContextBuilder.forH2(testBasedir.toPath()).build();
- }
- @Override
- public void finished(Description description) {
- T3EntityHelper.releaseRootContext(topiaApplicationContext);
+ Properties defaultProps = new Properties();
+ defaultProps.put(T3ConfigOption.DATA_DIRECTORY.getKey(), testBasedir);
+ File treatmentDirectory = new File(testBasedir, "treatment");
+ FileUtil.createDirectoryIfNecessary(treatmentDirectory);
+ T3Config realConfiguration = new T3Config(defaultProps) {
+ @Override
+ public void init() {
+ parse();
+ }
+ };
+ realConfiguration.init();
+ Version t3DataVersion = realConfiguration.getT3DataVersion();
+ applicationConfiguration = Mockito.mock(T3Config.class);
+ Mockito.when(applicationConfiguration.getDataDirectory()).thenReturn(testBasedir);
+ Mockito.when(applicationConfiguration.getTreatmentWorkingDirectory()).thenReturn(treatmentDirectory);
+ Mockito.when(applicationConfiguration.getT3DataVersion()).thenReturn(t3DataVersion);
+ Mockito.when(applicationConfiguration.getTreatmentWorkingDirectory(Mockito.anyString(), Mockito.anyBoolean())).thenCallRealMethod();
+ Mockito.when(applicationConfiguration.getApplicationVersion()).thenReturn(realConfiguration.getApplicationVersion());
+
+ if (injectReferential) {
+ topiaApplicationContext = T3TopiaApplicationContextBuilder.forH2Referential(testBasedir.toPath(), t3DataVersion).build();
+ } else {
+ topiaApplicationContext = T3TopiaApplicationContextBuilder.forH2(testBasedir.toPath()).build();
+ }
}
public T3TopiaPersistenceContext beginTransaction() throws TopiaException {
@@ -69,7 +105,43 @@ public class T3H2Database extends TestWatcher {
}
}
+ @SuppressWarnings("unused")
public File getTestBasedir() {
return testBasedir;
}
+
+ public T3Config getApplicationConfiguration() {
+ return applicationConfiguration;
+ }
+
+ @Override
+ public void close() {
+ if (topiaApplicationContext != null) {
+ T3EntityHelper.releaseRootContext(topiaApplicationContext);
+ }
+ }
+
+ @Override
+ public Statement apply(Statement base, Description description) {
+ return new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ try {
+ starting(description);
+ initOk=true;
+ } catch (Exception e) {
+ Assume.assumeNoException("Can't start test: " + e.getMessage(), e);
+ }
+ try {
+ base.evaluate();
+ } finally {
+ close();
+ }
+ }
+ };
+ }
+
+ public boolean isInitOk() {
+ return initOk;
+ }
}
=====================================
t3-domain/src/main/resources/db/migration/V2_1_09_fill-Harbour-ocean.sql
=====================================
--- a/t3-domain/src/main/resources/db/migration/V2_1_09_fill-Harbour-ocean.sql
+++ b/t3-domain/src/main/resources/db/migration/V2_1_09_fill-Harbour-ocean.sql
@@ -53,3 +53,27 @@ UPDATE Harbour SET ocean='fr.ird.t3.entities.reference.Ocean#1297580528924#0.024
UPDATE Harbour SET ocean='fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396' WHERE topiaId = 'fr.ird.t3.entities.reference.Harbour#1297580528933#0.4894751387384305';
UPDATE Harbour SET ocean='fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396' WHERE topiaId = 'fr.ird.t3.entities.reference.Harbour#1297580528934#0.17822915599428157';
UPDATE Harbour SET ocean='fr.ird.t3.entities.reference.Ocean#1297580528924#0.02462443299831396' WHERE topiaId = 'fr.ird.t3.entities.reference.Harbour#1297580528932#0.21164070994041773';
+
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528930#0.09848580496276282';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528930#0.4358849181824964';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528930#0.5213952546445324';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528932#0.05217800949850426';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528932#0.09458236901561745';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1464000000000#0.00115115';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1464000000000#0.00116116';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1464000000000#0.00117117';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528935#0.5032524703497515';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528930#0.3128607487452171';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528930#0.7077375683910743';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528930#0.37146946328714225';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528930#0.1776110119020825';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528930#0.10672736119748483';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528929#0.29263430155373604';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528932#0.23227601066196246';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528934#0.5223852489420004';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528929#0.037238377699795766';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528934#0.9698949751160373';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528933#0.2600646486222412';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528934#0.35235641408050444';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1297580528934#0.45885264373047663';
+UPDATE Harbour SET ocean ='fr.ird.t3.entities.reference.Ocean#1297580528924#0.4917298410119624' WHERE topiaId ='fr.ird.t3.entities.reference.Harbour#1460000000000#0.19';
=====================================
t3-domain/src/test/java/fr/ird/t3/entities/cache/WeightCategoryTreatmentCacheTest.java
=====================================
--- /dev/null
+++ b/t3-domain/src/test/java/fr/ird/t3/entities/cache/WeightCategoryTreatmentCacheTest.java
@@ -0,0 +1,83 @@
+package fr.ird.t3.entities.cache;
+
+/*-
+ * #%L
+ * T3 :: Domain
+ * %%
+ * Copyright (C) 2010 - 2018 IRD, Code Lutin, Ultreia.io
+ * %%
+ * 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.collect.ImmutableSet;
+import fr.ird.t3.entities.T3TopiaPersistenceContext;
+import fr.ird.t3.entities.reference.Ocean;
+import fr.ird.t3.entities.reference.SchoolType;
+import fr.ird.t3.entities.reference.WeightCategoryTreatment;
+import fr.ird.t3.test.T3H2Database;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Created by tchemit on 23/03/2018.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ */
+public class WeightCategoryTreatmentCacheTest {
+
+ @ClassRule
+ public static final T3H2Database db = new T3H2Database(true);
+
+ private WeightCategoryTreatmentCache cache;
+ private T3TopiaPersistenceContext persistenceContext;
+
+ @Before
+ public void setUp() {
+ persistenceContext = db.beginTransaction();
+ cache = persistenceContext.newWeightCategoryTreatmentCache();
+ }
+
+ @Test
+ public void forOceanAndSchoolType() {
+ List<Ocean> oceans = persistenceContext.getOceanDao().findAll();
+ List<SchoolType> schoolTypes = persistenceContext.getSchoolTypeDao().findAll();
+ Set<Integer> oceanCodesWithCategories = ImmutableSet.of(1, 2);
+ for (Ocean ocean : oceans) {
+ for (SchoolType schoolType : schoolTypes) {
+ List<WeightCategoryTreatment> weightCategoryTreatments = cache.forOceanAndSchoolType(ocean, schoolType);
+ Assert.assertNotNull(weightCategoryTreatments);
+ if (oceanCodesWithCategories.contains(ocean.getCode())) {
+ Assert.assertFalse(weightCategoryTreatments.isEmpty());
+ }
+ }
+ }
+ }
+
+ @Test
+ public void forOceansAndSchoolType() {
+ List<Ocean> oceans = persistenceContext.getOceanDao().findAll();
+ List<SchoolType> schoolTypes = persistenceContext.getSchoolTypeDao().findAll();
+ for (SchoolType schoolType : schoolTypes) {
+ List<WeightCategoryTreatment> weightCategoryTreatments = cache.forOceansAndSchoolType(oceans, schoolType);
+ Assert.assertNotNull(weightCategoryTreatments);
+ Assert.assertFalse(weightCategoryTreatments.isEmpty());
+ }
+ }
+}
=====================================
t3-domain/src/test/java/fr/ird/t3/entities/cache/ZoneStratumCacheTest.java
=====================================
--- /dev/null
+++ b/t3-domain/src/test/java/fr/ird/t3/entities/cache/ZoneStratumCacheTest.java
@@ -0,0 +1,66 @@
+package fr.ird.t3.entities.cache;
+
+/*-
+ * #%L
+ * T3 :: Domain
+ * %%
+ * Copyright (C) 2010 - 2018 IRD, Code Lutin, Ultreia.io
+ * %%
+ * 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.ird.t3.entities.T3TopiaPersistenceContext;
+import fr.ird.t3.entities.reference.Ocean;
+import fr.ird.t3.entities.reference.SchoolType;
+import fr.ird.t3.entities.reference.zone.ZoneETMeta;
+import fr.ird.t3.entities.reference.zone.ZoneStratumAware;
+import fr.ird.t3.test.T3PostgresqlDatabase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+import java.util.List;
+
+/**
+ * Created by tchemit on 23/03/2018.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ */
+public class ZoneStratumCacheTest {
+
+ @ClassRule
+ public static final T3PostgresqlDatabase db = new T3PostgresqlDatabase();
+
+ private ZoneStratumCache cache;
+ private T3TopiaPersistenceContext persistenceContext;
+
+ @Before
+ public void setUp() {
+ persistenceContext = db.beginTransaction();
+ cache = persistenceContext.newZoneStratumCache(new ZoneETMeta(), "v2011");
+ }
+
+ @Test
+ public void forOceansAndSchoolType() {
+ List<Ocean> oceans = persistenceContext.getOceanDao().findAll();
+ List<SchoolType> schoolTypes = persistenceContext.getSchoolTypeDao().findAll();
+ for (SchoolType schoolType : schoolTypes) {
+ List<ZoneStratumAware> zones = cache.forOceansAndSchoolType(oceans, schoolType);
+ Assert.assertNotNull(zones);
+ Assert.assertFalse(zones.isEmpty());
+ }
+ }
+}
=====================================
t3-domain/src/test/java/fr/ird/t3/entities/reference/OceanTopiaDaoPgTest.java
=====================================
--- a/t3-domain/src/test/java/fr/ird/t3/entities/reference/OceanTopiaDaoPgTest.java
+++ b/t3-domain/src/test/java/fr/ird/t3/entities/reference/OceanTopiaDaoPgTest.java
@@ -43,6 +43,8 @@ public class OceanTopiaDaoPgTest {
@Test
public void findOceanByHarbour() {
+ int wrongOcean = 0;
+ int fixOcean = 0;
StringBuilder queryBuilder = new StringBuilder();
try (T3TopiaPersistenceContext persistenceContext = db.beginTransaction()) {
OceanTopiaDao oceanDao = persistenceContext.getOceanDao();
@@ -55,11 +57,13 @@ public class OceanTopiaDaoPgTest {
if (harbour.getOcean() == null) {
log.warn(String.format("Harbour %s [%s] with no ocean, can use now %s [%s]", harbour.getLabel1(), harbour.getTopiaId(), oceanByHarbour.getLabel1(), oceanByHarbour.getTopiaId()));
queryBuilder.append(String.format("UPDATE Harbour SET ocean ='%s' WHERE topiaId ='%s';\n", oceanByHarbour.getTopiaId(), harbour.getTopiaId()));
+ fixOcean++;
} else {
try {
Assert.assertEquals(String.format("Wrong ocean for %s", harbour.getLabel1()), harbour.getOcean().getLabel1(), oceanByHarbour.getLabel1());
} catch (Throwable e) {
log.error(e.getMessage());
+ wrongOcean++;
}
}
}
@@ -68,5 +72,7 @@ public class OceanTopiaDaoPgTest {
if (queryBuilder.length() > 0) {
log.warn("You can update your database with thoses queries to fill missing harbour ocean:\n" + queryBuilder.toString());
}
+ log.info("Number of wrong oceans: " + wrongOcean);
+ log.info("Number of fixed oceans: " + fixOcean);
}
}
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/179ad7bbf9a63bad33d568c32c232cee…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/179ad7bbf9a63bad33d568c32c232cee…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-t3][develop] [N2][N3] Gestion des catégories de poids -10/+10kg dans la stratification N2 et…
by Tony CHEMIT 23 Mar '18
by Tony CHEMIT 23 Mar '18
23 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
3585d323 by Tony CHEMIT at 2018-03-23T13:30:48Z
[N2][N3] Gestion des catégories de poids -10/+10kg dans la stratification N2 et N3 (See #263) - mise en place des filtres sur les strates
- - - - -
29 changed files:
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2CatchStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2CatchStratumLoader.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoader.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoaderAtlantic.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoaderIndian.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfiguration.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumResult.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2Action.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2OutputContext.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3CatchStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3CatchStratumLoader.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoader.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoaderAtlantic.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoaderIndian.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfiguration.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumResult.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3Action.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/CatchStratum.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/CatchStratumLoader.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/SampleStratum.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/SampleStratumLoader.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/Stratum.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumResult.java
- t3-domain/src/main/java/fr/ird/t3/entities/cache/LengthWeightConversionCache.java
- t3-domain/src/main/java/fr/ird/t3/entities/data/ActivityImpl.java
- t3-domain/src/main/xmi/t3-persistence.zargo
Changes:
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2CatchStratum.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2CatchStratum.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2CatchStratum.java
@@ -23,13 +23,9 @@ package fr.ird.t3.actions.data.level2;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.SetMultimap;
-import fr.ird.t3.T3IOUtil;
import fr.ird.t3.actions.stratum.CatchStratum;
-import fr.ird.t3.actions.stratum.CatchStratumLoader;
-import fr.ird.t3.actions.stratum.StratumConfiguration;
import fr.ird.t3.entities.data.Activity;
import fr.ird.t3.entities.data.CorrectedElementaryCatch;
-import fr.ird.t3.entities.data.WeightCategoryTreatmentAware;
import fr.ird.t3.entities.reference.Species;
import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.models.WeightCompositionAggregateModel;
@@ -42,12 +38,10 @@ import org.apache.commons.logging.LogFactory;
import java.io.IOException;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import java.util.function.Function;
import static org.nuiton.i18n.I18n.l;
@@ -57,7 +51,7 @@ import static org.nuiton.i18n.I18n.l;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.3
*/
-public class L2CatchStratum extends CatchStratum<Level2Configuration, Level2Action> {
+public class L2CatchStratum extends CatchStratum<Level2Configuration, Level2Action, L2StratumConfiguration> {
private static final Log log = LogFactory.getLog(L2CatchStratum.class);
/**
@@ -101,14 +95,14 @@ public class L2CatchStratum extends CatchStratum<Level2Configuration, Level2Acti
*/
private WeightCompositionAggregateModel inputModelForSpeciesToFix;
- private L2CatchStratum(StratumConfiguration<Level2Configuration> stratumConfiguration, Collection<Species> speciesToFix) {
+ private L2CatchStratum(L2StratumConfiguration stratumConfiguration, Collection<Species> speciesToFix) {
super(stratumConfiguration, speciesToFix);
weightCategoriesForSpecies = HashMultimap.create();
inputModelForAllSpecies = new WeightCompositionAggregateModel();
outputModelForAllSpecies = new WeightCompositionAggregateModel();
}
- static L2CatchStratum newCatchStratum(StratumConfiguration<Level2Configuration> stratumConfiguration,
+ static L2CatchStratum newCatchStratum(L2StratumConfiguration stratumConfiguration,
List<WeightCategoryTreatment> weightCategories,
Collection<Species> species,
Level2Action action) throws Exception {
@@ -133,29 +127,6 @@ public class L2CatchStratum extends CatchStratum<Level2Configuration, Level2Acti
return catchStratum;
}
- private static <X extends WeightCategoryTreatmentAware> void fillWeights(
- WeightCategoryTreatment weightCategory,
- Collection<X> data,
- Map<Species, Float> weights,
- Function<X, Float> function,
- WeightCompositionAggregateModel model,
- int divideFactor) {
- if (weights == null) {
- weights = new HashMap<>();
- }
- for (X setSpeciesCatWeight : data) {
- Species species = setSpeciesCatWeight.getSpecies();
- Float weight = weights.get(species);
- if (weight == null) {
- weight = 0f;
- }
- weight += function.apply(setSpeciesCatWeight) / divideFactor;
- weights.put(species, weight);
- }
- if (model != null) {
- model.addModel(weightCategory, weights);
- }
- }
@Override
public void close() throws IOException {
@@ -242,11 +213,7 @@ public class L2CatchStratum extends CatchStratum<Level2Configuration, Level2Acti
}
@Override
- public L2StratumConfiguration getConfiguration() {
- return (L2StratumConfiguration) super.getConfiguration();
- }
- @Override
- protected CatchStratumLoader<Level2Configuration> newLoader() {
+ protected L2CatchStratumLoader newLoader() {
return new L2CatchStratumLoader();
}
@@ -258,23 +225,8 @@ public class L2CatchStratum extends CatchStratum<Level2Configuration, Level2Acti
WeightCompositionAggregateModel sampleWeightModelForAllSpecies(Activity activity) {
WeightCompositionAggregateModel sampleWeightModelFroAllSpecies = new WeightCompositionAggregateModel();
- L2SampleStratum.fillWeightsFromSetSpeciesCatWeight(activity, null, sampleWeightModelFroAllSpecies);
+ fillWeightsFromSamplesWeight(activity, null, sampleWeightModelFroAllSpecies);
return sampleWeightModelFroAllSpecies;
}
- private void fillWeightsFromCatchesWeight(Activity activity, WeightCompositionAggregateModel model, int dividerFactor) {
- Map<WeightCategoryTreatment, Map<Species, Float>> weights = new HashMap<>();
- Multimap<WeightCategoryTreatment, CorrectedElementaryCatch> data = getCorrectedElementaryCatchByCategory(activity);
- T3IOUtil.fillMapWithDefaultValue(weights, data.keySet(), HashMap::new);
- for (WeightCategoryTreatment weightCategory : data.keySet()) {
- Map<Species, Float> speciesFloatMap = weights.get(weightCategory);
- Collection<CorrectedElementaryCatch> correctedElementaryCatches = data.get(weightCategory);
- fillWeights(weightCategory,
- correctedElementaryCatches,
- speciesFloatMap,
- CorrectedElementaryCatch::getCatchWeight,
- model,
- dividerFactor);
- }
- }
}
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2CatchStratumLoader.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2CatchStratumLoader.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2CatchStratumLoader.java
@@ -20,19 +20,12 @@
*/
package fr.ird.t3.actions.data.level2;
-import com.google.common.base.Preconditions;
import fr.ird.t3.actions.stratum.CatchStratumLoader;
-import fr.ird.t3.actions.stratum.StratumConfiguration;
import fr.ird.t3.entities.data.Activity;
import fr.ird.t3.entities.data.ActivityTopiaDao;
-import fr.ird.t3.entities.data.Trip;
-import fr.ird.t3.entities.reference.Vessel;
-import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.services.ioc.InjectDAO;
-import java.util.HashMap;
import java.util.Map;
-import java.util.Set;
/**
* To load a {@link L2CatchStratum} for a given stratum configuration.
@@ -40,13 +33,13 @@ import java.util.Set;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.3
*/
-public class L2CatchStratumLoader extends CatchStratumLoader<Level2Configuration> {
+public class L2CatchStratumLoader extends CatchStratumLoader<Level2Configuration, Level2Action, L2StratumConfiguration> {
@InjectDAO(entityType = Activity.class)
private ActivityTopiaDao activityDAO;
@Override
- public Map<Activity, Integer> loadData(StratumConfiguration<Level2Configuration> configuration) {
+ public Map<Activity, Integer> loadData(L2StratumConfiguration configuration) {
// on commence par récupérer les activités :
// - dans la zone
// - avec le bon type de banc
@@ -67,36 +60,4 @@ public class L2CatchStratumLoader extends CatchStratumLoader<Level2Configuration
// - maree.bateau dans la bonne flotte OK
return filterActivities(configuration, activityIds);
}
-
- private Map<Activity, Integer> filterActivities(StratumConfiguration<Level2Configuration> configuration, Map<String, Integer> activityIds) {
- Map<Activity, Integer> result = new HashMap<>();
- if (activityIds != null && activityIds.size() > 0) {
- Set<Vessel> possibleVessels = configuration.getPossibleCatchVessels();
- WeightCategoryTreatment weightCategoryTreatment = configuration.getWeightCategoryTreatment();
- for (Map.Entry<String, Integer> e : activityIds.entrySet()) {
- String activityId = e.getKey();
- // get activity
- Activity activity = configuration.getActivity(activityId);
- // get his trip
- Trip trip = activity.getTrip();
- if (!possibleVessels.contains(trip.getVessel())) {
- // not a matching boat
- continue;
- }
- // recheck activity have some catches.
- Preconditions.checkState(activity.isCorrectedElementaryCatchNotEmpty(),
- String.format("Can not accept an activity (%s) with no catch", activity.getTopiaId()));
- if (weightCategoryTreatment != null) {
- // weight category is in stratum, check there is catch using this category
- boolean foundWeightCategory = activity.withCorrectedElementaryCatch(weightCategoryTreatment);
- if (!foundWeightCategory) {
- // reject - the stratum weight category not found for this activity
- continue;
- }
- }
- result.put(activity, e.getValue());
- }
- }
- return result;
- }
-}
+}
\ No newline at end of file
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratum.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratum.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratum.java
@@ -20,26 +20,17 @@
*/
package fr.ird.t3.actions.data.level2;
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Multimaps;
-import fr.ird.t3.T3IOUtil;
import fr.ird.t3.actions.stratum.SampleStratum;
-import fr.ird.t3.actions.stratum.StratumConfiguration;
import fr.ird.t3.entities.data.Activity;
-import fr.ird.t3.entities.data.SetSpeciesCatWeight;
import fr.ird.t3.entities.data.SetSpeciesFrequency;
-import fr.ird.t3.entities.data.WeightCategoryTreatmentAware;
import fr.ird.t3.entities.reference.Species;
import fr.ird.t3.entities.reference.WeightCategory;
import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.models.WeightCompositionAggregateModel;
import fr.ird.t3.models.WeightCompositionModelHelper;
import fr.ird.t3.services.T3ServiceContext;
-import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.topia.persistence.TopiaException;
import java.io.IOException;
import java.util.Collection;
@@ -48,7 +39,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import java.util.function.Function;
import static org.nuiton.i18n.I18n.l;
@@ -58,20 +48,17 @@ import static org.nuiton.i18n.I18n.l;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.2
*/
-public class L2SampleStratum extends SampleStratum<Level2Configuration, Level2Action, L2SampleStratum> {
+public class L2SampleStratum extends SampleStratum<Level2Configuration, Level2Action, L2StratumConfiguration, L2SampleStratum> {
private static final Log log = LogFactory.getLog(L2SampleStratum.class);
-
/**
* Total weight of the catch stratum.
* <p/>
* This is needed to test sample stratum quality when loading data.
*/
private final float catchStratumTotalWeight;
-
/** Weight composition for all species found in catches. */
private final WeightCompositionAggregateModel modelsForAllSpecies;
-
/** Weight composition model for only species to fix. */
private WeightCompositionAggregateModel modelsForSpeciesToFix;
@@ -89,70 +76,22 @@ public class L2SampleStratum extends SampleStratum<Level2Configuration, Level2Ac
*/
private float sampleStratumTotalWeight;
- private L2SampleStratum(StratumConfiguration<Level2Configuration> configuration, Collection<Species> speciesToFix, float catchStratumTotalWeight) {
+ private L2SampleStratum(L2StratumConfiguration configuration, L2CatchStratum catchStratum, Collection<Species> speciesToFix) {
super(configuration, speciesToFix);
- this.catchStratumTotalWeight = catchStratumTotalWeight;
+ this.catchStratumTotalWeight = catchStratum.getTotalCatchWeightForSpeciesToFix();
this.modelsForAllSpecies = new WeightCompositionAggregateModel();
}
- static L2SampleStratum newSampleStratum(StratumConfiguration<Level2Configuration> stratumConfiguration,
+ static L2SampleStratum newSampleStratum(L2StratumConfiguration stratumConfiguration,
+ L2CatchStratum catchStratum,
List<WeightCategoryTreatment> weightCategories,
- float totalCatchWeight,
Collection<Species> species,
Level2Action action) throws Exception {
- L2SampleStratum sampleStratum = new L2SampleStratum(stratumConfiguration, species, totalCatchWeight);
+ L2SampleStratum sampleStratum = new L2SampleStratum(stratumConfiguration, catchStratum, species);
sampleStratum.init(action.getServiceContext(), weightCategories, action);
return sampleStratum;
}
- public static void fillWeightsFromSetSpeciesCatWeight(Activity activity,
- Map<WeightCategoryTreatment, Map<Species, Float>> weights,
- WeightCompositionAggregateModel model) {
- if (weights == null) {
- weights = new HashMap<>();
- }
- Multimap<WeightCategoryTreatment, SetSpeciesCatWeight> data = groupByWeightCategoryTreatment(activity.getSetSpeciesCatWeight());
- T3IOUtil.fillMapWithDefaultValue(weights, data.keySet(), HashMap::new);
- for (WeightCategoryTreatment weightCategory : data.keySet()) {
- Map<Species, Float> speciesFloatMap = weights.get(weightCategory);
- Collection<SetSpeciesCatWeight> setSpeciesCatWeights = data.get(weightCategory);
- fillWeights(weightCategory, setSpeciesCatWeights, speciesFloatMap, SetSpeciesCatWeight::getWeight, model);
- }
- }
-
- private static <X extends WeightCategoryTreatmentAware> Multimap<WeightCategoryTreatment, X> groupByWeightCategoryTreatment(Collection<X> activity) {
- Multimap<WeightCategoryTreatment, X> index;
- if (CollectionUtils.isEmpty(activity)) {
- index = ArrayListMultimap.create();
- } else {
- index = Multimaps.index(activity, WeightCategoryTreatmentAware::getWeightCategoryTreatment);
- }
- return index;
- }
-
- private static <X extends WeightCategoryTreatmentAware> void fillWeights(
- WeightCategoryTreatment weightCategory,
- Collection<X> data,
- Map<Species, Float> weights,
- Function<X, Float> function,
- WeightCompositionAggregateModel model) {
- if (weights == null) {
- weights = new HashMap<>();
- }
- for (X setSpeciesCatWeight : data) {
- Species species = setSpeciesCatWeight.getSpecies();
- Float weight = weights.get(species);
- if (weight == null) {
- weight = 0f;
- }
- weight += function.apply(setSpeciesCatWeight);
- weights.put(species, weight);
- }
- if (model != null) {
- model.addModel(weightCategory, weights);
- }
- }
-
@Override
public void close() throws IOException {
super.close();
@@ -189,23 +128,20 @@ public class L2SampleStratum extends SampleStratum<Level2Configuration, Level2Ac
return sampleStratumTotalWeight;
}
- //FIXME-263 si la categorie de poids que faire ?
@Override
- protected void mergeNewActivities(T3ServiceContext serviceContext, Set<Activity> activities) throws TopiaException {
+ protected void mergeNewActivities(T3ServiceContext serviceContext, Set<Activity> activities) {
Set<Species> species = getSpeciesToFix();
// all weights (for each species) for all weight categories found
Map<WeightCategoryTreatment, Map<Species, Float>> weights = new HashMap<>();
for (Activity activity : activities) {
// split cat weight by weight category
- fillWeightsFromSetSpeciesCatWeight(activity, weights, null);
+ fillWeightsFromSamplesWeight(activity, weights, null);
// obtain the set species frequencies for the current activity
- Collection<SetSpeciesFrequency> setSpeciesFrequencies = activity.getSetSpeciesFrequency();
- if (activity.isSetSpeciesFrequencyNotEmpty()) {
- // compute sample count for this activity
- int newCount = computeSampleCount(setSpeciesFrequencies, species);
- // merge it with final total count
- sampleStratumTotalCount += newCount;
- }
+ Collection<SetSpeciesFrequency> setSpeciesFrequencies = getSetSpeciesFrequency(activity);
+ // compute sample count for this activity
+ int newCount = computeSampleCount(setSpeciesFrequencies, species);
+ // merge it with final total count
+ sampleStratumTotalCount += newCount;
}
// add all weights to model
for (Map.Entry<WeightCategoryTreatment, Map<Species, Float>> e : weights.entrySet()) {
@@ -221,18 +157,6 @@ public class L2SampleStratum extends SampleStratum<Level2Configuration, Level2Ac
log.info(String.format("sampleStratumTotalCount = %d / sampleStratumTotalWeight = %f", getSampleStratumTotalCount(), getSampleStratumTotalWeight()));
}
- //FIXME-263 si la categorie de poids que faire ?
- private int computeSampleCount(Collection<SetSpeciesFrequency> setSpeciesFrequencies, Collection<Species> speciesToFix) {
- int newCount = 0;
- for (SetSpeciesFrequency setSpeciesFrequency : setSpeciesFrequencies) {
- Species species = setSpeciesFrequency.getSpecies();
- if (speciesToFix.contains(species)) {
- newCount += setSpeciesFrequency.getNumber();
- }
- }
- return newCount;
- }
-
@Override
public String logSampleStratumLevel(int substitutionLevel, Level2Action messager) {
Locale l = messager.getLocale();
@@ -251,8 +175,14 @@ public class L2SampleStratum extends SampleStratum<Level2Configuration, Level2Ac
modelsForSpeciesToFix);
}
- @Override
- public L2StratumConfiguration getConfiguration() {
- return (L2StratumConfiguration) super.getConfiguration();
+ private int computeSampleCount(Collection<SetSpeciesFrequency> setSpeciesFrequencies, Collection<Species> speciesToFix) {
+ int newCount = 0;
+ for (SetSpeciesFrequency setSpeciesFrequency : setSpeciesFrequencies) {
+ Species species = setSpeciesFrequency.getSpecies();
+ if (speciesToFix.contains(species)) {
+ newCount += setSpeciesFrequency.getNumber();
+ }
+ }
+ return newCount;
}
}
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoader.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoader.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoader.java
@@ -28,6 +28,7 @@ import fr.ird.t3.entities.data.ActivityTopiaDao;
import fr.ird.t3.entities.data.Trip;
import fr.ird.t3.entities.reference.SchoolType;
import fr.ird.t3.entities.reference.Vessel;
+import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.entities.type.T3Date;
import fr.ird.t3.services.ioc.InjectDAO;
import org.apache.commons.logging.Log;
@@ -43,7 +44,7 @@ import java.util.Set;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.3
*/
-public abstract class L2SampleStratumLoader extends SampleStratumLoader<Level2Configuration, Level2Action, L2SampleStratum> {
+public abstract class L2SampleStratumLoader extends SampleStratumLoader<Level2Configuration, Level2Action, L2StratumConfiguration, L2SampleStratum> {
private static final Log log = LogFactory.getLog(L2SampleStratumLoader.class);
/**
@@ -91,7 +92,7 @@ public abstract class L2SampleStratumLoader extends SampleStratumLoader<Level2Co
@Override
protected Set<String> findActivityIds(String schoolTypeId, T3Date beginDate, T3Date endDate, String... zoneIds) {
- StratumConfiguration<Level2Configuration> configuration = getSampleStratum().getConfiguration();
+ StratumConfiguration<Level2Configuration, Level2Action> configuration = getSampleStratum().getConfiguration();
Set<String> result = new HashSet<>();
for (String zoneId : zoneIds) {
// on commence par récupérer les activités :
@@ -110,28 +111,6 @@ public abstract class L2SampleStratumLoader extends SampleStratumLoader<Level2Co
}
@Override
- protected Set<Activity> filterActivities(Set<String> activityIds) {
- Set<Activity> result = new HashSet<>();
- StratumConfiguration<Level2Configuration> configuration = getSampleStratum().getConfiguration();
- Set<Vessel> possibleVessels = configuration.getPossibleSampleVessels();
- for (String activityId : activityIds) {
- Activity activity = configuration.getActivity(activityId);
- // recheck activity have some samples.
- Preconditions.checkState(
- !activity.isSetSpeciesCatWeightEmpty(),
- String.format("Can not accept an activity (%s) with no sample", activity.getTopiaId()));
- // get his trip
- Trip trip = activity.getTrip();
- if (!possibleVessels.contains(trip.getVessel())) {
- // not a matching boat
- continue;
- }
- result.add(activity);
- }
- return result;
- }
-
- @Override
public boolean isStratumOk() {
// test if we have enough sample weight
L2SampleStratum sampleStratum = getSampleStratum();
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoaderAtlantic.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoaderAtlantic.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoaderAtlantic.java
@@ -39,8 +39,7 @@ public class L2SampleStratumLoaderAtlantic extends L2SampleStratumLoader {
@Override
protected Set<String> findActivityIds(int level) {
-
- StratumConfiguration<Level2Configuration> configuration = getSampleStratum().getConfiguration();
+ StratumConfiguration<Level2Configuration, Level2Action> configuration = getSampleStratum().getConfiguration();
String schoolTypeId = configuration.getSchoolType().getTopiaId();
String zoneId = configuration.getZone().getTopiaId();
T3Date beginDate = configuration.getBeginDate();
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoaderIndian.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoaderIndian.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoaderIndian.java
@@ -40,7 +40,7 @@ public class L2SampleStratumLoaderIndian extends L2SampleStratumLoader {
@Override
protected Set<String> findActivityIds(int level) {
- StratumConfiguration<Level2Configuration> configuration = getSampleStratum().getConfiguration();
+ StratumConfiguration<Level2Configuration, Level2Action> configuration = getSampleStratum().getConfiguration();
String schoolTypeId = configuration.getSchoolType().getTopiaId();
String zoneId = configuration.getZone().getTopiaId();
T3Date beginDate = configuration.getBeginDate();
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfiguration.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfiguration.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfiguration.java
@@ -35,9 +35,7 @@ import java.util.List;
*
* @author Tony Chemit - dev(a)tchemit.fr
*/
-public class L2StratumConfiguration extends StratumConfiguration<Level2Configuration> {
-
- private final List<WeightCategoryTreatment> weightCategoryTreatments;
+class L2StratumConfiguration extends StratumConfiguration<Level2Configuration, Level2Action> {
L2StratumConfiguration(Level2InputContext inputContext,
SchoolType schoolType,
@@ -48,23 +46,15 @@ public class L2StratumConfiguration extends StratumConfiguration<Level2Configura
Collection<ZoneStratumAware> zones,
List<WeightCategoryTreatment> weightCategoryTreatments) {
super(
- inputContext.getConfiguration(),
- inputContext.getZoneMeta(),
+ inputContext,
zone,
schoolType,
weightCategoryTreatment,
beginDate,
beginDate.incrementsMonths(inputContext.getConfiguration().getTimeStep() - 1),
zones,
- inputContext.getPossibleCatchVessels(),
- inputContext.getPossibleSampleVessels(),
null,
- inputContext.getActivityCache(),
+ weightCategoryTreatments,
stratumIndex);
- this.weightCategoryTreatments = weightCategoryTreatments;
- }
-
- public List<WeightCategoryTreatment> getWeightCategoryTreatments() {
- return weightCategoryTreatments;
}
}
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumResult.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumResult.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumResult.java
@@ -8,12 +8,12 @@
* 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%
@@ -23,8 +23,6 @@ package fr.ird.t3.actions.data.level2;
import fr.ird.t3.actions.stratum.StratumConfiguration;
import fr.ird.t3.actions.stratum.StratumResult;
-import java.io.IOException;
-
/**
* Result of a level 2 Stratum.
*
@@ -33,7 +31,7 @@ import java.io.IOException;
*/
public class L2StratumResult extends StratumResult<Level2Configuration> {
- public L2StratumResult(StratumConfiguration<Level2Configuration> configuration, String label) {
+ public L2StratumResult(StratumConfiguration<Level2Configuration, Level2Action> configuration, String label) {
super(configuration, label);
}
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2Action.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2Action.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2Action.java
@@ -174,7 +174,7 @@ public class Level2Action extends T3Action<Level2Configuration> {
incrementsProgression();
} else {
// compute sample stratum
- try (L2SampleStratum sampleStratum = L2SampleStratum.newSampleStratum(stratumConfiguration, weightCategories, catchStratum.getTotalCatchWeightForSpeciesToFix(), species, this)) {
+ try (L2SampleStratum sampleStratum = L2SampleStratum.newSampleStratum(stratumConfiguration, catchStratum, weightCategories, species, this)) {
incrementsProgression();
// get the substitution level for the sample stratum
Integer level = sampleStratum.getSubstitutionLevel();
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2OutputContext.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2OutputContext.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2OutputContext.java
@@ -40,16 +40,16 @@ import static org.nuiton.i18n.I18n.l;
*/
public class Level2OutputContext extends LevelOutputContext<Level2Configuration, Level2Action, Level2InputContext, L2StratumResult> {
- private long totalCatchWeightForSpeciesFoFix;
- private long totalCatchWeight;
/**
* Input Weight composition (based on {@link CorrectedElementaryCatch#getCatchWeight()}) for all species found in catches.
*/
- private WeightCompositionAggregateModel inputCatchModelForAllSpecies;
+ private final WeightCompositionAggregateModel inputCatchModelForAllSpecies;
/**
* Output Weight composition (based on {@link CorrectedElementaryCatch#getCorrectedCatchWeight()}) for all species found in catches.
*/
- private WeightCompositionAggregateModel outputCatchModelForAllSpecies;
+ private final WeightCompositionAggregateModel outputCatchModelForAllSpecies;
+ private long totalCatchWeightForSpeciesFoFix;
+ private long totalCatchWeight;
public Level2OutputContext(Level2Action action, Level2InputContext inputContext) {
super(action, inputContext);
@@ -57,10 +57,12 @@ public class Level2OutputContext extends LevelOutputContext<Level2Configuration,
this.outputCatchModelForAllSpecies = new WeightCompositionAggregateModel();
}
+ @SuppressWarnings("unused")
public long getTotalCatchWeightForSpeciesFoFix() {
return totalCatchWeightForSpeciesFoFix;
}
+ @SuppressWarnings("unused")
public long getTotalCatchWeight() {
return totalCatchWeight;
}
@@ -72,22 +74,17 @@ public class Level2OutputContext extends LevelOutputContext<Level2Configuration,
mergeResult(stratumResult);
}
+ @SuppressWarnings("unused")
public WeightCompositionAggregateModel getInputCatchModelForAllSpecies() {
return inputCatchModelForAllSpecies;
}
- public void setInputCatchModelForAllSpecies(WeightCompositionAggregateModel inputCatchModelForAllSpecies) {
- this.inputCatchModelForAllSpecies = inputCatchModelForAllSpecies;
- }
-
+ @SuppressWarnings("unused")
public WeightCompositionAggregateModel getOutputCatchModelForAllSpecies() {
return outputCatchModelForAllSpecies;
}
- public void setOutputCatchModelForAllSpecies(WeightCompositionAggregateModel outputCatchModelForAllSpecies) {
- this.outputCatchModelForAllSpecies = outputCatchModelForAllSpecies;
- }
-
+ @SuppressWarnings("unused")
public String getInputCatchStratumLog() {
Collection<Species> species = getSpecies();
WeightCompositionAggregateModel inputCatchModelForSpeciesToFix = inputCatchModelForAllSpecies.extractForSpecies(species);
@@ -99,6 +96,7 @@ public class Level2OutputContext extends LevelOutputContext<Level2Configuration,
inputCatchModelForSpeciesToFix);
}
+ @SuppressWarnings("unused")
public String getOutputCatchStratumLog() {
Collection<Species> species = getSpecies();
WeightCompositionAggregateModel outputCatchModelForSpeciesToFix = outputCatchModelForAllSpecies.extractForSpecies(species);
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3CatchStratum.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3CatchStratum.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3CatchStratum.java
@@ -21,13 +21,10 @@
package fr.ird.t3.actions.data.level3;
import fr.ird.t3.actions.stratum.CatchStratum;
-import fr.ird.t3.actions.stratum.CatchStratumLoader;
-import fr.ird.t3.actions.stratum.StratumConfiguration;
import fr.ird.t3.entities.T3EntityHelper;
import fr.ird.t3.entities.T3Suppliers;
import fr.ird.t3.entities.data.Activity;
import fr.ird.t3.entities.data.CorrectedElementaryCatch;
-import fr.ird.t3.entities.data.SpeciesAware;
import fr.ird.t3.entities.reference.Species;
import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.services.T3ServiceContext;
@@ -35,7 +32,6 @@ import fr.ird.t3.services.T3ServiceContext;
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import java.util.function.Predicate;
/**
* Define a catch stratum for a given stratum of a level 2 treatment.
@@ -43,16 +39,9 @@ import java.util.function.Predicate;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.3
*/
-public class L3CatchStratum extends CatchStratum<Level3Configuration, Level3Action> {
+public class L3CatchStratum extends CatchStratum<Level3Configuration, Level3Action, L3StratumConfiguration> {
/**
- * Predicate to filter only species selected in configuration.
- *
- * @see #getSpeciesToFix()
- * @since 1.4
- */
- private final Predicate<? super SpeciesAware> speciesToFixFilter;
- /**
* Keep the total weight of all the catches in the stratum.
* <p/>
* Used by sampleStratum for quality tests.
@@ -61,17 +50,12 @@ public class L3CatchStratum extends CatchStratum<Level3Configuration, Level3Acti
*/
private float totalCatchWeight;
- L3CatchStratum(StratumConfiguration<Level3Configuration> stratumConfiguration, Collection<Species> speciesToFix, Predicate<? super SpeciesAware> speciesToFixFilter) {
+ L3CatchStratum(L3StratumConfiguration stratumConfiguration, Collection<Species> speciesToFix) {
super(stratumConfiguration, speciesToFix);
- this.speciesToFixFilter = speciesToFixFilter;
- }
- @Override
- public L3StratumConfiguration getConfiguration() {
- return (L3StratumConfiguration) super.getConfiguration();
}
@Override
- protected CatchStratumLoader<Level3Configuration> newLoader() {
+ protected L3CatchStratumLoader newLoader() {
return new L3CatchStratumLoader();
}
@@ -87,7 +71,7 @@ public class L3CatchStratum extends CatchStratum<Level3Configuration, Level3Acti
T3EntityHelper.getTotal(
getCorrectedElementaryCatch(activity),
CorrectedElementaryCatch::getCorrectedCatchWeight,
- speciesToFixFilter,
+ getConfiguration().getSpeciesToFixFilter(),
T3Suppliers.newActivityDecorateSupplier(
serviceContext,
activity,
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3CatchStratumLoader.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3CatchStratumLoader.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3CatchStratumLoader.java
@@ -20,18 +20,12 @@
*/
package fr.ird.t3.actions.data.level3;
-import com.google.common.base.Preconditions;
import fr.ird.t3.actions.stratum.CatchStratumLoader;
-import fr.ird.t3.actions.stratum.StratumConfiguration;
import fr.ird.t3.entities.data.Activity;
import fr.ird.t3.entities.data.ActivityTopiaDao;
-import fr.ird.t3.entities.data.Trip;
-import fr.ird.t3.entities.reference.Vessel;
import fr.ird.t3.services.ioc.InjectDAO;
-import java.util.HashMap;
import java.util.Map;
-import java.util.Set;
/**
* To load a {@link L3CatchStratum} for a given stratum configuration.
@@ -39,13 +33,13 @@ import java.util.Set;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.3
*/
-public class L3CatchStratumLoader extends CatchStratumLoader<Level3Configuration> {
+public class L3CatchStratumLoader extends CatchStratumLoader<Level3Configuration, Level3Action, L3StratumConfiguration> {
@InjectDAO(entityType = Activity.class)
private ActivityTopiaDao activityDAO;
@Override
- public Map<Activity, Integer> loadData(StratumConfiguration<Level3Configuration> configuration) {
+ public Map<Activity, Integer> loadData(L3StratumConfiguration configuration) {
// on commence par récupérer les activités :
// - dans la zone
// - avec le bon type de banc
@@ -66,29 +60,4 @@ public class L3CatchStratumLoader extends CatchStratumLoader<Level3Configuration
// - maree.bateau dans la bonne flotte OK
return filterActivities(configuration, activityIds);
}
-
- private Map<Activity, Integer> filterActivities(StratumConfiguration<Level3Configuration> configuration, Map<String, Integer> activityIds) {
-
- Set<Vessel> possibleVessels = configuration.getPossibleCatchVessels();
-
- Map<Activity, Integer> result = new HashMap<>();
- if (activityIds != null && activityIds.size() > 0) {
- for (Map.Entry<String, Integer> e : activityIds.entrySet()) {
- String activityId = e.getKey();
- // get activity
- Activity activity = configuration.getActivity(activityId);
- // get his trip
- Trip trip = activity.getTrip();
- if (!possibleVessels.contains(trip.getVessel())) {
- // not a matching boat
- continue;
- }
- // recheck activity have some catches.
- Preconditions.checkState(!activity.isCorrectedElementaryCatchEmpty(),
- String.format("Can not accept an activity (%s) with no catch", activity.getTopiaId()));
- result.put(activity, e.getValue());
- }
- }
- return result;
- }
}
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratum.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratum.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratum.java
@@ -25,7 +25,6 @@ import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import fr.ird.t3.T3IOUtil;
import fr.ird.t3.actions.stratum.SampleStratum;
-import fr.ird.t3.actions.stratum.StratumConfiguration;
import fr.ird.t3.entities.T3EntityHelper;
import fr.ird.t3.entities.T3Suppliers;
import fr.ird.t3.entities.cache.LengthWeightConversionWithContextCache;
@@ -34,7 +33,6 @@ import fr.ird.t3.entities.data.Activity;
import fr.ird.t3.entities.data.SetSpeciesCatWeight;
import fr.ird.t3.entities.data.SetSpeciesFrequency;
import fr.ird.t3.entities.data.SetSpeciesFrequencyTopiaDao;
-import fr.ird.t3.entities.data.SpeciesAware;
import fr.ird.t3.entities.reference.LengthWeightConversion;
import fr.ird.t3.entities.reference.Species;
import fr.ird.t3.entities.reference.WeightCategoryTreatment;
@@ -54,7 +52,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import java.util.function.Predicate;
import static org.nuiton.i18n.I18n.l;
@@ -64,7 +61,7 @@ import static org.nuiton.i18n.I18n.l;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.2
*/
-public class L3SampleStratum extends SampleStratum<Level3Configuration, Level3Action, L3SampleStratum> {
+public class L3SampleStratum extends SampleStratum<Level3Configuration, Level3Action, L3StratumConfiguration, L3SampleStratum> {
private static final Log log = LogFactory.getLog(L3SampleStratum.class);
@@ -101,31 +98,22 @@ public class L3SampleStratum extends SampleStratum<Level3Configuration, Level3Ac
*/
private final LengthWeightConversionWithContextCache conversionHelper;
/**
- * Predicate to filter only species selected in configuration.
- *
- * @see #getSpeciesToFix()
- * @since 1.4
- */
- private final Predicate<? super SpeciesAware> speciesToFixFilter;
- /**
* Total weight of the sample stratum.
* <p/>
* This is needed to test sample stratum quality when loading data.
*/
private float sampleStratumTotalWeight;
- L3SampleStratum(StratumConfiguration<Level3Configuration> configuration,
+ L3SampleStratum(L3StratumConfiguration configuration,
Collection<Species> speciesToFix,
float catchStratumTotalWeight,
- LengthWeightConversionWithContextCache conversionHelper,
- Predicate<? super SpeciesAware> speciesToFixFilter) {
+ LengthWeightConversionWithContextCache conversionHelper) {
super(configuration, speciesToFix);
this.catchStratumTotalWeight = catchStratumTotalWeight;
this.conversionHelper = conversionHelper;
this.speciesCount = new HashMap<>();
this.compositionModel = new HashMap<>();
this.allSetSpeciesFrequenciesBySpecies = ArrayListMultimap.create();
- this.speciesToFixFilter = speciesToFixFilter;
}
@Override
@@ -155,18 +143,13 @@ public class L3SampleStratum extends SampleStratum<Level3Configuration, Level3Ac
}
@Override
- public L3StratumConfiguration getConfiguration() {
- return (L3StratumConfiguration) super.getConfiguration();
- }
-
- @Override
public void mergeNewActivities(T3ServiceContext serviceContext, Set<Activity> activities) {
for (Activity activity : activities) {
// add total weight of samples of the activity (only for selected species)
float totalWeight = T3EntityHelper.getTotal(
activity.getSetSpeciesCatWeight(),
SetSpeciesCatWeight::getWeight,
- speciesToFixFilter,
+ getConfiguration().getSpeciesToFixFilter(),
T3Suppliers.newActivityDecorateSupplier(
serviceContext,
activity,
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoader.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoader.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoader.java
@@ -20,14 +20,11 @@
*/
package fr.ird.t3.actions.data.level3;
-import com.google.common.base.Preconditions;
import fr.ird.t3.actions.stratum.SampleStratumLoader;
import fr.ird.t3.actions.stratum.StratumConfiguration;
import fr.ird.t3.entities.data.Activity;
import fr.ird.t3.entities.data.ActivityTopiaDao;
-import fr.ird.t3.entities.data.Trip;
import fr.ird.t3.entities.reference.Species;
-import fr.ird.t3.entities.reference.Vessel;
import fr.ird.t3.entities.type.T3Date;
import fr.ird.t3.services.ioc.InjectDAO;
import org.apache.commons.logging.Log;
@@ -45,7 +42,7 @@ import java.util.Set;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.3
*/
-public abstract class L3SampleStratumLoader extends SampleStratumLoader<Level3Configuration, Level3Action, L3SampleStratum> {
+public abstract class L3SampleStratumLoader extends SampleStratumLoader<Level3Configuration, Level3Action, L3StratumConfiguration, L3SampleStratum> {
private static final Log log = LogFactory.getLog(L3SampleStratumLoader.class);
@@ -83,7 +80,7 @@ public abstract class L3SampleStratumLoader extends SampleStratumLoader<Level3Co
@Override
protected Set<String> findActivityIds(String schoolTypeId, T3Date beginDate, T3Date endDate, String... zoneIds) {
Set<String> result = new HashSet<>();
- StratumConfiguration<Level3Configuration> configuration = getSampleStratum().getConfiguration();
+ StratumConfiguration<Level3Configuration, Level3Action> configuration = getSampleStratum().getConfiguration();
for (String zoneId : zoneIds) {
// on commence par récupérer les activités :
// - dans la zone ET
@@ -101,28 +98,6 @@ public abstract class L3SampleStratumLoader extends SampleStratumLoader<Level3Co
}
@Override
- protected Set<Activity> filterActivities(Set<String> activityIds) {
- Set<Activity> result = new HashSet<>();
- StratumConfiguration<Level3Configuration> configuration = getSampleStratum().getConfiguration();
- Set<Vessel> possibleVessels = configuration.getPossibleSampleVessels();
- for (String activityId : activityIds) {
- Activity activity = configuration.getActivity(activityId);
- // get his trip
- Trip trip = activity.getTrip();
- if (!possibleVessels.contains(trip.getVessel())) {
- // not a matching boat
- continue;
- }
- // recheck activity have some samples.
- Preconditions.checkState(
- !activity.isSetSpeciesCatWeightEmpty(),
- String.format("Can not accept an activity (%s) with no sample", activity.getTopiaId()));
- result.add(activity);
- }
- return result;
- }
-
- @Override
public boolean isStratumOk() {
L3SampleStratum stratum = getSampleStratum();
// test if we have enough sample weight
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoaderAtlantic.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoaderAtlantic.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoaderAtlantic.java
@@ -39,7 +39,7 @@ public class L3SampleStratumLoaderAtlantic extends L3SampleStratumLoader {
@Override
protected Set<String> findActivityIds(int level) {
- StratumConfiguration<Level3Configuration> configuration = getSampleStratum().getConfiguration();
+ StratumConfiguration<Level3Configuration, Level3Action> configuration = getSampleStratum().getConfiguration();
String schoolTypeId = configuration.getSchoolType().getTopiaId();
String zoneId = configuration.getZone().getTopiaId();
T3Date beginDate = configuration.getBeginDate();
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoaderIndian.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoaderIndian.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratumLoaderIndian.java
@@ -40,7 +40,7 @@ public class L3SampleStratumLoaderIndian extends L3SampleStratumLoader {
@Override
protected Set<String> findActivityIds(int level) {
- StratumConfiguration<Level3Configuration> configuration = getSampleStratum().getConfiguration();
+ StratumConfiguration<Level3Configuration, Level3Action> configuration = getSampleStratum().getConfiguration();
String schoolTypeId = configuration.getSchoolType().getTopiaId();
String zoneId = configuration.getZone().getTopiaId();
T3Date beginDate = configuration.getBeginDate();
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfiguration.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfiguration.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfiguration.java
@@ -22,7 +22,6 @@ package fr.ird.t3.actions.data.level3;
*/
import fr.ird.t3.actions.stratum.StratumConfiguration;
-import fr.ird.t3.entities.cache.LengthWeightConversionWithContextCache;
import fr.ird.t3.entities.reference.SchoolType;
import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.entities.reference.zone.ZoneStratumAware;
@@ -37,11 +36,9 @@ import java.util.Map;
*
* @author Tony Chemit - dev(a)tchemit.fr
*/
-public class L3StratumConfiguration extends StratumConfiguration<Level3Configuration> {
+class L3StratumConfiguration extends StratumConfiguration<Level3Configuration, Level3Action> {
- private final List<WeightCategoryTreatment> weightCategoryTreatments;
private final Map<String, Integer> stratumMinimumSampleCount;
- private final LengthWeightConversionWithContextCache conversionHelper;
L3StratumConfiguration(Level3InputContext inputContext,
SchoolType schoolType,
@@ -53,33 +50,20 @@ public class L3StratumConfiguration extends StratumConfiguration<Level3Configura
List<WeightCategoryTreatment> weightCategoryTreatments,
Map<String, Integer> stratumMinimumSampleCount) {
super(
- inputContext.getConfiguration(),
- inputContext.getZoneMeta(),
+ inputContext,
zone,
schoolType,
weightCategoryTreatment,
beginDate,
beginDate.incrementsMonths(inputContext.getConfiguration().getTimeStep() - 1),
zones,
- inputContext.getPossibleCatchVessels(),
- inputContext.getPossibleSampleVessels(),
stratumMinimumSampleCount,
- inputContext.getActivityCache(),
+ weightCategoryTreatments,
stratumIndex);
- this.weightCategoryTreatments = weightCategoryTreatments;
this.stratumMinimumSampleCount = stratumMinimumSampleCount;
- this.conversionHelper = inputContext.newLengthWeightConversionWithContextCache(zone.getOcean(), beginDate.toBeginDate());
- }
-
- public List<WeightCategoryTreatment> getWeightCategoryTreatments() {
- return weightCategoryTreatments;
}
public Map<String, Integer> getStratumMinimumSampleCount() {
return stratumMinimumSampleCount;
}
-
- public LengthWeightConversionWithContextCache getConversionHelper() {
- return conversionHelper;
- }
}
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumResult.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumResult.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumResult.java
@@ -8,12 +8,12 @@
* 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%
@@ -24,8 +24,6 @@ import fr.ird.t3.actions.stratum.StratumConfiguration;
import fr.ird.t3.actions.stratum.StratumResult;
import fr.ird.t3.models.SpeciesCountAggregateModel;
-import java.io.IOException;
-
/**
* Result of a level 3 Stratum.
*
@@ -42,7 +40,7 @@ public class L3StratumResult extends StratumResult<Level3Configuration> {
*/
private final SpeciesCountAggregateModel totalFishesCount;
- public L3StratumResult(StratumConfiguration<Level3Configuration> configuration, String label) {
+ public L3StratumResult(StratumConfiguration<Level3Configuration, Level3Action> configuration, String label) {
super(configuration, label);
totalFishesCount = new SpeciesCountAggregateModel();
}
@@ -52,7 +50,7 @@ public class L3StratumResult extends StratumResult<Level3Configuration> {
}
@Override
- public void close() throws IOException {
+ public void close() {
totalFishesCount.close();
}
=====================================
t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3Action.java
=====================================
--- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3Action.java
+++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3Action.java
@@ -405,7 +405,7 @@ public class Level3Action extends T3Action<Level3Configuration> {
}
private L3CatchStratum newCatchStratum(L3StratumConfiguration stratumConfiguration) throws Exception {
- L3CatchStratum catchStratum = new L3CatchStratum(stratumConfiguration, inputContext.getSpecies(), inputContext.getSpeciesToFixFilter());
+ L3CatchStratum catchStratum = new L3CatchStratum(stratumConfiguration, inputContext.getSpecies());
catchStratum.init(serviceContext, stratumConfiguration.getWeightCategoryTreatments(), this);
// get the total weight of the catch stratum
float catchStratumWeight = catchStratum.getTotalCatchWeight();
@@ -430,8 +430,8 @@ public class Level3Action extends T3Action<Level3Configuration> {
new L3SampleStratum(stratumConfiguration,
inputContext.getSpecies(),
totalCatchWeight,
- stratumConfiguration.getConversionHelper(),
- inputContext.getSpeciesToFixFilter());
+ stratumConfiguration.getConversionHelper()
+ );
sampleStratum.init(serviceContext, stratumConfiguration.getWeightCategoryTreatments(), this);
return sampleStratum;
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/CatchStratum.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/CatchStratum.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/CatchStratum.java
@@ -20,12 +20,8 @@
*/
package fr.ird.t3.actions.stratum;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Multimaps;
import fr.ird.t3.actions.T3Action;
import fr.ird.t3.entities.data.Activity;
-import fr.ird.t3.entities.data.CorrectedElementaryCatch;
-import fr.ird.t3.entities.data.WeightCategoryTreatmentAware;
import fr.ird.t3.entities.reference.Species;
import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.services.IOCService;
@@ -33,9 +29,10 @@ import fr.ird.t3.services.T3ServiceContext;
import fr.ird.t3.services.ioc.InjectDAO;
import java.util.Collection;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
+import java.util.Set;
/**
* Base catch stratum.
@@ -43,12 +40,13 @@ import java.util.stream.Collectors;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.3
*/
-public abstract class CatchStratum<C extends LevelConfigurationWithStratum, A extends T3Action<C>> extends Stratum<C, A> {
+public abstract class CatchStratum<C extends LevelConfigurationWithStratum, A extends T3Action<C>, S extends StratumConfiguration<C, A>> extends Stratum<C, A, S> {
- private int nbActivitiesWithSample;
+ private final Set<String> activityWithSampleIds;
- protected CatchStratum(StratumConfiguration<C> configuration, Collection<Species> speciesToFix) {
+ protected CatchStratum(S configuration, Collection<Species> speciesToFix) {
super(configuration, speciesToFix);
+ activityWithSampleIds = new LinkedHashSet<>();
}
/**
@@ -56,11 +54,11 @@ public abstract class CatchStratum<C extends LevelConfigurationWithStratum, A ex
*
* @return new instance of a catch stratum loader
*/
- protected abstract CatchStratumLoader<C> newLoader();
+ protected abstract CatchStratumLoader<C, A, S> newLoader();
@Override
public void init(T3ServiceContext serviceContext, List<WeightCategoryTreatment> weightCategories, A messager) throws Exception {
- CatchStratumLoader<C> stratumLoader = newLoader();
+ CatchStratumLoader<C, A, S> stratumLoader = newLoader();
// inject transaction in loader
stratumLoader.setTransaction(serviceContext.getT3TopiaPersistenceContext());
// inject dao in loader
@@ -68,7 +66,13 @@ public abstract class CatchStratum<C extends LevelConfigurationWithStratum, A ex
// get all catches usable in this stratum grouped by their owing activity
Map<Activity, Integer> activities = stratumLoader.loadData(getConfiguration());
setActivities(activities);
- nbActivitiesWithSample = (int) activities.keySet().stream().filter(Activity::isSetSpeciesCatWeightNotEmpty).count();
+ //FIXME- Ca doit etre dans SampleStratum ?
+ for (Activity activity : activities.keySet()) {
+ boolean withSample = !getSetSpeciesCatWeight(activity).isEmpty();
+ if (withSample) {
+ activityWithSampleIds.add(activity.getTopiaId());
+ }
+ }
}
/**
@@ -81,18 +85,7 @@ public abstract class CatchStratum<C extends LevelConfigurationWithStratum, A ex
}
public int getNbActivitiesWithSample() {
- return nbActivitiesWithSample;
+ return activityWithSampleIds.size();
}
- public Collection<CorrectedElementaryCatch> getCorrectedElementaryCatch(Activity activity) {
- WeightCategoryTreatment stratumWeightCategoryTreatment = getConfiguration().getWeightCategoryTreatment();
- if (stratumWeightCategoryTreatment == null) {
- return activity.getCorrectedElementaryCatch();
- }
- return activity.getCorrectedElementaryCatch().stream().filter(c -> stratumWeightCategoryTreatment.equals(c.getWeightCategoryTreatment())).collect(Collectors.toList());
- }
-
- public Multimap<WeightCategoryTreatment, CorrectedElementaryCatch> getCorrectedElementaryCatchByCategory(Activity activity) {
- return Multimaps.index(getCorrectedElementaryCatch(activity), WeightCategoryTreatmentAware::getWeightCategoryTreatment);
- }
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/CatchStratumLoader.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/CatchStratumLoader.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/CatchStratumLoader.java
@@ -8,24 +8,32 @@
* 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%
*/
package fr.ird.t3.actions.stratum;
+import com.google.common.base.Preconditions;
+import fr.ird.t3.actions.T3Action;
import fr.ird.t3.entities.T3TopiaPersistenceContext;
import fr.ird.t3.entities.data.Activity;
+import fr.ird.t3.entities.data.Trip;
+import fr.ird.t3.entities.reference.Vessel;
+import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.services.T3TopiaPersistenceContextAware;
+import org.nuiton.topia.persistence.TopiaException;
+
+import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import java.util.function.Supplier;
-import org.nuiton.topia.persistence.TopiaException;
/**
* To loader a catch stratum.
@@ -34,7 +42,7 @@ import org.nuiton.topia.persistence.TopiaException;
* @see CatchStratum
* @since 1.3
*/
-public abstract class CatchStratumLoader<C extends LevelConfigurationWithStratum> implements T3TopiaPersistenceContextAware {
+public abstract class CatchStratumLoader<C extends LevelConfigurationWithStratum, A extends T3Action<C>, S extends StratumConfiguration<C, A>> implements T3TopiaPersistenceContextAware {
protected Supplier<T3TopiaPersistenceContext> transaction;
@@ -42,10 +50,10 @@ public abstract class CatchStratumLoader<C extends LevelConfigurationWithStratum
* To obtain all activities of the catch stratum.
*
* @param configuration stratum configuration
- * @return the activites to use for the catch stratum
+ * @return activities to use for the catch stratum
* @throws TopiaException if any pb while quering db
*/
- public abstract Map<Activity, Integer> loadData(StratumConfiguration<C> configuration) throws TopiaException;
+ public abstract Map<Activity, Integer> loadData(S configuration);
@Override
public Supplier<T3TopiaPersistenceContext> getT3TopiaPersistenceContext() {
@@ -55,4 +63,33 @@ public abstract class CatchStratumLoader<C extends LevelConfigurationWithStratum
public void setTransaction(Supplier<T3TopiaPersistenceContext> transaction) {
this.transaction = transaction;
}
+
+ protected Map<Activity, Integer> filterActivities(S configuration, Map<String, Integer> activityIds) {
+ Map<Activity, Integer> result = new HashMap<>();
+ if (activityIds != null && activityIds.size() > 0) {
+ Set<Vessel> possibleVessels = configuration.getPossibleCatchVessels();
+ WeightCategoryTreatment weightCategoryTreatment = configuration.getWeightCategoryTreatment();
+ for (Map.Entry<String, Integer> e : activityIds.entrySet()) {
+ String activityId = e.getKey();
+ // get activity
+ Activity activity = configuration.getActivity(activityId);
+ // get his trip
+ Trip trip = activity.getTrip();
+ if (!possibleVessels.contains(trip.getVessel())) {
+ // not a matching boat
+ continue;
+ }
+ // recheck activity have some catches.
+ Preconditions.checkState(!activity.isCorrectedElementaryCatchEmpty(),
+ String.format("Can not accept an activity (%s) with no catch", activity.getTopiaId()));
+ // weight category is in stratum, check there is catch using this category
+ if (weightCategoryTreatment != null && !activity.withCorrectedElementaryCatch(weightCategoryTreatment)) {
+ // reject - the stratum weight category not found for this activity
+ continue;
+ }
+ result.put(activity, e.getValue());
+ }
+ }
+ return result;
+ }
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/SampleStratum.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/SampleStratum.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/SampleStratum.java
@@ -39,7 +39,7 @@ import java.util.Set;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.3
*/
-public abstract class SampleStratum<C extends LevelConfigurationWithStratum, A extends T3Action<C>, S extends SampleStratum<C, A, S>> extends Stratum<C, A> {
+public abstract class SampleStratum<C extends LevelConfigurationWithStratum, A extends T3Action<C>, T extends StratumConfiguration<C, A>, S extends SampleStratum<C, A, T, S>> extends Stratum<C, A, T> {
/**
* Number of merged activites (counted when passing through method
@@ -59,11 +59,11 @@ public abstract class SampleStratum<C extends LevelConfigurationWithStratum, A e
*/
private Integer substitutionLevel;
- protected SampleStratum(StratumConfiguration<C> configuration, Collection<Species> speciesToFix) {
+ protected SampleStratum(T configuration, Collection<Species> speciesToFix) {
super(configuration, speciesToFix);
}
- protected abstract SampleStratumLoader<C, A, S> newLoader();
+ protected abstract SampleStratumLoader<C, A, T, S> newLoader();
protected abstract String logSampleStratumLevel(int substitutionLevel, A messager);
@@ -93,7 +93,7 @@ public abstract class SampleStratum<C extends LevelConfigurationWithStratum, A e
@Override
public void init(T3ServiceContext serviceContext, List<WeightCategoryTreatment> weightCategories, A messager) throws Exception {
- SampleStratumLoader<C, A, S> stratumLoader = newLoader();
+ SampleStratumLoader<C, A, T, S> stratumLoader = newLoader();
// inject transaction in loader
stratumLoader.setTransaction(serviceContext.getT3TopiaPersistenceContext());
@@ -115,4 +115,5 @@ public abstract class SampleStratum<C extends LevelConfigurationWithStratum, A e
public final int getNbMergedActivities() {
return nbMergedActivities;
}
+
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/SampleStratumLoader.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/SampleStratumLoader.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/SampleStratumLoader.java
@@ -20,9 +20,13 @@
*/
package fr.ird.t3.actions.stratum;
+import com.google.common.base.Preconditions;
import fr.ird.t3.actions.T3Action;
import fr.ird.t3.entities.T3TopiaPersistenceContext;
import fr.ird.t3.entities.data.Activity;
+import fr.ird.t3.entities.data.Trip;
+import fr.ird.t3.entities.reference.Vessel;
+import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.entities.type.T3Date;
import fr.ird.t3.services.T3ServiceContext;
import fr.ird.t3.services.T3TopiaPersistenceContextAware;
@@ -38,13 +42,13 @@ import java.util.Set;
import java.util.function.Supplier;
/**
- * To loader a catch stratum.
+ * To loader a sample stratum.
*
* @author Tony Chemit - dev(a)tchemit.fr
- * @see CatchStratum
+ * @see SampleStratum
* @since 1.3
*/
-public abstract class SampleStratumLoader<C extends LevelConfigurationWithStratum, A extends T3Action<C>, S extends SampleStratum<C, A, S>> implements T3TopiaPersistenceContextAware {
+public abstract class SampleStratumLoader<C extends LevelConfigurationWithStratum, A extends T3Action<C>, T extends StratumConfiguration<C, A>, S extends SampleStratum<C, A, T, S>> implements T3TopiaPersistenceContextAware {
private static final Log log = LogFactory.getLog(SampleStratumLoader.class);
private final C levelConfiguration;
@@ -60,7 +64,7 @@ public abstract class SampleStratumLoader<C extends LevelConfigurationWithStratu
protected SampleStratumLoader(S sampleStratum) {
this.sampleStratum = sampleStratum;
- levelConfiguration = sampleStratum.getConfiguration().getConfiguration();
+ this.levelConfiguration = sampleStratum.getConfiguration().getConfiguration();
}
/**
@@ -77,17 +81,6 @@ public abstract class SampleStratumLoader<C extends LevelConfigurationWithStratu
protected abstract Set<String> findActivityIds(String schoolTypeId, T3Date beginDate, T3Date endDate, String... zoneIds);
- /**
- * From a set of activity ids, filter the one that can be use in this
- * stratum. This mainly means to filter some of them using the stratum
- * configuration.
- *
- * @param activityIds ids of activities to filter
- * @return the set of usable activities after having
- * @throws TopiaException if any database problem while loading data
- */
- protected abstract Set<Activity> filterActivities(Set<String> activityIds);
-
protected abstract boolean isStratumOk();
@Override
@@ -157,4 +150,41 @@ public abstract class SampleStratumLoader<C extends LevelConfigurationWithStratu
return levelConfiguration.getTimeStep();
}
+ /**
+ * From a set of activity ids, filter the one that can be use in this
+ * stratum. This mainly means to filter some of them using the stratum
+ * configuration.
+ *
+ * @param activityIds ids of activities to filter
+ * @return the set of usable activities after having
+ * @throws TopiaException if any database problem while loading data
+ */
+ private Set<Activity> filterActivities(Set<String> activityIds) {
+ Set<Activity> result = new HashSet<>();
+ T configuration = getSampleStratum().getConfiguration();
+ Set<Vessel> possibleVessels = configuration.getPossibleSampleVessels();
+ WeightCategoryTreatment weightCategoryTreatment = configuration.getWeightCategoryTreatment();
+ for (String activityId : activityIds) {
+ Activity activity = configuration.getActivity(activityId);
+ // get his trip
+ Trip trip = activity.getTrip();
+ if (!possibleVessels.contains(trip.getVessel())) {
+ // not a matching boat
+ continue;
+ }
+ // recheck activity have some samples.
+ Preconditions.checkState(activity.isSetSpeciesCatWeightNotEmpty(),
+ String.format("Can not accept an activity (%s) with no sample", activity.getTopiaId()));
+ if (weightCategoryTreatment != null) {
+ // weight category is in stratum, check there is catch using this category
+ boolean foundWeightCategory = activity.withSetSpeciesCatWeight(weightCategoryTreatment);
+ if (!foundWeightCategory) {
+ // reject - the stratum weight category not found for this activity
+ continue;
+ }
+ }
+ result.add(activity);
+ }
+ return result;
+ }
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/Stratum.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/Stratum.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/Stratum.java
@@ -20,21 +20,40 @@
*/
package fr.ird.t3.actions.stratum;
+import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multimaps;
+import fr.ird.t3.T3IOUtil;
import fr.ird.t3.actions.T3Action;
+import fr.ird.t3.entities.cache.LengthWeightConversionWithContextCache;
import fr.ird.t3.entities.data.Activity;
+import fr.ird.t3.entities.data.CorrectedElementaryCatch;
+import fr.ird.t3.entities.data.SetSpeciesCatWeight;
+import fr.ird.t3.entities.data.SetSpeciesFrequency;
+import fr.ird.t3.entities.data.SetSpeciesFrequencyTopiaDao;
+import fr.ird.t3.entities.data.WeightCategoryTreatmentAware;
+import fr.ird.t3.entities.reference.LengthWeightConversion;
import fr.ird.t3.entities.reference.Species;
+import fr.ird.t3.entities.reference.SpeciesTopiaDao;
import fr.ird.t3.entities.reference.WeightCategoryTreatment;
+import fr.ird.t3.models.WeightCompositionAggregateModel;
import fr.ird.t3.services.T3ServiceContext;
import org.nuiton.topia.persistence.TopiaException;
import java.io.Closeable;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
/**
* base class for any stratum.
@@ -43,14 +62,14 @@ import java.util.Set;
* @see CatchStratum
* @since 1.0
*/
-public abstract class Stratum<C extends LevelConfigurationWithStratum, A extends T3Action<C>> implements Closeable, Iterable<Map.Entry<Activity, Integer>> {
+public abstract class Stratum<C extends LevelConfigurationWithStratum, A extends T3Action<C>, S extends StratumConfiguration<C, A>> implements Closeable, Iterable<Map.Entry<Activity, Integer>> {
/**
* Stratum configuration of this stratum.
*
* @see StratumConfiguration
*/
- private final StratumConfiguration<C> configuration;
+ private final S configuration;
/**
* Selected set of species to fix.
*
@@ -67,7 +86,7 @@ public abstract class Stratum<C extends LevelConfigurationWithStratum, A extends
*/
private Map<Activity, Integer> activities;
- protected Stratum(StratumConfiguration<C> configuration, Collection<Species> speciesToFix) {
+ protected Stratum(S configuration, Collection<Species> speciesToFix) {
this.configuration = configuration;
this.speciesToFix = ImmutableSet.copyOf(speciesToFix);
}
@@ -88,7 +107,7 @@ public abstract class Stratum<C extends LevelConfigurationWithStratum, A extends
return activities.entrySet().iterator();
}
- public StratumConfiguration<C> getConfiguration() {
+ public S getConfiguration() {
return configuration;
}
@@ -128,4 +147,107 @@ public abstract class Stratum<C extends LevelConfigurationWithStratum, A extends
throw new IllegalStateException("You must invoke the #init(tx) method before accessing stratum data.");
}
}
+
+ public Collection<CorrectedElementaryCatch> getCorrectedElementaryCatch(Activity activity) {
+ WeightCategoryTreatment stratumWeightCategoryTreatment = getConfiguration().getWeightCategoryTreatment();
+ if (stratumWeightCategoryTreatment == null) {
+ return activity.getCorrectedElementaryCatch();
+ }
+ return activity.getCorrectedElementaryCatch().stream().filter(c -> stratumWeightCategoryTreatment.equals(c.getWeightCategoryTreatment())).collect(Collectors.toList());
+ }
+
+ public Multimap<WeightCategoryTreatment, CorrectedElementaryCatch> getCorrectedElementaryCatchByCategory(Activity activity) {
+ return Multimaps.index(getCorrectedElementaryCatch(activity), WeightCategoryTreatmentAware::getWeightCategoryTreatment);
+ }
+
+ private Multimap<WeightCategoryTreatment, SetSpeciesCatWeight> getSetSpeciesCatWeightByCategory(Activity activity) {
+ return Multimaps.index(getSetSpeciesCatWeight(activity), WeightCategoryTreatmentAware::getWeightCategoryTreatment);
+ }
+
+ Collection<SetSpeciesCatWeight> getSetSpeciesCatWeight(Activity activity) {
+ WeightCategoryTreatment stratumWeightCategoryTreatment = getConfiguration().getWeightCategoryTreatment();
+ if (stratumWeightCategoryTreatment == null) {
+ return activity.getSetSpeciesCatWeight();
+ }
+ return activity.getSetSpeciesCatWeight().stream().filter(c -> stratumWeightCategoryTreatment.equals(c.getWeightCategoryTreatment())).collect(Collectors.toList());
+ }
+
+ public Collection<SetSpeciesFrequency> getSetSpeciesFrequency(Activity activity) {
+ WeightCategoryTreatment stratumWeightCategoryTreatment = getConfiguration().getWeightCategoryTreatment();
+ if (stratumWeightCategoryTreatment == null) {
+ return activity.getSetSpeciesFrequency();
+ }
+ LengthWeightConversionWithContextCache conversionHelper = getConfiguration().getConversionHelper();
+
+ Multimap<Species, SetSpeciesFrequency> setSpeciesFrequencyBySpecies = SpeciesTopiaDao.groupBySpecies(activity.getSetSpeciesFrequency());
+ Multimap<Species, Integer> lengthClassesBySpecies = ArrayListMultimap.create();
+ // collect all length classes by species
+ SetSpeciesFrequencyTopiaDao.collectLengthClasses(setSpeciesFrequencyBySpecies, lengthClassesBySpecies);
+ List<SetSpeciesFrequency> result = new LinkedList<>();
+ for (Map.Entry<Species, Collection<SetSpeciesFrequency>> entry : setSpeciesFrequencyBySpecies.asMap().entrySet()) {
+ Species species = entry.getKey();
+ LengthWeightConversion conversion = conversionHelper.getConversions(species);
+ Collection<SetSpeciesFrequency> setSizes = entry.getValue();
+ List<Integer> lengthClasses = new ArrayList<>(lengthClassesBySpecies.get(species));
+ Collections.sort(lengthClasses);
+ List<Integer> lengthClassesAccepted = conversionHelper.getLengthClasses(conversion, stratumWeightCategoryTreatment, lengthClasses);
+ result.addAll(setSizes.stream().filter(f -> lengthClassesAccepted.contains(f.getLfLengthClass())).collect(Collectors.toList()));
+ }
+ return result;
+ }
+
+ protected void fillWeightsFromCatchesWeight(Activity activity, WeightCompositionAggregateModel model, int dividerFactor) {
+ Map<WeightCategoryTreatment, Map<Species, Float>> weights = new HashMap<>();
+ Multimap<WeightCategoryTreatment, CorrectedElementaryCatch> data = getCorrectedElementaryCatchByCategory(activity);
+ T3IOUtil.fillMapWithDefaultValue(weights, data.keySet(), HashMap::new);
+ for (WeightCategoryTreatment weightCategory : data.keySet()) {
+ Map<Species, Float> speciesFloatMap = weights.get(weightCategory);
+ Collection<CorrectedElementaryCatch> correctedElementaryCatches = data.get(weightCategory);
+ fillWeights(weightCategory,
+ correctedElementaryCatches,
+ speciesFloatMap,
+ CorrectedElementaryCatch::getCatchWeight,
+ model,
+ dividerFactor);
+ }
+ }
+
+ protected void fillWeightsFromSamplesWeight(Activity activity,
+ Map<WeightCategoryTreatment, Map<Species, Float>> weights,
+ WeightCompositionAggregateModel model) {
+ if (weights == null) {
+ weights = new HashMap<>();
+ }
+ Multimap<WeightCategoryTreatment, SetSpeciesCatWeight> data = getSetSpeciesCatWeightByCategory(activity);
+ T3IOUtil.fillMapWithDefaultValue(weights, data.keySet(), HashMap::new);
+ for (WeightCategoryTreatment weightCategory : data.keySet()) {
+ Map<Species, Float> speciesFloatMap = weights.get(weightCategory);
+ Collection<SetSpeciesCatWeight> setSpeciesCatWeights = data.get(weightCategory);
+ fillWeights(weightCategory, setSpeciesCatWeights, speciesFloatMap, SetSpeciesCatWeight::getWeight, model, 1);
+ }
+ }
+
+ protected <X extends WeightCategoryTreatmentAware> void fillWeights(WeightCategoryTreatment weightCategory,
+ Collection<X> data,
+ Map<Species, Float> weights,
+ Function<X, Float> function,
+ WeightCompositionAggregateModel model,
+ int divideFactor) {
+ if (weights == null) {
+ weights = new HashMap<>();
+ }
+ for (X datum : data) {
+ Species species = datum.getSpecies();
+ Float weight = weights.get(species);
+ if (weight == null) {
+ weight = 0f;
+ }
+ weight += function.apply(datum) / divideFactor;
+ weights.put(species, weight);
+ }
+ if (model != null) {
+ model.addModel(weightCategory, weights);
+ }
+ }
+
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
@@ -20,11 +20,13 @@
*/
package fr.ird.t3.actions.stratum;
-import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableSet;
+import fr.ird.t3.actions.T3Action;
+import fr.ird.t3.entities.cache.LengthWeightConversionWithContextCache;
import fr.ird.t3.entities.data.Activity;
-import fr.ird.t3.entities.reference.AbstractSchoolTypeTopiaDao;
+import fr.ird.t3.entities.data.SpeciesAware;
import fr.ird.t3.entities.reference.SchoolType;
+import fr.ird.t3.entities.reference.SchoolTypeTopiaDao;
import fr.ird.t3.entities.reference.Vessel;
import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.entities.reference.zone.ZoneStratumAware;
@@ -33,12 +35,14 @@ import fr.ird.t3.entities.type.T3Date;
import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.function.BiConsumer;
import java.util.function.Function;
+import java.util.function.Predicate;
/**
* Configuration of a stratum.
@@ -46,57 +50,54 @@ import java.util.function.Function;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.0
*/
-public class StratumConfiguration<C extends LevelConfigurationWithStratum> {
+public class StratumConfiguration<C extends LevelConfigurationWithStratum, A extends T3Action<C>> {
- private final C configuration;
+ private final LevelInputContext<C, A> inputContext;
private final Collection<ZoneStratumAware> zones;
- private final ZoneStratumAwareMeta zoneMeta;
private final ZoneStratumAware zone;
private final SchoolType schoolType;
private final WeightCategoryTreatment weightCategoryTreatment;
private final T3Date beginDate;
private final T3Date endDate;
- private final Set<Vessel> possibleCatchVessels;
- private final Set<Vessel> possibleSampleVessels;
private final Map<String, Integer> stratumMinimumCountBySpecie;
- private final LoadingCache<String, Activity> activityCache;
+ private final List<WeightCategoryTreatment> weightCategoryTreatments;
private final int stratumIndex;
+ private final LengthWeightConversionWithContextCache conversionHelper;
private String[] zoneIds;
- protected StratumConfiguration(C configuration,
- ZoneStratumAwareMeta zoneMeta,
+ protected StratumConfiguration(LevelInputContext<C, A> inputContext,
ZoneStratumAware zone,
SchoolType schoolType,
WeightCategoryTreatment weightCategoryTreatment,
T3Date beginDate,
T3Date endDate,
Collection<ZoneStratumAware> zones,
- Set<Vessel> possibleCatchVessels,
- Set<Vessel> possibleSampleVessels,
Map<String, Integer> stratumMinimumCountBySpecie,
- LoadingCache<String, Activity> activityCache,
+ List<WeightCategoryTreatment> weightCategoryTreatments,
int stratumIndex) {
- this.configuration = configuration;
- this.zoneMeta = zoneMeta;
+ this.inputContext = inputContext;
this.zone = zone;
this.schoolType = schoolType;
+ this.weightCategoryTreatments = weightCategoryTreatments;
this.weightCategoryTreatment = weightCategoryTreatment;
this.beginDate = beginDate;
this.endDate = endDate;
this.zones = zones;
- this.possibleCatchVessels = possibleCatchVessels;
- this.possibleSampleVessels = possibleSampleVessels;
this.stratumMinimumCountBySpecie = stratumMinimumCountBySpecie;
- this.activityCache = activityCache;
this.stratumIndex = stratumIndex;
+ this.conversionHelper = inputContext.newLengthWeightConversionWithContextCache(zone.getOcean(), beginDate.toBeginDate());
+ }
+
+ public LengthWeightConversionWithContextCache getConversionHelper() {
+ return conversionHelper;
}
public C getConfiguration() {
- return configuration;
+ return inputContext.getConfiguration();
}
private ZoneStratumAwareMeta getZoneMeta() {
- return zoneMeta;
+ return inputContext.getZoneMeta();
}
public String getZoneTableName() {
@@ -113,15 +114,15 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> {
public Set<String> getSchoolTypeIds() {
ImmutableSet.Builder<String> builder = ImmutableSet.<String>builder().add(getSchoolType().getTopiaId());
- switch (configuration.getSchoolTypeIndeterminate()) {
+ switch (getConfiguration().getSchoolTypeIndeterminate()) {
case ALL_IN_BO:
- if (AbstractSchoolTypeTopiaDao.SCHOOL_TYPE_BO_ID.equals(getSchoolType().getTopiaId())) {
- builder.add(AbstractSchoolTypeTopiaDao.SCHOOL_TYPE_INDETERMINATE_ID);
+ if (SchoolTypeTopiaDao.SCHOOL_TYPE_BO_ID.equals(getSchoolType().getTopiaId())) {
+ builder.add(SchoolTypeTopiaDao.SCHOOL_TYPE_INDETERMINATE_ID);
}
break;
case ALL_IN_BL:
- if (AbstractSchoolTypeTopiaDao.SCHOOL_TYPE_BL_ID.equals(getSchoolType().getTopiaId())) {
- builder.add(AbstractSchoolTypeTopiaDao.SCHOOL_TYPE_INDETERMINATE_ID);
+ if (SchoolTypeTopiaDao.SCHOOL_TYPE_BL_ID.equals(getSchoolType().getTopiaId())) {
+ builder.add(SchoolTypeTopiaDao.SCHOOL_TYPE_INDETERMINATE_ID);
}
break;
case IGNORE:
@@ -143,11 +144,11 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> {
}
public Set<Vessel> getPossibleCatchVessels() {
- return possibleCatchVessels;
+ return inputContext.getPossibleCatchVessels();
}
public Set<Vessel> getPossibleSampleVessels() {
- return possibleSampleVessels;
+ return inputContext.getPossibleSampleVessels();
}
public Map<String, Integer> getStratumMinimumCountBySpecie() {
@@ -162,6 +163,14 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> {
return stratumIndex;
}
+ public List<WeightCategoryTreatment> getWeightCategoryTreatments() {
+ return weightCategoryTreatments;
+ }
+
+ public Predicate<? super SpeciesAware> getSpeciesToFixFilter() {
+ return inputContext.getSpeciesToFixFilter();
+ }
+
public String[] getZoneIds() {
if (zoneIds == null) {
Collection<ZoneStratumAware> allZones = getZones();
@@ -177,7 +186,7 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> {
public Activity getActivity(String activityId) {
try {
- return activityCache.get(activityId);
+ return inputContext.getActivityCache().get(activityId);
} catch (ExecutionException e) {
throw new RuntimeException(String.format("Could not obtain activity %s", activityId), e);
}
@@ -194,7 +203,7 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> {
if (currentLevel == null) {
result = "";
}
- result += String.format("(%s;%s;%d)", zone.getLabel1(), configuration.isUseWeightCategoriesInStratum() ? weightCategoryTreatment.getLabel1() : "NA", level);
+ result += String.format("(%s;%s;%d)", zone.getLabel1(), getConfiguration().isUseWeightCategoriesInStratum() ? weightCategoryTreatment.getLabel1() : "NA", level);
Objects.requireNonNull(consumer).accept(activity, result);
}
}
=====================================
t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumResult.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumResult.java
+++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumResult.java
@@ -8,12 +8,12 @@
* 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%
@@ -32,7 +32,7 @@ import java.io.Closeable;
*/
public abstract class StratumResult<C extends LevelConfigurationWithStratum> implements Closeable {
- private final StratumConfiguration<C> configuration;
+ private final StratumConfiguration<C, ?> configuration;
private final String label;
@@ -42,12 +42,12 @@ public abstract class StratumResult<C extends LevelConfigurationWithStratum> imp
private int nbActivitiesWithSample;
- protected StratumResult(StratumConfiguration<C> configuration, String label) {
+ protected StratumResult(StratumConfiguration<C, ?> configuration, String label) {
this.configuration = configuration;
this.label = label;
}
- public StratumConfiguration<C> getConfiguration() {
+ public StratumConfiguration<C, ?> getConfiguration() {
return configuration;
}
@@ -59,30 +59,30 @@ public abstract class StratumResult<C extends LevelConfigurationWithStratum> imp
return substitutionLevel;
}
- public int getNbActivities() {
- return nbActivities;
- }
-
- public int getNbActivitiesWithSample() {
- return nbActivitiesWithSample;
- }
-
- public int getNbActivitiesWithoutSample() {
- return nbActivities - nbActivitiesWithSample;
- }
-
public void setSubstitutionLevel(int substitutionLevel) {
this.substitutionLevel = substitutionLevel;
}
+ public int getNbActivities() {
+ return nbActivities;
+ }
+
public void setNbActivities(int nbActivities) {
this.nbActivities = nbActivities;
}
+ public int getNbActivitiesWithSample() {
+ return nbActivitiesWithSample;
+ }
+
public void setNbActivitiesWithSample(int nbActivitiesWithSample) {
this.nbActivitiesWithSample = nbActivitiesWithSample;
}
+ public int getNbActivitiesWithoutSample() {
+ return nbActivities - nbActivitiesWithSample;
+ }
+
public void addNbActivities(int nbActivities) {
this.nbActivities += nbActivities;
}
=====================================
t3-domain/src/main/java/fr/ird/t3/entities/cache/LengthWeightConversionCache.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/entities/cache/LengthWeightConversionCache.java
+++ b/t3-domain/src/main/java/fr/ird/t3/entities/cache/LengthWeightConversionCache.java
@@ -25,12 +25,14 @@ import fr.ird.t3.entities.reference.LengthWeightConversionTopiaDao;
import fr.ird.t3.entities.reference.Ocean;
import fr.ird.t3.entities.reference.Species;
import fr.ird.t3.entities.reference.WeightCategory;
+import fr.ird.t3.entities.reference.WeightCategoryTreatment;
import fr.ird.t3.entities.type.T3Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.Date;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -133,4 +135,24 @@ public class LengthWeightConversionCache {
return result;
}
+ public List<Integer> getLengthClasses(LengthWeightConversion conversion, WeightCategoryTreatment weightCategoryTreatment, List<Integer> lengthClasses) {
+ Integer min = weightCategoryTreatment.getMin();
+ Integer minLengthClass = null;
+ if (min != null) {
+ minLengthClass = getSpecieHighestLengthClass(conversion, min);
+ }
+ Integer max = weightCategoryTreatment.getMax();
+ Integer maxLengthClass = null;
+ if (max != null) {
+ maxLengthClass = getSpecieHighestLengthClass(conversion, max);
+ }
+ List<Integer> result = new LinkedList<>();
+ for (Integer lengthClass : lengthClasses) {
+ if (minLengthClass != null && lengthClass < minLengthClass || maxLengthClass != null && lengthClass > maxLengthClass) {
+ continue;
+ }
+ result.add(lengthClass);
+ }
+ return result;
+ }
}
=====================================
t3-domain/src/main/java/fr/ird/t3/entities/data/ActivityImpl.java
=====================================
--- a/t3-domain/src/main/java/fr/ird/t3/entities/data/ActivityImpl.java
+++ b/t3-domain/src/main/java/fr/ird/t3/entities/data/ActivityImpl.java
@@ -222,4 +222,9 @@ public class ActivityImpl extends ActivityAbstract {
public boolean withCorrectedElementaryCatch(WeightCategoryTreatment weightCategoryTreatment) {
return isCorrectedElementaryCatchNotEmpty() && getCorrectedElementaryCatch().stream().map(CorrectedElementaryCatch::getWeightCategoryTreatment).anyMatch(c -> c.equals(weightCategoryTreatment));
}
+
+ @Override
+ public boolean withSetSpeciesCatWeight(WeightCategoryTreatment weightCategoryTreatment) {
+ return isSetSpeciesCatWeightNotEmpty() && getSetSpeciesCatWeight().stream().map(SetSpeciesCatWeight::getWeightCategoryTreatment).anyMatch(c -> c.equals(weightCategoryTreatment));
+ }
}
=====================================
t3-domain/src/main/xmi/t3-persistence.zargo
=====================================
Binary files a/t3-domain/src/main/xmi/t3-persistence.zargo and b/t3-domain/src/main/xmi/t3-persistence.zargo differ
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/3585d323448b384f491d7eb078d58a9d…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/3585d323448b384f491d7eb078d58a9d…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-t3][develop] Go to version 2.5 + [N1.5] Remplacer SetSpeciesCatWeight.WeightCategorySample…
by Tony CHEMIT 23 Mar '18
by Tony CHEMIT 23 Mar '18
23 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
2f995491 by Tony CHEMIT at 2018-03-23T10:11:08Z
Go to version 2.5 + [N1.5] Remplacer SetSpeciesCatWeight.WeightCategorySample par WeightCategoryTreatment (Closes #301) + Review cache API
- - - - -
30 changed files:
- pom.xml
- t3-actions/pom.xml
- t3-actions/src/main/java/fr/ird/t3/actions/data/level1/ConvertSampleSetSpeciesFrequencyToWeightAction.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level1/ConvertSetSpeciesFrequencyToWeightAction.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level1/ExtrapolateSampleWeightToSetAction.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2Action.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfiguration.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3Action.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3InputContext.java
- t3-actions/src/test/java/fr/ird/t3/actions/ActionResumeTest.java
- t3-domain/pom.xml
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
- − t3-domain/src/main/java/fr/ird/t3/actions/stratum/WeightCategoryTreatmentToSample.java
- t3-domain/src/main/java/fr/ird/t3/entities/T3TopiaPersistenceContext.java
- t3-domain/src/main/java/fr/ird/t3/entities/conversion/LengthWeightConversionSimpleCache.java → t3-domain/src/main/java/fr/ird/t3/entities/cache/LengthWeightConversionCache.java
- t3-domain/src/main/java/fr/ird/t3/entities/conversion/LengthWeightConversionWithContextCache.java → t3-domain/src/main/java/fr/ird/t3/entities/cache/LengthWeightConversionWithContextCache.java
- + t3-domain/src/main/java/fr/ird/t3/entities/cache/WeightCategoryTreatmentCache.java
- + t3-domain/src/main/java/fr/ird/t3/entities/cache/ZoneStratumCache.java
- t3-domain/src/main/java/fr/ird/t3/entities/reference/zone/AbstractZoneStratumAwareMeta.java
- t3-domain/src/main/java/fr/ird/t3/entities/reference/zone/AbstractZoneStratumAwareTopiaDao.java
- t3-domain/src/main/java/fr/ird/t3/entities/reference/zone/ZoneStratumAwareMeta.java
- t3-domain/src/main/java/fr/ird/t3/models/LengthCompositionAggregateModel.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/OceanContext.java → t3-domain/src/main/java/fr/ird/t3/services/migration/T3MigrationCallbackV2_5.java
- + t3-domain/src/main/resources/db/migration/V2_5_01_change-weight-category.sql
- t3-domain/src/main/xmi/t3-persistence.properties
- t3-domain/src/main/xmi/t3-persistence.zargo
- t3-domain/src/test/java/fr/ird/t3/entities/reference/LengthWeightConversionWithContextCacheTest.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/2f9954910642fbd06a0f019b3628dcda…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/2f9954910642fbd06a0f019b3628dcda…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-t3][develop] improve Level 2 and 3 API + conversion API (See #263)
by Tony CHEMIT 22 Mar '18
by Tony CHEMIT 22 Mar '18
22 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
514feb71 by Tony CHEMIT at 2018-03-22T15:27:30Z
improve Level 2 and 3 API + conversion API (See #263)
- - - - -
30 changed files:
- t3-actions/src/main/java/fr/ird/t3/actions/data/level1/ConvertSampleSetSpeciesFrequencyToWeightAction.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level1/ConvertSetSpeciesFrequencyToWeightAction.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level1/ExtrapolateSampleWeightToSetAction.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2CatchStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoader.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfiguration.java
- − t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfigurationIterator.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfigurationIteratorWithCategories.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfigurationIteratorWithoutCategories.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2Action.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2OutputContext.java
- − t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3ActionInputContext.java
- − t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3ActionOutputContext.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3CatchStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfiguration.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfigurationIteratorWithCategories.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfigurationIteratorWithoutCategories.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3Action.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3InputContext.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3OutputContext.java
- t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level2/Level2Action.ftl
- t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level2/Level2Action_en.ftl
- t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level3/Level3Action.ftl
- t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level3/Level3Action_en.ftl
- t3-actions/src/test/java/fr/ird/t3/actions/ActionResumeTest.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2ActionInputContext.java → t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2ActionOutputContext.java → t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelOutputContext.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/514feb71ea2db506460bf5f04dccbfec…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/514feb71ea2db506460bf5f04dccbfec…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-t3][develop] improve Level 2 and 3 API + conversion API (See #263)
by Tony CHEMIT 22 Mar '18
by Tony CHEMIT 22 Mar '18
22 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
98cdbd43 by Tony CHEMIT at 2018-03-22T15:23:02Z
improve Level 2 and 3 API + conversion API (See #263)
- - - - -
30 changed files:
- t3-actions/src/main/java/fr/ird/t3/actions/data/level1/ConvertSampleSetSpeciesFrequencyToWeightAction.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level1/ConvertSetSpeciesFrequencyToWeightAction.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level1/ExtrapolateSampleWeightToSetAction.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2CatchStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2SampleStratumLoader.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfiguration.java
- − t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfigurationIterator.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfigurationIteratorWithCategories.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2StratumConfigurationIteratorWithoutCategories.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2Action.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2InputContext.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level2/Level2OutputContext.java
- − t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3ActionInputContext.java
- − t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3ActionOutputContext.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3CatchStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3SampleStratum.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfiguration.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfigurationIteratorWithCategories.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level3/L3StratumConfigurationIteratorWithoutCategories.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3Action.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3InputContext.java
- + t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3OutputContext.java
- t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level2/Level2Action.ftl
- t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level2/Level2Action_en.ftl
- t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level3/Level3Action.ftl
- t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level3/Level3Action_en.ftl
- t3-actions/src/test/java/fr/ird/t3/actions/ActionResumeTest.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2ActionInputContext.java → t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level2/L2ActionOutputContext.java → t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelOutputContext.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/98cdbd43fae224d280da05070d828a76…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/98cdbd43fae224d280da05070d828a76…
You're receiving this email because of your account on gitlab.com.
1
0