[Git][ultreiaio/ird-t3][develop] 2 commits: fix typo
Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3 Commits: c515ae7d by Tony CHEMIT at 2018-03-07T19:42:54Z fix typo - - - - - 56c80a1a by Tony CHEMIT at 2018-03-07T19:43:35Z [N2][N3] Les calées de type banc indéterminé ne sont pas traitées au N2 et N3 (See #261) - - - - - 30 changed files: - t3-actions/src/main/java/fr/ird/t3/actions/data/level0/ComputeRF2Action.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/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/Level2Action.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/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/Level3Action.java - t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level0/ComputeRF2Action.ftl - t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level0/ComputeRF2Action_en.ftl - 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/main/resources/i18n/t3-actions_en_GB.properties - t3-actions/src/main/resources/i18n/t3-actions_fr_FR.properties - t3-actions/src/test/java/fr/ird/t3/actions/data/level0/ComputeRF2ActionResumeTest.java - t3-actions/src/test/java/fr/ird/t3/actions/data/level0/ComputeRF2EmptyConfigurationActionResumeTest.java - t3-domain/src/main/java/fr/ird/t3/actions/stratum/CatchStratum.java - t3-domain/src/main/java/fr/ird/t3/actions/stratum/SampleStratum.java - t3-domain/src/main/java/fr/ird/t3/actions/stratum/SchoolTypeIndeterminate.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/entities/data/AbstractActivityTopiaDao.java - t3-domain/src/main/java/fr/ird/t3/entities/reference/AbstractSchoolTypeTopiaDao.java - t3-domain/src/main/resources/i18n/t3-domain_en_GB.properties - t3-domain/src/main/resources/i18n/t3-domain_fr_FR.properties Changes: ===================================== t3-actions/src/main/java/fr/ird/t3/actions/data/level0/ComputeRF2Action.java ===================================== --- a/t3-actions/src/main/java/fr/ird/t3/actions/data/level0/ComputeRF2Action.java +++ b/t3-actions/src/main/java/fr/ird/t3/actions/data/level0/ComputeRF2Action.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% @@ -70,7 +70,7 @@ public class ComputeRF2Action extends AbstractLevel0Action<ComputeRF2Configurati protected List<Harbour> landingHarbours; @InjectFromDAO(entityType = Species.class) protected List<Species> species; - protected int nbStratums; + protected int nbStratum; protected int nbTripsWithRF2; @InjectDAO(entityType = RaisingFactor2.class) private RaisingFactor2TopiaDao raisingFactor2DAO; @@ -87,8 +87,8 @@ public class ComputeRF2Action extends AbstractLevel0Action<ComputeRF2Configurati super(Level0Step.COMPUTE_RF2); } - public int getNbStratums() { - return nbStratums; + public int getNbStratum() { + return nbStratum; } @SuppressWarnings("unused") @@ -155,10 +155,10 @@ public class ComputeRF2Action extends AbstractLevel0Action<ComputeRF2Configurati log.debug(String.format("found %d months.", tripsByMonth.size())); for (T3Date month : tripsByMonth.keySet()) { Collection<CompleteTrip> stratumTrips = tripsByMonth.get(month); - nbStratums++; + nbStratum++; String message = l(locale, "t3.level0.computeRF2.nbTrips.for.stratum", stratumTrips.size(), - nbStratums, + nbStratum, harbourStr, countryStr, vesselSimpleTypeStr, ===================================== 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 @@ -57,7 +57,7 @@ public class L2CatchStratumLoader extends CatchStratumLoader<Level2Configuration Map<String, Integer> activityIds = activityDAO.findAllActivityIdsForCatchStratum( configuration.getZoneTableName(), configuration.getZone().getTopiaId(), - configuration.getSchoolType().getTopiaId(), + configuration.getSchoolTypeIds(), configuration.getBeginDate(), configuration.getEndDate()); // ensuite pour chaque activité on récupère sa marée et on conserve ===================================== 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 @@ -56,7 +56,6 @@ public abstract class L2SampleStratumLoader extends SampleStratumLoader<Level2Co * @since 1.4 */ private final float minimumSampleTotalWeight; - /** * The minimum sample count required to obtain the correct * substitution level. @@ -75,7 +74,7 @@ public abstract class L2SampleStratumLoader extends SampleStratumLoader<Level2Co float catchStratumTotalWeight = sampleStratum.getCatchStratumTotalWeight(); float maximumWeightRatio = configuration.getStratumWeightRatio(); minimumSampleTotalWeight = catchStratumTotalWeight / maximumWeightRatio; - SchoolType schoolType = sampleStratum.getConfiguration().getSampleSchoolType(); + SchoolType schoolType = sampleStratum.getConfiguration().getSchoolType(); int code = schoolType.getCode(); switch (code) { case 1: @@ -103,7 +102,7 @@ public abstract class L2SampleStratumLoader extends SampleStratumLoader<Level2Co List<String> activityIds = activityDAO.findAllActivityIdsForSampleStratum( configuration.getZoneTableName(), zoneId, - schoolTypeId, + configuration.getSchoolTypeIds(), beginDate, endDate); result.addAll(activityIds); ===================================== 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 @@ -41,7 +41,7 @@ public class L2SampleStratumLoaderAtlantic extends L2SampleStratumLoader { protected Set<String> findActivityIds(int level) { StratumConfiguration<Level2Configuration> configuration = getSampleStratum().getConfiguration(); - String schoolTypeId = configuration.getSampleSchoolType().getTopiaId(); + String schoolTypeId = configuration.getSchoolType().getTopiaId(); String zoneId = configuration.getZone().getTopiaId(); T3Date beginDate = configuration.getBeginDate(); T3Date endDate = configuration.getEndDate(); ===================================== 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 @@ -41,7 +41,7 @@ public class L2SampleStratumLoaderIndian extends L2SampleStratumLoader { protected Set<String> findActivityIds(int level) { StratumConfiguration<Level2Configuration> configuration = getSampleStratum().getConfiguration(); - String schoolTypeId = configuration.getSampleSchoolType().getTopiaId(); + String schoolTypeId = configuration.getSchoolType().getTopiaId(); String zoneId = configuration.getZone().getTopiaId(); T3Date beginDate = configuration.getBeginDate(); T3Date endDate = configuration.getEndDate(); ===================================== 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 @@ -27,7 +27,7 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import fr.ird.t3.actions.T3Action; import fr.ird.t3.actions.stratum.OceanContext; -import fr.ird.t3.actions.stratum.SampleStratum; +import fr.ird.t3.actions.stratum.SchoolTypeIndeterminate; import fr.ird.t3.actions.stratum.StratumConfiguration; import fr.ird.t3.entities.data.Activity; import fr.ird.t3.entities.data.ActivityTopiaDao; @@ -122,8 +122,6 @@ public class Level2Action extends T3Action<Level2Configuration> { private CorrectedElementaryCatchTopiaDao correctedElementaryCatchDAO; @InjectDAO(entityType = Vessel.class) private VesselTopiaDao vesselDAO; - @InjectDAO(entityType = SchoolType.class) - private SchoolTypeTopiaDao schoolTypeDAO; private ZoneStratumAwareMeta zoneMeta; @InjectFromDAO(entityType = SchoolType.class, method = "findAllForStratum") private Set<SchoolType> schoolTypes; @@ -140,13 +138,11 @@ public class Level2Action extends T3Action<Level2Configuration> { private Set<T3Date> startDates; private Set<Vessel> possibleCatchVessels; private Set<Vessel> possibleSampleVessels; - private int nbStratums; + private int nbStratum; private long totalCatchWeightForSpeciesFoFix; private long totalCatchWeight; private long totalCatchActivities; private long totalCatchActivitiesWithSample; - private SchoolType boSchoolType; - private SchoolType blSchoolType; public Level2Action() { activityCache = CacheBuilder.newBuilder().build( @@ -163,8 +159,6 @@ public class Level2Action extends T3Action<Level2Configuration> { @Override protected void prepareAction() throws Exception { super.prepareAction(); - this.boSchoolType = schoolTypeDAO.forCodeEquals(1).findUnique(); - this.blSchoolType = schoolTypeDAO.forCodeEquals(2).findUnique(); this.oceanContext.clear(); Level2Configuration configuration = getConfiguration(); configuration.setLocale(getLocale()); @@ -216,13 +210,13 @@ public class Level2Action extends T3Action<Level2Configuration> { } private void executeActionWithCategories(Level2Configuration configuration, Set<String> usedActivityIds) throws Exception { - nbStratums = 0; + nbStratum = 0; for (SchoolType schoolType : schoolTypes) { List<WeightCategoryTreatment> weightCategories = getWeightCategoryTreatments(schoolType); Collection<ZoneStratumAware> zones = getZones(schoolType); - nbStratums += startDates.size() * zones.size() * weightCategories.size(); + nbStratum += startDates.size() * zones.size() * weightCategories.size(); } - setNbSteps(3 * nbStratums); + setNbSteps(3 * nbStratum); int timeStep = configuration.getTimeStep(); MutableInt stratumIndex = new MutableInt(1); for (SchoolType schoolType : schoolTypes) { @@ -237,12 +231,12 @@ public class Level2Action extends T3Action<Level2Configuration> { } private void executeActionWithoutCategories(Level2Configuration configuration, Set<String> usedActivityIds) throws Exception { - nbStratums = 0; + nbStratum = 0; for (SchoolType schoolType : schoolTypes) { Collection<ZoneStratumAware> zones = getZones(schoolType); - nbStratums += startDates.size() * zones.size(); + nbStratum += startDates.size() * zones.size(); } - setNbSteps(3 * nbStratums); + setNbSteps(3 * nbStratum); int timeStep = configuration.getTimeStep(); MutableInt stratumIndex = new MutableInt(1); for (SchoolType schoolType : schoolTypes) { @@ -254,18 +248,15 @@ public class Level2Action extends T3Action<Level2Configuration> { } } - private List<WeightCategoryTreatment> getWeightCategoryTreatments(SchoolType schoolType) { - List<WeightCategoryTreatment> weightCategoryTreatments = oceanContext.values().stream().flatMap(o -> o.getWeightCategories(schoolType).stream()).distinct().collect(Collectors.toList()); - WeightCategories.sort(weightCategoryTreatments); - return weightCategoryTreatments; - } - - private Collection<ZoneStratumAware> getZones(SchoolType schoolType) { - return oceanContext.values().stream().flatMap(o -> o.getZones(schoolType).stream()).distinct().collect(Collectors.toList()); - } - - private void doIterateOnDates(int timeStep, Level2Configuration configuration, SchoolType schoolType, Collection<ZoneStratumAware> zones, ZoneStratumAware zone, List<WeightCategoryTreatment> weightCategories, WeightCategoryTreatment weightCategoryTreatment, Set<String> usedActivityIds, MutableInt stratumIndex) throws Exception { - SchoolType sampleSchoolType = SampleStratum.getSampleSchoolType(schoolType, configuration.getSchoolTypeIndeterminate(), boSchoolType, blSchoolType); + private void doIterateOnDates(int timeStep, + Level2Configuration configuration, + SchoolType schoolType, + Collection<ZoneStratumAware> zones, + ZoneStratumAware zone, + List<WeightCategoryTreatment> weightCategories, + WeightCategoryTreatment weightCategoryTreatment, + Set<String> usedActivityIds, + MutableInt stratumIndex) throws Exception { for (T3Date startDate : startDates) { // get end date (only increments on timeStep - 1 to have // exactly timeStep month from beginDate.toStartDate() to endDate.toEndDate() @@ -277,7 +268,6 @@ public class Level2Action extends T3Action<Level2Configuration> { zoneMeta, zone, schoolType, - sampleSchoolType, weightCategoryTreatment, startDate, endDate, @@ -296,24 +286,34 @@ public class Level2Action extends T3Action<Level2Configuration> { } } - private L2StratumResult doExecuteStratum( - StratumConfiguration<Level2Configuration> stratumConfiguration, - List<WeightCategoryTreatment> weightCategories, - MutableInt stratumIndex, - Set<String> usedActivityIds) throws Exception { + private L2StratumResult doExecuteStratum(StratumConfiguration<Level2Configuration> stratumConfiguration, + List<WeightCategoryTreatment> weightCategories, + MutableInt stratumIndex, + Set<String> usedActivityIds) throws Exception { incrementsProgression(); String stratumPrefix = l(locale, "t3.level2.stratumLabel", - stratumIndex, nbStratums, + stratumIndex, nbStratum, decorate(stratumConfiguration.getSchoolType()), - decorate(stratumConfiguration.getSampleSchoolType()), decorate(stratumConfiguration.getZone()), stratumConfiguration.getBeginDate(), stratumConfiguration.getEndDate()); L2StratumResult result = new L2StratumResult(stratumConfiguration, stratumPrefix); String message = l(locale, "t3.level2.message.start.stratum", stratumPrefix); - if (log.isInfoEnabled()) { - log.info(message); + log.info(message); + if (SchoolTypeIndeterminate.IGNORE == getConfiguration().getSchoolTypeIndeterminate()) { + // Just report for all activities on School type indeterminate catch weight + Set<String> activityIds = activityDAO.findAllActivityIdsForCatchStratum( + stratumConfiguration.getZoneTableName(), + stratumConfiguration.getZone().getTopiaId(), + Collections.singleton(SchoolTypeTopiaDao.SCHOOL_TYPE_INDETERMINATE_ID), + stratumConfiguration.getBeginDate(), + stratumConfiguration.getEndDate()).keySet(); + for (String activityId : activityIds) { + for (CorrectedElementaryCatch correctedElementaryCatch : activityCache.get(activityId).getCorrectedElementaryCatch()) { + correctedElementaryCatch.setCorrectedCatchWeight(correctedElementaryCatch.getCatchWeight()); + } + } } addInfoMessage("=============================================================================================="); addInfoMessage(message); @@ -399,6 +399,16 @@ public class Level2Action extends T3Action<Level2Configuration> { return result; } + private List<WeightCategoryTreatment> getWeightCategoryTreatments(SchoolType schoolType) { + List<WeightCategoryTreatment> weightCategoryTreatments = oceanContext.values().stream().flatMap(o -> o.getWeightCategories(schoolType).stream()).distinct().collect(Collectors.toList()); + WeightCategories.sort(weightCategoryTreatments); + return weightCategoryTreatments; + } + + private Collection<ZoneStratumAware> getZones(SchoolType schoolType) { + return oceanContext.values().stream().flatMap(o -> o.getZones(schoolType).stream()).distinct().collect(Collectors.toList()); + } + private L2CatchStratum newCatchStratum(StratumConfiguration<Level2Configuration> stratumConfiguration, List<WeightCategoryTreatment> weightCategories) throws Exception { L2CatchStratum catchStratum = new L2CatchStratum(stratumConfiguration, species); @@ -645,34 +655,6 @@ public class Level2Action extends T3Action<Level2Configuration> { catchStratum.addActivityOutputModel(correctedCatchWeightModel); } -// private void setZoneMeta(ZoneStratumAwareMeta zoneMeta) { -// this.zoneMeta = zoneMeta; -// } - -// private void setSchoolTypes(Set<SchoolType> schoolTypes) { -// this.schoolTypes = schoolTypes; -// } - -// private void setSpecies(Set<Species> species) { -// this.species = species; -// } - -// private void setStartDates(Set<T3Date> startDates) { -// this.startDates = startDates; -// } - -// private void setPossibleCatchVessels(Set<Vessel> possibleCatchVessels) { -// this.possibleCatchVessels = possibleCatchVessels; -// } - -// private void setPossibleSampleVessels(Set<Vessel> possibleSampleVessels) { -// this.possibleSampleVessels = possibleSampleVessels; -// } - -// private void setZoneVersion(ZoneVersion zoneVersion) { -// this.zoneVersion = zoneVersion; -// } - // ------------------------------------------------------------------------- // --- Results ------------------------------------------------------------- // ------------------------------------------------------------------------- @@ -683,8 +665,8 @@ public class Level2Action extends T3Action<Level2Configuration> { } @SuppressWarnings("unused") - public int getNbStratums() { - return nbStratums; + public int getNbStratum() { + return nbStratum; } @SuppressWarnings("unused") @@ -748,7 +730,7 @@ public class Level2Action extends T3Action<Level2Configuration> { @SuppressWarnings("unused") public String getInputCatchStratumLog() { WeightCompositionAggregateModel inputCatchModelForSpeciesToFix = inputCatchModelForAllSpecies.extractForSpecies(species); - String title = l(locale, "t3.level2.message.strateInputGlobalComposition.resume"); + String title = l(locale, "t3.level2.message.stratumInputGlobalComposition.resume"); return WeightCompositionModelHelper.decorateModel( getDecoratorService(), title, @@ -759,7 +741,7 @@ public class Level2Action extends T3Action<Level2Configuration> { @SuppressWarnings("unused") public String getOutputCatchStratumLog() { WeightCompositionAggregateModel outputCatchModelForSpeciesToFix = outputCatchModelForAllSpecies.extractForSpecies(species); - String title = l(locale, "t3.level2.message.strateOutputGlobalComposition.resume"); + String title = l(locale, "t3.level2.message.stratumOutputGlobalComposition.resume"); return WeightCompositionModelHelper.decorateModel( getDecoratorService(), title, ===================================== 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 @@ -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% @@ -54,20 +54,16 @@ public class L3CatchStratumLoader extends CatchStratumLoader<Level3Configuration // - avec des captures // - dont la marée n'est pas samplesOnly // - dont la marée est complète - Map<String, Integer> activityIds = activityDAO.findAllActivityIdsForCatchStratum( configuration.getZoneTableName(), configuration.getZone().getTopiaId(), - configuration.getSchoolType().getTopiaId(), + configuration.getSchoolTypeIds(), configuration.getBeginDate(), - configuration.getEndDate() - ); - + configuration.getEndDate()); // ensuite pour chaque activité on récupère sa marée et on conserve // l'activité uniquement ssi : // - maree.bateau de type senneur OK // - maree.bateau dans la bonne flotte OK - return filterActivities(configuration, activityIds); } @@ -78,20 +74,15 @@ public class L3CatchStratumLoader extends CatchStratumLoader<Level3Configuration 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())); ===================================== 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 @@ -92,7 +92,7 @@ public abstract class L3SampleStratumLoader extends SampleStratumLoader<Level3Co List<String> activityIds = activityDAO.findAllActivityIdsForSampleStratum( configuration.getZoneTableName(), zoneId, - schoolTypeId, + schoolTypeId == null ? null : configuration.getSchoolTypeIds(), beginDate, endDate); result.addAll(activityIds); ===================================== 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 @@ -40,7 +40,7 @@ public class L3SampleStratumLoaderAtlantic extends L3SampleStratumLoader { @Override protected Set<String> findActivityIds(int level) { StratumConfiguration<Level3Configuration> configuration = getSampleStratum().getConfiguration(); - String schoolTypeId = configuration.getSampleSchoolType().getTopiaId(); + String schoolTypeId = configuration.getSchoolType().getTopiaId(); String zoneId = configuration.getZone().getTopiaId(); T3Date beginDate = configuration.getBeginDate(); T3Date endDate = configuration.getEndDate(); ===================================== 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 @@ -41,7 +41,7 @@ public class L3SampleStratumLoaderIndian extends L3SampleStratumLoader { protected Set<String> findActivityIds(int level) { StratumConfiguration<Level3Configuration> configuration = getSampleStratum().getConfiguration(); - String schoolTypeId = configuration.getSampleSchoolType().getTopiaId(); + String schoolTypeId = configuration.getSchoolType().getTopiaId(); String zoneId = configuration.getZone().getTopiaId(); T3Date beginDate = configuration.getBeginDate(); T3Date endDate = configuration.getEndDate(); ===================================== 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 @@ -30,7 +30,6 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import fr.ird.t3.actions.T3Action; import fr.ird.t3.actions.stratum.OceanContext; -import fr.ird.t3.actions.stratum.SampleStratum; import fr.ird.t3.actions.stratum.StratumConfiguration; import fr.ird.t3.actions.stratum.StratumMinimumSampleCount; import fr.ird.t3.entities.T3Predicates; @@ -46,7 +45,6 @@ import fr.ird.t3.entities.reference.LengthWeightConversionHelper; import fr.ird.t3.entities.reference.LengthWeightConversionTopiaDao; import fr.ird.t3.entities.reference.Ocean; import fr.ird.t3.entities.reference.SchoolType; -import fr.ird.t3.entities.reference.SchoolTypeTopiaDao; import fr.ird.t3.entities.reference.Species; import fr.ird.t3.entities.reference.Vessel; import fr.ird.t3.entities.reference.VesselTopiaDao; @@ -141,21 +139,11 @@ public class Level3Action extends T3Action<Level3Configuration> { private LengthWeightConversionTopiaDao lengthWeightConversionDAO; @InjectDAO(entityType = WeightCategoryTreatment.class) private WeightCategoryTreatmentTopiaDao weightCategoryTreatmentDAO; - // @InjectDAO(entityType = SetSpeciesFrequency.class) -// private SetSpeciesFrequencyTopiaDao setSpeciesFrequencyDAO; -// @InjectDAO(entityType = SetSpeciesCatWeight.class) -// private SetSpeciesCatWeightTopiaDao setSpeciesCatWeightDAO; -// @InjectDAO(entityType = ExtrapolatedAllSetSpeciesFrequency.class) -// private ExtrapolatedAllSetSpeciesFrequencyTopiaDao extrapolatedAllSetSpeciesFrequencyDAO; @InjectDAO(entityType = Vessel.class) private VesselTopiaDao vesselDAO; - @InjectDAO(entityType = SchoolType.class) - private SchoolTypeTopiaDao schoolTypeDAO; private ZoneStratumAwareMeta zoneMeta; @InjectFromDAO(entityType = SchoolType.class, method = "findAllForStratum") private Set<SchoolType> schoolTypes; - // @InjectEntityById(entityType = Ocean.class) -// private Ocean ocean; @InjectEntitiesById(entityType = Country.class) private Set<Country> catchFleets; @InjectEntitiesById(entityType = Species.class, path = "configuration.speciesIds") @@ -170,7 +158,7 @@ public class Level3Action extends T3Action<Level3Configuration> { private Set<Vessel> possibleCatchVessels; private Set<Vessel> possibleSampleVessels; private Map<SchoolType, Map<String, Integer>> stratumMinimumSampleCountBySchoolType; - private int nbStratums; + private int nbStratum; private long nbCatchActivities; private long nbCatchActivitiesWithSample; /** @@ -182,8 +170,6 @@ public class Level3Action extends T3Action<Level3Configuration> { private String topiaCreateDate; private int nbQuery; private StringBuilder queryBuffer = new StringBuilder(); - private SchoolType boSchoolType; - private SchoolType blSchoolType; public Level3Action() { activityCache = CacheBuilder.newBuilder().build( @@ -202,8 +188,6 @@ public class Level3Action extends T3Action<Level3Configuration> { @Override protected void prepareAction() throws Exception { super.prepareAction(); - this.boSchoolType = schoolTypeDAO.forCodeEquals(1).findUnique(); - this.blSchoolType = schoolTypeDAO.forCodeEquals(2).findUnique(); this.totalFishesCount = new SpeciesCountAggregateModel(); Level3Configuration configuration = getConfiguration(); configuration.setLocale(getLocale()); @@ -249,7 +233,7 @@ public class Level3Action extends T3Action<Level3Configuration> { } break; default: - throw new IllegalStateException("Can not use the school fish " + code); + throw new IllegalStateException(String.format("Can not use the school type %d", code)); } } this.stratumMinimumSampleCountBySchoolType = minimumSampleCountBySchoolType; @@ -283,13 +267,13 @@ public class Level3Action extends T3Action<Level3Configuration> { } private void executeActionWithCategories(Level3Configuration configuration, Set<String> usedActivityIds) throws Exception { - nbStratums = 0; + nbStratum = 0; for (SchoolType schoolType : schoolTypes) { List<WeightCategoryTreatment> weightCategories = getWeightCategoryTreatments(schoolType); Collection<ZoneStratumAware> zones = getZones(schoolType); - nbStratums += startDates.size() * zones.size() * weightCategories.size(); + nbStratum += startDates.size() * zones.size() * weightCategories.size(); } - setNbSteps(3 * nbStratums); + setNbSteps(3 * nbStratum); int timeStep = configuration.getTimeStep(); MutableInt stratumIndex = new MutableInt(1); for (SchoolType schoolType : schoolTypes) { @@ -305,12 +289,12 @@ public class Level3Action extends T3Action<Level3Configuration> { } private void executeActionWithoutCategories(Level3Configuration configuration, Set<String> usedActivityIds) throws Exception { - nbStratums = 0; + nbStratum = 0; for (SchoolType schoolType : schoolTypes) { Collection<ZoneStratumAware> zones = getZones(schoolType); - nbStratums += startDates.size() * zones.size(); + nbStratum += startDates.size() * zones.size(); } - setNbSteps(3 * nbStratums); + setNbSteps(3 * nbStratum); int timeStep = configuration.getTimeStep(); MutableInt stratumIndex = new MutableInt(1); for (SchoolType schoolType : schoolTypes) { @@ -334,7 +318,6 @@ public class Level3Action extends T3Action<Level3Configuration> { } private void doIterateOnDates(int timeStep, Level3Configuration configuration, SchoolType schoolType, Collection<ZoneStratumAware> zones, ZoneStratumAware zone, List<WeightCategoryTreatment> weightCategories, WeightCategoryTreatment weightCategoryTreatment, Set<String> usedActivityIds, MutableInt stratumIndex, Map<String, Integer> stratumMinimumCountBySpecie) throws Exception { - SchoolType sampleSchoolType = SampleStratum.getSampleSchoolType(schoolType, configuration.getSchoolTypeIndeterminate(), boSchoolType, blSchoolType); for (T3Date startDate : startDates) { // clear query buffer queryBuffer = new StringBuilder(); @@ -348,7 +331,6 @@ public class Level3Action extends T3Action<Level3Configuration> { zoneMeta, zone, schoolType, - sampleSchoolType, weightCategoryTreatment, startDate, endDate, @@ -382,9 +364,8 @@ public class Level3Action extends T3Action<Level3Configuration> { incrementsProgression(); String stratumPrefix = l(locale, "t3.level3.stratumLabel", - stratumIndex, nbStratums, + stratumIndex, nbStratum, decorate(stratumConfiguration.getSchoolType()), - decorate(stratumConfiguration.getSampleSchoolType()), decorate(stratumConfiguration.getZone()), stratumConfiguration.getBeginDate(), stratumConfiguration.getEndDate()); @@ -394,6 +375,21 @@ public class Level3Action extends T3Action<Level3Configuration> { addInfoMessage("=============================================================================================="); addInfoMessage(message); addInfoMessage("=============================================================================================="); + //FIXME-261 Is there anything to do ? +// if (SchoolTypeIndeterminate.IGNORE == getConfiguration().getSchoolTypeIndeterminate()) { +// // Just report for all activities on School type indeterminate catch weight +// Set<String> activityIds = activityDAO.findAllActivityIdsForCatchStratum( +// stratumConfiguration.getZoneTableName(), +// stratumConfiguration.getZone().getTopiaId(), +// Collections.singleton(SchoolTypeTopiaDao.SCHOOL_TYPE_INDETERMINATE_ID), +// stratumConfiguration.getBeginDate(), +// stratumConfiguration.getEndDate()).keySet(); +// for (String activityId : activityIds) { +// for (CorrectedElementaryCatch correctedElementaryCatch : activityCache.get(activityId).getCorrectedElementaryCatch()) { +// correctedElementaryCatch.setCorrectedCatchWeight(correctedElementaryCatch.getCatchWeight()); +// } +// } +// } // get the catch stratum try (L3CatchStratum catchStratum = newCatchStratum(stratumConfiguration, weightCategories)) { incrementsProgression(); @@ -713,8 +709,8 @@ public class Level3Action extends T3Action<Level3Configuration> { return nbCatchActivitiesWithSample; } - public int getNbStratums() { - return nbStratums; + public int getNbStratum() { + return nbStratum; } @SuppressWarnings("unused") ===================================== t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level0/ComputeRF2Action.ftl ===================================== --- a/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level0/ComputeRF2Action.ftl +++ b/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level0/ComputeRF2Action.ftl @@ -46,7 +46,7 @@ Date de fin : ${configuration.endDate} Indicateurs ----------- -- Nombre de strates : ${action.nbStratums} +- Nombre de strates : ${action.nbStratum} - Nombre de marées : ${action.nbTrips} - Nombre de marées avec calcul du rf2 : ${action.nbTripsWithRF2} ===================================== t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level0/ComputeRF2Action_en.ftl ===================================== --- a/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level0/ComputeRF2Action_en.ftl +++ b/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level0/ComputeRF2Action_en.ftl @@ -46,7 +46,7 @@ End date: ${configuration.endDate} Indicators ---------- -- Number of stratums: ${action.nbStratums} +- Number of stratums: ${action.nbStratum} - Number of trips: ${action.nbTrips} - Number of trips with computed rf2: ${action.nbTripsWithRF2} ===================================== t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level2/Level2Action.ftl ===================================== --- a/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level2/Level2Action.ftl +++ b/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level2/Level2Action.ftl @@ -81,7 +81,7 @@ Qualité des strates échantillons : Indicateurs ----------- -- Nombre de strates : ${action.nbStratums} +- Nombre de strates : ${action.nbStratum} - Nombre de strates corrigés : ${action.nbStrataFixed} - Nombre d'activités traités : ${action.totalCatchActivities} - Nombre d'activités traités (avec échantillon) : ${action.totalCatchActivitiesWithSample} ===================================== t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level2/Level2Action_en.ftl ===================================== --- a/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level2/Level2Action_en.ftl +++ b/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level2/Level2Action_en.ftl @@ -80,7 +80,7 @@ Quality of sample stratum: Indicators ---------- -- Number of stratums: ${action.nbStratums} +- Number of stratums: ${action.nbStratum} - Number of treated stratums: ${action.nbStrataFixed} - Number of treated sets: ${action.totalCatchActivities} - Number of treated sets (with samples): ${action.totalCatchActivitiesWithSample} ===================================== t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level3/Level3Action.ftl ===================================== --- a/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level3/Level3Action.ftl +++ b/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level3/Level3Action.ftl @@ -89,7 +89,7 @@ Qualité des strates échantillons : Indicateurs ----------- -- Nombre de strates : ${action.nbStratums} +- Nombre de strates : ${action.nbStratum} - Nombre de strates corrigés : ${action.nbStrataFixed} - Nombre d'activités traités : ${action.nbCatchActivities} - Nombre d'activités traités (avec échantillon) : ${action.nbCatchActivitiesWithSample} ===================================== t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level3/Level3Action_en.ftl ===================================== --- a/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level3/Level3Action_en.ftl +++ b/t3-actions/src/main/resources/ftl/fr/ird/t3/actions/data/level3/Level3Action_en.ftl @@ -89,7 +89,7 @@ Quality of sample stratum: Indicators ---------- -- Number of stratums: ${action.nbStratums} +- Number of stratums: ${action.nbStratum} - Number of treated stratums: ${action.nbStrataFixed} - Number of treated sets: ${action.nbCatchActivities} - Number of treated sets (with samples): ${action.nbCatchActivitiesWithSample} ===================================== t3-actions/src/main/resources/i18n/t3-actions_en_GB.properties ===================================== --- a/t3-actions/src/main/resources/i18n/t3-actions_en_GB.properties +++ b/t3-actions/src/main/resources/i18n/t3-actions_en_GB.properties @@ -115,10 +115,10 @@ t3.level2.message.catchStratum.resume=Stratum Catch (count of sets %s, total wei t3.level2.message.noCatch.in.stratum=No catches found in this stratum t3.level2.message.start.activity=Correct activity [%s/%s] \: %s (number of zones\: %s) t3.level2.message.start.stratum=Treat %s -t3.level2.message.strateInputGlobalComposition.resume=Global specific composition (before correction)\: -t3.level2.message.strateOutputGlobalComposition.resume=Global specific composition (after correction)\: +t3.level2.message.stratumInputGlobalComposition.resume=Global specific composition (before correction)\: +t3.level2.message.stratumOutputGlobalComposition.resume=Global specific composition (after correction)\: t3.level2.sampleStratum.resume.for.level=Sample stratum (lvevel %s)\n - Activity count %s\n - Fishes count (for species to fix) %s\n - Total weight (for species to fix) %s -t3.level2.stratumLabel=Stratum [%s/%s] (%s (sample %s) - zone %s - [start %s - end %s]) +t3.level2.stratumLabel=Stratum [%s/%s] (%s - zone %s - [start %s - end %s]) t3.level2.warning.missing.data.for.stratum=Impossible to compute sample stratum for %s, last substitution level reached. t3.level3.action=Level 3 Treatment t3.level3.catchStratum.nbFishesResume.title=Total count of fishes in catch stratum @@ -136,7 +136,7 @@ t3.level3.nbFishesBeforeLevel3=Before level 3 t3.level3.nbFishesResume.title=Total count of fishes t3.level3.sampleStratum.resume.for.level=Sample Stratum (level %s)\n - activity count %s\n - Total weight (for species to fix) %s\n - Count of fishes \: t3.level3.sampleStratum.resume.for.level.and.species=\n Species %s \: %s -t3.level3.stratumLabel=Stratum [%s/%s] (%s (sample %s) - zone %s - [begin %s - end %s]) +t3.level3.stratumLabel=Stratum [%s/%s] (%s - zone %s - [begin %s - end %s]) t3.level3.warning.missing.data.for.stratum=Impossible de compute sample stratum for stratum %s, last substitution level reached. t3.level3.warning.missing.sample.species=Stratum %s, it miss a species %s in samples, can not extrapolate. t3.message.create.new.vessel=Create a new vessel %s and store in db. ===================================== t3-actions/src/main/resources/i18n/t3-actions_fr_FR.properties ===================================== --- a/t3-actions/src/main/resources/i18n/t3-actions_fr_FR.properties +++ b/t3-actions/src/main/resources/i18n/t3-actions_fr_FR.properties @@ -115,10 +115,10 @@ t3.level2.message.catchStratum.resume=Strate capture (nombre de calées %s, poid t3.level2.message.noCatch.in.stratum=Aucune capture trouvée dans cette strate t3.level2.message.start.activity=Correction de l'activité [%s/%s] \: %s (nombre de zones \: %s) t3.level2.message.start.stratum=Traitement %s -t3.level2.message.strateInputGlobalComposition.resume=Composition globale des captures avant correction \: -t3.level2.message.strateOutputGlobalComposition.resume=Composition globale des captures après correction \: +t3.level2.message.stratumInputGlobalComposition.resume=Composition globale des captures avant correction \: +t3.level2.message.stratumOutputGlobalComposition.resume=Composition globale des captures après correction \: t3.level2.sampleStratum.resume.for.level=Strate échantillon (niveau %s)\n - Nombre activités %s\n - Nombre de poissons (pour les espèces à corriger) %s\n - Poids total (pour les espèces à corriger) %s -t3.level2.stratumLabel=Strate [%s/%s] (%s (échantillon %s) - zone %s - [debut %s - fin %s]) +t3.level2.stratumLabel=Strate [%s/%s] (%s - zone %s - [debut %s - fin %s]) t3.level2.warning.missing.data.for.stratum=Impossible de calculer la strate échantillon pour la strate %s, dernier niveau de substitution atteint. t3.level3.action=Traitement de niveau 3 t3.level3.catchStratum.nbFishesResume.title=Nombre total de poissons dans la strate capture @@ -136,7 +136,7 @@ t3.level3.nbFishesBeforeLevel3=Avant niveau 3 t3.level3.nbFishesResume.title=Nombre total de poissons t3.level3.sampleStratum.resume.for.level=Strate échantillon (niveau %s)\n - Nombre activités %s\n - Poids total (pour les espèces à corriger) %s\n - Nombre de poissons \: t3.level3.sampleStratum.resume.for.level.and.species=\n Espèce %s \: %s -t3.level3.stratumLabel=Strate [%s/%s] (%s (échantillon %s) - zone %s - [debut %s - fin %s]) +t3.level3.stratumLabel=Strate [%s/%s] (%s - zone %s - [debut %s - fin %s]) t3.level3.warning.missing.data.for.stratum=Impossible de calculer la strate échantillon pour la strate %s, dernier niveau de substitution atteint. t3.level3.warning.missing.sample.species=Strate %s, il manque une espèce %s dans les échantillons, extrapolation non possible. t3.message.create.new.vessel=Création d'un nouveau navire %s et sauvegarde en base ===================================== t3-actions/src/test/java/fr/ird/t3/actions/data/level0/ComputeRF2ActionResumeTest.java ===================================== --- a/t3-actions/src/test/java/fr/ird/t3/actions/data/level0/ComputeRF2ActionResumeTest.java +++ b/t3-actions/src/test/java/fr/ird/t3/actions/data/level0/ComputeRF2ActionResumeTest.java @@ -57,7 +57,7 @@ public class ComputeRF2ActionResumeTest extends AbstractActionResumeTest<Compute protected void prepareAction(ComputeRF2Action action, Locale locale) { super.prepareAction(action, locale); - action.nbStratums = 100; + action.nbStratum = 100; action.nbTrips = 10; action.nbTripsWithRF2 = 5; } ===================================== t3-actions/src/test/java/fr/ird/t3/actions/data/level0/ComputeRF2EmptyConfigurationActionResumeTest.java ===================================== --- a/t3-actions/src/test/java/fr/ird/t3/actions/data/level0/ComputeRF2EmptyConfigurationActionResumeTest.java +++ b/t3-actions/src/test/java/fr/ird/t3/actions/data/level0/ComputeRF2EmptyConfigurationActionResumeTest.java @@ -53,7 +53,7 @@ public class ComputeRF2EmptyConfigurationActionResumeTest extends AbstractAction protected void prepareAction(ComputeRF2Action action, Locale locale) { super.prepareAction(action, locale); - action.nbStratums = 100; + action.nbStratum = 100; action.nbTrips = 10; action.nbTripsWithRF2 = 5; } ===================================== 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 @@ -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.Map; */ public abstract class CatchStratum<C extends LevelConfigurationWithStratum, A extends T3Action<C>> extends Stratum<C, A> { + protected CatchStratum(StratumConfiguration<C> configuration, Collection<Species> speciesToFix) { + super(configuration, speciesToFix); + } + /** * Gets a new loader of catch stratum. * @@ -47,21 +51,13 @@ public abstract class CatchStratum<C extends LevelConfigurationWithStratum, A ex */ protected abstract CatchStratumLoader<C> newLoader(); - protected CatchStratum(StratumConfiguration<C> configuration, Collection<Species> speciesToFix) { - super(configuration, speciesToFix); - } - @Override public void init(T3ServiceContext serviceContext, List<WeightCategoryTreatment> weightCategories, A messager) throws Exception { - CatchStratumLoader<C> stratumLoader = newLoader(); - // inject transaction in loader stratumLoader.setTransaction(serviceContext.getT3TopiaPersistenceContext()); - - // inject daos in loader + // inject dao in loader serviceContext.newService(IOCService.class).injectOnly(stratumLoader, InjectDAO.class); - // get all catches usable in this stratum grouped by their owing activity Map<Activity, Integer> activities = stratumLoader.loadData(getConfiguration()); setActivities(activities); ===================================== 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 @@ -22,18 +22,17 @@ package fr.ird.t3.actions.stratum; import fr.ird.t3.actions.T3Action; import fr.ird.t3.entities.data.Activity; -import fr.ird.t3.entities.reference.SchoolType; import fr.ird.t3.entities.reference.Species; import fr.ird.t3.entities.reference.WeightCategoryTreatment; import fr.ird.t3.services.IOCService; import fr.ird.t3.services.T3ServiceContext; import fr.ird.t3.services.ioc.InjectDAO; +import org.nuiton.topia.persistence.TopiaException; + import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; -import org.nuiton.topia.persistence.TopiaException; /** * Base samle stratum. @@ -61,19 +60,6 @@ public abstract class SampleStratum<C extends LevelConfigurationWithStratum, A e */ private Integer substitutionLevel; - public static SchoolType getSampleSchoolType(SchoolType schoolType,SchoolTypeIndeterminate schoolTypeIndeterminate , SchoolType boSchoolType, SchoolType blSchoolType) { - if (Objects.requireNonNull(schoolType).getCode() == 3) { - switch (Objects.requireNonNull(schoolTypeIndeterminate)) { - case ALL_IN_BO: - return boSchoolType; - case ALL_IN_BL: - return blSchoolType; - } - throw new IllegalStateException("Can't deal with " + schoolTypeIndeterminate); - } - return schoolType; - } - protected abstract SampleStratumLoader<C, A, S> newLoader(); protected abstract String logSampleStratumLevel(int substitutionLevel, ===================================== t3-domain/src/main/java/fr/ird/t3/actions/stratum/SchoolTypeIndeterminate.java ===================================== --- a/t3-domain/src/main/java/fr/ird/t3/actions/stratum/SchoolTypeIndeterminate.java +++ b/t3-domain/src/main/java/fr/ird/t3/actions/stratum/SchoolTypeIndeterminate.java @@ -31,7 +31,8 @@ import fr.ird.t3.t3.domain.I18nEnumHelper; */ public enum SchoolTypeIndeterminate { ALL_IN_BO, // consider as BO - ALL_IN_BL; // consider as BL + ALL_IN_BL, // consider as BL + IGNORE; // just report incoming data public String getLabel() { return I18nEnumHelper.getLabel(this); ===================================== 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 @@ -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% @@ -46,28 +46,31 @@ import java.util.Set; public abstract class Stratum<C extends LevelConfigurationWithStratum, A extends T3Action<C>> implements Closeable, Iterable<Map.Entry<Activity, Integer>> { /** - * All activities selected for this stratum, with for catch stratum the number of zones where the activity should be used. - * <p/> - * see http://forge.codelutin.com/issues/1935 - * <p/> - * <strong>Note:</strong> This data are available after invocation of method - * {@link Stratum#init(T3ServiceContext, List, T3Action)}. - */ - private Map<Activity, Integer> activities; - - /** * Stratum configuration of this stratum. * * @see StratumConfiguration */ private final StratumConfiguration<C> configuration; - /** * Selected set of species to fix. * * @since 1.3.1 */ private final Set<Species> speciesToFix; + /** + * All activities selected for this stratum, with for catch stratum the number of zones where the activity should be used. + * <p/> + * see http://forge.codelutin.com/issues/1935 + * <p/> + * <strong>Note:</strong> This data are available after invocation of method + * {@link Stratum#init(T3ServiceContext, List, T3Action)}. + */ + private Map<Activity, Integer> activities; + + protected Stratum(StratumConfiguration<C> configuration, Collection<Species> speciesToFix) { + this.configuration = configuration; + this.speciesToFix = ImmutableSet.copyOf(speciesToFix); + } /** * Initialize the data of the stratum. @@ -79,16 +82,12 @@ public abstract class Stratum<C extends LevelConfigurationWithStratum, A extends */ public abstract void init(T3ServiceContext serviceContext, List<WeightCategoryTreatment> weightCategories, A messager) throws Exception; + @SuppressWarnings("NullableProblems") @Override public Iterator<Map.Entry<Activity, Integer>> iterator() { return activities.entrySet().iterator(); } - protected Stratum(StratumConfiguration<C> configuration, Collection<Species> speciesToFix) { - this.configuration = configuration; - this.speciesToFix = ImmutableSet.copyOf(speciesToFix); - } - public final StratumConfiguration<C> getConfiguration() { return configuration; } @@ -102,14 +101,12 @@ public abstract class Stratum<C extends LevelConfigurationWithStratum, A extends } /** - * Obtain the activities selected for this stratum with the number of zones - * they are involved in. + * Obtain the activities selected for this stratum with the number of zones they are involved in. * <p/> * The number of zones (see http://forge.codelutin.com/issues/1935) is only * used for catch stratum, for sample stratum always used a single zone. * <p/> - * <strong>Note: </strong> to invoke this method, you need first to invoke - * the {@link Stratum#init(T3ServiceContext, List, T3Action} + * <strong>Note: </strong> to invoke this method, you need first to invoke the {@link #init(T3ServiceContext, List, T3Action)} * * @return the set of activities found for this stratum. */ ===================================== 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 @@ -21,7 +21,9 @@ package fr.ird.t3.actions.stratum; import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableSet; import fr.ird.t3.entities.data.Activity; +import fr.ird.t3.entities.reference.AbstractSchoolTypeTopiaDao; import fr.ird.t3.entities.reference.SchoolType; import fr.ird.t3.entities.reference.Vessel; import fr.ird.t3.entities.reference.WeightCategoryTreatment; @@ -51,7 +53,6 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> { private final ZoneStratumAwareMeta zoneMeta; private final ZoneStratumAware zone; private final SchoolType schoolType; - private final SchoolType sampleSchoolType; private final WeightCategoryTreatment weightCategoryTreatment; private final T3Date beginDate; private final T3Date endDate; @@ -65,8 +66,8 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> { ZoneStratumAwareMeta zoneMeta, ZoneStratumAware zone, SchoolType schoolType, - SchoolType sampleSchoolType, - WeightCategoryTreatment weightCategoryTreatment, T3Date beginDate, + WeightCategoryTreatment weightCategoryTreatment, + T3Date beginDate, T3Date endDate, Collection<ZoneStratumAware> zones, Set<Vessel> possibleCatchVessels, @@ -77,7 +78,6 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> { this.zoneMeta = zoneMeta; this.zone = zone; this.schoolType = schoolType; - this.sampleSchoolType = sampleSchoolType; this.weightCategoryTreatment = weightCategoryTreatment; this.beginDate = beginDate; this.endDate = endDate; @@ -92,27 +92,26 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> { * Obtain a new stratum configuration given all his parameters. * * @param <C> type of configuration - * @param conf the level action configuration + * @param configuration the level action configuration * @param zoneMeta type of zone to use * @param zone the zone of the stratum * @param schoolType the school type of the stratum - * @param sampleSchoolType the school type of the sample stratum * @param weightCategoryTreatment the weight category of the stratum (not nul only if {@link LevelConfigurationWithStratum#isUseWeightCategoriesInStratum()} is {@code true}. * @param startDate the start date of the stratum * @param endDate the end date of the stratum - * @param zones all the zones useable by the level action which used this stratum (can be used for sample stratum substitution) + * @param zones all the zones usable by the level action which used this stratum (can be used for sample stratum substitution) * @param possibleCatchVessels set of possible vessels to use when selecting data in the catch stratum * @param possibleSampleVessels set of possible vessels to use when selecting data in the sample stratum * @param stratumMinimumCountBySpecie minimum sample count needed by species for sample stratum substitution * @return the new instantiated stratum configuration */ public static <C extends LevelConfigurationWithStratum> StratumConfiguration<C> newStratumConfiguration( - C conf, + C configuration, ZoneStratumAwareMeta zoneMeta, ZoneStratumAware zone, SchoolType schoolType, - SchoolType sampleSchoolType, - WeightCategoryTreatment weightCategoryTreatment, T3Date startDate, + WeightCategoryTreatment weightCategoryTreatment, + T3Date startDate, T3Date endDate, Collection<ZoneStratumAware> zones, Set<Vessel> possibleCatchVessels, @@ -121,11 +120,10 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> { LoadingCache<String, Activity> activityCache) { return new StratumConfiguration<>( - conf, + configuration, zoneMeta, zone, schoolType, - sampleSchoolType, weightCategoryTreatment, startDate, endDate, @@ -140,7 +138,7 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> { return configuration; } - public ZoneStratumAwareMeta getZoneMeta() { + private ZoneStratumAwareMeta getZoneMeta() { return zoneMeta; } @@ -156,8 +154,23 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> { return schoolType; } - public SchoolType getSampleSchoolType() { - return sampleSchoolType; + public Set<String> getSchoolTypeIds() { + ImmutableSet.Builder<String> builder = ImmutableSet.<String>builder().add(getSchoolType().getTopiaId()); + switch (configuration.getSchoolTypeIndeterminate()) { + case ALL_IN_BO: + if (AbstractSchoolTypeTopiaDao.SCHOOL_TYPE_BO_ID.equals(getSchoolType().getTopiaId())) { + builder.add(AbstractSchoolTypeTopiaDao.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); + } + break; + case IGNORE: + break; + } + return builder.build(); } public T3Date getBeginDate() { @@ -211,7 +224,7 @@ public class StratumConfiguration<C extends LevelConfigurationWithStratum> { @Override public String toString() { - return String.format("%s [schoolType: %s, sampleSchoolType: %s, zone: %s, startDate:%s, endDate:%s, weightCategory: %s]", super.toString(), schoolType.getLabel1(), sampleSchoolType.getLabel1(), zone.getTopiaId(), beginDate, endDate, weightCategoryTreatment); + return String.format("%s [schoolType: %s, zone: %s, startDate:%s, endDate:%s, weightCategory: %s]", super.toString(), schoolType.getLabel1(), zone.getTopiaId(), beginDate, endDate, weightCategoryTreatment); } public void addToActivity(Activity activity, Function<Activity, String> function, BiConsumer<Activity, String> consumer, int level) { ===================================== t3-domain/src/main/java/fr/ird/t3/entities/data/AbstractActivityTopiaDao.java ===================================== --- a/t3-domain/src/main/java/fr/ird/t3/entities/data/AbstractActivityTopiaDao.java +++ b/t3-domain/src/main/java/fr/ird/t3/entities/data/AbstractActivityTopiaDao.java @@ -31,7 +31,6 @@ import fr.ird.t3.entities.reference.WeightCategoryTreatment; import fr.ird.t3.entities.type.T3Date; import fr.ird.t3.models.WeightCompositionAggregateModel; import org.apache.commons.collections.CollectionUtils; -import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.support.TopiaSqlQuery; import org.nuiton.topia.persistence.support.TopiaSqlSupport; @@ -187,35 +186,26 @@ public class AbstractActivityTopiaDao<E extends Activity> extends GeneratedActiv return correctedElementaryCatch.stream().map(SpeciesAware::getSpecies).collect(Collectors.toSet()); } -// public boolean isActivityWithSample(Activity activity) throws TopiaException { -// SampleSetTopiaDao sampleSetDAO = topiaDaoSupplier.getDao(SampleSet.class, SampleSetTopiaDao.class); -// List<SampleSet> allByActivity = sampleSetDAO.forActivityEquals(activity).findAll(); -// return CollectionUtils.isNotEmpty(allByActivity); -// } - public Map<String, Integer> findAllActivityIdsForCatchStratum(String zoneTableName, String zoneId, - String schoolTypeId, + Set<String> schoolTypeIds, T3Date beginDate, - T3Date endDate) throws TopiaException { - + T3Date endDate) { // --- // Get activities strictly inside the zone // --- - TopiaSqlQuery<String> query = new GetActivityIdsInZoneForCatchStratumQuery(zoneTableName, zoneId, schoolTypeId, beginDate, endDate); + TopiaSqlQuery<String> query = new GetActivityIdsInZoneForCatchStratumQuery(zoneTableName, zoneId, schoolTypeIds, beginDate, endDate); List<String> activityIds = topiaSqlSupport.findMultipleResult(query); Map<String, Integer> result = new HashMap<>(); for (String activityId : activityIds) { // activity strictly inside a zone are exactly in one zone result.put(activityId, 1); } - // --- // Get activities on the border of the zone // --- - query = new GetActivityIdsInBorderForCatchStratumQuery(zoneTableName, zoneId, schoolTypeId, beginDate, endDate); + query = new GetActivityIdsInBorderForCatchStratumQuery(zoneTableName, zoneId, schoolTypeIds, beginDate, endDate); activityIds = topiaSqlSupport.findMultipleResult(query); - // --- // Get nb zones of such activities // --- @@ -228,117 +218,76 @@ public class AbstractActivityTopiaDao<E extends Activity> extends GeneratedActiv return result; } -// public static void fillWeightsFromCorrectedCatchesWeight(Activity activity, -// Map<WeightCategoryTreatment, Map<Species, Float>> weights, -// WeightCompositionAggregateModel model) { -// -// if (weights == null) { -// weights = new HashMap<>(); -// } -// Multimap<WeightCategoryTreatment, CorrectedElementaryCatch> data = -// ActivityTopiaDao.groupByWeightCategoryTreatment(activity.getCorrectedElementaryCatch()); -// -// T3IOUtil.fillMapWithDefaultValue( -// weights, data.keySet(), T3Suppliers.MAP_SPECIES_FLOAT_SUPPLIER); -// -// for (WeightCategoryTreatment weightCategory : data.keySet()) { -// -// Map<Species, Float> speciesFloatMap = weights.get(weightCategory); -// -// Collection<CorrectedElementaryCatch> correctedElementaryCatches = data.get(weightCategory); -// -// fillWeights(weightCategory, -// correctedElementaryCatches, -// speciesFloatMap, -// T3Functions.CORRECTED_ELEMENTARY_CATCH_TO_CORRECTED_CATCH_WEIGHT, -// model -// ); -// } -// } - public List<String> findAllActivityIdsForSampleStratum(String zoneTableName, String zoneId, - String schoolTypeId, + Set<String> schoolTypeIds, T3Date beginDate, - T3Date endDate) throws TopiaException { + T3Date endDate) { TopiaSqlQuery<String> query; - if (schoolTypeId == null) { + if (schoolTypeIds == null) { // for any school type query = new GetActivityIdsForSampleStratumWithAnySchoolTypeQuery(zoneTableName, zoneId, beginDate, endDate); } else { // for a specific school type - query = new GetActivityIdsForSampleStratumQuery(zoneTableName, zoneId, schoolTypeId, beginDate, endDate); + query = new GetActivityIdsForSampleStratumQuery(zoneTableName, zoneId, schoolTypeIds, beginDate, endDate); } return topiaSqlSupport.findMultipleResult(query); } -// public Set<Species> getAllSpeciesFromCorrectedCatches(Activity activity) { -// Set<Species> result = new HashSet<>(); -// for (CorrectedElementaryCatch aCatch : activity.getCorrectedElementaryCatch()) { -// result.add(aCatch.getSpecies()); -// } -// return result; -// } - -// public Set<Species> getAllSpeciesFromSetSpeciesFrequencies(Activity activity) { -// Set<Species> result = new HashSet<>(); -// for (SetSpeciesFrequency frequency : activity.getSetSpeciesFrequency()) { -// result.add(frequency.getSpecies()); -// } -// return result; -// } - /** * Query to obtain from the given configuration, all the activity ids of a catch stratum. * * @since 1.0 */ + @SuppressWarnings("SqlResolve") public static class GetActivityIdsInZoneForCatchStratumQuery extends TopiaSqlQuery<String> { private final String zoneTableName; - private final String zoneId; - - private final String schoolTypeId; - + private final Set<String> schoolTypeIds; private final T3Date beginDate; - private final T3Date endDate; GetActivityIdsInZoneForCatchStratumQuery(String zoneTableName, String zoneId, - String schoolTypeId, + Set<String> schoolTypeIds, T3Date beginDate, T3Date endDate) { this.zoneTableName = zoneTableName; this.zoneId = zoneId; - this.schoolTypeId = schoolTypeId; + this.schoolTypeIds = schoolTypeIds; this.beginDate = beginDate; this.endDate = endDate; } @Override public PreparedStatement prepareQuery(Connection connection) throws SQLException { + StringBuilder schoolTypeParameters = new StringBuilder(); + for (String ignored : schoolTypeIds) { + schoolTypeParameters.append(", ?"); + } PreparedStatement ps = connection.prepareStatement( - "SELECT a.topiaid FROM trip t, activity a, " + - zoneTableName + " z WHERE " + - "a.trip = t.topiaId " + + "SELECT a.topiaid FROM trip t, activity a, " + zoneTableName + " z " + + "WHERE a.trip = t.topiaId " + "AND t." + Trip.PROPERTY_TRIP_TYPE + " IN (0, 2)" + "AND t." + Trip.PROPERTY_COMPLETION_STATUS + " IS NOT NULL " + "AND t." + Trip.PROPERTY_COMPLETION_STATUS + " > 0 " + "AND ST_WITHIN(a.the_geom, z.the_geom) " + "AND z.topiaid = ? " + "AND a.expertflag != 0 " + - "AND a.schooltype = ? " + + "AND a.schooltype IN (" + schoolTypeParameters.substring(2) + ")" + "AND a.date::date >= ? " + "AND a.date::date <= ? " + "AND (SELECT COUNT(*) FROM CorrectedElementaryCatch c WHERE c.activity = a.topiaid) > 0" ); - ps.setString(1, zoneId); - ps.setString(2, schoolTypeId); - ps.setDate(3, beginDate.toBeginSqlDate()); - ps.setDate(4, endDate.toEndSqlDate()); + int index = 0; + ps.setString(++index, zoneId); + for (String schoolTypeId : schoolTypeIds) { + ps.setString(++index, schoolTypeId); + } + ps.setDate(++index, beginDate.toBeginSqlDate()); + ps.setDate(++index, endDate.toEndSqlDate()); return ps; } @@ -349,37 +298,37 @@ public class AbstractActivityTopiaDao<E extends Activity> extends GeneratedActiv } /** - * Query to obtain from the given configuration, all the activity ids of a - * catch stratum. + * Query to obtain from the given configuration, all the activity ids of a catch stratum. * * @since 1.0 */ + @SuppressWarnings("SqlResolve") public static class GetActivityIdsInBorderForCatchStratumQuery extends TopiaSqlQuery<String> { private final String zoneTableName; - private final String zoneId; - - private final String schoolTypeId; - + private final Set<String> schoolTypeIds; private final T3Date beginDate; - private final T3Date endDate; GetActivityIdsInBorderForCatchStratumQuery(String zoneTableName, String zoneId, - String schoolTypeId, + Set<String> schoolTypeIds, T3Date beginDate, T3Date endDate) { this.zoneTableName = zoneTableName; this.zoneId = zoneId; - this.schoolTypeId = schoolTypeId; + this.schoolTypeIds = schoolTypeIds; this.beginDate = beginDate; this.endDate = endDate; } @Override public PreparedStatement prepareQuery(Connection connection) throws SQLException { + StringBuilder schoolTypeParameters = new StringBuilder(); + for (String ignored : schoolTypeIds) { + schoolTypeParameters.append(", ?"); + } PreparedStatement ps = connection.prepareStatement( "SELECT a.topiaid FROM trip t, activity a, " + zoneTableName + " z WHERE " + @@ -391,16 +340,18 @@ public class AbstractActivityTopiaDao<E extends Activity> extends GeneratedActiv "AND NOT ST_WITHIN(a.the_geom, z.the_geom) " + "AND z.topiaid = ? " + "AND a.expertflag != 0 " + - "AND a.schooltype = ? " + + "AND a.schooltype = IN (" + schoolTypeParameters.substring(2) + ") " + "AND a.date::date >= ? " + "AND a.date::date <= ? " + - "AND (SELECT COUNT(*) FROM CorrectedElementaryCatch c WHERE c.activity = a.topiaid) > 0" - ); + "AND (SELECT COUNT(*) FROM CorrectedElementaryCatch c WHERE c.activity = a.topiaid) > 0"); - ps.setString(1, zoneId); - ps.setString(2, schoolTypeId); - ps.setDate(3, beginDate.toBeginSqlDate()); - ps.setDate(4, endDate.toEndSqlDate()); + int index = 0; + ps.setString(++index, zoneId); + for (String schoolTypeId : schoolTypeIds) { + ps.setString(++index, schoolTypeId); + } + ps.setDate(++index, beginDate.toBeginSqlDate()); + ps.setDate(++index, endDate.toEndSqlDate()); return ps; } @@ -411,37 +362,37 @@ public class AbstractActivityTopiaDao<E extends Activity> extends GeneratedActiv } /** - * Query to obtain from the given configuration, all the activity ids of a - * sample stratum. + * Query to obtain from the given configuration, all the activity ids of a sample stratum. * * @since 1.0 */ + @SuppressWarnings("SqlResolve") public static class GetActivityIdsForSampleStratumQuery extends TopiaSqlQuery<String> { private final String zoneTableName; - private final String zoneId; - - private final String schoolTypeId; - + private final Set<String> schoolTypeIds; private final T3Date beginDate; - private final T3Date endDate; GetActivityIdsForSampleStratumQuery(String zoneTableName, String zoneId, - String schoolTypeId, + Set<String> schoolTypeIds, T3Date beginDate, T3Date endDate) { this.zoneTableName = zoneTableName; this.zoneId = zoneId; - this.schoolTypeId = schoolTypeId; + this.schoolTypeIds = schoolTypeIds; this.beginDate = beginDate; this.endDate = endDate; } @Override public PreparedStatement prepareQuery(Connection connection) throws SQLException { + StringBuilder schoolTypeParameters = new StringBuilder(); + for (String ignored : schoolTypeIds) { + schoolTypeParameters.append(", ?"); + } PreparedStatement ps = connection.prepareStatement( "SELECT a.topiaid FROM trip t, activity a, " + zoneTableName + " z WHERE " + @@ -451,15 +402,17 @@ public class AbstractActivityTopiaDao<E extends Activity> extends GeneratedActiv "AND t." + Trip.PROPERTY_COMPLETION_STATUS + " > 0 ))" + "AND ST_WITHIN(a.the_geom, z.the_geom) " + "AND z.topiaid = ? " + - "AND a.schooltype = ?" + + "AND a.schooltype = IN (" + schoolTypeParameters.substring(2) + ")" + "AND a.date::date >= ? " + "AND a.date::date <= ? " + - "AND (SELECT COUNT(*) FROM SetSpeciesCatWeight c WHERE c.activity = a.topiaid) > 0" - ); - ps.setString(1, zoneId); - ps.setString(2, schoolTypeId); - ps.setDate(3, beginDate.toBeginSqlDate()); - ps.setDate(4, endDate.toEndSqlDate()); + "AND (SELECT COUNT(*) FROM SetSpeciesCatWeight c WHERE c.activity = a.topiaid) > 0"); + int index = 0; + ps.setString(++index, zoneId); + for (String schoolTypeId : schoolTypeIds) { + ps.setString(++index, schoolTypeId); + } + ps.setDate(++index, beginDate.toBeginSqlDate()); + ps.setDate(++index, endDate.toEndSqlDate()); return ps; } @@ -471,25 +424,19 @@ public class AbstractActivityTopiaDao<E extends Activity> extends GeneratedActiv /** * Query to obtain from the given configuration, all the activity ids of a - * sample stratum for any school type (used by level 3 last substitution - * level). + * sample stratum for any school type (used by level 3 last substitution level). * * @since 1.4 */ + @SuppressWarnings("SqlResolve") public static class GetActivityIdsForSampleStratumWithAnySchoolTypeQuery extends TopiaSqlQuery<String> { private final String zoneTableName; - private final String zoneId; - private final T3Date beginDate; - private final T3Date endDate; - GetActivityIdsForSampleStratumWithAnySchoolTypeQuery(String zoneTableName, - String zoneId, - T3Date beginDate, - T3Date endDate) { + GetActivityIdsForSampleStratumWithAnySchoolTypeQuery(String zoneTableName, String zoneId, T3Date beginDate, T3Date endDate) { this.zoneTableName = zoneTableName; this.zoneId = zoneId; this.beginDate = beginDate; @@ -524,11 +471,11 @@ public class AbstractActivityTopiaDao<E extends Activity> extends GeneratedActiv } /** - * Query to obtain from the given configuration, all the activity ids of a - * sample stratum. + * Query to obtain from the given configuration, all the activity ids of a sample stratum. * * @since 1.4 */ + @SuppressWarnings("SqlResolve") public static class GetActivityIdsAndNbZonesQuery extends TopiaSqlQuery<Integer> { private final String zoneTableName; @@ -542,12 +489,10 @@ public class AbstractActivityTopiaDao<E extends Activity> extends GeneratedActiv @Override public PreparedStatement prepareQuery(Connection connection) throws SQLException { PreparedStatement ps = connection.prepareStatement( - "SELECT count(*) " + - "FROM activity a, " + zoneTableName + " z " + + "SELECT count(*) FROM activity a, " + zoneTableName + " z " + "WHERE a.topiaId = ? " + "AND ST_INTERSECTS(a.the_geom, z.the_geom) " + - "AND z.schoolType = a.schoolType" - ); + "AND z.schoolType = a.schoolType"); ps.setString(1, activityId); return ps; } @@ -557,10 +502,61 @@ public class AbstractActivityTopiaDao<E extends Activity> extends GeneratedActiv return set.getInt(1); } - public int getNbZones(TopiaSqlSupport context, String activityId) throws TopiaException { + int getNbZones(TopiaSqlSupport context, String activityId) { this.activityId = activityId; return context.findSingleResult(this); } } + +// public boolean isActivityWithSample(Activity activity) { +// SampleSetTopiaDao sampleSetDAO = topiaDaoSupplier.getDao(SampleSet.class, SampleSetTopiaDao.class); +// List<SampleSet> allByActivity = sampleSetDAO.forActivityEquals(activity).findAll(); +// return CollectionUtils.isNotEmpty(allByActivity); +// } + +// public static void fillWeightsFromCorrectedCatchesWeight(Activity activity, +// Map<WeightCategoryTreatment, Map<Species, Float>> weights, +// WeightCompositionAggregateModel model) { +// +// if (weights == null) { +// weights = new HashMap<>(); +// } +// Multimap<WeightCategoryTreatment, CorrectedElementaryCatch> data = +// ActivityTopiaDao.groupByWeightCategoryTreatment(activity.getCorrectedElementaryCatch()); +// +// T3IOUtil.fillMapWithDefaultValue( +// weights, data.keySet(), T3Suppliers.MAP_SPECIES_FLOAT_SUPPLIER); +// +// for (WeightCategoryTreatment weightCategory : data.keySet()) { +// +// Map<Species, Float> speciesFloatMap = weights.get(weightCategory); +// +// Collection<CorrectedElementaryCatch> correctedElementaryCatches = data.get(weightCategory); +// +// fillWeights(weightCategory, +// correctedElementaryCatches, +// speciesFloatMap, +// T3Functions.CORRECTED_ELEMENTARY_CATCH_TO_CORRECTED_CATCH_WEIGHT, +// model +// ); +// } +// } + +// public Set<Species> getAllSpeciesFromCorrectedCatches(Activity activity) { +// Set<Species> result = new HashSet<>(); +// for (CorrectedElementaryCatch aCatch : activity.getCorrectedElementaryCatch()) { +// result.add(aCatch.getSpecies()); +// } +// return result; +// } + +// public Set<Species> getAllSpeciesFromSetSpeciesFrequencies(Activity activity) { +// Set<Species> result = new HashSet<>(); +// for (SetSpeciesFrequency frequency : activity.getSetSpeciesFrequency()) { +// result.add(frequency.getSpecies()); +// } +// return result; +// } + } ===================================== t3-domain/src/main/java/fr/ird/t3/entities/reference/AbstractSchoolTypeTopiaDao.java ===================================== --- a/t3-domain/src/main/java/fr/ird/t3/entities/reference/AbstractSchoolTypeTopiaDao.java +++ b/t3-domain/src/main/java/fr/ird/t3/entities/reference/AbstractSchoolTypeTopiaDao.java @@ -27,9 +27,13 @@ import java.util.Set; public class AbstractSchoolTypeTopiaDao<E extends SchoolType> extends GeneratedSchoolTypeTopiaDao<E> { + public static final String SCHOOL_TYPE_INDETERMINATE_ID = "fr.ird.t3.entities.reference.SchoolType#1297580528908#0.9747685881931636"; + public static final String SCHOOL_TYPE_BL_ID = "fr.ird.t3.entities.reference.SchoolType#1297580528908#0.633774803291473"; + public static final String SCHOOL_TYPE_BO_ID = "fr.ird.t3.entities.reference.SchoolType#1297580528908#0.8923578380543445"; + /** - * Obtain the two school types usabel while doing level 2 and 3 : says the - * free school type (code = 1) and the object school type. + * Obtain the two school types usable while doing level 2 and 3 : says the + * free school type and the object school type. * * @return the two school types * @throws TopiaException if any problem while loading data form database @@ -37,9 +41,8 @@ public class AbstractSchoolTypeTopiaDao<E extends SchoolType> extends GeneratedS @SuppressWarnings("unused") public Set<E> findAllForStratum() { Set<E> result = new HashSet<>(); - result.add(forCodeEquals(1).findUnique()); - result.add(forCodeEquals(2).findUnique()); - result.add(forCodeEquals(3).findUnique()); + result.add(forTopiaIdEquals(SCHOOL_TYPE_BL_ID).findUnique()); + result.add(forTopiaIdEquals(SCHOOL_TYPE_BO_ID).findUnique()); return result; } } ===================================== t3-domain/src/main/resources/i18n/t3-domain_en_GB.properties ===================================== --- a/t3-domain/src/main/resources/i18n/t3-domain_en_GB.properties +++ b/t3-domain/src/main/resources/i18n/t3-domain_en_GB.properties @@ -164,6 +164,7 @@ t3.config.treatment.working.directory.description=Location of treatment director t3.config.users.file.description=Application users file t3.enum.fr.ird.t3.actions.stratum.SchoolTypeIndeterminate.ALL_IN_BL=Use Free school type t3.enum.fr.ird.t3.actions.stratum.SchoolTypeIndeterminate.ALL_IN_BO=Use Object school type +t3.enum.fr.ird.t3.actions.stratum.SchoolTypeIndeterminate.IGNORE=Do not process t3.enum.fr.ird.t3.entities.data.TripType.LOGBOOKMISSING=Without Logbook t3.enum.fr.ird.t3.entities.data.TripType.SAMPLEONLY=Samples only t3.enum.fr.ird.t3.entities.data.TripType.STANDARD=Standard ===================================== t3-domain/src/main/resources/i18n/t3-domain_fr_FR.properties ===================================== --- a/t3-domain/src/main/resources/i18n/t3-domain_fr_FR.properties +++ b/t3-domain/src/main/resources/i18n/t3-domain_fr_FR.properties @@ -164,6 +164,7 @@ t3.config.treatment.working.directory.description=Répertoire de travail t3.config.users.file.description=Fichier contenant les utilisateurs de l'application t3.enum.fr.ird.t3.actions.stratum.SchoolTypeIndeterminate.ALL_IN_BL=Traiter comme des Bancs objets t3.enum.fr.ird.t3.actions.stratum.SchoolTypeIndeterminate.ALL_IN_BO=Traiter comme des Bancs libres +t3.enum.fr.ird.t3.actions.stratum.SchoolTypeIndeterminate.IGNORE=Ne pas traiter t3.enum.fr.ird.t3.entities.data.TripType.LOGBOOKMISSING=Sans logbook t3.enum.fr.ird.t3.entities.data.TripType.SAMPLEONLY=Echantillons uniquement t3.enum.fr.ird.t3.entities.data.TripType.STANDARD=Standard View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/compare/4da9d0675c8366899e420a487f952b06... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/compare/4da9d0675c8366899e420a487f952b06... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT