diff --git a/jsprit-core/src/main/java/jsprit/core/problem/job/Job.java b/jsprit-core/src/main/java/jsprit/core/problem/job/Job.java index 0d27c0b5..22419b05 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/job/Job.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/job/Job.java @@ -18,6 +18,7 @@ package jsprit.core.problem.job; import jsprit.core.problem.Capacity; +import jsprit.core.problem.Skills; /** * Basic interface for all jobs. @@ -40,5 +41,12 @@ public interface Job { * @return Capacity */ public Capacity getSize(); + + /** + * Returns required skills. + * + * @return + */ + public Skills getRequiredSkills(); } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/job/Service.java b/jsprit-core/src/main/java/jsprit/core/problem/job/Service.java index f4594ca5..87ad0a78 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/job/Service.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/job/Service.java @@ -21,6 +21,7 @@ import java.util.HashSet; import java.util.Set; import jsprit.core.problem.Capacity; +import jsprit.core.problem.Skills; import jsprit.core.problem.solution.route.activity.TimeWindow; import jsprit.core.util.Coordinate; @@ -71,7 +72,7 @@ public class Service implements Job { protected Capacity capacity; - protected Set skills = new HashSet(); + protected Skills.Builder skillBuilder = Skills.Builder.newInstance(); /** * Constructs the builder. @@ -187,7 +188,7 @@ public class Service implements Job { } public Builder addSkill(String string) { - skills.add(string.toLowerCase()); + skillBuilder.addSkill(string); return this; } @@ -208,7 +209,7 @@ public class Service implements Job { private final Capacity size; - private final Set skills; + private final Skills skills; Service(Builder builder){ id = builder.id; @@ -218,7 +219,7 @@ public class Service implements Job { timeWindow = builder.timeWindow; type = builder.type; size = builder.capacity; - skills = builder.skills; + skills = builder.skillBuilder.build(); } @Override @@ -319,18 +320,9 @@ public class Service implements Job { * * @return */ - public Set getRequiredSkills() { - return Collections.unmodifiableSet(skills); - } - - /** - * Returns true if this contains requiredSkill. Not case sensitive. - * - * @param requiredSkill - * @return - */ - public boolean requiresSkill(String requiredSkill){ - return skills.contains(requiredSkill.toLowerCase()); + public Skills getRequiredSkills() { + return skills; } + } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/job/Shipment.java b/jsprit-core/src/main/java/jsprit/core/problem/job/Shipment.java index 0c94f6e8..3f3bd3c3 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/job/Shipment.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/job/Shipment.java @@ -5,6 +5,7 @@ import java.util.HashSet; import java.util.Set; import jsprit.core.problem.Capacity; +import jsprit.core.problem.Skills; import jsprit.core.problem.solution.route.activity.TimeWindow; import jsprit.core.util.Coordinate; @@ -57,7 +58,7 @@ public class Shipment implements Job{ private Capacity capacity; - private Set skills = new HashSet(); + private Skills.Builder skillBuilder = Skills.Builder.newInstance(); /** * Returns new instance of this builder. @@ -236,8 +237,8 @@ public class Shipment implements Job{ return new Shipment(this); } - public Builder addSkill(String string) { - skills.add(string.toLowerCase()); + public Builder addSkill(String skill) { + skillBuilder.addSkill(skill); return this; } @@ -264,7 +265,7 @@ public class Shipment implements Job{ private final Capacity capacity; - private final Set skills; + private final Skills skills; /** @@ -283,7 +284,7 @@ public class Shipment implements Job{ this.deliveryServiceTime = builder.deliveryServiceTime; this.deliveryTimeWindow = builder.deliveryTimeWindow; this.capacity = builder.capacity; - this.skills = builder.skills; + this.skills = builder.skillBuilder.build(); } @Override @@ -400,11 +401,8 @@ public class Shipment implements Job{ return capacity; } - public Set getRequiredSkills() { - return Collections.unmodifiableSet(skills); - } - - public boolean requiresSkill(String requiredSkill){ - return skills.contains(requiredSkill.toLowerCase()); + public Skills getRequiredSkills() { + return skills; } + }