Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3 Commits: da05f1c0 by Tony CHEMIT at 2018-04-11T12:33:33Z [N0.2] Lors du calcul du RF2, utiliser la liste rf1speciesforfleet (closes #313) - - - - - 1 changed file: - t3-actions/src/main/java/fr/ird/t3/actions/data/level0/ComputeRF2Action.java 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 @@ -33,6 +33,8 @@ import fr.ird.t3.entities.reference.Country; import fr.ird.t3.entities.reference.CountryTopiaDao; import fr.ird.t3.entities.reference.Harbour; import fr.ird.t3.entities.reference.HarbourTopiaDao; +import fr.ird.t3.entities.reference.RF1SpeciesForFleet; +import fr.ird.t3.entities.reference.RF1SpeciesForFleetTopiaDao; import fr.ird.t3.entities.reference.Species; import fr.ird.t3.entities.reference.Vessel; import fr.ird.t3.entities.reference.VesselSimpleType; @@ -41,7 +43,6 @@ import fr.ird.t3.entities.type.T3Date; import fr.ird.t3.services.DecoratorService; import fr.ird.t3.services.ioc.InjectDAO; import fr.ird.t3.services.ioc.InjectEntitiesById; -import fr.ird.t3.services.ioc.InjectFromDAO; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -70,8 +71,6 @@ public class ComputeRF2Action extends AbstractLevel0Action<ComputeRF2Configurati private static final Log log = LogFactory.getLog(ComputeRF2Action.class); @InjectEntitiesById(entityType = Harbour.class) private List<Harbour> landingHarbours; - @InjectFromDAO(entityType = Species.class) - private List<Species> species; private int nbStratum; private int nbTripsWithRF2; @InjectDAO(entityType = RaisingFactor2.class) @@ -82,6 +81,10 @@ public class ComputeRF2Action extends AbstractLevel0Action<ComputeRF2Configurati private CountryTopiaDao countryDAO; @InjectDAO(entityType = VesselSimpleType.class) private VesselSimpleTypeTopiaDao vesselSimpleTypeDAO; + @InjectDAO(entityType = RF1SpeciesForFleet.class) + private RF1SpeciesForFleetTopiaDao rF1SpecieForFleetDAO; + /** usable species group by country */ + private Multimap<Country, Species> speciesByCountry; /** usable complete trips group by vessel */ private ListMultimap<Vessel, CompleteTrip> completeTripsByVessel; private Multimap<String, String> tripDone; @@ -120,6 +123,9 @@ public class ComputeRF2Action extends AbstractLevel0Action<ComputeRF2Configurati // use all fleets fleets = countryDAO.findAll(); } + // get all species usable for rf1 for all selected fleet countries + Multimap<Country, Species> result = rF1SpecieForFleetDAO.getSpeciesForCountry(fleets); + setSpeciesByCountry(result); tripDone = TreeMultimap.create(); List<Trip> tripList = getUsableTrips(landingHarbours, true); log.info("Trip count: "+tripList.size()); @@ -153,11 +159,20 @@ public class ComputeRF2Action extends AbstractLevel0Action<ComputeRF2Configurati boolean result = false; if (CollectionUtils.isNotEmpty(trips)) { setNbSteps(landingHarbours.size() * fleets.size() * vesselSimpleTypes.size()); - boolean computeRf2 = !getConfiguration().isConfigurationEmpty(); + for (Harbour harbour : landingHarbours) { String harbourStr = harbour.getLabel1(); for (Country fleet : fleets) { String countryStr = fleet.getLabel1(); + + Collection<Species> species = speciesByCountry.get(fleet); + + boolean computeRf2 = !getConfiguration().isConfigurationEmpty(); + + if (species.isEmpty()) { + log.info(String.format("Won't compute rf2 for any stratum of fleet %s since no species found for it.", countryStr)); + computeRf2 = false; + } for (VesselSimpleType vesselSimpleType : vesselSimpleTypes) { incrementsProgression(); // get all trip usable for this stratum @@ -230,7 +245,7 @@ public class ComputeRF2Action extends AbstractLevel0Action<ComputeRF2Configurati Country fleet, VesselSimpleType vesselSimpleType, T3Date month, - List<Species> species, + Collection<Species> species, Collection<CompleteTrip> trips, boolean computeRf2) throws TopiaException { @@ -277,7 +292,7 @@ public class ComputeRF2Action extends AbstractLevel0Action<ComputeRF2Configurati } } - private float computeRF2ForStratum(Collection<CompleteTrip> trips, List<Species> species) { + private float computeRF2ForStratum(Collection<CompleteTrip> trips, Collection<Species> species) { float totalLandingWeight = 0f; float totalCatchWeight = 0f; for (CompleteTrip trip : trips) { @@ -326,4 +341,11 @@ public class ComputeRF2Action extends AbstractLevel0Action<ComputeRF2Configurati return !exist; } + public Multimap<Country, Species> getSpeciesByCountry() { + return speciesByCountry; + } + + public void setSpeciesByCountry(Multimap<Country, Species> speciesByCountry) { + this.speciesByCountry = speciesByCountry; + } } View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/da05f1c090d74d35269cd77094cf25966... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-t3/commit/da05f1c090d74d35269cd77094cf25966... You're receiving this email because of your account on gitlab.com.