/*
*
*/
package vroom.optimization.online.jmsa.vrp;
import java.util.List;
import vroom.common.modeling.dataModel.ListRoute.ArrayListRoute;
import vroom.common.modeling.dataModel.IRoute;
import vroom.common.modeling.dataModel.IVRPInstance;
import vroom.common.modeling.dataModel.IVRPSolution;
import vroom.common.modeling.dataModel.RouteBase;
import vroom.common.modeling.dataModel.Vehicle;
import vroom.common.modeling.util.ISolutionFactory;
/**
* <code>MSAVRPSolutionFactory</code>
* <p>
* Creation date: Sep 7, 2010 - 11:00:21 AM
*
* @author Victor Pillac, <a href="http://uniandes.edu.co">Universidad de Los Andes</a>-<a href="http://copa.uniandes.edu.co">Copa</a> <a
* href="http://www.emn.fr">Ecole des Mines de Nantes</a>-<a href="http://www.irccyn.ec-nantes.fr/irccyn/d/en/equipes/Slp">SLP</a>
* @version 1.0
*/
public class MSAVRPSolutionFactory implements ISolutionFactory {
private final Class<? extends RouteBase> mRouteImplem;
/**
* Creates a new <code>MSAVRPSolutionFactory</code>
*
* @param routeImplem
* the implementation of {@link IRoute} to be used
*/
public MSAVRPSolutionFactory(Class<? extends RouteBase> routeImplem) {
mRouteImplem = routeImplem;
}
/**
* Creates a new <code>MSAVRPSolutionFactory</code>
*/
public MSAVRPSolutionFactory() {
this(ArrayListRoute.class);
}
/*
* (non-Javadoc)
* @see vroom.common.modeling.util.ISolutionFactory#newSolution(vroom.common.modeling.dataModel.IVRPInstance, java.lang.Object[])
*/
@SuppressWarnings("unchecked")
@Override
public VRPScenario newSolution(IVRPInstance instance, Object... params) {
List<VRPActualRequest> ar = null;
List<VRPSampledRequest> sr = null;
if (params.length >= 2) {
if (params[0] instanceof List<?> && !((List<?>) params[0]).isEmpty()
&& ((List<?>) params[0]).get(0) instanceof VRPActualRequest) {
ar = (List<VRPActualRequest>) params[0];
}
if (params[1] instanceof List<?> && !((List<?>) params[1]).isEmpty()
&& ((List<?>) params[1]).get(0) instanceof VRPSampledRequest) {
sr = (List<VRPSampledRequest>) params[1];
}
}
return new VRPScenario((MSAVRPInstance) instance, ar, sr);
}
/*
* (non-Javadoc)
* @see vroom.common.modeling.util.ISolutionFactory#newRoute(vroom.common.modeling.dataModel.IVRPSolution, vroom.common.modeling.dataModel.Vehicle,
* java.lang.Object[])
*/
@Override
public VRPScenarioRoute newRoute(IVRPSolution<?> solution, Vehicle vehicle, Object... params) {
return new VRPScenarioRoute(mRouteImplem, (VRPScenario) solution, vehicle);
}
}