Skip to content
Snippets Groups Projects
Commit c35b7c6c authored by Olivier Maury's avatar Olivier Maury
Browse files

Déterminer le nombre d'années de culture. fixes #3

parent e991196c
No related branches found
No related tags found
No related merge requests found
......@@ -23,11 +23,11 @@ import fr.agrometinfo.seasonhandler.jms.SafranReceiver;
import fr.agrometinfo.seasonhandler.jms.SimulationDoneReceiver;
import fr.inrae.agroclim.indicators.resources.I18n;
import fr.inrae.agroclim.season.core.SimulationLauncher;
import fr.inrae.agroclim.season.core.dao.CellDao;
import fr.inrae.agroclim.season.core.dao.CellDaoHibernate;
import fr.inrae.agroclim.season.core.dao.ClimaticScenarioDao;
import fr.inrae.agroclim.season.core.dao.ClimaticScenarioDaoHibernate;
import fr.inrae.agroclim.season.core.dao.PersistenceManager;
import fr.inrae.agroclim.season.core.dao.VarietyParameterDao;
import fr.inrae.agroclim.season.core.dao.VarietyParameterDaoHibernate;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
......@@ -59,12 +59,11 @@ public final class DiHelper {
final PersistenceManager pm = providePersitenceManager();
receiver.setConfig(config);
receiver.setClimaticScenarioDao(provideClimaticScenarioDao(pm));
receiver.setCellDao(provideCellDao(pm));
receiver.setVarietyParameterDao(provideVarietyParameterDao(pm));
final SimulationLauncher launcher = new SimulationLauncher(config.getDatabaseRoles(),
config.getDatabaseModelSchemaProperties());
launcher.setSoftwareOrigin("agrometinfo");
receiver.setLauncher(launcher);
}
/**
......@@ -76,14 +75,6 @@ public final class DiHelper {
// TODO Auto-generated method stub
}
/**
* @param pm JPA persistence manager
* @return DAO for Cell.
*/
private CellDao provideCellDao(final PersistenceManager pm) {
return new CellDaoHibernate(pm);
}
/**
* @param pm JPA persistence manager
* @return DAO for ClimaticScenario.
......@@ -102,4 +93,12 @@ public final class DiHelper {
config.getEntityManagerFactoryProperties(PersistenceManager.getINSTANCE().getPsUnitName()));
return PersistenceManager.getINSTANCE();
}
/**
* @param pm JPA persistence manager
* @return DAO for varietal parameters.
*/
private VarietyParameterDao provideVarietyParameterDao(PersistenceManager pm) {
return new VarietyParameterDaoHibernate(pm);
}
}
......@@ -34,8 +34,8 @@ import fr.agrometinfo.seasonhandler.MainConfiguration;
import fr.inrae.agroclim.indicators.model.Evaluation;
import fr.inrae.agroclim.indicators.model.indicator.CompositeIndicator;
import fr.inrae.agroclim.season.core.SimulationLauncher;
import fr.inrae.agroclim.season.core.dao.CellDao;
import fr.inrae.agroclim.season.core.dao.ClimaticScenarioDao;
import fr.inrae.agroclim.season.core.dao.VarietyParameterDao;
import fr.inrae.agroclim.season.core.model.ClimaticScenario;
import fr.inrae.agroclim.season.core.simulationproperties.SimulationProperties;
import lombok.Setter;
......@@ -56,12 +56,6 @@ public final class SafranReceiver implements MessageListener, Runnable {
*/
private static final String USERNAME = "agrometinfo";
/**
* DAO for {@link Cell}.
*/
@Setter
private CellDao cellDao;
/**
* DAO for {@link ClimaticScenario}.
*/
......@@ -85,11 +79,17 @@ public final class SafranReceiver implements MessageListener, Runnable {
private LocalDate lastDate;
/**
*
* Facade to launch Simulation in SICLIMA.
*/
@Setter
private SimulationLauncher launcher;
/**
* DAO to get the number of year of crops.
*/
@Setter
private VarietyParameterDao varietyParameterDao;
/**
* Constructor.
*
......@@ -125,6 +125,7 @@ public final class SafranReceiver implements MessageListener, Runnable {
Objects.requireNonNull(climaticScenarioDao);
Objects.requireNonNull(config);
Objects.requireNonNull(launcher);
Objects.requireNonNull(varietyParameterDao);
consumer.setMessageListener(this);
}
......@@ -150,8 +151,10 @@ public final class SafranReceiver implements MessageListener, Runnable {
}
LOGGER.trace("New DOY for stages: {}", stages);
LOGGER.warn("TODO : Define the simulation period according to 1 or 2-year crop. Here: winter wheat.");
props.set(SimulationProperties.Property.START_YEAR, lastDate.getYear() - 1);
final int nbOfYears = varietyParameterDao.varietyParameters(props.getSpecies(), props.getVariety()) //
.getOrDefault("nban", 1.).intValue();
LOGGER.trace("Define the simulation period according to crop {}: nban={}", props.getVariety(), nbOfYears);
props.set(SimulationProperties.Property.START_YEAR, lastDate.getYear() + 1 - nbOfYears);
props.set(SimulationProperties.Property.END_YEAR, lastDate.getYear());
LOGGER.info("Send evaluation using SimulationLauncher.launch()");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment