1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

create BreakActivity via factory rather than directly

This commit is contained in:
oblonski 2016-06-22 15:20:04 +02:00
parent 5498239dd4
commit 7d11224bcd

View file

@ -19,6 +19,7 @@ package com.graphhopper.jsprit.core.problem;
import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts;
import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts;
import com.graphhopper.jsprit.core.problem.cost.WaitingTimeCosts; import com.graphhopper.jsprit.core.problem.cost.WaitingTimeCosts;
import com.graphhopper.jsprit.core.problem.job.Break;
import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.job.Job;
import com.graphhopper.jsprit.core.problem.job.Service; import com.graphhopper.jsprit.core.problem.job.Service;
import com.graphhopper.jsprit.core.problem.job.Shipment; import com.graphhopper.jsprit.core.problem.job.Shipment;
@ -100,7 +101,10 @@ public class VehicleRoutingProblem {
@Override @Override
public List<AbstractActivity> createActivities(Job job) { public List<AbstractActivity> createActivities(Job job) {
List<AbstractActivity> acts = new ArrayList<AbstractActivity>(); List<AbstractActivity> acts = new ArrayList<AbstractActivity>();
if (job instanceof Service) { if( job instanceof Break){
acts.add(BreakActivity.newInstance((Break) job));
}
else if (job instanceof Service) {
acts.add(serviceActivityFactory.createActivity((Service) job)); acts.add(serviceActivityFactory.createActivity((Service) job));
} else if (job instanceof Shipment) { } else if (job instanceof Shipment) {
acts.add(shipmentActivityFactory.createPickup((Shipment) job)); acts.add(shipmentActivityFactory.createPickup((Shipment) job));
@ -278,10 +282,13 @@ public class VehicleRoutingProblem {
for (Vehicle v : uniqueVehicles) { for (Vehicle v : uniqueVehicles) {
if (v.getBreak() != null) { if (v.getBreak() != null) {
hasBreaks = true; hasBreaks = true;
AbstractActivity breakActivity = BreakActivity.newInstance(v.getBreak()); List<AbstractActivity> breakActivities = jobActivityFactory.createActivities(v.getBreak());
breakActivity.setIndex(activityIndexCounter); if(breakActivities.isEmpty()) throw new IllegalArgumentException("at least one activity for break needs to be created by activityFactory");
incActivityIndexCounter(); for(AbstractActivity act : breakActivities){
activityMap.put(v.getBreak(), Arrays.asList(breakActivity)); act.setIndex(activityIndexCounter);
incActivityIndexCounter();
}
activityMap.put(v.getBreak(), breakActivities);
} }
} }
return hasBreaks; return hasBreaks;