/*
* 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.whatsnew.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import com.aimluck.commons.utils.ALDateUtil;
import com.aimluck.eip.cayenne.om.portlet.EipTBlogComment;
import com.aimluck.eip.cayenne.om.portlet.EipTBlogEntry;
import com.aimluck.eip.cayenne.om.portlet.EipTMsgboardTopic;
import com.aimluck.eip.cayenne.om.portlet.EipTNote;
import com.aimluck.eip.cayenne.om.portlet.EipTSchedule;
import com.aimluck.eip.cayenne.om.portlet.EipTWhatsNew;
import com.aimluck.eip.cayenne.om.portlet.EipTWorkflowRequest;
import com.aimluck.eip.cayenne.om.portlet.EipTWorkflowRequestMap;
import com.aimluck.eip.common.ALEipUser;
import com.aimluck.eip.orm.Database;
import com.aimluck.eip.orm.query.SelectQuery;
import com.aimluck.eip.util.ALEipUtils;
import com.aimluck.eip.whatsnew.WhatsNewContainer;
import com.aimluck.eip.whatsnew.WhatsNewResultData;
import com.aimluck.eip.whatsnew.beans.WhatsNewBean;
/**
* WhatsNewのユーティリティクラスです。 <BR>
*
*/
public class WhatsNewUtils {
/** logger */
private static final JetspeedLogger logger = JetspeedLogFactoryService
.getLogger(WhatsNewUtils.class.getName());
/** table識別用 */
public static final int WHATS_NEW_TYPE_BLOG_ENTRY = 1;
public static final int WHATS_NEW_TYPE_BLOG_COMMENT = 2;
public static final int WHATS_NEW_TYPE_WORKFLOW_REQUEST = 3;
public static final int WHATS_NEW_TYPE_MSGBOARD_TOPIC = 4;
public static final int WHATS_NEW_TYPE_NOTE = 5;
public static final int WHATS_NEW_TYPE_SCHEDULE = 6;
/** 個人宛新着情報フラグ */
public static final int INDIVIDUAL_WHATS_NEW = -1;
public static final String WHATSNEW_PORTLET_NAME = "WhatsNew";
/**
* 新着情報追加(個別新着情報)
*
* @param type
* @param entityid
* @param uid
* @deprecated
*/
@Deprecated
public static void insertWhatsNew(int type, int entityid, int uid) {
EipTWhatsNew entry = null;
try {
SelectQuery<EipTWhatsNew> query = Database.query(EipTWhatsNew.class);
Expression exp =
ExpressionFactory.matchExp(EipTWhatsNew.PORTLET_TYPE_PROPERTY, Integer
.valueOf(type));
query.setQualifier(exp);
Expression exp1 =
ExpressionFactory.matchExp(EipTWhatsNew.USER_ID_PROPERTY, Integer
.valueOf(uid));
query.andQualifier(exp1);
Expression exp2 =
ExpressionFactory.matchExp(EipTWhatsNew.ENTITY_ID_PROPERTY, Integer
.valueOf(entityid));
query.andQualifier(exp2);
Expression exp3 =
ExpressionFactory.matchExp(EipTWhatsNew.PARENT_ID_PROPERTY, Integer
.valueOf(INDIVIDUAL_WHATS_NEW));
query.andQualifier(exp3);
List<EipTWhatsNew> entries = query.fetchList();
if (entries == null || entries.size() < 1) {
// 新規オブジェクトモデル
entry = Database.create(EipTWhatsNew.class);
entry.setCreateDate(Calendar.getInstance().getTime());
entry.setEntityId(entityid);
entry.setPortletType(Integer.valueOf(type));
entry.setParentId(Integer.valueOf(INDIVIDUAL_WHATS_NEW));
} else {
entry = entries.get(0);
}
entry.setUpdateDate(Calendar.getInstance().getTime());
entry.setUserId(Integer.valueOf(uid));
Database.commit();
} catch (Exception e) {
Database.rollback();
logger.error("whatsnew", e);
}
}
/**
* 新着情報追加(全員向け新着情報)
*
* @param type
* @param entityid
* @param uid
* @deprecated
*/
@Deprecated
public static void insertWhatsNewPublic(int type, int entityid, int uid) {
EipTWhatsNew entry = null;
try {
SelectQuery<EipTWhatsNew> query = Database.query(EipTWhatsNew.class);
// ポートレットタイプがtypeである かつ parentidが0である かつ エンティティーIDがentityidである
Expression exp =
ExpressionFactory.matchExp(EipTWhatsNew.PORTLET_TYPE_PROPERTY, Integer
.valueOf(type));
query.setQualifier(exp);
Expression exp1 =
ExpressionFactory.matchExp(EipTWhatsNew.PARENT_ID_PROPERTY, Integer
.valueOf("0"));
query.andQualifier(exp1);
Expression exp2 =
ExpressionFactory.matchExp(EipTWhatsNew.ENTITY_ID_PROPERTY, Integer
.valueOf(entityid));
query.andQualifier(exp2);
List<EipTWhatsNew> entries = query.fetchList();
if (entries != null && entries.size() > 0) {
// 更新である場合、今までの新着情報は削除する
List<Integer> parentIds = new ArrayList<Integer>();
for (EipTWhatsNew _entry : entries) {
parentIds.add(_entry.getWhatsNewId());
}
SelectQuery<EipTWhatsNew> childQuery =
Database.query(EipTWhatsNew.class);
Expression childExp =
ExpressionFactory.inExp(EipTWhatsNew.PARENT_ID_PROPERTY, parentIds);
childQuery.setQualifier(childExp);
childQuery.deleteAll();
Database.deleteAll(entries);
}
// 新規オブジェクトモデル
entry = Database.create(EipTWhatsNew.class);
entry.setCreateDate(Calendar.getInstance().getTime());
entry.setEntityId(entityid);
entry.setPortletType(Integer.valueOf(type));
entry.setUpdateDate(Calendar.getInstance().getTime());
entry.setUserId(Integer.valueOf(uid));
entry.setParentId(Integer.valueOf("0"));
Database.commit();
// 自分を閲覧済みにする
EipTWhatsNew entry2 = Database.create(EipTWhatsNew.class);
entry2.setCreateDate(Calendar.getInstance().getTime());
entry2.setEntityId(entityid);
entry2.setPortletType(Integer.valueOf(type));
entry2.setUpdateDate(Calendar.getInstance().getTime());
entry2.setUserId(Integer.valueOf(uid));
entry2.setParentId(entry.getWhatsNewId());
Database.commit();
} catch (Exception e) {
Database.rollback();
logger.error("whatsnew", e);
}
}
/**
* 既読フラグを追加(個別新着用)
*
* @param type
* @param entityid
* @param uid
* @deprecated
*/
@Deprecated
public static void shiftWhatsNewReadFlag(int type, int entityid, int uid) {
shiftWhatsNewReadFlag(type, entityid, uid, true);
}
/**
* 既読フラグを追加(個別新着用)
*
* @param type
* @param entityid
* @param uid
* @param call
* 全体向け新着の処理を呼び出すかどうか
* @deprecated
*/
@Deprecated
private static void shiftWhatsNewReadFlag(int type, int entityid, int uid,
boolean call) {
try {
SelectQuery<EipTWhatsNew> query = Database.query(EipTWhatsNew.class);
Expression exp =
ExpressionFactory.matchExp(EipTWhatsNew.PORTLET_TYPE_PROPERTY, Integer
.valueOf(type));
query.setQualifier(exp);
Expression exp1 =
ExpressionFactory.matchExp(EipTWhatsNew.USER_ID_PROPERTY, Integer
.valueOf(uid));
query.andQualifier(exp1);
Expression exp2 =
ExpressionFactory.matchExp(EipTWhatsNew.ENTITY_ID_PROPERTY, Integer
.valueOf(entityid));
query.andQualifier(exp2);
Expression exp3 =
ExpressionFactory.matchExp(EipTWhatsNew.PARENT_ID_PROPERTY, Integer
.valueOf("-1"));
query.andQualifier(exp3);
List<EipTWhatsNew> entries = query.fetchList();
if (entries != null && entries.size() > 0) {
Database.deleteAll(entries);
} else {
if (type == WHATS_NEW_TYPE_MSGBOARD_TOPIC && call) {
// 掲示板カテゴリのアクセス権限変更が行われたレコードに関する処理
shiftWhatsNewReadFlagPublic(type, entityid, uid, false);
}
}
Database.commit();
} catch (Throwable t) {
Database.rollback();
logger.error("[WhatsNewUtils]", t);
}
}
/**
* 既読フラグを追加(全体向け新着用)
*
* @param type
* @param entityid
* @param uid
* @param call
* @deprecated
*/
@Deprecated
public static void shiftWhatsNewReadFlagPublic(int type, int entityid, int uid) {
shiftWhatsNewReadFlagPublic(type, entityid, uid, true);
}
/**
* 既読フラグを追加(全体向け新着用)
*
* @param type
* @param entityid
* @param uid
* @param call
* 個別向け新着の処理の呼び出しを行うかどうか
*/
private static void shiftWhatsNewReadFlagPublic(int type, int entityid,
int uid, boolean call) {
try {
SelectQuery<EipTWhatsNew> query = Database.query(EipTWhatsNew.class);
// 全ユーザIDのリスト
List<Integer> uids = ALEipUtils.getUserIds("LoginUser");
// その記事に関する新着情報レコードを探す(0番に親が入る(アップデート前のデータは除く))
Expression exp =
ExpressionFactory.matchExp(EipTWhatsNew.PORTLET_TYPE_PROPERTY, Integer
.valueOf(type));
query.setQualifier(exp);
Expression exp2 =
ExpressionFactory.matchExp(EipTWhatsNew.ENTITY_ID_PROPERTY, Integer
.valueOf(entityid));
query.andQualifier(exp2);
query.orderAscending(EipTWhatsNew.PARENT_ID_PROPERTY);
List<EipTWhatsNew> entries = query.fetchList();
if (entries != null
&& entries.size() > 0
&& (entries.get(0)).getParentId().intValue() != -1) {
// 新しいアルゴリズムによる全体向けWhatsNew用の処理
if (entries.size() == uids.size()) {
// 全員から新着が消えていたら、全てのレコードを削除する
Database.deleteAll(entries);
Database.commit();
return;
}
EipTWhatsNew parent = entries.get(0);
Integer parentid = parent.getWhatsNewId();
boolean hasReadFlag = false;
// 既に自分の既読フラグがあるか調べる
for (int i = 1; i < entries.size(); i++) {
if ((entries.get(i)).getUserId().intValue() == uid) {
hasReadFlag = true;
break;
}
if (!hasReadFlag) {
// 既読フラグの登録
EipTWhatsNew entry = null;
entry = Database.create(EipTWhatsNew.class);
entry.setCreateDate(Calendar.getInstance().getTime());
entry.setUpdateDate(Calendar.getInstance().getTime());
entry.setEntityId(entityid);
entry.setPortletType(Integer.valueOf(type));
entry.setUserId(uid);
entry.setParentId(parentid);
Database.commit();
}
}
} else {
if (call) {
// アップデートされてきた全体向けWhatsNew用の処理
WhatsNewUtils.shiftWhatsNewReadFlag(type, entityid, uid, false);
}
}
// 1ヶ月以上前のWhatsNewを消す
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
exp =
ExpressionFactory.lessExp(EipTWhatsNew.UPDATE_DATE_PROPERTY, cal
.getTime());
Database.deleteAll(Database.query(EipTWhatsNew.class, exp).fetchList());
Database.commit();
} catch (Exception e) {
Database.rollback();
logger.error("whatsnew", e);
}
}
public static WhatsNewResultData setupWhatsNewResultData(
WhatsNewContainer record, int uid, int num, int span) {
try {
WhatsNewResultData rd = new WhatsNewResultData();
rd.initField();
int size = 0;
int type = record.getType();
Integer[] eids = null;
Integer[] deids = null;
Date[] dates = null;
List<EipTWhatsNew> entity_ids = record.getList();
List<EipTWhatsNew> deny_whatsnew = new ArrayList<EipTWhatsNew>();
if ((entity_ids != null) && (size = entity_ids.size()) > 0) {
if (size > num) {
eids = new Integer[num];
dates = new Date[num];
deids = new Integer[size - num];
} else {
eids = new Integer[size];
dates = new Date[size];
}
for (int i = 0; i < size; i++) {
try {
EipTWhatsNew wn = entity_ids.get(i);
if (i < num) {
eids[i] = wn.getEntityId();
dates[i] = wn.getUpdateDate();
} else {
deids[i - num] = wn.getEntityId();
deny_whatsnew.add(wn);
}
} catch (Exception e) {
return null;
}
}
} else {
return null;
}
// rd.setEntityId(entityid);
rd.setType(type);
if (deids != null) {
SelectQuery<EipTWhatsNew> query = Database.query(EipTWhatsNew.class);
Expression exp =
ExpressionFactory.matchExp(
EipTWhatsNew.PORTLET_TYPE_PROPERTY,
Integer.valueOf(type));
query.setQualifier(exp);
Expression exp1 =
ExpressionFactory.matchExp(EipTWhatsNew.USER_ID_PROPERTY, Integer
.valueOf(uid));
query.andQualifier(exp1);
Expression exp2 =
ExpressionFactory.inExp(EipTWhatsNew.ENTITY_ID_PROPERTY, deids);
query.andQualifier(exp2);
List<EipTWhatsNew> entries = query.fetchList();
if (entries != null && entries.size() > 0) {
Database.deleteAll(entries);
Database.commit();
}
}
if (WhatsNewUtils.WHATS_NEW_TYPE_BLOG_ENTRY == type) {
Expression exp =
ExpressionFactory.inDbExp(EipTBlogEntry.ENTRY_ID_PK_COLUMN, eids);
List<EipTBlogEntry> entries =
Database.query(EipTBlogEntry.class, exp).orderDesending(
EipTBlogEntry.CREATE_DATE_PROPERTY).select(
EipTBlogEntry.ENTRY_ID_PK_COLUMN,
EipTBlogEntry.TITLE_COLUMN,
EipTBlogEntry.OWNER_ID_COLUMN).fetchList();
if (entries == null || entries.size() <= 0) {
return null;
}
size = entries.size();
rd.setCreateDate(new Date());
rd.setUpdateDate(new Date());
rd.setPortletName("[ ブログ ] 新着記事");
for (int i = 0; i < size; i++) {
EipTBlogEntry entry = entries.get(i);
WhatsNewBean bean = new WhatsNewBean();
bean.initField();
bean.setEntityId(entry.getEntryId());
bean.addParamMap("template", "BlogDetailScreen");
bean.setJsFunctionName("aipo.blog.onLoadBlogDetailDialog");
bean.setPortletName("[ ブログ ] ");
try {
ALEipUser owner = ALEipUtils.getALEipUser(entry.getOwnerId());
bean.setOwnerName(owner.getAliasName().getValue());
} catch (Exception e) {
bean.setOwnerName("");
}
bean.setName(entry.getTitle());
bean.setUpdateDate(ALDateUtil.format(dates[i], "yyyy/MM/dd/"));
rd.setBean(bean);
}
} else if (WhatsNewUtils.WHATS_NEW_TYPE_BLOG_COMMENT == type) {
Expression exp =
ExpressionFactory.inDbExp(EipTBlogComment.COMMENT_ID_PK_COLUMN, eids);
List<EipTBlogComment> entries =
Database.query(EipTBlogComment.class, exp).orderDesending(
EipTBlogComment.CREATE_DATE_PROPERTY).fetchList();
if (entries == null || entries.size() <= 0) {
return null;
}
size = entries.size();
rd.setCreateDate(new Date());
rd.setUpdateDate(new Date());
rd.setPortletName("[ ブログ ] 新着コメント");
for (int i = 0; i < size; i++) {
EipTBlogComment entry = entries.get(i);
int entryId = entry.getEipTBlogEntry().getEntryId().intValue();
/**
* 重複判定
*/
int size2 = 0;
List<WhatsNewBean> tmp = rd.getBeans();
boolean is_contain = false;
if ((tmp != null) && (size2 = tmp.size()) > 0) {
for (int j = 0; j < size2; j++) {
WhatsNewBean tmpb = tmp.get(j);
if (tmpb.getEntityId().getValue() == entryId) {
StringBuffer sb =
new StringBuffer(tmpb.getOwnerName().getValue());
try {
List<String> array = Arrays.asList(sb.toString().split(","));
ALEipUser tmpowner =
ALEipUtils.getALEipUser(entry.getOwnerId().intValue());
if (array.contains(tmpowner.getAliasName().getValue())) {
continue;
}
sb.append(",").append(tmpowner.getAliasName().getValue());
tmpb.setOwnerName(sb.toString());
} catch (Exception e) {
}
is_contain = true;
break;
}
}
}
if (is_contain) {
continue;
}
WhatsNewBean bean = new WhatsNewBean();
bean.initField();
bean.setEntityId(entryId);
bean.addParamMap("template", "BlogDetailScreen");
bean.setJsFunctionName("aipo.blog.onLoadBlogDetailDialog");
bean.setPortletName("[ ブログ ] ");
try {
ALEipUser owner =
ALEipUtils.getALEipUser(entry.getOwnerId().intValue());
bean.setOwnerName(owner.getAliasName().getValue());
} catch (Exception e) {
bean.setOwnerName("");
}
bean.setName(entry.getEipTBlogEntry().getTitle());
bean.setUpdateDate(ALDateUtil.format(dates[i], "yyyy/MM/dd/"));
rd.setBean(bean);
}
} else if (WhatsNewUtils.WHATS_NEW_TYPE_WORKFLOW_REQUEST == type) {
Expression exp =
ExpressionFactory.inDbExp(
EipTWorkflowRequest.REQUEST_ID_PK_COLUMN,
eids);
List<EipTWorkflowRequest> entries =
Database.query(EipTWorkflowRequest.class, exp).orderDesending(
EipTWorkflowRequest.UPDATE_DATE_PROPERTY).fetchList();
if (entries == null || entries.size() <= 0) {
return null;
}
size = entries.size();
rd.setCreateDate(new Date());
rd.setUpdateDate(new Date());
rd.setPortletName("[ ワークフロー ] 新着依頼");
for (int i = 0; i < size; i++) {
EipTWorkflowRequest entry = entries.get(i);
WhatsNewBean bean = new WhatsNewBean();
bean.initField();
bean.setEntityId(entry.getRequestId());
bean.addParamMap("template", "WorkflowDetailScreen");
bean.setJsFunctionName("aipo.workflow.onLoadWorkflowDetail");
bean.setPortletName("[ ワークフロー ] ");
try {
List<EipTWorkflowRequestMap> maps =
getEipTWorkflowRequestMap(entry);
int m_size = maps.size();
String lastUpdateUser = "";
EipTWorkflowRequestMap map;
if ("A".equals(entry.getProgress())) {
// すべて承認済みの場合、最終承認者をセットする
map = maps.get(m_size - 1);
ALEipUser user =
ALEipUtils.getALEipUser(map.getUserId().intValue());
lastUpdateUser = user.getAliasName().getValue();
} else {
// 最終閲覧者を取得する
int unum = 0;
for (int j = 0; j < m_size; j++) {
map = maps.get(j);
if ("C".equals(map.getStatus())) {
unum = j - 1;
} else if ("D".equals(map.getStatus())) {
unum = j;
break;
}
}
map = maps.get(unum);
ALEipUser user =
ALEipUtils.getALEipUser(map.getUserId().intValue());
lastUpdateUser = user.getAliasName().getValue();
}
bean.setOwnerName(lastUpdateUser);
} catch (Exception e) {
bean.setOwnerName("");
}
String cname = entry.getEipTWorkflowCategory().getCategoryName();
String rname = entry.getRequestName();
String title = "【" + cname + "】 " + rname;
bean.setName(title);
bean.setUpdateDate(ALDateUtil.format(dates[i], "yyyy/MM/dd/"));
bean.addParamMap("mode", "detail");
bean.addParamMap("prvid", bean.getEntityId().toString());
rd.setBean(bean);
}
} else if (WhatsNewUtils.WHATS_NEW_TYPE_MSGBOARD_TOPIC == type) {
Expression exp =
ExpressionFactory.inDbExp(EipTMsgboardTopic.TOPIC_ID_PK_COLUMN, eids);
List<EipTMsgboardTopic> entries =
Database.query(EipTMsgboardTopic.class, exp).orderDesending(
EipTWorkflowRequest.CREATE_DATE_PROPERTY).select(
EipTMsgboardTopic.TOPIC_ID_PK_COLUMN,
EipTMsgboardTopic.TOPIC_NAME_COLUMN,
EipTMsgboardTopic.OWNER_ID_COLUMN,
EipTMsgboardTopic.PARENT_ID_COLUMN).fetchList();
if (entries == null || entries.size() <= 0) {
return null;
}
size = entries.size();
rd.setCreateDate(new Date());
rd.setUpdateDate(new Date());
rd.setPortletName("[ 掲示板 ] 新しい書き込み");
for (int i = 0; i < size; i++) {
EipTMsgboardTopic topic = entries.get(i);
WhatsNewBean bean = new WhatsNewBean();
bean.initField();
int parentId = topic.getParentId().intValue();
if (parentId > 0) {
bean.setEntityId(parentId);
} else {
bean.setEntityId(topic.getTopicId());
}
bean.addParamMap("template", "MsgboardTopicDetailScreen");
bean.setJsFunctionName("aipo.msgboard.onLoadMsgboardDetail");
bean.setPortletName("[ 掲示板 ] ");
try {
ALEipUser owner = ALEipUtils.getALEipUser(topic.getOwnerId());
bean.setOwnerName(owner.getAliasName().getValue());
} catch (Exception e) {
bean.setOwnerName("");
}
bean.setName(topic.getTopicName());
bean.setUpdateDate(ALDateUtil.format(dates[i], "yyyy/MM/dd/"));
rd.setBean(bean);
}
} else if (WhatsNewUtils.WHATS_NEW_TYPE_NOTE == type) {
Expression exp =
ExpressionFactory.inDbExp(EipTNote.NOTE_ID_PK_COLUMN, eids);
List<EipTNote> entries =
Database.query(EipTNote.class, exp).orderDesending(
EipTNote.CREATE_DATE_PROPERTY).select(
EipTNote.NOTE_ID_PK_COLUMN,
EipTNote.CLIENT_NAME_COLUMN,
EipTNote.SUBJECT_TYPE_COLUMN,
EipTNote.CUSTOM_SUBJECT_COLUMN,
EipTNote.OWNER_ID_COLUMN).fetchList();
if (entries == null || entries.size() <= 0) {
return null;
}
size = entries.size();
rd.setCreateDate(new Date());
rd.setUpdateDate(new Date());
rd.setPortletName("[ 伝言メモ ] 新着メモ");
for (int i = 0; i < size; i++) {
EipTNote note = entries.get(i);
WhatsNewBean bean = new WhatsNewBean();
bean.initField();
bean.setEntityId(note.getNoteId());
bean.addParamMap("template", "NoteDetailScreen");
bean.setJsFunctionName("aipo.note.onLoadDetail");
bean.setPortletName("[ 伝言メモ ] ");
try {
ALEipUser owner =
ALEipUtils.getALEipUser(Integer.valueOf(note.getOwnerId()));
bean.setOwnerName(owner.getAliasName().getValue());
} catch (Exception e) {
bean.setOwnerName("");
}
String clname = note.getClientName();
String subject = "";
String stype = note.getSubjectType();
if ("0".equals(stype)) {
subject = note.getCustomSubject();
} else if ("1".equals(stype)) {
subject = "再度電話します。";
} else if ("2".equals(stype)) {
subject = "折返しお電話ください。";
} else if ("3".equals(stype)) {
subject = "連絡があったことをお伝えください。";
} else if ("4".equals(stype)) {
subject = "伝言をお願いします。";
}
String title = "【" + clname + "】 " + subject;
bean.setName(title);
bean.setUpdateDate(ALDateUtil.format(dates[i], "yyyy/MM/dd/"));
rd.setBean(bean);
}
} else if (WhatsNewUtils.WHATS_NEW_TYPE_SCHEDULE == type) {
Expression exp =
ExpressionFactory.inDbExp(EipTSchedule.SCHEDULE_ID_PK_COLUMN, eids);
List<EipTSchedule> entries =
Database.query(EipTSchedule.class, exp).orderDesending(
EipTSchedule.UPDATE_DATE_PROPERTY).select(
EipTSchedule.SCHEDULE_ID_PK_COLUMN,
EipTSchedule.START_DATE_COLUMN,
EipTSchedule.NAME_COLUMN,
EipTSchedule.OWNER_ID_COLUMN,
EipTSchedule.UPDATE_USER_ID_COLUMN).fetchList();
if (entries == null || entries.size() <= 0) {
return null;
}
size = entries.size();
rd.setCreateDate(new Date());
rd.setUpdateDate(new Date());
rd.setPortletName("[ スケジュール ] 新着予定");
for (int i = 0; i < size; i++) {
EipTSchedule schedule = entries.get(i);
WhatsNewBean bean = new WhatsNewBean();
bean.initField();
bean.setEntityId(schedule.getScheduleId());
bean.addParamMap("template", "ScheduleDetailScreen");
bean.setJsFunctionName("aipo.schedule.onLoadScheduleDetail");
bean.setPortletName("[ スケジュール ] ");
try {
ALEipUser owner = ALEipUtils.getALEipUser(schedule.getOwnerId());
bean.setOwnerName(owner.getAliasName().getValue());
} catch (Exception e) {
bean.setOwnerName("");
}
bean.setName(schedule.getName());
bean.setUpdateDate(ALDateUtil.format(dates[i], "yyyy/MM/dd/"));
bean.addParamMap("userid", Integer.toString(uid).trim());
// view_dateの指定
Date start_date = schedule.getStartDate();
bean.addParamMap("view_date", ALDateUtil.format(
start_date,
"yyyy-MM-dd-00-00"));
rd.setBean(bean);
}
} else {
rd = null;
}
return rd;
} catch (RuntimeException ex) {
Database.rollback();
logger.error("whatsnew", ex);
return null;
} catch (Exception ex) {
Database.rollback();
logger.error("whatsnew", ex);
return null;
}
}
private static List<EipTWorkflowRequestMap> getEipTWorkflowRequestMap(
EipTWorkflowRequest request) {
try {
Expression exp =
ExpressionFactory.matchDbExp(
EipTWorkflowRequestMap.EIP_TWORKFLOW_REQUEST_PROPERTY
+ "."
+ EipTWorkflowRequest.REQUEST_ID_PK_COLUMN,
request.getRequestId());
List<EipTWorkflowRequestMap> maps =
Database.query(EipTWorkflowRequestMap.class, exp).orderAscending(
EipTWorkflowRequestMap.ORDER_INDEX_PROPERTY).fetchList();
if (maps == null || maps.size() == 0) {
// 指定した Request IDのレコードが見つからない場合
logger.debug("[WorkflowSelectData] Not found ID...");
return null;
}
return maps;
} catch (Exception ex) {
logger.error("whatsnew", ex);
return null;
}
}
public static void removeSpanOverWhatsNew(int uid, int span) {
if (span > 0) {
try {
Calendar cal = Calendar.getInstance();
if (span == 31) {// 一ヶ月指定の場合は別処理
cal.add(Calendar.MONTH, -1);
} else {
cal.add(Calendar.DAY_OF_MONTH, -1 * span);
}
Expression exp1 =
ExpressionFactory.lessExp(EipTWhatsNew.UPDATE_DATE_PROPERTY, cal
.getTime());
List<EipTWhatsNew> entries1 =
Database.query(EipTWhatsNew.class, exp1).fetchList();
if (entries1 != null && entries1.size() > 0) {
Database.deleteAll(entries1);
Database.commit();
}
} catch (Throwable t) {
Database.rollback();
logger.error("[WhatsNewUtils]", t);
}
}
}
/**
*
*/
public static void removeMonthOverWhatsNew() {
try {
int span = 31;
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -1 * span);
Expression exp1 =
ExpressionFactory.lessExp(EipTWhatsNew.UPDATE_DATE_PROPERTY, cal
.getTime());
List<EipTWhatsNew> entries1 =
Database.query(EipTWhatsNew.class, exp1).fetchList();
if (entries1 != null && entries1.size() > 0) {
Database.deleteAll(entries1);
Database.commit();
}
} catch (Throwable t) {
Database.rollback();
logger.error("[WhatsNewUtils]", t);
}
}
}