/* * 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.eventlog.action; import java.util.Calendar; import org.apache.jetspeed.services.logging.JetspeedLogFactoryService; import org.apache.jetspeed.services.logging.JetspeedLogger; import org.apache.turbine.util.RunData; import com.aimluck.eip.cayenne.om.portlet.EipTEventlog; import com.aimluck.eip.cayenne.om.security.TurbineUser; import com.aimluck.eip.common.ALEipConstants; import com.aimluck.eip.eventlog.util.ALEventlogUtils; import com.aimluck.eip.orm.Database; import com.aimluck.eip.services.eventlog.ALEventlogConstants; import com.aimluck.eip.services.eventlog.ALEventlogFactoryService; import com.aimluck.eip.services.eventlog.ALEventlogHandler; import com.aimluck.eip.util.ALEipUtils; /** * ログ保存ハンドラ. * */ public class ALActionEventlogHandler extends ALEventlogHandler { private static final JetspeedLogger logger = JetspeedLogFactoryService .getLogger(ALActionEventlogHandler.class.getName()); public ALActionEventlogHandler() { } public static ALEventlogHandler getInstance() { return new ALActionEventlogHandler(); } /** * ログ */ @Override public void log(int entity_id, int portlet_type, String note) { logActionEvent(entity_id, portlet_type, note); } /** * ログ */ @Override public void log(int entity_id, int portlet_type, String note, String mode) { logActionEvent(entity_id, portlet_type, note, mode); } private void logActionEvent(int entity_id, int portlet_type, String note) { // rundataの取得 RunData rundata = ALEventlogFactoryService.getInstance().getRunData(); // MODEの取得 String mode = rundata.getParameters().getString(ALEipConstants.MODE); if (mode == null || "".equals(mode)) { // actionのパラメータを使う String action = rundata.getAction(); if (action == null || "".equals(action)) { return; } } else { logActionEvent(entity_id, portlet_type, note, mode); } } private void logActionEvent(int entity_id, int portlet_type, String note, String mode) { // rundataの取得 RunData rundata = ALEventlogFactoryService.getInstance().getRunData(); // EVENTTYPEの取得 int event_type = ALEventlogUtils.getEventTypeValue(mode); // ユーザーIDの取得 int uid = ALEipUtils.getUserId(rundata); // 接続IPアドレスの取得 String ip_addr = rundata.getRemoteAddr(); // ログを保存 saveEvent(event_type, uid, portlet_type, entity_id, ip_addr, note); } /** * Login処理 * * @param mode * @return */ @Override public void logLogin(int userid) { // rundataの取得 RunData rundata = ALEventlogFactoryService.getInstance().getRunData(); int event_type = ALEventlogUtils.getEventTypeValue("Login"); int p_type = ALEventlogConstants.PORTLET_TYPE_LOGIN; // 接続IPアドレスの取得 String ip_addr = rundata.getRemoteAddr(); saveEvent(event_type, userid, p_type, 0, ip_addr, null); } /** * Logout処理 * * @param mode * @return */ @Override public void logLogout(int userid) { // rundataの取得 RunData rundata = ALEventlogFactoryService.getInstance().getRunData(); int event_type = ALEventlogUtils.getEventTypeValue("Logout"); int p_type = ALEventlogConstants.PORTLET_TYPE_LOGOUT; // 接続IPアドレスの取得 String ip_addr = rundata.getRemoteAddr(); saveEvent(event_type, userid, p_type, 0, ip_addr, null); } /** * XLS出力処理 * * @param mode * @return */ @Override public void logXlsScreen(int userid, String Note, int _p_type) { // rundataの取得 RunData rundata = ALEventlogFactoryService.getInstance().getRunData(); int event_type = ALEventlogUtils.getEventTypeValue("xls_screen"); // 接続IPアドレスの取得 String ip_addr = rundata.getRemoteAddr(); saveEvent(event_type, userid, _p_type, 0, ip_addr, null); } /** * * @param event_type * イベント種別 * @param uid * ユーザーID * @param p_type * ポートレットTYPE * @param note * @return */ protected boolean saveEvent(int event_type, int uid, int p_type, int entity_id, String ip_addr, String note) { try { // 新規オブジェクトモデル EipTEventlog log = Database.create(EipTEventlog.class); TurbineUser tuser = Database.get(TurbineUser.class, Integer.valueOf(uid)); // ユーザーID log.setTurbineUser(tuser); // イベント発生日 log.setEventDate(Calendar.getInstance().getTime()); // イベントTYPE log.setEventType(Integer.valueOf(event_type)); // ポートレットTYPE log.setPortletType(Integer.valueOf(p_type)); // エンティティID log.setEntityId(Integer.valueOf(entity_id)); // 接続IPアドレス log.setIpAddr(ip_addr); // 作成日 log.setCreateDate(Calendar.getInstance().getTime()); // 更新日 log.setUpdateDate(Calendar.getInstance().getTime()); // note log.setNote(note); Database.commit(); return true; } catch (Exception ex) { Database.rollback(); logger.error("ALActionEventlogHandler.saveEvent", ex); return false; } } /** * mode を DB に保存するための数値に変換します。 * * @param mode * @return */ @Override public int getEventTypeValue(String mode) { if (ALActionEventlogConstants.EVENT_MODE_DETAIL.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_DETAIL; } else if (ALActionEventlogConstants.EVENT_MODE_INSERT.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_INSERT; } else if (ALActionEventlogConstants.EVENT_MODE_LIST.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_LIST; } else if (ALActionEventlogConstants.EVENT_MODE_FORM.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_FORM; } else if (ALActionEventlogConstants.EVENT_MODE_NEW_FORM.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_NEW_FORM; } else if (ALActionEventlogConstants.EVENT_MODE_EDIT_FORM.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_EDIT_FORM; } else if (ALActionEventlogConstants.EVENT_MODE_UPDATE.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_UPDATE; } else if (ALActionEventlogConstants.EVENT_MODE_MULTI_DELETE.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_MULTI_DELETE; } else if (ALActionEventlogConstants.EVENT_MODE_DELETE.equals(mode) || ALActionEventlogConstants.EVENT_MODE_DELETE_REPLY.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_DELETE; } else if (ALActionEventlogConstants.EVENT_MODE_LOGIN.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_LOGIN; } else if (ALActionEventlogConstants.EVENT_MODE_LOGOUT.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_LOGOUT; } else if (ALActionEventlogConstants.EVENT_MODE_ACCEPT.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_ACCEPT; } else if (ALActionEventlogConstants.EVENT_MODE_DENIAL.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_DENIAL; } else if (ALActionEventlogConstants.EVENT_MODE_PUNCHIN.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_PUNCHIN; } else if (ALActionEventlogConstants.EVENT_MODE_PUNCHOUT.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_PUNCHOUT; } else if (ALActionEventlogConstants.EVENT_MODE_XLS_SCREEN.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_XLS_SCREEN; } else if (ALActionEventlogConstants.EVENT_MODE_UPDATE_PASSWORD .equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_UPDATE_PASSWORD; } else if (ALActionEventlogConstants.EVENT_MODE_DOWNLOAD.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_DOWNLOAD; } else if (ALActionEventlogConstants.EVENT_MODE_STARTGUIDE.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_STARTGUIDE; } else if (ALActionEventlogConstants.EVENT_MODE_COMMENT.equals(mode)) { return ALActionEventlogConstants.EVENT_TYPE_COMMENT; } return ALActionEventlogConstants.EVENT_TYPE_NONE; } /** * イベントのエイリアス名を取得します。 * * @param eventType * @return */ @Override public String getEventAliasName(int eventType) { int type = ALActionEventlogConstants.EVENT_TYPE_NONE; if (eventType > 0 && eventType < ALActionEventlogConstants.EVENT_ALIAS_NAME.length) { type = eventType; } return ALActionEventlogConstants.EVENT_ALIAS_NAME[type]; } /** * ポートレットのエイリアス名を取得します。 * * @param eventType * @return */ @Override public String getPortletAliasName(int portletType) { if (portletType == ALEventlogConstants.PORTLET_TYPE_NONE) { return ALActionEventlogConstants.PORTLET_TYPE_STR_STR_NONE; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_LOGIN) { return ALActionEventlogConstants.PORTLET_TYPE_STR_LOGIN; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_LOGOUT) { return ALActionEventlogConstants.PORTLET_TYPE_STR_LOGOUT; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_ACCOUNT) { return ALActionEventlogConstants.PORTLET_TYPE_STR_ACCOUNT; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_SYSTEM) { return ALActionEventlogConstants.PORTLET_TYPE_STR_SYSTEM; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_AJAXSCHEDULEWEEKLY) { return ALActionEventlogConstants.PORTLET_TYPE_STR_AJAXSCHEDULEWEEKLY; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_BLOG_ENTRY) { return ALActionEventlogConstants.PORTLET_TYPE_STR_BLOG_ENTRY; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_BLOG_THEMA) { return ALActionEventlogConstants.PORTLET_TYPE_STR_BLOG_THEMA; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_WORKFLOW) { return ALActionEventlogConstants.PORTLET_TYPE_STR_WORKFLOW; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_WORKFLOW_CATEGORY) { return ALActionEventlogConstants.PORTLET_TYPE_STR_WORKFLOW_CATEGORY; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_WORKFLOW_ROUTE) { return ALActionEventlogConstants.PORTLET_TYPE_STR_WORKFLOW_ROUTE; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_TODO) { return ALActionEventlogConstants.PORTLET_TYPE_STR_TODO; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_TODO_CATEGORY) { return ALActionEventlogConstants.PORTLET_TYPE_STR_TODO_CATEGORY; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_NOTE) { return ALActionEventlogConstants.PORTLET_TYPE_STR_NOTE; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_TIMECARD) { return ALActionEventlogConstants.PORTLET_TYPE_STR_TIMECARD; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_TIMECARD_XLS_SCREEN) { return ALActionEventlogConstants.PORTLET_TYPE_STR_TIMECARD_XLS_SCREEN; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_ADDRESSBOOK) { return ALActionEventlogConstants.PORTLET_TYPE_STR_ADDRESSBOOK; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_ADDRESSBOOK_COMPANY) { return ALActionEventlogConstants.PORTLET_TYPE_STR_ADDRESSBOOK_COMPANY; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_ADDRESSBOOK_GROUP) { return ALActionEventlogConstants.PORTLET_TYPE_STR_ADDRESSBOOK_GROUP; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_MEMO) { return ALActionEventlogConstants.PORTLET_TYPE_STR_MEMO; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_MSGBOARD_TOPIC) { return ALActionEventlogConstants.PORTLET_TYPE_STR_MSGBOARD; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_MSGBOARD_CATEGORY) { return ALActionEventlogConstants.PORTLET_TYPE_STR_MSGBOARD_CATEGORY; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_EXTERNALSEARCH) { return ALActionEventlogConstants.PORTLET_TYPE_STR_EXTERNALSEARCH; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_MYLINK) { return ALActionEventlogConstants.PORTLET_TYPE_STR_MYLINK; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_WHATSNEW) { return ALActionEventlogConstants.PORTLET_TYPE_STR_WHATSNEW; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_CABINET_FILE) { return ALActionEventlogConstants.PORTLET_TYPE_STR_CABINET_FILE; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_CABINET_FOLDER) { return ALActionEventlogConstants.PORTLET_TYPE_STR_CABINET_FOLDER; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_WEBMAIL || portletType == ALEventlogConstants.PORTLET_TYPE_WEBMAIL_ACCOUNT) { return ALActionEventlogConstants.PORTLET_TYPE_STR_WEBMAIL; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_WEBMAIL_FOLDER) { return ALActionEventlogConstants.PORTLET_TYPE_STR_WEBMAIL_FOLDER; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_WEBMAIL_FILTER) { return ALActionEventlogConstants.PORTLET_TYPE_STR_WEBMAIL_FILTER; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_SCHEDULE) { return ALActionEventlogConstants.PORTLET_TYPE_STR_SCHEDULE; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_MANHOUR) { return ALActionEventlogConstants.PORTLET_TYPE_STR_MANHOUR; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_ACCOUNTPERSON) { return ALActionEventlogConstants.PORTLET_TYPE_STR_ACCOUNTPERSON; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_MYGROUP) { return ALActionEventlogConstants.PORTLET_TYPE_STR_MYGROUP; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_PAGE) { return ALActionEventlogConstants.PORTLET_TYPE_STR_PAGE; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_CELLULAR) { return ALActionEventlogConstants.PORTLET_TYPE_STR_CELLULAR; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_COMMON_CATEGORY) { return ALActionEventlogConstants.PORTLET_TYPE_STR_COMMON_CATEGORY; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_EXTTIMECARD) { return ALActionEventlogConstants.PORTLET_TYPE_STR_EXTTIMECARD; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_EXTTIMECARD_SYSTEM) { return ALActionEventlogConstants.PORTLET_TYPE_STR_EXTTIMECARD_SYSTEM; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_REPORT) { return ALActionEventlogConstants.PORTLET_TYPE_STR_REPORT; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_REPORT) { return ALActionEventlogConstants.PORTLET_TYPE_STR_REPORT; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_TIMELINE) { return ALActionEventlogConstants.PORTLET_TYPE_STR_TIMELINE; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_GPDB) { return ALActionEventlogConstants.PORTLET_TYPE_STR_GPDB; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_ACCESSCTL) { return ALActionEventlogConstants.PORTLET_TYPE_STR_ACCESSCTL; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_FACILITY) { return ALActionEventlogConstants.PORTLET_TYPE_STR_FACILITY; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_GADGET) { return ALActionEventlogConstants.PORTLET_TYPE_STR_GADGET; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_WIKI) { return ALActionEventlogConstants.PORTLET_TYPE_STR_WIKI; } else if (portletType == ALEventlogConstants.PORTLET_TYPE_PROJECT) { return ALActionEventlogConstants.PORTLET_TYPE_STR_PROJECT; } else { return ALActionEventlogConstants.PORTLET_TYPE_STR_STR_NONE; } } }