/*
* 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.note;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.jar.Attributes;
import org.apache.cayenne.DataRow;
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 org.apache.turbine.util.RunData;
import org.apache.velocity.context.Context;
import com.aimluck.commons.field.ALStringField;
import com.aimluck.eip.cayenne.om.portlet.EipTNote;
import com.aimluck.eip.cayenne.om.portlet.EipTNoteMap;
import com.aimluck.eip.cayenne.om.security.TurbineUser;
import com.aimluck.eip.cayenne.om.social.Activity;
import com.aimluck.eip.common.ALAbstractSelectData;
import com.aimluck.eip.common.ALDBErrorException;
import com.aimluck.eip.common.ALEipConstants;
import com.aimluck.eip.common.ALEipGroup;
import com.aimluck.eip.common.ALEipManager;
import com.aimluck.eip.common.ALEipPost;
import com.aimluck.eip.common.ALEipUser;
import com.aimluck.eip.common.ALPageNotFoundException;
import com.aimluck.eip.modules.actions.common.ALAction;
import com.aimluck.eip.note.util.NoteUtils;
import com.aimluck.eip.orm.Database;
import com.aimluck.eip.orm.query.ResultList;
import com.aimluck.eip.orm.query.SQLTemplate;
import com.aimluck.eip.orm.query.SelectQuery;
import com.aimluck.eip.services.social.ALActivityService;
import com.aimluck.eip.util.ALEipUtils;
import com.aimluck.eip.util.ALLocalizationUtils;
/**
* 伝言メモの検索データを管理するためのクラスです。
*/
public class NoteSelectData extends ALAbstractSelectData<EipTNoteMap, EipTNote> {
/** logger */
private static final JetspeedLogger logger = JetspeedLogFactoryService
.getLogger(NoteSelectData.class.getName());
/** 現在選択しているタブ */
private String currentTab;
/** ポートレットにアクセスしているユーザ ID */
private String userId;
/** 表示対象の部署名 */
private String target_group_name;
/** 表示対象のユーザ ID */
private String target_user_id;
private List<ALEipGroup> myGroupList = null;
/** 受信/送信した未読メモ */
private int unreadNotesAllSum = 0;
/** 新着数 */
private int newNoteAllSum = 0;
/** <code>statusList</code> メンバーの状態 */
private Map<Integer, String> statusList;
/** <code>members</code> 送信先メンバー */
private List<ALEipUser> members = null;
/** <code>mailAccountURI</code> ポートレット WebMailAccountEdit のへのリンク */
private String mailAccountURI;
/** <code>userAccountURI</code> ポートレット AccountEdit のへのリンク */
private String userAccountURI;
private ALStringField target_keyword;
/**
*
* @param action
* @param rundata
* @param context
* @throws ALPageNotFoundException
* @throws ALDBErrorException
*/
@Override
public void init(ALAction action, RunData rundata, Context context)
throws ALPageNotFoundException, ALDBErrorException {
setCurrentTab(rundata, context);
if (NoteUtils.hasResetFlag(rundata, context)) {
ALEipUtils.removeTemp(rundata, context, LIST_SORT_STR);
ALEipUtils.removeTemp(rundata, context, LIST_SORT_TYPE_STR);
}
String sort = ALEipUtils.getTemp(rundata, context, LIST_SORT_STR);
if (sort == null || sort.equals("")) {
if ("received_notes".equals(getCurrentTab())) {
sort = "accept_date";
} else {
sort = "create_date";
}
ALEipUtils.setTemp(rundata, context, LIST_SORT_STR, sort);
} else {
if ("received_notes".equals(getCurrentTab())) {
// 受信一覧
if ("create_date".equals(sort)) {
// 受信一覧に無いソートが指定されている場合、デフォルトを読み込む
ALEipUtils.setTemp(rundata, context, LIST_SORT_STR, "accept_date");
}
} else {
// 送信一覧
if ("accept_date".equals(sort)
|| "note_stat".equals(sort)
|| "create_date".equals(sort)) {
// 送信一覧に無いソートが指定されている場合、デフォルトを読み込む
ALEipUtils.setTemp(rundata, context, LIST_SORT_STR, "create_date");
}
}
}
userId = Integer.toString(ALEipUtils.getUserId(rundata));
statusList = new HashMap<Integer, String>();
// ポートレット WebMailAccountEdit のへのリンクを取得する.
mailAccountURI =
NoteUtils
.getPortletURIinPersonalConfigPane(rundata, "WebMailAccountEdit");
// ポートレット AccountEdit のへのリンクを取得する.
userAccountURI =
NoteUtils.getPortletURIinPersonalConfigPane(rundata, "AccountEdit");
target_keyword = new ALStringField();
super.init(action, rundata, context);
}
/**
*
* @param rundata
* @param context
* @return
*/
@Override
protected ResultList<EipTNoteMap> selectList(RunData rundata, Context context) {
try {
if (NoteUtils.hasResetFlag(rundata, context)) {
NoteUtils.resetFilter(rundata, context, this.getClass().getName());
target_keyword.setValue("");
} else {
target_keyword.setValue(NoteUtils.getTargetKeyword(rundata, context));
}
target_group_name = NoteUtils.getTargetGroupName(rundata, context);
target_user_id = NoteUtils.getTargetUserId(rundata, context);
List<ALEipGroup> myGroups = ALEipUtils.getMyGroups(rundata);
myGroupList = new ArrayList<ALEipGroup>();
int length = myGroups.size();
for (int i = 0; i < length; i++) {
myGroupList.add(myGroups.get(i));
}
SelectQuery<EipTNoteMap> query = getSelectQuery(rundata, context);
buildSelectQueryForListView(query);
buildSelectQueryForListViewSort(query, rundata, context);
return query.getResultList();
} catch (Exception ex) {
logger.error("note", ex);
return null;
}
}
/**
* ソート用の <code>SelectQuery</code> を構築します。
*
* @param crt
* @return
*/
@Override
protected SelectQuery<EipTNoteMap> buildSelectQueryForListViewSort(
SelectQuery<EipTNoteMap> query, RunData rundata, Context context) {
String sort = ALEipUtils.getTemp(rundata, context, LIST_SORT_STR);
String sort_type = ALEipUtils.getTemp(rundata, context, LIST_SORT_TYPE_STR);
String crt_key = null;
Attributes map = getColumnMap();
if (sort == null) {
return query;
}
crt_key = map.getValue(sort);
if (crt_key == null) {
return query;
}
if (sort_type != null
&& ALEipConstants.LIST_SORT_TYPE_ASC.equals(sort_type)) {
query.orderAscending(crt_key);
} else {
query.orderDesending(crt_key);
sort_type = ALEipConstants.LIST_SORT_TYPE_DESC;
}
current_sort = sort;
current_sort_type = sort_type;
return query;
}
/**
*
* @param rundata
* @param context
* @return
* @throws ALPageNotFoundException
*/
@Override
protected EipTNote selectDetail(RunData rundata, Context context)
throws ALPageNotFoundException {
userId = Integer.toString(ALEipUtils.getUserId(rundata));
setCurrentTab(rundata, context);
if ("received_notes".equals(currentTab)) {
// 受信履歴の未読数をセットする.
unreadNotesAllSum =
NoteUtils.getUnreadReceivedNotesAllSum(rundata, userId);
// 受信履歴の新着数をセットする.
newNoteAllSum = NoteUtils.getNewReceivedNoteAllSum(rundata, userId);
} else {
// 送信履歴の未読数をセットする.
// unreadNotesAllSum = NoteUtils.getUnreadSentNotesAllSum(userId);
// 送信履歴の新着数をセットする.
// newNoteAllSum = NoteUtils.getNewSentNoteAllSum(userId);
}
EipTNote note =
NoteUtils.getEipTNoteDetail(rundata, context, getSelectQueryForDetail(
rundata,
context));
if (note == null) {
logger.debug("[NoteSelectData] This page cannot be loaded.");
throw new ALPageNotFoundException();
}
return note;
}
/**
*
* @param map
* @return
*/
@Override
protected Object getResultData(EipTNoteMap map) {
try {
EipTNote record = map.getEipTNote();
String destUserNames = getDestUserNamesLimit(record);
NoteResultData rd = new NoteResultData();
rd.initField();
rd.setNoteId(record.getNoteId().longValue());
rd.setSrcUserId(record.getOwnerId());
rd.setDestUserId(map.getUserId());
ALEipUser user =
ALEipUtils
.getALEipUser(Integer.valueOf(record.getOwnerId()).intValue());
rd.setSrcUserFullName(user.getAliasName().getValue());
rd.setDestUserFullName(destUserNames);
rd.setClientName(record.getClientName());
rd.setCompanyName(record.getCompanyName());
rd.setTelephone(record.getTelephone());
rd.setEmailAddress(record.getEmailAddress());
if (record.getAddDestType().equals("1")) {
rd.setAddDestTypePc("1");
} else if (record.getAddDestType().equals("2")) {
rd.setAddDestTypeCellphone("1");
} else if (record.getAddDestType().equals("3")) {
rd.setAddDestTypePc("1");
rd.setAddDestTypeCellphone("1");
}
rd.setSubjectType(record.getSubjectType());
if ("0".equals(record.getSubjectType())) {
rd.setCustomSubject(record.getCustomSubject());
}
rd.setMessage(record.getMessage());
rd.setAcceptDate(record.getAcceptDate());
rd.setConfirmDate(map.getConfirmDate());
rd.setCreateDate(record.getCreateDate());
rd.setUpdateDate(record.getUpdateDate());
Expression mapexp =
ExpressionFactory.matchExp(EipTNoteMap.NOTE_ID_PROPERTY, record
.getNoteId());
List<EipTNoteMap> list =
Database.query(EipTNoteMap.class, mapexp).fetchList();
// メッセージを既読した人数
Integer readNotes = 0;
for (EipTNoteMap notemap : list) {
if (notemap.getNoteStat().equals(NoteUtils.NOTE_STAT_READ)) {
readNotes++;
}
}
rd.setSentNote(list.size() - 1);
rd.setReadNote(readNotes.longValue());
List<Integer> users = new ArrayList<Integer>();
for (EipTNoteMap notemap : list) {
if (userId.equals(notemap.getUserId())) {
map = notemap;
}
if ("T".equals(notemap.getDelFlg())) {
statusList.put(
Integer.valueOf(notemap.getUserId()),
NoteUtils.NOTE_STAT_DELETED);
} else {
statusList.put(Integer.valueOf(notemap.getUserId()), notemap
.getNoteStat());
}
users.add(Integer.valueOf(notemap.getUserId()));
}
SelectQuery<TurbineUser> query = Database.query(TurbineUser.class);
Expression exp =
ExpressionFactory.inDbExp(TurbineUser.USER_ID_PK_COLUMN, users);
query.setQualifier(exp);
members = ALEipUtils.getUsersFromSelectQuery(query);
rd.setDestUsers(members);
if (NoteUtils.NOTE_STAT_NEW.equals(map.getNoteStat())) {
rd.setNoteStat(NoteUtils.NOTE_STAT_NEW);
rd.setNoteStatImage("images/note/note_new_message.gif");
rd.setNoteStatImageDescription(ALLocalizationUtils
.getl10n("NOTE_NEW_MESSAGE"));
// 新着数をカウントアップする.
// newNoteAllSum++;
} else if (NoteUtils.NOTE_STAT_UNREAD.equals(map.getNoteStat())) {
rd.setNoteStat(NoteUtils.NOTE_STAT_UNREAD);
rd.setNoteStatImage("images/note/note_unread_message.gif");
rd.setNoteStatImageDescription(ALLocalizationUtils
.getl10n("NOTE_UNREAD_MESSAGE"));
// 受信履歴の未読数をカウントアップする.
unreadNotesAllSum++;
} else if (NoteUtils.NOTE_STAT_READ.equals(map.getNoteStat())) {
rd.setNoteStat(NoteUtils.NOTE_STAT_READ);
rd.setNoteStatImage("images/note/note_read_message.gif");
rd.setNoteStatImageDescription(ALLocalizationUtils
.getl10n("NOTE_READ_MESSAGE"));
} else {
rd.setNoteStat(NoteUtils.NOTE_STAT_DELETED);
rd.setNoteStatImage("images/note/note_deleted_message.gif");
rd.setNoteStatImageDescription(ALLocalizationUtils
.getl10n("NOTE_DELETED_MESSAGE"));
}
if (record.getMessage() == null || record.getMessage().equals("")) {
rd.setHasMemo(false);
} else {
rd.setHasMemo(true);
}
// 伝言メモを登録
if (map.getUserId().equals(userId)
&& (!record.getOwnerId().equals(userId))
&& map.getNoteStat().equals(NoteUtils.NOTE_STAT_NEW)) {
// 未読フラグ
map.setNoteStat(NoteUtils.NOTE_STAT_UNREAD);
}
Database.commit();
return rd;
} catch (Throwable t) {
Database.rollback();
logger.error("[NoteSelectData]", t);
return null;
}
}
/**
*
* @param record
* @return
*/
@Override
protected Object getResultDataDetail(EipTNote record) {
if (record == null) {
return null;
}
try {
Date nowDate = Calendar.getInstance().getTime();
EipTNoteMap map = null;
Expression mapexp =
ExpressionFactory.matchExp(EipTNoteMap.NOTE_ID_PROPERTY, record
.getNoteId());
List<EipTNoteMap> list =
Database.query(EipTNoteMap.class, mapexp).fetchList();
List<Integer> users = new ArrayList<Integer>();
for (EipTNoteMap notemap : list) {
if (userId.equals(notemap.getUserId())) {
map = notemap;
}
if ("T".equals(notemap.getDelFlg())) {
statusList.put(
Integer.valueOf(notemap.getUserId()),
NoteUtils.NOTE_STAT_DELETED);
} else {
statusList.put(Integer.valueOf(notemap.getUserId()), notemap
.getNoteStat());
}
users.add(Integer.valueOf(notemap.getUserId()));
}
SelectQuery<TurbineUser> query = Database.query(TurbineUser.class);
Expression exp =
ExpressionFactory.inDbExp(TurbineUser.USER_ID_PK_COLUMN, users);
query.setQualifier(exp);
members = ALEipUtils.getUsersFromSelectQuery(query);
String destUserNames = "";
NoteResultData rd = new NoteResultData();
rd.initField();
rd.setNoteId(record.getNoteId().longValue());
rd.setSrcUserId(record.getOwnerId());
rd.setDestUserId(map.getUserId());
ALEipUser user =
ALEipUtils
.getALEipUser(Integer.valueOf(record.getOwnerId()).intValue());
rd.setSrcUserFullName(user.getAliasName().getValue());
rd.setDestUserFullName(destUserNames);
rd.setClientName(record.getClientName());
rd.setCompanyName(record.getCompanyName());
rd.setTelephone(record.getTelephone());
rd.setEmailAddress(record.getEmailAddress());
if (record.getAddDestType().equals("1")) {
rd.setAddDestTypePc("1");
} else if (record.getAddDestType().equals("2")) {
rd.setAddDestTypeCellphone("1");
} else if (record.getAddDestType().equals("3")) {
rd.setAddDestTypePc("1");
rd.setAddDestTypeCellphone("1");
}
rd.setSubjectType(record.getSubjectType());
if ("0".equals(record.getSubjectType())) {
rd.setCustomSubject(record.getCustomSubject());
}
rd.setMessage(record.getMessage());
rd.setAcceptDate(record.getAcceptDate());
rd.setCreateDate(record.getCreateDate());
// 伝言メモの受信者の確認日時と未読/既読を登録する
if (map.getUserId().equals(userId)
&& (!record.getOwnerId().equals(userId))) {
if (map.getConfirmDate() == null) {
// 確認日時
map.setConfirmDate(nowDate);
rd.setConfirmDate(nowDate);
Expression exp2 =
ExpressionFactory.matchExp(Activity.EXTERNAL_ID_PROPERTY, rd
.getNoteId()
.toString());
Expression exp3 =
ExpressionFactory.matchExp(Activity.APP_ID_PROPERTY, "Note");
Expression exp4 = exp2.andExp(exp3);
List<Activity> list2 =
Database.query(Activity.class, exp4).fetchList();
for (Activity activity : list2) {
ALActivityService.setRead(activity.getId(), ALEipUtils
.getTurbineUser(Integer.valueOf(map.getUserId()))
.getLoginName());
}
} else {
rd.setConfirmDate(map.getConfirmDate());
}
if (map.getNoteStat().equals(NoteUtils.NOTE_STAT_READ)) {
rd.setNoteStat(map.getNoteStat());
} else {
// 既読に変更.
map.setNoteStat(NoteUtils.NOTE_STAT_READ);
rd.setNoteStat(NoteUtils.NOTE_STAT_READ);
}
record.setUpdateDate(nowDate);
rd.setUpdateDate(nowDate);
// 伝言メモを登録
Database.commit();
} else {
rd.setConfirmDate(map.getConfirmDate());
rd.setNoteStat(map.getNoteStat());
rd.setUpdateDate(record.getUpdateDate());
}
return rd;
} catch (RuntimeException ex) {
Database.rollback();
logger.error("note", ex);
return null;
} catch (Exception ex) {
Database.rollback();
logger.error("note", ex);
return null;
}
}
/**
*
* @return
*/
@Override
protected Attributes getColumnMap() {
Attributes map = new Attributes();
map.putValue("client_name", EipTNoteMap.EIP_TNOTE_PROPERTY
+ "."
+ EipTNote.CLIENT_NAME_PROPERTY);
map.putValue("company_name", EipTNoteMap.EIP_TNOTE_PROPERTY
+ "."
+ EipTNote.COMPANY_NAME_PROPERTY);
map.putValue("subject_type", EipTNoteMap.EIP_TNOTE_PROPERTY
+ "."
+ EipTNote.SUBJECT_TYPE_PROPERTY);
map.putValue("create_date", EipTNoteMap.EIP_TNOTE_PROPERTY
+ "."
+ EipTNote.CREATE_DATE_PROPERTY);
map.putValue("confirm_date", EipTNoteMap.CONFIRM_DATE_PROPERTY);
map.putValue("accept_date", EipTNoteMap.EIP_TNOTE_PROPERTY
+ "."
+ EipTNote.ACCEPT_DATE_PROPERTY);
// map.putValue("src_user", TurbineUserConstants.LAST_NAME_KANA);
// map.putValue("dest_user", TurbineUserConstants.LAST_NAME_KANA);
map.putValue("note_stat", EipTNoteMap.NOTE_STAT_PROPERTY);
return map;
}
/**
* 検索条件を設定した SelectQuery を返します。
*
* @param rundata
* @param context
* @return
*/
private SelectQuery<EipTNoteMap> getSelectQuery(RunData rundata,
Context context) {
if ((target_keyword != null) && (!target_keyword.getValue().equals(""))) {
ALEipUtils.setTemp(rundata, context, LIST_SEARCH_STR, target_keyword
.getValue());
} else {
ALEipUtils.removeTemp(rundata, context, LIST_SEARCH_STR);
}
SelectQuery<EipTNoteMap> query = Database.query(EipTNoteMap.class);
Expression exp1 =
ExpressionFactory.matchExp(EipTNoteMap.USER_ID_PROPERTY, Integer
.valueOf(userId));
query.setQualifier(exp1);
Expression exp2 =
ExpressionFactory.matchExp(EipTNoteMap.DEL_FLG_PROPERTY, "F");
query.andQualifier(exp2);
if ("received_notes".equals(getCurrentTab())) {
Expression exp3 =
ExpressionFactory.noMatchExp(EipTNoteMap.EIP_TNOTE_PROPERTY
+ "."
+ EipTNote.OWNER_ID_PROPERTY, Integer.valueOf(userId));
query.andQualifier(exp3);
} else {
Expression exp3 =
ExpressionFactory.matchExp(EipTNoteMap.EIP_TNOTE_PROPERTY
+ "."
+ EipTNote.OWNER_ID_PROPERTY, Integer.valueOf(userId));
query.andQualifier(exp3);
}
return buildSelectQueryForFilter(query, rundata, context);
}
@Override
protected SelectQuery<EipTNoteMap> buildSelectQueryForFilter(
SelectQuery<EipTNoteMap> query, RunData rundata, Context context) {
String search = ALEipUtils.getTemp(rundata, context, LIST_SEARCH_STR);
if (search != null && !search.equals("")) {
current_search = search;
Expression ex1 =
ExpressionFactory.likeExp(EipTNote.CLIENT_NAME_PROPERTY, "%"
+ search
+ "%");
Expression ex2 =
ExpressionFactory.likeExp(EipTNote.COMPANY_NAME_PROPERTY, "%"
+ search
+ "%");
Expression ex3 =
ExpressionFactory.likeExp(EipTNote.EMAIL_ADDRESS_PROPERTY, "%"
+ search
+ "%");
Expression ex4 =
ExpressionFactory.likeExp(EipTNote.TELEPHONE_PROPERTY, "%"
+ search
+ "%");
Expression ex5 =
ExpressionFactory.likeExp(EipTNote.CUSTOM_SUBJECT_PROPERTY, "%"
+ search
+ "%");
Expression ex6 =
ExpressionFactory
.likeExp(EipTNote.MESSAGE_PROPERTY, "%" + search + "%");
StringBuilder body = new StringBuilder();
body.append("SELECT eip_t_note_map.note_id");
body.append(" FROM eip_t_note_map");
body.append(" INNER JOIN eip_t_note");
body.append(" ON eip_t_note_map.note_id = eip_t_note.note_id");
body.append(" INNER JOIN turbine_user");
body.append(" ON ").append(
Database.castToIntRawColumn("eip_t_note_map.user_id")).append(
" = turbine_user.user_id");
body.append(" WHERE turbine_user.first_name LIKE #bind($search)");
body.append(" OR turbine_user.last_name like #bind($search)");
body.append(" OR turbine_user.first_name_kana LIKE #bind($search)");
body.append(" OR turbine_user.last_name_kana LIKE #bind($search);");
SQLTemplate<EipTNoteMap> Query =
Database.sql(EipTNoteMap.class, body.toString()).param(
"search",
"%" + search + "%");
List<DataRow> fetch = Query.fetchListAsDataRow();
List<Integer> resultid = new ArrayList<Integer>();
for (DataRow row : fetch) {
resultid.add(((Integer) row.get("note_id")).intValue());
}
SelectQuery<EipTNote> q = Database.query(EipTNote.class);
q.andQualifier((ex6
.orExp(ex5.orExp(ex4.orExp(ex3.orExp(ex2.orExp(ex1)))))));
List<EipTNote> queryList = q.fetchList();
for (EipTNote item : queryList) {
if (item.getNoteId() != 0 && !resultid.contains(item.getNoteId())) {
resultid.add(item.getNoteId());
} else if (!resultid.contains(item.getNoteId())) {
resultid.add(item.getNoteId());
}
}
if (resultid.size() == 0) {
// 検索結果がないことを示すために-1を代入
resultid.add(-1);
}
Expression ex =
ExpressionFactory.inDbExp(EipTNote.NOTE_ID_PK_COLUMN, resultid);
query.andQualifier(ex);
}
return query;
}
/**
* 検索条件を設定した SelectQuery を返します。
*
* @param rundata
* @param context
* @return
*/
private SelectQuery<EipTNote> getSelectQueryForDetail(RunData rundata,
Context context) {
return Database.query(EipTNote.class);
}
/**
* 一覧表示します。
*
* @param action
* @param rundata
* @param context
* @return TRUE 成功 FASLE 失敗
*/
private String getDestUserNamesLimit(EipTNote note) throws ALDBErrorException {
StringBuffer destUserNames = new StringBuffer();
@SuppressWarnings("unchecked")
List<EipTNoteMap> mapList = note.getEipTNoteMaps();
if (mapList == null || mapList.size() == 0) {
logger.error("[NoteSelectData] DatabaseException");
throw new ALDBErrorException();
}
int mapListSize = mapList.size();
for (int i = 0; i < mapListSize; i++) {
EipTNoteMap tmpmap = mapList.get(i);
if (tmpmap.getUserId().equals(userId)) {
mapList.remove(i);
break;
}
}
// mapListSize = mapList.size();
if (mapList.size() > 0) {
for (EipTNoteMap tmpmap : mapList) {
ALEipUser user =
ALEipUtils.getALEipUser(Integer
.valueOf(tmpmap.getUserId())
.intValue());
destUserNames.append(tmpmap == mapList.get(0)
? user.getAliasName()
: "," + user.getAliasName());
}
}
// if (mapListSize >= 2) {
// EipTNoteMap tmpmap = mapList.get(0);
// ALEipUser user =
// ALEipUtils.getALEipUser(Integer.valueOf(tmpmap.getUserId()).intValue());
// destUserNames.append(user.getAliasName());
// destUserNames.append("、・・・");
// } else {
// EipTNoteMap tmpmap = mapList.get(0);
// ALEipUser user =
// ALEipUtils.getALEipUser(Integer.valueOf(tmpmap.getUserId()).intValue());
// destUserNames.append(user.getAliasName());
// }
return destUserNames.toString();
}
private void setCurrentTab(RunData rundata, Context context) {
String tabParam = rundata.getParameters().getString("tab");
currentTab = ALEipUtils.getTemp(rundata, context, "tab");
if (tabParam == null && currentTab == null) {
ALEipUtils.setTemp(rundata, context, "tab", "received_notes");
currentTab = "received_notes";
} else if (tabParam != null) {
ALEipUtils.setTemp(rundata, context, "tab", tabParam);
currentTab = tabParam;
}
}
/**
* 現在選択されているタブを取得します。
*
* @return
*/
public String getCurrentTab() {
return currentTab;
}
/**
*
* @return
*/
public String getUserId() {
return userId;
}
/**
*
* @return
*/
public String getTargetGroupName() {
return target_group_name;
}
/**
*
* @return
*/
public String getTargetUserId() {
return target_user_id;
}
/**
*
* @param userId
* @return
*/
public String getUserName(String userId) {
return NoteUtils.getUserName(userId);
}
/**
*
* @param userId
* @return
*/
public String getUserFullName(String userId) {
try {
ALEipUser user =
ALEipUtils.getALEipUser(Integer.valueOf(userId).intValue());
return user.getAliasName().getValue();
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
return "";
}
}
/**
*
* @param userName
* @return
*/
public String getUserId(String userName) {
return NoteUtils.getUserId(userName);
}
/**
*
* @param groupname
* @return
*/
public List<ALEipUser> getUsers(String groupname) {
return ALEipUtils.getUsers(groupname);
}
public int getNewNoteAllSum() {
return newNoteAllSum;
}
/**
*
* @return
*/
public int getUnreadNotesAllSum() {
return unreadNotesAllSum;
}
/**
*
* @return
*/
public Map<Integer, ALEipPost> getPostMap() {
return ALEipManager.getInstance().getPostMap();
}
/**
*
* @return
*/
public List<ALEipGroup> getMyGroupList() {
return myGroupList;
}
/**
* 状態を取得する.
*
* @param id
* @return
*/
public String getStatus(long id) {
return statusList.get(Integer.valueOf((int) id));
}
/**
* 送信先メンバーを取得します。
*
* @return
*/
public List<ALEipUser> getMemberList() {
return members;
}
/**
*
* @return
*/
public String getMailAccountURI() {
return mailAccountURI;
}
/**
*
* @return
*/
public String getUserAccountURI() {
return userAccountURI;
}
public ALStringField getTargetKeyword() {
return target_keyword;
}
}