/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.optaplanner.examples.nurserostering.domain; import java.util.List; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamConverter; import org.optaplanner.core.api.domain.solution.PlanningEntityCollectionProperty; import org.optaplanner.core.api.domain.solution.PlanningScore; import org.optaplanner.core.api.domain.solution.PlanningSolution; import org.optaplanner.core.api.domain.solution.drools.ProblemFactCollectionProperty; import org.optaplanner.core.api.domain.solution.drools.ProblemFactProperty; import org.optaplanner.core.api.domain.valuerange.ValueRangeProvider; import org.optaplanner.core.api.score.buildin.hardsoft.HardSoftScore; import org.optaplanner.examples.common.domain.AbstractPersistable; import org.optaplanner.examples.nurserostering.domain.contract.Contract; import org.optaplanner.examples.nurserostering.domain.contract.ContractLine; import org.optaplanner.examples.nurserostering.domain.contract.PatternContractLine; import org.optaplanner.examples.nurserostering.domain.pattern.Pattern; import org.optaplanner.examples.nurserostering.domain.request.DayOffRequest; import org.optaplanner.examples.nurserostering.domain.request.DayOnRequest; import org.optaplanner.examples.nurserostering.domain.request.ShiftOffRequest; import org.optaplanner.examples.nurserostering.domain.request.ShiftOnRequest; import org.optaplanner.persistence.xstream.api.score.buildin.hardsoft.HardSoftScoreXStreamConverter; @PlanningSolution @XStreamAlias("NurseRoster") public class NurseRoster extends AbstractPersistable { private String code; @ProblemFactProperty private NurseRosterParametrization nurseRosterParametrization; @ProblemFactCollectionProperty private List<Skill> skillList; @ProblemFactCollectionProperty private List<ShiftType> shiftTypeList; @ProblemFactCollectionProperty private List<ShiftTypeSkillRequirement> shiftTypeSkillRequirementList; @ProblemFactCollectionProperty private List<Pattern> patternList; @ProblemFactCollectionProperty private List<Contract> contractList; @ProblemFactCollectionProperty private List<ContractLine> contractLineList; @ProblemFactCollectionProperty private List<PatternContractLine> patternContractLineList; @ValueRangeProvider(id = "employeeRange") @ProblemFactCollectionProperty private List<Employee> employeeList; @ProblemFactCollectionProperty private List<SkillProficiency> skillProficiencyList; @ProblemFactCollectionProperty private List<ShiftDate> shiftDateList; @ProblemFactCollectionProperty private List<Shift> shiftList; @ProblemFactCollectionProperty private List<DayOffRequest> dayOffRequestList; @ProblemFactCollectionProperty private List<DayOnRequest> dayOnRequestList; @ProblemFactCollectionProperty private List<ShiftOffRequest> shiftOffRequestList; @ProblemFactCollectionProperty private List<ShiftOnRequest> shiftOnRequestList; @PlanningEntityCollectionProperty private List<ShiftAssignment> shiftAssignmentList; @PlanningScore @XStreamConverter(HardSoftScoreXStreamConverter.class) private HardSoftScore score; public String getCode() { return code; } public void setCode(String code) { this.code = code; } public NurseRosterParametrization getNurseRosterParametrization() { return nurseRosterParametrization; } public void setNurseRosterParametrization(NurseRosterParametrization nurseRosterParametrization) { this.nurseRosterParametrization = nurseRosterParametrization; } public List<Skill> getSkillList() { return skillList; } public void setSkillList(List<Skill> skillList) { this.skillList = skillList; } public List<ShiftType> getShiftTypeList() { return shiftTypeList; } public void setShiftTypeList(List<ShiftType> shiftTypeList) { this.shiftTypeList = shiftTypeList; } public List<ShiftTypeSkillRequirement> getShiftTypeSkillRequirementList() { return shiftTypeSkillRequirementList; } public void setShiftTypeSkillRequirementList(List<ShiftTypeSkillRequirement> shiftTypeSkillRequirementList) { this.shiftTypeSkillRequirementList = shiftTypeSkillRequirementList; } public List<Pattern> getPatternList() { return patternList; } public void setPatternList(List<Pattern> patternList) { this.patternList = patternList; } public List<Contract> getContractList() { return contractList; } public void setContractList(List<Contract> contractList) { this.contractList = contractList; } public List<ContractLine> getContractLineList() { return contractLineList; } public void setContractLineList(List<ContractLine> contractLineList) { this.contractLineList = contractLineList; } public List<PatternContractLine> getPatternContractLineList() { return patternContractLineList; } public void setPatternContractLineList(List<PatternContractLine> patternContractLineList) { this.patternContractLineList = patternContractLineList; } public List<Employee> getEmployeeList() { return employeeList; } public void setEmployeeList(List<Employee> employeeList) { this.employeeList = employeeList; } public List<SkillProficiency> getSkillProficiencyList() { return skillProficiencyList; } public void setSkillProficiencyList(List<SkillProficiency> skillProficiencyList) { this.skillProficiencyList = skillProficiencyList; } public List<ShiftDate> getShiftDateList() { return shiftDateList; } public void setShiftDateList(List<ShiftDate> shiftDateList) { this.shiftDateList = shiftDateList; } public List<Shift> getShiftList() { return shiftList; } public void setShiftList(List<Shift> shiftList) { this.shiftList = shiftList; } public List<DayOffRequest> getDayOffRequestList() { return dayOffRequestList; } public void setDayOffRequestList(List<DayOffRequest> dayOffRequestList) { this.dayOffRequestList = dayOffRequestList; } public List<DayOnRequest> getDayOnRequestList() { return dayOnRequestList; } public void setDayOnRequestList(List<DayOnRequest> dayOnRequestList) { this.dayOnRequestList = dayOnRequestList; } public List<ShiftOffRequest> getShiftOffRequestList() { return shiftOffRequestList; } public void setShiftOffRequestList(List<ShiftOffRequest> shiftOffRequestList) { this.shiftOffRequestList = shiftOffRequestList; } public List<ShiftOnRequest> getShiftOnRequestList() { return shiftOnRequestList; } public void setShiftOnRequestList(List<ShiftOnRequest> shiftOnRequestList) { this.shiftOnRequestList = shiftOnRequestList; } public List<ShiftAssignment> getShiftAssignmentList() { return shiftAssignmentList; } public void setShiftAssignmentList(List<ShiftAssignment> shiftAssignmentList) { this.shiftAssignmentList = shiftAssignmentList; } public HardSoftScore getScore() { return score; } public void setScore(HardSoftScore score) { this.score = score; } // ************************************************************************ // Complex methods // ************************************************************************ }