/* * Copyright 2015 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.meetingscheduling.domain; import java.util.List; import com.thoughtworks.xstream.annotations.XStreamAlias; import org.optaplanner.examples.common.domain.AbstractPersistable; @XStreamAlias("MsMeeting") public class Meeting extends AbstractPersistable { private String topic; /** * Multiply by {@link TimeGrain#GRAIN_LENGTH_IN_MINUTES} to get duration in minutes. */ private int durationInGrains; private List<RequiredAttendance> requiredAttendanceList; private List<PreferredAttendance> preferredAttendanceList; public String getTopic() { return topic; } public void setTopic(String topic) { this.topic = topic; } public int getDurationInGrains() { return durationInGrains; } public void setDurationInGrains(int durationInGrains) { this.durationInGrains = durationInGrains; } public List<RequiredAttendance> getRequiredAttendanceList() { return requiredAttendanceList; } public void setRequiredAttendanceList(List<RequiredAttendance> requiredAttendanceList) { this.requiredAttendanceList = requiredAttendanceList; } public List<PreferredAttendance> getPreferredAttendanceList() { return preferredAttendanceList; } public void setPreferredAttendanceList(List<PreferredAttendance> preferredAttendanceList) { this.preferredAttendanceList = preferredAttendanceList; } // ************************************************************************ // Complex methods // ************************************************************************ public int getRequiredCapacity() { return requiredAttendanceList.size() + preferredAttendanceList.size(); } public String getDurationString() { return (durationInGrains * TimeGrain.GRAIN_LENGTH_IN_MINUTES) + " minutes"; } public String getLabel() { return topic; } @Override public String toString() { return topic; } }