/*
* Aipo is a groupware program developed by TOWN, Inc.
* Copyright (C) 2004-2015 TOWN, Inc.
* http://www.aipo.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.aimluck.eip.schedule;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.aimluck.eip.common.ALData;
import com.aimluck.eip.schedule.util.ScheduleUtils;
/**
* 期間スケジュールのコンテナです。
*
*/
public class ScheduleTermWeekContainer implements ALData {
/** <code>dayList</code> 1日分のリスト */
private List<ScheduleTermDayContainer> dayList;
/*
*
*/
public void initField() {
dayList = new ArrayList<ScheduleTermDayContainer>();
}
/**
* 表示開始する日付を設定します。
*
* @param cal
*/
public void setViewStartDate(Calendar cal) {
for (int i = 1; i <= 7; i++) {
// 日付を1日ずつずらす
ScheduleTermDayContainer con = new ScheduleTermDayContainer();
con.initField();
con.setDate(cal.getTime());
dayList.add(con);
cal.add(Calendar.DATE, 1);
}
}
/**
* 期間スケジュールをコンテナに格納します。
*
* @param rd
*/
public void addTermResultData(int index, ScheduleResultData rd) {
int span = rd.getRowspan();
ScheduleTermDayContainer con = dayList.get(index);
con.setHasTerm(true);
con.setTermResultData(rd);
for (int i = 1; i < span; i++) {
con = dayList.get(index + i);
con.setHasTerm(true);
}
}
public boolean canAddTerm(ScheduleResultData rd) {
boolean canAdd = true;
Date startDate = rd.getStartDate().getValue();
Date endDate = rd.getEndDate().getValue();
ScheduleTermDayContainer con;
int size = dayList.size();
for (int i = 0; i < size; i++) {
con = dayList.get(i);
Date conDate = con.getDate().getValue();
if ((ScheduleUtils.equalsToDate(startDate, conDate, false) || conDate
.after(startDate))
&& (ScheduleUtils.equalsToDate(endDate, conDate, false) || conDate
.before(endDate))) {
if (con.isHasTerm()) {
canAdd = false;
}
}
}
return canAdd;
}
/**
* 1日分のリストを取得します。
*
* @return
*
* @uml.property name="dayList"
*/
public List<ScheduleTermDayContainer> getDayList() {
return dayList;
}
}