/*
* 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.List;
import com.aimluck.commons.field.ALDateTimeField;
import com.aimluck.eip.common.ALData;
import com.aimluck.eip.schedule.util.ScheduleUtils;
/**
* 週間スケジュールのコンテナです。
*
*/
public class ScheduleWeekContainer implements ALData {
/** <code>dayList</code> スケジュールリスト */
private List<ScheduleDayContainer> dayList;
/*
*
*/
public void initField() {
dayList = new ArrayList<ScheduleDayContainer>();
}
/**
* 表示開始する日付を設定します。
*
* @param cal
*/
public void setViewStartDate(Calendar cal) {
for (int i = 1; i <= 7; i++) {
// 日付を1日ずつずらす
ScheduleDayContainer con = new ScheduleDayContainer();
con.initField();
con.setDate(cal.getTime());
dayList.add(con);
cal.add(Calendar.DATE, 1);
}
}
/**
* スケジュールをコンテナに格納します。
*
* @param rd
*/
public boolean addResultData(ScheduleResultData rd) {
int size = dayList.size();
for (int i = 0; i < size; i++) {
ScheduleDayContainer con = dayList.get(i);
ALDateTimeField field = con.getDate();
if (!rd.getPattern().equals("N")) {
// 繰り返しスケジュール
if (ScheduleUtils.isView(con.getDate(), rd.getPattern(), rd
.getStartDate()
.getValue(), rd.getEndDate().getValue())) {
Calendar temp = Calendar.getInstance();
temp.setTime(field.getValue());
temp
.set(Calendar.HOUR, Integer.parseInt(rd.getStartDate().getHour()));
temp.set(Calendar.MINUTE, Integer.parseInt(rd
.getStartDate()
.getMinute()));
temp.set(Calendar.SECOND, 0);
temp.set(Calendar.MILLISECOND, 0);
Calendar temp2 = Calendar.getInstance();
temp2.setTime(field.getValue());
temp2.set(Calendar.HOUR, Integer.parseInt(rd.getEndDate().getHour()));
temp2.set(Calendar.MINUTE, Integer.parseInt(rd
.getEndDate()
.getMinute()));
temp2.set(Calendar.SECOND, 0);
temp2.set(Calendar.MILLISECOND, 0);
ScheduleResultData rd3 = new ScheduleResultData();
rd3.initField();
rd3.setScheduleId((int) rd.getScheduleId().getValue());
rd3.setParentId((int) rd.getParentId().getValue());
rd3.setName(rd.getName().getValue());
// 開始日を設定し直す
rd3.setStartDate(temp.getTime());
// 終了日を設定し直す
rd3.setEndDate(temp2.getTime());
rd3.setTmpreserve(rd.isTmpreserve());
rd3.setPublic(rd.isPublic());
rd3.setHidden(rd.isHidden());
rd3.setDummy(rd.isDummy());
rd3.setLoginuser(rd.isLoginuser());
rd3.setOwner(rd.isOwner());
rd3.setMember(rd.isMember());
rd3.setType(rd.getType());
// 繰り返しはON
rd3.setRepeat(true);
con.addResultData(rd3);
}
} else if (field.getYear().equals(rd.getStartDate().getYear())
&& field.getMonth().equals(rd.getStartDate().getMonth())
&& field.getDay().equals(rd.getStartDate().getDay())) {
con.addResultData(rd);
return true;
}
}
return false;
}
/**
* 期間スケジュールをコンテナに格納します。
*
* @param rd
*/
/*
* public void addSpanResultData(int index, ScheduleResultData rd) { int span
* = rd.getRowspan(); ScheduleDayContainer con = (ScheduleDayContainer)
* dayList.get(index); con.setHasspan(true); con.setSpanResultData(rd); for
* (int i = 1; i < span; i++) { con = (ScheduleDayContainer) dayList.get(index
* + i); con.setHasspan(true); } }
*/
/**
* スケジュールリストを取得します。
*
* @return
*/
public List<ScheduleDayContainer> getDayList() {
return dayList;
}
}