Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3 Commits: 5d8cb811 by Tony CHEMIT at 2018-04-18T10:02:53Z Améliorer les temps de traitement du N2 (See #324) - - - - - f6517ee6 by Tony CHEMIT at 2018-04-18T10:04:04Z [N2] A propos des résultats d'un traitement avec catégories de poids dans la stratification (Closes #317) - - - - - 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: ===================================== 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 @@ -229,4 +229,15 @@ public class L2CatchStratum extends CatchStratum<Level2Configuration, Level2Acti return sampleWeightModelFroAllSpecies; } + public void resetCorrectedElementaryCatches() { + for (Activity activity : getActivities().keySet()) { + if (activity.isCorrectedElementaryCatchNotEmpty()) { + for (CorrectedElementaryCatch correctedElementaryCatch : activity.getCorrectedElementaryCatch()) { + if (correctedElementaryCatch.getCorrectedCatchWeight()==null) { + correctedElementaryCatch.setCorrectedCatchWeight(correctedElementaryCatch.getCatchWeight()); + } + } + } + } + } } ===================================== 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 @@ -155,8 +155,9 @@ public class Level2Action extends T3Action<Level2Configuration> { Collections.singleton(SchoolTypeTopiaDao.SCHOOL_TYPE_INDETERMINATE_ID), stratumConfiguration.getBeginDate(), stratumConfiguration.getEndDate()).keySet(); + inputContext.loadActivities(activityIds); for (String activityId : activityIds) { - for (CorrectedElementaryCatch correctedElementaryCatch : inputContext.getCorrectedElementaryCatch(activityId)) { + for (CorrectedElementaryCatch correctedElementaryCatch : inputContext.getActivityCache().forId(activityId).getCorrectedElementaryCatch()) { correctedElementaryCatch.setCorrectedCatchWeight(correctedElementaryCatch.getCatchWeight()); } } @@ -173,6 +174,9 @@ public class Level2Action extends T3Action<Level2Configuration> { result.setSubstitutionLevel(0); incrementsProgression(); } else { + catchStratum.resetCorrectedElementaryCatches(); + //flushTransaction("clean stratum " + stratumConfiguration.getStratumIndex()); + // compute sample stratum try (L2SampleStratum sampleStratum = L2SampleStratum.newSampleStratum(stratumConfiguration, catchStratum, weightCategories, species, this)) { incrementsProgression(); @@ -187,6 +191,8 @@ public class Level2Action extends T3Action<Level2Configuration> { addWarningMessage(message); // mark it as 999 level to make it appear at top of a reverse list result.setSubstitutionLevel(999); + result.addNbActivities(catchStratum.getNbActivities()); + result.addNbActivitiesWithSample(catchStratum.getNbActivitiesWithSample()); // Fill back CorrectedElementaryCatch.CatchWeight to CorrectedElementaryCatch.CorrectedCatchWeight int activityIndex = 1; int nbActivities = catchStratum.getNbActivities(); ===================================== 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 @@ -196,6 +196,8 @@ public class Level3Action extends T3Action<Level3Configuration> { addWarningMessage(message); // mark it as 999 level to make it appear at top of a reverse list result.setSubstitutionLevel(999); + result.addNbActivities(catchStratum.getNbActivities()); + result.addNbActivitiesWithSample(catchStratum.getNbActivitiesWithSample()); // FIXME-269 Should we fill at least stratumLevelN3? } else { // can use this sampleStratum ===================================== 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 @@ -67,6 +67,7 @@ public abstract class CatchStratumLoader<C extends LevelConfigurationWithStratum protected Map<Activity, Integer> filterActivities(S configuration, Map<String, Integer> activityIds) { Map<Activity, Integer> result = new HashMap<>(); if (activityIds != null && activityIds.size() > 0) { + configuration.loadActivities(activityIds.keySet()); Set<Vessel> possibleVessels = configuration.getPossibleCatchVessels(); WeightCategoryTreatment weightCategoryTreatment = configuration.getWeightCategoryTreatment(); for (Map.Entry<String, Integer> e : activityIds.entrySet()) { ===================================== 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 @@ -274,4 +274,8 @@ public abstract class LevelInputContext<C extends LevelConfigurationWithStratum, public void clear() { activityCache.clear(); } + + public void loadActivities(Set<String> activityIds) { + activityCache.load(activityIds); + } } ===================================== 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 @@ -163,6 +163,7 @@ public abstract class SampleStratumLoader<C extends LevelConfigurationWithStratu Set<Activity> result = new HashSet<>(); T configuration = getSampleStratum().getConfiguration(); Set<Vessel> possibleVessels = configuration.getPossibleSampleVessels(); + configuration.loadActivities(activityIds); WeightCategoryTreatment weightCategoryTreatment = configuration.getWeightCategoryTreatment(); for (String activityId : activityIds) { Activity activity = configuration.getActivity(activityId); ===================================== 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 @@ -187,6 +187,10 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum, A ext return inputContext.getActivityCache().forId(activityId); } + public void loadActivities(Set<String> activityIds) { + inputContext.getActivityCache().load(activityIds); + } + @Override public String toString() { return String.format("%s [schoolType: %s, zone: %s, startDate:%s, endDate:%s, weightCategory: %s]", super.toString(), schoolType.getLabel1(), zone.getTopiaId(), beginDate, endDate, weightCategoryTreatment); ===================================== t3-domain/src/main/java/fr/ird/t3/entities/cache/ActivityCache.java ===================================== --- a/t3-domain/src/main/java/fr/ird/t3/entities/cache/ActivityCache.java +++ b/t3-domain/src/main/java/fr/ird/t3/entities/cache/ActivityCache.java @@ -25,8 +25,11 @@ import fr.ird.t3.entities.data.ActivityTopiaDao; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.util.LinkedHashSet; import java.util.Map; +import java.util.Set; import java.util.TreeMap; +import java.util.TreeSet; /** * Created by tchemit on 23/03/2018. @@ -47,13 +50,32 @@ public class ActivityCache { 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)); + log.debug(String.format("Cache Activity [%d] for %s", cache.size(), activityId)); cache.put(activityId, result = activityDAO.forTopiaIdEquals(activityId).findUnique()); + if (cache.size() % 100 == 0) { + log.info(String.format("Cache Activity [%d]", cache.size())); + } } return result; } + public void load(Set<String> ids) { + Set<String> result = new LinkedHashSet<>(ids); + result.removeAll(cache.keySet()); + if (!result.isEmpty()) { + for (Activity activity : activityDAO.forTopiaIdIn(result).findAll()) { + String activityId = activity.getTopiaId(); + log.debug(String.format("Cache Activity [%d] for %s", cache.size(), activityId)); + cache.put(activityId, activity); + if (cache.size() % 100 == 0) { + log.info(String.format("Cache Activity [%d]", cache.size())); + } + } + } + } + public void clear() { + log.info(String.format("Clear Cache Activity [%d]", cache.size())); cache.clear(); } } ===================================== t3-domain/src/main/java/fr/ird/t3/models/WeightCompositionModelHelper.java ===================================== --- a/t3-domain/src/main/java/fr/ird/t3/models/WeightCompositionModelHelper.java +++ b/t3-domain/src/main/java/fr/ird/t3/models/WeightCompositionModelHelper.java @@ -190,14 +190,16 @@ public final class WeightCompositionModelHelper { inResume ); } - WeightCompositionModelHelper.decorateModel( - header, - decoratorService, - model, - subModel, - null, - inResume - ); + if (model.getWeightCategories().size() > 1) { + WeightCompositionModelHelper.decorateModel( + header, + decoratorService, + model, + subModel, + null, + inResume + ); + } return inResume.toString(); } View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/compare/fec55645f64315b5ef79ed2a98fed58a... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/compare/fec55645f64315b5ef79ed2a98fed58a... You're receiving this email because of your account on gitlab.com.