/*
* 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.project;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.aimluck.commons.field.ALDateTimeField;
import com.aimluck.commons.field.ALNumberField;
import com.aimluck.commons.field.ALStringField;
import com.aimluck.eip.common.ALData;
import com.aimluck.eip.common.ALEipUser;
import com.aimluck.eip.fileupload.beans.FileuploadBean;
import com.aimluck.eip.util.ALCommonUtils;
import com.aimluck.eip.util.ALEipUtils;
/**
* プロジェクトのResultDataです。 <BR>
*
*/
public class ProjectResultData implements ALData {
/** プロジェクト ID */
protected ALNumberField project_id;
/** プロジェクト名 */
protected ALStringField project_name;
/** 説明 */
protected ALStringField explanation;
/** 管理者 ID */
protected ALNumberField admin_user_id;
/** 管理者名 */
private ALStringField admin_user_name;
/** 進捗率入力フラグ */
protected ALStringField progress_flg;
/** 進捗率 */
protected ALNumberField progress_rate;
/** 予定進捗率 */
protected ALNumberField plan_progress_rate;
/** 社内参加者 */
private List<ALEipUser> memberList = null;
/** 添付ファイルリスト */
private List<FileuploadBean> attachmentFileList = null;
/** 作成者ID */
private ALNumberField create_user_id;
/** 作成者 */
protected ALStringField create_user_name;
/** 更新者ID */
private ALNumberField update_user_id;
/** 更新者 */
protected ALStringField update_user_name;
/** ログインユーザーID */
private ALNumberField login_user_id;
/** 作成日 */
protected ALDateTimeField create_date;
/** 更新日 */
protected ALDateTimeField update_date;
/** タスク更新日 */
protected ALDateTimeField task_update_date;
/** 計画工数 */
protected BigDecimal plan_workload;
/** 工数実績 */
protected BigDecimal workload;
/** 完了予測工数 */
protected BigDecimal forecast_workload;
/** 残タスク数 **/
protected int remainder_task;
/** 小数値項目フォーマット */
private final DecimalFormat df = new DecimalFormat("#.##");
/**
* 初期設定を行います
*/
@Override
public void initField() {
project_id = new ALNumberField();
project_name = new ALStringField();
explanation = new ALStringField();
admin_user_id = new ALNumberField();
admin_user_name = new ALStringField();
progress_flg = new ALStringField();
progress_rate = new ALNumberField();
plan_progress_rate = new ALNumberField();
memberList = new ArrayList<ALEipUser>();
create_user_id = new ALNumberField();
create_user_name = new ALStringField();
update_user_id = new ALNumberField();
update_user_name = new ALStringField();
login_user_id = new ALNumberField();
create_date = new ALDateTimeField("M月d日");
update_date = new ALDateTimeField("M月d日");
task_update_date = new ALDateTimeField();
plan_workload = new BigDecimal(0);
workload = new BigDecimal(0);
remainder_task = 0;
forecast_workload = new BigDecimal(0);
}
/**
* プロジェクトIDを取得する
*
* @return プロジェクトID
*/
public ALNumberField getProjectId() {
return project_id;
}
/**
* プロジェクトIDを設定する
*
* @param i
* プロジェクトID
*/
public void setProjectId(long i) {
project_id.setValue(i);
}
/**
* プロジェクト名を取得する
*
* @return プロジェクト名
*/
public ALStringField getProjectName() {
return project_name;
}
public String getProjectNameHtml() {
return ALCommonUtils.replaceToAutoCR(project_name.toString());
}
/**
* プロジェクト名を設定する
*
* @param string
* 汎用データベース名
*/
public void setProjectName(String string) {
project_name.setValue(string);
}
/**
* 説明を取得する
*
* @return 説明
*/
public String getExplanation() {
return ALEipUtils.getMessageList(explanation.getValue());
}
/**
* 説明を設定する
*
* @param string
* 説明
*/
public void setExplanation(String string) {
explanation.setValue(string);
}
/**
* 管理者IDを取得する
*
* @return 管理者ID
*/
public ALNumberField getAdminUserId() {
return admin_user_id;
}
/**
* 管理者IDを設定する
*
* @param i
* 管理者ID
*/
public void setAdminUserId(long i) {
admin_user_id.setValue(i);
}
/**
* 進捗率入力フラグを取得する
*
* @return 進捗率入力フラグ
*/
public ALStringField getProgressFlg() {
return progress_flg;
}
/**
* 進捗率入力フラグを設定する
*
* @param string
* 進捗率入力フラグ
*/
public void setProgressFlg(String string) {
progress_flg.setValue(string);
}
/**
* 進捗率を取得する
*
* @return 進捗率
*/
public ALNumberField getProgressRate() {
return progress_rate;
}
/**
* 進捗率を設定する
*
* @param i
* 進捗率
*/
public void setProgressRate(long i) {
progress_rate.setValue(i);
}
/**
* 予定進捗率を取得する
*
* @return 予定進捗率
*/
public ALNumberField getPlanProgressRate() {
return plan_progress_rate;
}
/**
* 予定進捗率を設定する
*
* @param i
* 予定進捗率
*/
public void setPlanProgressRate(long i) {
plan_progress_rate.setValue(i);
}
/**
* 作成者IDを取得する
*
* @return create_user_id
*/
public ALNumberField getCreateUserId() {
return create_user_id;
}
/**
* 作成者IDを設定する
*
* @param create_user_id
*/
public void setCreateUserId(long i) {
create_user_id.setValue(i);
}
/**
* @return create_user_name
*/
public ALStringField getCreateUserName() {
return create_user_name;
}
/**
* @param create_user_name
* セットする create_user_name
*/
public void setCreateUserName(String string) {
create_user_name.setValue(string);
}
/**
* 更新者IDを取得する
*
* @return update_user_id
*/
public ALNumberField getUpdateUserId() {
return update_user_id;
}
/**
* 更新者IDを設定する
*
* @param update_user_id
*/
public void setUpdateUserId(long i) {
update_user_id.setValue(i);
}
/**
* @return update_user_name
*/
public ALStringField getUpdateUserName() {
return update_user_name;
}
/**
* @param update_user_name
* セットする update_user_name
*/
public void setUpdateUserName(String string) {
update_user_name.setValue(string);
}
/**
* ログインユーザーIDを取得する
*
* @return ログインユーザーID
*/
public ALNumberField getLoginUserId() {
return login_user_id;
}
/**
* ログインユーザーIDを設定する
*
* @param ログインユーザーID
*/
public void setLoginUserId(long i) {
login_user_id.setValue(i);
}
/**
* 作成日を取得する
*
* @return 作成日
*/
public ALDateTimeField getCreateDate() {
return create_date;
}
/**
* 作成日を設定する
*
* @param dt
* 作成日
*/
public void setCreateDate(Date dt) {
create_date.setValue(dt);
}
/**
* 更新日を取得する
*
* @return 更新日
*/
public ALDateTimeField getUpdateDate() {
return update_date;
}
/**
* 更新日を設定する
*
* @param dt
* 更新日
*/
public void setUpdateDate(Date dt) {
update_date.setValue(dt);
}
/**
* タスク更新日を取得する
*
* @return 更新日
*/
public ALDateTimeField getTaskUpdateDate() {
return ALEipUtils.getFormattedTime(task_update_date);
}
/**
* タスク更新日を設定する
*
* @param dt
* 更新日
*/
public void setTaskUpdateDate(Date dt) {
task_update_date.setValue(dt);
}
/**
* 社内参加者を取得します。
*
* @return 社内参加者
*/
public List<ALEipUser> getMemberList() {
return memberList;
}
/**
* 社内参加者を設定します。
*
* @param memberList
* 社内参加者
*/
public void setMemberList(List<ALEipUser> memberList) {
this.memberList = memberList;
}
/**
* アップロードファイルリストを取得します。
*
* @return アップロードファイルリスト
*/
public List<FileuploadBean> getAttachmentFileList() {
return attachmentFileList;
}
/**
* アップロードファイルリストを設定します。
*
* @param attachmentFileList
* アップロードファイルリスト
*/
public void setAttachmentFileList(List<FileuploadBean> attachmentFileList) {
this.attachmentFileList = attachmentFileList;
}
/**
* 管理者名を取得します。
*
* @return 管理者名
*/
public ALStringField getAdminUserName() {
return admin_user_name;
}
/**
* 管理者名を設定します。
*
* @param string
* 管理者名
*/
public void setAdminUserName(String string) {
admin_user_name.setValue(string);
}
/**
* 計画工数を取得する
*
* @return 計画工数
*/
public BigDecimal getPlanWorkload() {
return plan_workload;
}
/**
* 計画工数を設定する
*
* @param i
* 計画工数
*/
public void setPlanWorkload(BigDecimal i) {
plan_workload = i;
}
/**
* 計画工数を取得する(表示用)
*
* @return 計画工数
*/
public String getPlanWorkloadFormat() {
return df.format(plan_workload);
}
/**
* 実績工数を取得する
*
* @return 実績工数
*/
public BigDecimal getWorkload() {
return workload;
}
/**
* 実績工数を設定する
*
* @param i
* 実績工数
*/
public void setWorkload(BigDecimal i) {
workload = i;
}
/**
* 実績工数を取得する(表示用)
*
* @return 実績工数
*/
public String getWorkloadFormat() {
return df.format(workload);
}
/**
* 完了予測工数を取得する
*
* @return 完了予測工数
*/
public BigDecimal getForecastWorkload() {
return forecast_workload;
}
/**
* 完了予測工数を設定する
*
* @param i
* 完了予測工数
*/
public void setForecastWorkload(BigDecimal i) {
forecast_workload = i;
}
/**
* 完了予測工数を取得する(表示用)
*
* @return 完了予測工数
*/
public String getForecastWorkloadFormat() {
return df.format(forecast_workload);
}
/**
* 残タスク数を設定する
*
* @param i
* 残タスク数
*/
public void setReminderTask(int i) {
remainder_task = i;
}
/**
* 残タスク数を取得する(表示用)
*
* @return 残タスク数
*/
public int getReminderTask() {
return remainder_task;
}
/**
* 進捗遅延であるかをチェックする
*
* @return TRUE:工数オーバー
*/
public boolean isDelay() {
if ("".equals(getPlanProgressRate().toString())
|| "".equals(getProgressRate().toString())) {
return false;
}
return (getPlanProgressRate().getValue() > getProgressRate().getValue());
}
/**
* 工数オーバーであるかをチェックする
*
* @return TRUE:工数オーバー
*/
public boolean isWorkloadOver() {
return (getPlanWorkload().compareTo(getForecastWorkload()) < 0);
}
}