From 22265c16d8c98409063a23203c9888bf1a4438dc Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Tue, 1 Jul 2014 23:08:47 +0200 Subject: [PATCH] created SkillUpdater --- .../core/algorithm/state/UpdateSkills.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateSkills.java diff --git a/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateSkills.java b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateSkills.java new file mode 100644 index 00000000..f49a3d92 --- /dev/null +++ b/jsprit-core/src/main/java/jsprit/core/algorithm/state/UpdateSkills.java @@ -0,0 +1,43 @@ +package jsprit.core.algorithm.state; + +import jsprit.core.problem.Skills; +import jsprit.core.problem.solution.route.VehicleRoute; +import jsprit.core.problem.solution.route.activity.ActivityVisitor; +import jsprit.core.problem.solution.route.activity.TourActivity; +import jsprit.core.problem.solution.route.state.StateFactory; + +/** + * Created by schroeder on 01.07.14. + */ +public class UpdateSkills implements StateUpdater, ActivityVisitor{ + + private Skills.Builder skillBuilder; + + private StateManager statesManager; + + private VehicleRoute route; + + public UpdateSkills(StateManager statesManager) { + this.statesManager = statesManager; + } + + @Override + public void begin(VehicleRoute route) { + this.route = route; + skillBuilder = Skills.Builder.newInstance(); + } + + @Override + public void visit(TourActivity activity) { + if(activity instanceof TourActivity.JobActivity){ + Skills skills = ((TourActivity.JobActivity) activity).getJob().getRequiredSkills(); + skillBuilder.addAllSkills(skills.values()); + } + } + + @Override + public void finish() { + Skills skills = skillBuilder.build(); + statesManager.putTypedInternalRouteState(route, StateFactory.SKILLS, Skills.class, skills); + } +}