/*
* 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.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Date;
import com.aimluck.commons.field.ALDateTimeField;
import com.aimluck.commons.field.ALNumberField;
import com.aimluck.commons.field.ALStringField;
import com.aimluck.eip.cayenne.om.social.Activity;
import com.aimluck.eip.orm.Database;
import com.aimluck.eip.orm.query.ResultList;
import com.aimluck.eip.services.social.ALActivityService;
import com.aimluck.eip.services.social.model.ALActivityGetRequest;
import com.aimluck.eip.util.ALCommonUtils;
/**
*
*/
public class ALActivity implements ALData, Serializable {
private static final long serialVersionUID = 597816564175622540L;
private int id;
private ALStringField displayName;
private ALNumberField userId;
private ALStringField appId;
private ALStringField loginname;
private ALStringField title;
private ALDateTimeField updateDate;
private ALDateTimeField updateDateTime;
private ALDateTimeField updateYear;
private ALDateTimeField updateDateYear;
private ALStringField externalId;
private ALStringField portletParams;
private ALStringField icon;
private ALNumberField moduleId;
private boolean isRead;
public ALActivity() {
initField();
}
/**
*
*/
@Override
public void initField() {
displayName = new ALStringField();
displayName.setValue("_");
userId = new ALNumberField();
appId = new ALStringField();
loginname = new ALStringField();
title = new ALStringField();
externalId = new ALStringField();
portletParams = new ALStringField();
updateDate = new ALDateTimeField("M月d日");
updateDateTime = new ALDateTimeField("H:mm");
updateYear = new ALDateTimeField("yyyy年");
updateDateYear = new ALDateTimeField("yyyy年M月d日");
icon = new ALStringField();
moduleId = new ALNumberField();
isRead = true;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
/**
* @return appId
*/
public ALStringField getAppId() {
return appId;
}
/**
* @param appId
* セットする appId
*/
public void setAppId(String appId) {
this.appId.setValue(appId);
}
/**
* @return loginname
*/
public ALStringField getLoginName() {
return loginname;
}
/**
* @param loginname
* セットする loginname
*/
public void setLoginName(String loginname) {
this.loginname.setValue(loginname);
}
/**
* @return title
*/
public ALStringField getTitle() {
return title;
}
/**
* @param title
* セットする title
*/
public void setTitle(String title) {
this.title.setValue(title);
}
public void setUpdateDate(Date updateDate) {
this.updateYear.setValue(updateDate);
this.updateDateYear.setValue(updateDate);
this.updateDate.setValue(updateDate);
this.updateDateTime.setValue(updateDate);
}
public ALDateTimeField getUpdateDate() {
ALDateTimeField today = new ALDateTimeField("M月d日");
ALDateTimeField thisYear = new ALDateTimeField("yyyy年");
today.setValue(new Date());
thisYear.setValue(new Date());
if (updateDate.toString().equals(today.toString())
&& updateYear.toString().equals(thisYear.toString())) {
return updateDateTime;
} else if (!updateDate.toString().equals(today.toString())
&& updateYear.toString().equals(thisYear.toString())) {
return updateDate;
} else {
return updateDateYear;
}
}
public void setDisplayName(String displayName) {
this.displayName.setValue(displayName);
}
public ALStringField getDisplayName() {
return displayName;
}
public void setUserId(Integer userId) {
this.userId.setValue(userId);
}
/**
* @return userId
*/
public ALNumberField getUserId() {
return userId;
}
public ALStringField getExternalId() {
return externalId;
}
public void setExternalId(String externalId) {
this.externalId.setValue(externalId);
}
public ALStringField getPortletParams() {
return portletParams;
}
public void setPortletParams(String portletParams) {
this.portletParams.setValue(portletParams);
}
public String getTitleText() {
return ALCommonUtils.replaceToAutoCR(title.toString());
}
public void setModuleId(Integer moduleId) {
this.moduleId.setValue(moduleId);
}
/**
* @return moduleId
*/
public ALNumberField getModuleId() {
return moduleId;
}
public String getPopupUrl() {
String portletParams = this.portletParams.getValue();
String externalId = this.externalId.getValue();
Long moduleId = this.moduleId.getValue();
if (portletParams != null && portletParams.length() > 0) {
StringBuilder b = new StringBuilder(portletParams);
if (portletParams.indexOf("?") > -1) {
b.append("&activityId=").append(id);
} else {
b.append("?activityId=").append(id);
}
return b.toString();
} else {
try {
StringBuilder b =
new StringBuilder("?template=GadgetsPopupScreen&view=popup&aid=")
.append(URLEncoder.encode(appId.getValue(), "utf-8"))
.append("&activityId=")
.append(id);
if (externalId != null && externalId.length() > 0) {
b.append("&eid=").append(URLEncoder.encode(externalId, "utf-8"));
}
if (moduleId != null) {
b.append("&mid=").append(moduleId);
}
return b.toString();
} catch (UnsupportedEncodingException e) {
//
}
return "";
}
}
/**
* @param isRead
* セットする isRead
*/
public void setRead(boolean isRead) {
this.isRead = isRead;
}
/**
* @return isRead
*/
public boolean isRead() {
return isRead;
}
/**
* @param icon
* セットする icon
*/
public void setIcon(String icon) {
this.icon.setValue(icon);
}
/**
* @return icon
*/
public ALStringField getIcon() {
return icon;
}
/**
* external_id毎の直近のアクティビティを返す。存在しない場合null。
*
* @param appid
* ex Schedule
* @param external_id
* ページ毎に割り振られるid
* @return
*/
public static ALActivity getRecentActivity(String appid, int external_id,
float priority) {
ResultList<ALActivity> list =
ALActivityService.getList(new ALActivityGetRequest()
.withAppId(appid)
.withLimit(1)
.withPriority(priority)
.withExternalId(external_id));
return list.size() > 0 ? list.get(0) : null;
}
/**
* 更新情報をReplaceするか
*
* @param activity
* @param loginname
* @return
*/
public boolean isReplace(String loginname) {
return loginname.equals(this.getLoginName().getValue());
}
/**
* 更新情報を消す。
*
* @param activity
* @param loginname
* @return
*/
public void delete() {
String sql = "delete from activity where id = " + this.getId();
Database.sql(Activity.class, sql).execute();
}
}