Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
9 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/Level2Action.java
- t3-actions/src/main/java/fr/ird/t3/actions/data/level3/Level3Action.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/CatchStratumLoader.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/LevelInputContext.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/SampleStratumLoader.java
- t3-domain/src/main/java/fr/ird/t3/actions/stratum/StratumConfiguration.java
- t3-domain/src/main/java/fr/ird/t3/entities/cache/ActivityCache.java
- t3-domain/src/main/java/fr/ird/t3/models/WeightCompositionModelHelper.java
Changes:
| ... | ... | @@ -229,4 +229,15 @@ public class L2CatchStratum extends CatchStratum<Level2Configuration, Level2Acti |
| 229 | 229 |
return sampleWeightModelFroAllSpecies;
|
| 230 | 230 |
}
|
| 231 | 231 |
|
| 232 |
+ public void resetCorrectedElementaryCatches() {
|
|
| 233 |
+ for (Activity activity : getActivities().keySet()) {
|
|
| 234 |
+ if (activity.isCorrectedElementaryCatchNotEmpty()) {
|
|
| 235 |
+ for (CorrectedElementaryCatch correctedElementaryCatch : activity.getCorrectedElementaryCatch()) {
|
|
| 236 |
+ if (correctedElementaryCatch.getCorrectedCatchWeight()==null) {
|
|
| 237 |
+ correctedElementaryCatch.setCorrectedCatchWeight(correctedElementaryCatch.getCatchWeight());
|
|
| 238 |
+ }
|
|
| 239 |
+ }
|
|
| 240 |
+ }
|
|
| 241 |
+ }
|
|
| 242 |
+ }
|
|
| 232 | 243 |
}
|
| ... | ... | @@ -155,8 +155,9 @@ public class Level2Action extends T3Action<Level2Configuration> { |
| 155 | 155 |
Collections.singleton(SchoolTypeTopiaDao.SCHOOL_TYPE_INDETERMINATE_ID),
|
| 156 | 156 |
stratumConfiguration.getBeginDate(),
|
| 157 | 157 |
stratumConfiguration.getEndDate()).keySet();
|
| 158 |
+ inputContext.loadActivities(activityIds);
|
|
| 158 | 159 |
for (String activityId : activityIds) {
|
| 159 |
- for (CorrectedElementaryCatch correctedElementaryCatch : inputContext.getCorrectedElementaryCatch(activityId)) {
|
|
| 160 |
+ for (CorrectedElementaryCatch correctedElementaryCatch : inputContext.getActivityCache().forId(activityId).getCorrectedElementaryCatch()) {
|
|
| 160 | 161 |
correctedElementaryCatch.setCorrectedCatchWeight(correctedElementaryCatch.getCatchWeight());
|
| 161 | 162 |
}
|
| 162 | 163 |
}
|
| ... | ... | @@ -173,6 +174,9 @@ public class Level2Action extends T3Action<Level2Configuration> { |
| 173 | 174 |
result.setSubstitutionLevel(0);
|
| 174 | 175 |
incrementsProgression();
|
| 175 | 176 |
} else {
|
| 177 |
+ catchStratum.resetCorrectedElementaryCatches();
|
|
| 178 |
+ //flushTransaction("clean stratum " + stratumConfiguration.getStratumIndex());
|
|
| 179 |
+ |
|
| 176 | 180 |
// compute sample stratum
|
| 177 | 181 |
try (L2SampleStratum sampleStratum = L2SampleStratum.newSampleStratum(stratumConfiguration, catchStratum, weightCategories, species, this)) {
|
| 178 | 182 |
incrementsProgression();
|
| ... | ... | @@ -187,6 +191,8 @@ public class Level2Action extends T3Action<Level2Configuration> { |
| 187 | 191 |
addWarningMessage(message);
|
| 188 | 192 |
// mark it as 999 level to make it appear at top of a reverse list
|
| 189 | 193 |
result.setSubstitutionLevel(999);
|
| 194 |
+ result.addNbActivities(catchStratum.getNbActivities());
|
|
| 195 |
+ result.addNbActivitiesWithSample(catchStratum.getNbActivitiesWithSample());
|
|
| 190 | 196 |
// Fill back CorrectedElementaryCatch.CatchWeight to CorrectedElementaryCatch.CorrectedCatchWeight
|
| 191 | 197 |
int activityIndex = 1;
|
| 192 | 198 |
int nbActivities = catchStratum.getNbActivities();
|
| ... | ... | @@ -196,6 +196,8 @@ public class Level3Action extends T3Action<Level3Configuration> { |
| 196 | 196 |
addWarningMessage(message);
|
| 197 | 197 |
// mark it as 999 level to make it appear at top of a reverse list
|
| 198 | 198 |
result.setSubstitutionLevel(999);
|
| 199 |
+ result.addNbActivities(catchStratum.getNbActivities());
|
|
| 200 |
+ result.addNbActivitiesWithSample(catchStratum.getNbActivitiesWithSample());
|
|
| 199 | 201 |
// FIXME-269 Should we fill at least stratumLevelN3?
|
| 200 | 202 |
} else {
|
| 201 | 203 |
// can use this sampleStratum
|
| ... | ... | @@ -67,6 +67,7 @@ public abstract class CatchStratumLoader<C extends LevelConfigurationWithStratum |
| 67 | 67 |
protected Map<Activity, Integer> filterActivities(S configuration, Map<String, Integer> activityIds) {
|
| 68 | 68 |
Map<Activity, Integer> result = new HashMap<>();
|
| 69 | 69 |
if (activityIds != null && activityIds.size() > 0) {
|
| 70 |
+ configuration.loadActivities(activityIds.keySet());
|
|
| 70 | 71 |
Set<Vessel> possibleVessels = configuration.getPossibleCatchVessels();
|
| 71 | 72 |
WeightCategoryTreatment weightCategoryTreatment = configuration.getWeightCategoryTreatment();
|
| 72 | 73 |
for (Map.Entry<String, Integer> e : activityIds.entrySet()) {
|
| ... | ... | @@ -274,4 +274,8 @@ public abstract class LevelInputContext<C extends LevelConfigurationWithStratum, |
| 274 | 274 |
public void clear() {
|
| 275 | 275 |
activityCache.clear();
|
| 276 | 276 |
}
|
| 277 |
+ |
|
| 278 |
+ public void loadActivities(Set<String> activityIds) {
|
|
| 279 |
+ activityCache.load(activityIds);
|
|
| 280 |
+ }
|
|
| 277 | 281 |
}
|
| ... | ... | @@ -163,6 +163,7 @@ public abstract class SampleStratumLoader<C extends LevelConfigurationWithStratu |
| 163 | 163 |
Set<Activity> result = new HashSet<>();
|
| 164 | 164 |
T configuration = getSampleStratum().getConfiguration();
|
| 165 | 165 |
Set<Vessel> possibleVessels = configuration.getPossibleSampleVessels();
|
| 166 |
+ configuration.loadActivities(activityIds);
|
|
| 166 | 167 |
WeightCategoryTreatment weightCategoryTreatment = configuration.getWeightCategoryTreatment();
|
| 167 | 168 |
for (String activityId : activityIds) {
|
| 168 | 169 |
Activity activity = configuration.getActivity(activityId);
|
| ... | ... | @@ -187,6 +187,10 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum, A ext |
| 187 | 187 |
return inputContext.getActivityCache().forId(activityId);
|
| 188 | 188 |
}
|
| 189 | 189 |
|
| 190 |
+ public void loadActivities(Set<String> activityIds) {
|
|
| 191 |
+ inputContext.getActivityCache().load(activityIds);
|
|
| 192 |
+ }
|
|
| 193 |
+ |
|
| 190 | 194 |
@Override
|
| 191 | 195 |
public String toString() {
|
| 192 | 196 |
return String.format("%s [schoolType: %s, zone: %s, startDate:%s, endDate:%s, weightCategory: %s]", super.toString(), schoolType.getLabel1(), zone.getTopiaId(), beginDate, endDate, weightCategoryTreatment);
|
| ... | ... | @@ -25,8 +25,11 @@ import fr.ird.t3.entities.data.ActivityTopiaDao; |
| 25 | 25 |
import org.apache.commons.logging.Log;
|
| 26 | 26 |
import org.apache.commons.logging.LogFactory;
|
| 27 | 27 |
|
| 28 |
+import java.util.LinkedHashSet;
|
|
| 28 | 29 |
import java.util.Map;
|
| 30 |
+import java.util.Set;
|
|
| 29 | 31 |
import java.util.TreeMap;
|
| 32 |
+import java.util.TreeSet;
|
|
| 30 | 33 |
|
| 31 | 34 |
/**
|
| 32 | 35 |
* Created by tchemit on 23/03/2018.
|
| ... | ... | @@ -47,13 +50,32 @@ public class ActivityCache { |
| 47 | 50 |
public Activity forId(String activityId) {
|
| 48 | 51 |
Activity result = cache.get(activityId);
|
| 49 | 52 |
if (result == null) {
|
| 50 |
- log.info(String.format("Cache Activity [%d] for %s", cache.size(), activityId));
|
|
| 53 |
+ log.debug(String.format("Cache Activity [%d] for %s", cache.size(), activityId));
|
|
| 51 | 54 |
cache.put(activityId, result = activityDAO.forTopiaIdEquals(activityId).findUnique());
|
| 55 |
+ if (cache.size() % 100 == 0) {
|
|
| 56 |
+ log.info(String.format("Cache Activity [%d]", cache.size()));
|
|
| 57 |
+ }
|
|
| 52 | 58 |
}
|
| 53 | 59 |
return result;
|
| 54 | 60 |
}
|
| 55 | 61 |
|
| 62 |
+ public void load(Set<String> ids) {
|
|
| 63 |
+ Set<String> result = new LinkedHashSet<>(ids);
|
|
| 64 |
+ result.removeAll(cache.keySet());
|
|
| 65 |
+ if (!result.isEmpty()) {
|
|
| 66 |
+ for (Activity activity : activityDAO.forTopiaIdIn(result).findAll()) {
|
|
| 67 |
+ String activityId = activity.getTopiaId();
|
|
| 68 |
+ log.debug(String.format("Cache Activity [%d] for %s", cache.size(), activityId));
|
|
| 69 |
+ cache.put(activityId, activity);
|
|
| 70 |
+ if (cache.size() % 100 == 0) {
|
|
| 71 |
+ log.info(String.format("Cache Activity [%d]", cache.size()));
|
|
| 72 |
+ }
|
|
| 73 |
+ }
|
|
| 74 |
+ }
|
|
| 75 |
+ }
|
|
| 76 |
+ |
|
| 56 | 77 |
public void clear() {
|
| 78 |
+ log.info(String.format("Clear Cache Activity [%d]", cache.size()));
|
|
| 57 | 79 |
cache.clear();
|
| 58 | 80 |
}
|
| 59 | 81 |
}
|
| ... | ... | @@ -190,14 +190,16 @@ public final class WeightCompositionModelHelper { |
| 190 | 190 |
inResume
|
| 191 | 191 |
);
|
| 192 | 192 |
}
|
| 193 |
- WeightCompositionModelHelper.decorateModel(
|
|
| 194 |
- header,
|
|
| 195 |
- decoratorService,
|
|
| 196 |
- model,
|
|
| 197 |
- subModel,
|
|
| 198 |
- null,
|
|
| 199 |
- inResume
|
|
| 200 |
- );
|
|
| 193 |
+ if (model.getWeightCategories().size() > 1) {
|
|
| 194 |
+ WeightCompositionModelHelper.decorateModel(
|
|
| 195 |
+ header,
|
|
| 196 |
+ decoratorService,
|
|
| 197 |
+ model,
|
|
| 198 |
+ subModel,
|
|
| 199 |
+ null,
|
|
| 200 |
+ inResume
|
|
| 201 |
+ );
|
|
| 202 |
+ }
|
|
| 201 | 203 |
return inResume.toString();
|
| 202 | 204 |
}
|
| 203 | 205 |
|