/* * 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.timecard.util; 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 org.apache.jetspeed.services.resources.JetspeedResources; import org.apache.turbine.util.RunData; import org.apache.velocity.context.Context; import com.aimluck.eip.cayenne.om.portlet.EipTTimecard; import com.aimluck.eip.cayenne.om.portlet.EipTTimecardSettings; import com.aimluck.eip.common.ALEipConstants; import com.aimluck.eip.orm.Database; import com.aimluck.eip.orm.query.SelectQuery; import com.aimluck.eip.util.ALEipUtils; /** * タイムカードのユーティリティクラスです。 * */ public class TimecardUtils { /** logger */ private static final JetspeedLogger logger = JetspeedLogFactoryService .getLogger(TimecardUtils.class.getName()); /** <code>TARGET_GROUP_NAME</code> グループによる表示切り替え用変数の識別子 */ public static final String TARGET_GROUP_NAME = "target_group_name"; /** <code>TARGET_USER_ID</code> ユーザによる表示切り替え用変数の識別子 */ public static final String TARGET_USER_ID = "target_user_id"; /** 出退勤フラグ(出勤) */ public static final String WORK_FLG_ON = "1"; /** 出退勤フラグ(退勤) */ public static final String WORK_FLG_OFF = "0"; /** 出退勤フラグ(ダミー) */ public static final String WORK_FLG_DUMMY = "-1"; /** タイムカードファイルを一時保管するディレクトリの指定 */ public static final String FOLDER_TMP_FOR_TIMECARD_FILES = JetspeedResources .getString("aipo.tmp.timecard.directory", ""); public static final String TIMECARD_PORTLET_NAME = "Timecard"; public static final String TIMECARD_SETTINGS_PORTLET_NAME = "TimecardSettings"; /** * Todo オブジェクトモデルを取得します。 * * @param rundata * @param context * @param isJoin * カテゴリテーブルをJOINするかどうか * @return */ public static EipTTimecard getEipTTimecard(RunData rundata, Context context) { String timecardid = ALEipUtils.getTemp(rundata, context, ALEipConstants.ENTITY_ID); try { if (timecardid == null || Integer.valueOf(timecardid) == null) { // Todo IDが空の場合 logger.debug("[Timecard] Empty ID..."); return null; } SelectQuery<EipTTimecard> query = Database.query(EipTTimecard.class); Expression exp11 = ExpressionFactory.matchDbExp( EipTTimecard.TIMECARD_ID_PK_COLUMN, timecardid); query.setQualifier(exp11); Expression exp21 = ExpressionFactory.matchExp(EipTTimecard.USER_ID_PROPERTY, Integer .valueOf(ALEipUtils.getUserId(rundata))); query.andQualifier(exp21); List<EipTTimecard> timecards = query.fetchList(); if (timecards == null || timecards.size() == 0) { // 指定したTimecard IDのレコードが見つからない場合 logger.debug("[Timecard] Not found ID..."); return null; } return timecards.get(0); } catch (Exception ex) { logger.error("timecard", ex); return null; } } /** * * @return */ public static EipTTimecardSettings getEipTTimecardSettings(RunData rundata, Context context) { String settingid = ALEipUtils.getTemp(rundata, context, ALEipConstants.ENTITY_ID); try { if (settingid == null || Integer.valueOf(settingid) == null) { // Setting IDが空の場合 logger.debug("[TimecardUtils] Empty ID..."); return null; } SelectQuery<EipTTimecardSettings> query = Database.query(EipTTimecardSettings.class); Expression exp1 = ExpressionFactory.matchDbExp( EipTTimecardSettings.TIMECARD_SETTINGS_ID_PK_COLUMN, settingid); Expression exp2 = ExpressionFactory.matchExp( EipTTimecardSettings.USER_ID_PROPERTY, Integer.valueOf(1)); query.setQualifier(exp1.andExp(exp2)); List<EipTTimecardSettings> slist = query.fetchList(); if (slist == null || slist.size() == 0) { // 指定したSetting IDのレコードが見つからない場合 logger.debug("[TimecardUtils] Not found ID..."); return null; } return slist.get(0); } catch (Exception ex) { logger.error("timecard", ex); return null; } } /** * 指定した2つの日付を比較する. * * @param date1 * @param date2 * @param checkTime * 時間まで比較する場合,true. * @return 等しい場合,0. date1>date2の場合, 1. date1 <date2の場合, 2. */ public static boolean sameDay(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal1.setTime(date1); cal2.setTime(date2); int date1Year = cal1.get(Calendar.YEAR); int date1Month = cal1.get(Calendar.MONTH) + 1; int date1Day = cal1.get(Calendar.DATE); int date2Year = cal2.get(Calendar.YEAR); int date2Month = cal2.get(Calendar.MONTH) + 1; int date2Day = cal2.get(Calendar.DATE); if (date1Year == date2Year && date1Month == date2Month && date1Day == date2Day) { return true; } return false; } }