/*
* 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.common;
import java.io.UnsupportedEncodingException;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import com.aimluck.eip.util.ALEipUtils;
import com.aimluck.eip.util.ALLocalizationUtils;
/**
* ユーザー情報を表すクラスです。 <br />
*
*/
public class ALBaseUser extends
org.apache.jetspeed.om.security.BaseJetspeedUser {
/**
*
*/
private static final long serialVersionUID = -5919528447748101476L;
public static final String IN_TELEPHONE = "IN_TELEPHONE";
public static final String OUT_TELEPHONE = "OUT_TELEPHONE";
public static final String CELLULAR_PHONE = "CELLULAR_PHONE";
public static final String CELLULAR_MAIL = "CELLULAR_MAIL";
public static final String CELLULAR_UID = "CELLULAR_UID";
public static final String COMPANY_ID = "COMPANY_ID";
public static final String POST_ID = "POST_ID";
public static final String POSITION_ID = "POSITION_ID";
public static final String FIRST_NAME_KANA = "FIRST_NAME_KANA";
public static final String LAST_NAME_KANA = "LAST_NAME_KANA";
public static final String PHOTO = "PHOTO";
public static final String PHOTO_SMARTPHONE = "PHOTO_SMARTPHONE";
public static final String CREATED_USER_ID = "CREATED_USER_ID";
public static final String UPDATED_USER_ID = "UPDATED_USER_ID";
public static final String CREATED = "CREATED";
public static final String MODIFIED = "MODIFIED";
public static final String PHOTO_MODIFIED = "PHOTO_MODIFIED";
public static final String PHOTO_MODIFIED_SMARTPHONE =
"PHOTO_MODIFIED_SMARTPHONE";
public static final String HAS_PHOTO = "HAS_PHOTO";
public static final String PHOTO_TYPE = "PHOTO_TYPE";
public static final String HAS_PHOTO_SMARTPHONE = "HAS_PHOTO_SMARTPHONE";
public static final String MIGRATE_VERSION = "MIGRATE_VERSION";
public static final String CODE = "CODE";
private static final JetspeedLogger logger = JetspeedLogFactoryService
.getLogger(ALBaseUser.class.getName());
// セッションに保存されないデータ
transient private Map<String, Object> map = null;
/**
*
*
*/
public ALBaseUser() {
super();
map = new HashMap<String, Object>();
}
public Object getImperm(String name) {
return map.get(name);
}
public Map<String, Object> getImpermStorage() {
if (this.map == null) {
this.map = new HashMap<String, Object>();
}
return this.map;
}
public void setImperm(String name, Object value) {
if (value == null) {
map.put(name, "");
} else {
map.put(name, value);
}
}
/**
*
* @return
*/
public String getInTelephone() {
return (String) getImperm(IN_TELEPHONE);
}
/**
*
* @param str
*/
public void setInTelephone(String str) {
setImperm(IN_TELEPHONE, str);
}
/**
*
* @return
*/
public String getOutTelephone() {
return (String) getImperm(OUT_TELEPHONE);
}
/**
*
* @param str
*/
public void setOutTelephone(String str) {
setImperm(OUT_TELEPHONE, str);
}
/**
*
* @return
*/
public String getCellularPhone() {
return (String) getImperm(CELLULAR_PHONE);
}
/**
*
* @param str
*/
public void setCellularPhone(String str) {
setImperm(CELLULAR_PHONE, str);
}
/**
*
* @return
*/
public String getCellularMail() {
return (String) getImperm(CELLULAR_MAIL);
}
/**
*
* @param str
*/
public void setCellularMail(String str) {
setImperm(CELLULAR_MAIL, str);
}
/**
*
* @return
*/
public int getCompanyId() {
return ((Integer) (getPerm(COMPANY_ID))).intValue();
}
/**
*
* @param str
*/
public void setCompanyId(int id) {
setPerm(COMPANY_ID, Integer.valueOf(id));
}
/**
*
* @return
*/
public int getPostId() {
return ((Integer) (getPerm(POST_ID))).intValue();
}
/**
*
* @param str
*/
public void setPostId(int id) {
setPerm(POST_ID, Integer.valueOf(id));
}
/**
*
* @return
*/
public int getPositionId() {
return ((Integer) (getPerm(POSITION_ID))).intValue();
}
/**
*
* @param str
*/
public void setPositionId(int id) {
setPerm(POSITION_ID, Integer.valueOf(id));
}
/**
*
* @return
*/
public String getFirstNameKana() {
return (String) getImperm(FIRST_NAME_KANA);
}
/**
*
* @param str
*/
public void setFirstNameKana(String str) {
setImperm(FIRST_NAME_KANA, str);
}
/**
*
* @return
*/
public String getLastNameKana() {
return (String) getImperm(LAST_NAME_KANA);
}
/**
*
* @param str
*/
public void setLastNameKana(String str) {
setImperm(LAST_NAME_KANA, str);
}
/**
*
* @return byte[]
*/
public byte[] getPhoto() {
Object obj = getImperm(PHOTO);
if (obj instanceof byte[]) {
return (byte[]) obj;
}
if (obj == null || "".equals(obj)) {
return null;
}
try {
return ((String) obj).getBytes(ALEipConstants.DEF_CONTENT_ENCODING);
} catch (UnsupportedEncodingException e) {
logger.error("ALBaseUser.getPhoto", e);
return ((String) obj).getBytes();
}
}
/**
*
* @return byte[]
*/
public byte[] getPhotoSmartphone() {
Object obj = getImperm(PHOTO_SMARTPHONE);
if (obj instanceof byte[]) {
return (byte[]) obj;
}
if (obj == null || "".equals(obj)) {
return null;
}
try {
return ((String) obj).getBytes(ALEipConstants.DEF_CONTENT_ENCODING);
} catch (UnsupportedEncodingException e) {
logger.error("ALBaseUser.getPhotoSmartphone", e);
return ((String) obj).getBytes();
}
}
/**
*
* @param v
*/
public void setPhoto(byte[] v) {
setImperm(PHOTO, v);
}
/**
*
* @param b
*/
public void setPhotoSmartphone(byte[] b) {
setImperm(PHOTO_SMARTPHONE, b);
}
/**
* @return
*/
public int getCreatedUserId() {
return ((Integer) (getPerm(CREATED_USER_ID))).intValue();
}
/**
* @param id
*/
public void setCreatedUserId(int id) {
setPerm(CREATED_USER_ID, Integer.valueOf(id));
}
/**
* @return
*/
public int getUpdatedUserId() {
return ((Integer) (getPerm(UPDATED_USER_ID))).intValue();
}
/**
* @param id
*/
public void setUpdatedUserId(int id) {
setPerm(UPDATED_USER_ID, Integer.valueOf(id));
}
/**
* @param d
*/
public void setCreated(Date d) {
setPerm(CREATED, d);
}
/**
* @return
*/
public Date getCreated() {
return (Date) (getPerm(CREATED));
}
/**
* @param d
*/
public void setModified(Date d) {
setPerm(MODIFIED, d);
}
/**
* @return
*/
public Date getModified() {
return (Date) (getPerm(MODIFIED));
}
/**
* 会社名を取得します。
*
* @param id
* 会社ID
* @return 会社名
*/
public String getCompanyName(int id) {
String companyName = "";
Map<Integer, ALEipCompany> companyMap =
ALEipManager.getInstance().getCompanyMap();
ALEipCompany company = companyMap.get(Integer.valueOf(id));
if (company != null) {
companyName = company.getCompanyName().toString();
}
return companyName;
}
/**
* 携帯電話の固有 ID を取得する.
*/
public String getCelluarUId() {
return (String) getImperm(CELLULAR_UID);
}
/**
*
*/
public void setCelluarUId(String str) {
setImperm(CELLULAR_UID, str);
}
/**
* 最終アクセス時間を取得します。
*
* @return
*/
public String getLastAccessTime() {
StringBuffer str = new StringBuffer();
Calendar cal = Calendar.getInstance();
cal.setTime(super.getLastAccessDate());
return str
.append(cal.get(Calendar.YEAR))
.append(ALLocalizationUtils.getl10n("COMMON_YEAR"))
.append((cal.get(Calendar.MONTH) + 1))
.append(ALLocalizationUtils.getl10n("COMMON_MONTH"))
.append(cal.get(Calendar.DATE))
.append(ALLocalizationUtils.getl10n("COMMON_DAY"))
.append(cal.get(Calendar.HOUR_OF_DAY))
.append(ALLocalizationUtils.getl10n("COMMON_HOUR"))
.append(cal.get(Calendar.MINUTE))
.append(ALLocalizationUtils.getl10n("COMMON_MINUTE"))
.toString();
}
/**
* 指定されたユーザが管理者権限を持っているかを返します。
*
* @return
*/
public boolean isAdmin() {
return ALEipUtils.isAdmin(Integer.parseInt(this.getUserId()));
}
public boolean hasPhoto() {
String hasPhoto = (String) getPerm(HAS_PHOTO);
return "T".equals(hasPhoto) || "N".equals(hasPhoto);
}
public String hasPhotoString() {
return (String) getPerm(HAS_PHOTO);
}
public boolean hasPhotoSmartphone() {
String hasPhotoSmartphone = (String) getPerm(HAS_PHOTO_SMARTPHONE);
return "T".equals(hasPhotoSmartphone) || "N".equals(hasPhotoSmartphone);
}
public String hasPhotoSmartphoneString() {
return (String) getPerm(HAS_PHOTO_SMARTPHONE);
}
/**
*
*/
public void setHasPhoto(String hasPhoto) {
setPerm(HAS_PHOTO, hasPhoto);
}
/**
*
*/
public void setHasPhotoSmartphone(String hasPhotoSmartphone) {
setPerm(HAS_PHOTO_SMARTPHONE, hasPhotoSmartphone);
}
/**
* @param d
*/
public void setPhotoModified(Date d) {
setPerm(PHOTO_MODIFIED, d);
}
/**
* @param dd
*/
public void setPhotoModifiedSmartphone(Date dd) {
setPerm(PHOTO_MODIFIED_SMARTPHONE, dd);
}
/**
* @return
*/
public Date getPhotoModified() {
return (Date) (getPerm(PHOTO_MODIFIED));
}
/**
* @return
*/
public Date getPhotoModifiedSmartphone() {
if (getPerm(PHOTO_MODIFIED_SMARTPHONE) == null
|| "".equals(getPerm(PHOTO_MODIFIED_SMARTPHONE))) {
return null;
}
return (Date) (getPerm(PHOTO_MODIFIED_SMARTPHONE));
}
/**
*
*/
public int getMigrateVersion() {
return ((Integer) (getPerm(MIGRATE_VERSION))).intValue();
}
/**
*
*/
public void setMigrateVersion(int id) {
setPerm(MIGRATE_VERSION, Integer.valueOf(id));
}
/**
*
*/
public String getCode() {
return (String) getPerm(CODE);
}
/**
*
*/
public void setCode(String code) {
setPerm(CODE, code);
}
}