/*
* 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.fileio.util;
import java.util.Calendar;
import java.util.Date;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.jetspeed.services.resources.JetspeedResources;
import com.aimluck.commons.field.ALDateTimeField;
import com.aimluck.eip.common.ALCsvTokenizer;
import com.aimluck.eip.services.storage.ALStorageService;
/**
* スケジュールのCSV読取用ユーティリティクラスです。
*
*/
public class FileIOScheduleCsvUtils {
/** <code>logger</code> loger */
@SuppressWarnings("unused")
private static final JetspeedLogger logger = JetspeedLogFactoryService
.getLogger(FileIOScheduleCsvUtils.class.getName());
/** <code>SCHEDULEMAP_TYPE_USER</code> ユーザ */
public static final String SCHEDULEMAP_TYPE_USER = "U";
/** アカウントの添付ファイルを一時保管するディレクトリの指定 */
public static final String FOLDER_TMP_FOR_ATTACHMENT_FILES =
JetspeedResources.getString("aipo.tmp.account.attachment.directory", "");
/** CSVファイルを一時保管するファイル名の指定 */
public static final String FOLDER_TMP_FOR_USERINFO_CSV_FILENAME =
"schedule_info.csv";
/** エラーリスト用CSVファイルを一時保管するファイル名の指定 */
public static final String FOLDER_TMP_FOR_USERINFO_CSV_TEMP_FILENAME =
"schedule_info_error.csv";
/** CSVファイルを一時保管するディレクトリの指定 */
public static final String CSV_SCHEDULE_TEMP_FOLDER = "account_schedule";
public static final String DEFAULT_TIME_FORMAT = "HH:mm";
/**
* 一時ファイルの保存先フォルダを取得
*
* @param index
* @return
*/
public static String getScheduleCsvFolderName(String index) {
return ALStorageService.getDocumentPath(
ALCsvTokenizer.CSV_TEMP_FOLDER,
FileIOScheduleCsvUtils.CSV_SCHEDULE_TEMP_FOLDER
+ ALStorageService.separator()
+ index);
}
public static int compareToDate(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 0;
}
if (cal1.after(cal2)) {
return 2;
} else {
return 1;
}
}
public static boolean checkDateAcross(ALDateTimeField start_date,
ALDateTimeField start_time, ALDateTimeField end_date,
ALDateTimeField end_time) {
boolean result = true;
if (start_date.toString().equals("") || end_date.toString().equals("")) {
return true;
}
if (start_time.toString().equals("") || end_time.toString().equals("")) {
return true;
}
// in case that start_time = 00:00 end_time = 00:00, Permit
if (Integer.parseInt(start_time.getHour()) == 0
&& Integer.parseInt(start_time.getMinute()) == 0
&& Integer.parseInt(end_time.getHour()) == 0
&& Integer.parseInt(end_time.getMinute()) == 0) {
return true;
}
if (FileIOScheduleCsvUtils.compareToDate(start_date.getValue(), end_date
.getValue()) != 0) {
result = false;
}
return result;
}
public static boolean checkDateAcross(ALDateTimeField startDateTime,
ALDateTimeField endDateTime) {
String _sdate =
startDateTime.getYear()
+ "/"
+ startDateTime.getMonth()
+ "/"
+ startDateTime.getDay();
String _stime =
startDateTime.getYear()
+ "/"
+ startDateTime.getMonth()
+ "/"
+ startDateTime.getDay()
+ " "
+ startDateTime.getHour()
+ ":"
+ startDateTime.getMinute();
String _edate =
endDateTime.getYear()
+ "/"
+ endDateTime.getMonth()
+ "/"
+ endDateTime.getDay();
String _etime =
endDateTime.getYear()
+ "/"
+ endDateTime.getMonth()
+ "/"
+ endDateTime.getDay()
+ " "
+ endDateTime.getHour()
+ ":"
+ endDateTime.getMinute();
ALDateTimeField startDate = new ALDateTimeField();
startDate.setValue(_sdate);
ALDateTimeField startTime =
new ALDateTimeField(ALDateTimeField.DEFAULT_DATE_TIME_FORMAT);
startTime.setValue(_stime);
ALDateTimeField endDate = new ALDateTimeField();
endDate.setValue(_edate);
ALDateTimeField endTime =
new ALDateTimeField(ALDateTimeField.DEFAULT_DATE_TIME_FORMAT);
endTime.setValue(_etime);
return checkDateAcross(startDate, startTime, endDate, endTime);
}
public static boolean isSpan(ALDateTimeField startDateTime,
ALDateTimeField endDateTime) {
try {
if (Integer.parseInt(startDateTime.getHour()) == 0
&& Integer.parseInt(startDateTime.getMinute()) == 0
&& Integer.parseInt(endDateTime.getHour()) == 0
&& Integer.parseInt(endDateTime.getMinute()) == 0) {
return true;
}
} catch (NumberFormatException e) {
}
return false;
}
}