package org.lucci.madhoc.util;


import java.io.File;

import org.lucci.config.ConfigurationUtilities;
import org.lucci.config.TypedConfiguration;
import org.lucci.madhoc.simulation.MadhocSimulation;
import org.lucci.madhoc.simulation.measure.NumericalSensor;
import org.lucci.math.relation.RelationIO;

/*
 * Created on May 19, 2005
 */

/**
 * @author luc.hogie
 */
public class Utilities
{
    public static TypedConfiguration getConfiguration(String[] args)
        throws Throwable
    {
        TypedConfiguration config = new TypedConfiguration();

        if (args.length == 0)
        {
            RelationIO.loadUpdate(config.getRelation(), System.in);
        }
        else
        {
            for (String fileName : args)
            {
                ConfigurationUtilities.load(config.getRelation(), new File(fileName), ".madhoc");
            }
        }
    
        return config;
    }


    /**
     * Creates a simulation and initalize it with the given configuration information.
     * @param config
     * @return
     * @throws Throwable
     */
    public static MadhocSimulation getSimulation(TypedConfiguration config)
        throws Throwable
    {
        MadhocSimulation simulation = new MadhocSimulation();
        simulation.setConfiguration(config);
        simulation.configure();
        return simulation;
    }
    
    /**
     * @param x2
     * @return
     */
    public static String getLegend(NumericalSensor m)
    {
        if (m.getUnit() == null)
        {
            return m.getName();
        }
        else
        {
            String unitShortName = m.getUnit().getSymbol();

            if (unitShortName == null)
            {
                return m.getName();
            }
            else
            {
                return m.getName() + " (" + unitShortName + ')';
            }
        }
    }


}