package org.lucci.madhoc.script;

import org.lucci.config.TypedConfiguration;
import org.lucci.madhoc.simulation.MadhocSimulation;
import org.lucci.madhoc.simulation.Monitor;
import org.lucci.madhoc.simulation.measure.MeasureHistory;
import org.lucci.madhoc.simulation.measure.Sensor;
import org.lucci.madhoc.simulation.monitor.SimulationMonitor;
import org.lucci.madhoc.simulation.monitor.sensor.SimulatedTimeSensor;
import org.lucci.madhoc.simulation.projection.IdentityProjection;
import org.lucci.madhoc.simulation.projection.Projection;
import org.lucci.madhoc.util.Utilities;
import org.lucci.math.relation.DefaultRelation;
import org.lucci.math.relation.Relation;

public class FrameworkExample
{
    public static int main(String[] args)
        throws Throwable
    {
        Relation<String, String> relation = new DefaultRelation<String, String>();
        relation.add("simulation_name", "tazazo");
        TypedConfiguration config = new TypedConfiguration();


        MadhocSimulation simulation = Utilities.getSimulation(config);

        Monitor app = simulation.getNetwork().getMonitorMap().get(SimulationMonitor.class);
        Sensor simulatedTimeSensor = app.getSensorMap().get(SimulatedTimeSensor.class);

        Projection projection = simulation.getNetwork().getProjectionMap().get(IdentityProjection.class);
        MeasureHistory history = projection.getMeasureHistoryMap().get(simulatedTimeSensor);

        simulation.iterate();
        return 0;
    }
}