/*
* 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.modules.actions.fileio;
import java.util.ArrayList;
import java.util.List;
import org.apache.jetspeed.portal.portlets.VelocityPortlet;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.turbine.util.RunData;
import org.apache.velocity.context.Context;
import com.aimluck.eip.common.ALCsvTokenizer;
import com.aimluck.eip.fileio.FileIOAccountCsvFormData;
import com.aimluck.eip.fileio.FileIOAccountCsvSelectData;
import com.aimluck.eip.fileio.FileIOAccountCsvUploadFormData;
import com.aimluck.eip.fileio.FileIOAccountPostCsvFormData;
import com.aimluck.eip.fileio.FileIOAccountPostCsvSelectData;
import com.aimluck.eip.fileio.FileIOAccountPostCsvUploadFormData;
import com.aimluck.eip.fileio.FileIOAddressBookCsvFormData;
import com.aimluck.eip.fileio.FileIOAddressBookCsvSelectData;
import com.aimluck.eip.fileio.FileIOAddressBookCsvUploadFormData;
import com.aimluck.eip.fileio.FileIOScheduleCsvFormData;
import com.aimluck.eip.fileio.FileIOScheduleCsvSelectData;
import com.aimluck.eip.fileio.FileIOScheduleCsvUploadFormData;
import com.aimluck.eip.fileio.util.FileIOAccountCsvUtils;
import com.aimluck.eip.fileio.util.FileIOAddressBookCsvUtils;
import com.aimluck.eip.fileio.util.FileIOScheduleCsvUtils;
import com.aimluck.eip.modules.actions.common.ALBaseAction;
import com.aimluck.eip.services.storage.ALStorageService;
import com.aimluck.eip.util.ALCSVUtils;
import com.aimluck.eip.util.ALEipUtils;
/**
* FileIOのアクションクラスです <BR>
*
*
*/
public class FileIOAction extends ALBaseAction {
/** logger */
private static final JetspeedLogger logger = JetspeedLogFactoryService
.getLogger(FileIOAction.class.getName());
/**
* 通常表示の際の処理を記述します。 <BR>
*
* @param portlet
* @param context
* @param rundata
* @throws Exception
*/
@Override
protected void buildNormalContext(VelocityPortlet portlet, Context context,
RunData rundata) throws Exception {
if (getMode() == null) {
doAccount_form_csv(rundata, context);
}
}
/**
* アドレス帳の一括入力 <BR>
*
* @param rundata
* @param context
*/
public void doAddressbook_form(RunData rundata, Context context) {
try {
FileIOAddressBookCsvFormData formData =
new FileIOAddressBookCsvFormData();
formData.initField();
formData.doViewForm(this, rundata, context);
setTemplate(rundata, "fileio-addressbook-csv");
} catch (Exception ex) {
logger.error("[AccountAction] Exception.", ex);
ALEipUtils.redirectDBError(rundata);
}
}
/**
* アドレス帳の一括入力する際のファイルアップロード <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAddressbook_upload_csv(RunData rundata, Context context)
throws Exception {
FileIOAddressBookCsvUploadFormData formData =
new FileIOAddressBookCsvUploadFormData();
formData.initField();
/* ファイルのアップロード */
ALCSVUtils.csvUpload(rundata, context, this, formData);
context.put("temp_folder", formData.getTempFolderIndex());
// 読み込み順序の設定
List<String> sequency = new ArrayList<String>();
sequency.add("15");
sequency.add("16");
sequency.add("17");
sequency.add("18");
sequency.add("13");
sequency.add("2");
sequency.add("3");
sequency.add("4");
sequency.add("5");
sequency.add("6");
sequency.add("12");
sequency.add("7");
sequency.add("8");
sequency.add("9");
sequency.add("10");
sequency.add("11");
sequency.add("19");
sequency.add("20");
ALCSVUtils.setSequency(rundata, context, sequency);
setTemplate(rundata, "fileio-addressbook-csv");
doAddressbook_list_csv(rundata, context, formData.getTempFolderIndex());
}
/**
* 読み込んだ内容をリスト表示 <BR>
*
* @param rundata
* @param context
* @param folderIndex
* @throws Exception
*/
public void doAddressbook_list_csv(RunData rundata, Context context,
String folderIndex) throws Exception {
FileIOAddressBookCsvSelectData listData =
new FileIOAddressBookCsvSelectData();
listData.initField();
listData.setTempFolderIndex(folderIndex);
/* リストの作成 */
ALCSVUtils.makeList(rundata, context, this, listData);
setTemplate(rundata, "fileio-addressbook-csv");
}
/**
* 読み込んだ内容からエラーが発生した件のみリスト表示 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAddressbook_list_csv_error(RunData rundata, Context context)
throws Exception {
FileIOAddressBookCsvSelectData listData =
new FileIOAddressBookCsvSelectData();
listData.initField();
listData.setTempFolderIndex(rundata
.getParameters()
.getString("temp_folder"));
ALCSVUtils.makeErrorList(rundata, context, this, listData);
listData.setNotErrorCount(Integer.parseInt(ALEipUtils.getTemp(
rundata,
context,
"not_error_count")));
context.put("validateError", true);
setTemplate(rundata, "fileio-addressbook-csv");
}
/**
* データが多数に及んだ際における分割表示 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAddressbook_list_csv_page(RunData rundata, Context context)
throws Exception {
FileIOAddressBookCsvSelectData listData =
new FileIOAddressBookCsvSelectData();
listData.initField();
listData.setTempFolderIndex(rundata
.getParameters()
.getString("temp_folder"));
context
.put("temp_folder", rundata.getParameters().getString("temp_folder"));
ALCSVUtils.makeListPage(rundata, context, this, listData);
setTemplate(rundata, "fileio-addressbook-csv");
}
/**
* CSVファイルからデータベースへの登録 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAddressbook_insert_csv(RunData rundata, Context context)
throws Exception {
int not_error = 0;
int line = 0;
String temp_folder_index = rundata.getParameters().getString("temp_folder");
String filepath =
FileIOAddressBookCsvUtils.getAddressBookCsvFolderName(temp_folder_index)
+ ALStorageService.separator()
+ FileIOAddressBookCsvUtils.CSV_ADDRESSBOOK_TEMP_FILENAME;
ALCsvTokenizer reader = new ALCsvTokenizer();
if (!reader.init(filepath)) {
return;
}
List<String> sequency = ALCSVUtils.getSequency(rundata, context);
String token;
int i, j;
while (reader.eof != -1) {
line++;
FileIOAddressBookCsvFormData formData =
new FileIOAddressBookCsvFormData();
formData.initField();
for (j = 0; j < sequency.size(); j++) {
token = reader.nextToken();
i = Integer.parseInt(sequency.get(j));
formData.addItemToken(token, i);
if (reader.eof == -1) {
break;
}
if (reader.line) {
break;
}
}
while ((!reader.line) && (reader.eof != -1)) {
reader.nextToken();
}
if (reader.eof == -1 && j == 0) {
break;
}
// カンマ不足対策
for (j++; j < sequency.size(); j++) {
i = Integer.parseInt(sequency.get(j));
formData.addItemToken("", i);
}
/** データベースから読み取る場合 */
if ((!formData.getFirstName().toString().equals("名前(名)"))
&& (!formData.getCompanyName().toString().equals("会社名"))) {
if (formData.doInsert(this, rundata, context)) {
not_error++;
}
} else {
if (not_error > 0) {
not_error--;
}
}
}
ALEipUtils.setTemp(rundata, context, "not_error_count", Integer
.toString(not_error));
int error_count =
Integer.parseInt(ALEipUtils.getTemp(rundata, context, "error_count"));
if (error_count > 0) {
doAddressbook_list_csv_error(rundata, context);
} else {
doAddressbook_form(rundata, context);
}
}
/**
* アドレス帳(会社情報)の一括入力 <BR>
*
* @param rundata
* @param context
*/
public void doAddressbook_company_form(RunData rundata, Context context) {
try {
FileIOAddressBookCsvFormData formData =
new FileIOAddressBookCsvFormData();
formData.initField();
formData.setIsCompanyOnly(true);
formData.doViewForm(this, rundata, context);
setTemplate(rundata, "fileio-addressbook-company-csv");
} catch (Exception ex) {
logger.error("[AccountAction] Exception.", ex);
ALEipUtils.redirectDBError(rundata);
}
}
/**
* アドレス帳(会社情報)の一括入力する際のファイルアップロード <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAddressbook_company_upload_csv(RunData rundata, Context context)
throws Exception {
FileIOAddressBookCsvUploadFormData formData =
new FileIOAddressBookCsvUploadFormData();
formData.initField();
/* ファイルのアップロード */
ALCSVUtils.csvUpload(rundata, context, this, formData);
context.put("temp_folder", formData.getTempFolderIndex());
// 読み込み順序の設定
List<String> sequency = new ArrayList<String>();
sequency.add("6");
sequency.add("12");
sequency.add("7");
sequency.add("8");
sequency.add("9");
sequency.add("10");
sequency.add("11");
sequency.add("19");
ALCSVUtils.setSequency(rundata, context, sequency);
setTemplate(rundata, "fileio-addressbook-company-csv");
doAddressbook_company_list_csv(rundata, context, formData
.getTempFolderIndex());
}
/**
* 読み込んだ内容をリスト表示 <BR>
*
* @param rundata
* @param context
* @param folderIndex
* @throws Exception
*/
public void doAddressbook_company_list_csv(RunData rundata, Context context,
String folderIndex)// 最初に呼び出されたとき
throws Exception {
FileIOAddressBookCsvSelectData listData =
new FileIOAddressBookCsvSelectData();
listData.initField();
listData.setIsCompanyOnly(true);
listData.setTempFolderIndex(folderIndex);
/* リストの作成 */
ALCSVUtils.makeList(rundata, context, this, listData);
setTemplate(rundata, "fileio-addressbook-company-csv");
}
/**
* 読み込んだ内容からエラーが発生した件のみリスト表示 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAddressbook_company_list_csv_error(RunData rundata,
Context context) throws Exception {
FileIOAddressBookCsvSelectData listData =
new FileIOAddressBookCsvSelectData();
listData.initField();
listData.setIsCompanyOnly(true);
listData.setTempFolderIndex(rundata
.getParameters()
.getString("temp_folder"));
ALCSVUtils.makeErrorList(rundata, context, this, listData);
listData.setNotErrorCount(Integer.parseInt(ALEipUtils.getTemp(
rundata,
context,
"not_error_count")));
context.put("validateError", true);
setTemplate(rundata, "fileio-addressbook-company-csv");
}
/**
* データが多数に及んだ際における分割表示 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAddressbook_company_list_csv_page(RunData rundata,
Context context) throws Exception {
FileIOAddressBookCsvSelectData listData =
new FileIOAddressBookCsvSelectData();
listData.initField();
listData.setIsCompanyOnly(true);
listData.setTempFolderIndex(rundata
.getParameters()
.getString("temp_folder"));
context
.put("temp_folder", rundata.getParameters().getString("temp_folder"));
ALCSVUtils.makeListPage(rundata, context, this, listData);
setTemplate(rundata, "fileio-addressbook-company-csv");
}
/**
* CSVファイルからデータベースへの登録 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAddressbook_company_insert_csv(RunData rundata, Context context)
throws Exception {
int not_error = 0;
String temp_folder_index = rundata.getParameters().getString("temp_folder");
String filepath =
FileIOAddressBookCsvUtils.getAddressBookCsvFolderName(temp_folder_index)
+ ALStorageService.separator()
+ FileIOAddressBookCsvUtils.CSV_ADDRESSBOOK_TEMP_FILENAME;
ALCsvTokenizer reader = new ALCsvTokenizer();
if (!reader.init(filepath)) {
return;
}
List<String> sequency = ALCSVUtils.getSequency(rundata, context);
String token;
int i, j;
while (reader.eof != -1) {
FileIOAddressBookCsvFormData formData =
new FileIOAddressBookCsvFormData();
formData.initField();
formData.setIsCompanyOnly(true);
for (j = 0; j < sequency.size(); j++) {
token = reader.nextToken();
i = Integer.parseInt(sequency.get(j));
formData.addItemToken(token, i);
if (reader.eof == -1) {
break;
}
if (reader.line) {
break;
}
}
while ((!reader.line) && (reader.eof != -1)) {
reader.nextToken();
}
if (reader.eof == -1 && j == 0) {
break;
}
// カンマ不足対策
for (j++; j < sequency.size(); j++) {
i = Integer.parseInt(sequency.get(j));
formData.addItemToken("", i);
}
if ((!formData.getFirstName().toString().equals("名前(名)"))
&& (!formData.getCompanyName().toString().equals("会社名"))) {
if ((formData.doInsert(this, rundata, context))
&& (!formData.getSameCompany())) {
not_error++;
}
} else {
if (not_error > 0) {
not_error--;
}
}
}
logger.warn("[addressbookCompanyImport]addressbook_Company CSV imported");
ALEipUtils.setTemp(rundata, context, "not_error_count", Integer
.toString(not_error));
int error_count =
Integer.parseInt(ALEipUtils.getTemp(rundata, context, "error_count"));
if (error_count > 0) {
doAddressbook_company_list_csv_error(rundata, context);
} else {
doAddressbook_company_form(rundata, context);
}
}
/**
* ユーザーの一括登録 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAccount_form_csv(RunData rundata, Context context)
throws Exception {
FileIOAccountCsvFormData formData = new FileIOAccountCsvFormData();
formData.initField();
formData.doViewForm(this, rundata, context);
setTemplate(rundata, "fileio-account-read-csv");
}
/**
* CSVファイルからデータベースへの登録 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAccount_insert_csv(RunData rundata, Context context)
throws Exception {
int not_error = 0;
String temp_folder_index = rundata.getParameters().getString("temp_folder");
String filepath =
FileIOAccountCsvUtils.getAccountCsvFolderName(temp_folder_index)
+ ALStorageService.separator()
+ FileIOAccountCsvUtils.CSV_ACCOUNT_TEMP_FILENAME;
ALCsvTokenizer reader = new ALCsvTokenizer();
if (!reader.init(filepath)) {
return;
}
List<String> sequency = ALCSVUtils.getSequency(rundata, context);
List<String> usernameList = new ArrayList<String>();
int i, j;
String token;
int line = 0;
// 最終行まで読み込む
while (reader.eof != -1) {
line++;
FileIOAccountCsvFormData formData = new FileIOAccountCsvFormData();
formData.initField();
for (j = 0; j < sequency.size(); j++) {
token = reader.nextToken();
i = Integer.parseInt(sequency.get(j));
formData.addItemToken(token, i);
if (reader.eof == -1) {
break;
}
if (reader.line) {
break;
}
}
while ((!reader.line) && (reader.eof != -1)) {
reader.nextToken();
}
if (reader.eof == -1 && j == 0) {
break;
}
// カンマ不足対策
for (j++; j < sequency.size(); j++) {
i = Integer.parseInt(sequency.get(j));
formData.addItemToken("", i);
}
/** データベースから読み取る場合 */
try {
if (formData.getUserName().toString().equals("")) {
continue;
}
} catch (Exception e) {
continue;
}
String username = formData.getUserName().toString();
if (!username.equals("ユーザー名")) {
if (!usernameList.contains(username)) {
usernameList.add(username);
if (formData.doInsert(this, rundata, context)) {
not_error++;
}
} else {
}
} else {
if (not_error > 0) {
not_error--;
}
}
}
/*
* JetspeedLink jsLink = JetspeedLinkFactory.getInstance(rundata);
* rundata.setRedirectURI(jsLink.getPortletById(
* ALEipUtils.getPortlet(rundata, context).getID()).addQueryData(
* "eventSubmit_doAccount_list", "1").toString());
* rundata.getResponse().sendRedirect(rundata.getRedirectURI()); jsLink =
* null;
*/
ALEipUtils.setTemp(rundata, context, "not_error_count", Integer
.toString(not_error));
int error_count =
Integer.parseInt(ALEipUtils.getTemp(rundata, context, "error_count"));
if (error_count > 0) {
doAccount_csv_list_error(rundata, context);
} else {
doAccount_form_csv(rundata, context);
}
}
/**
* ユーザー一括入力する際のファイルアップロード <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAccount_upload_csv(RunData rundata, Context context)
throws Exception {
FileIOAccountCsvUploadFormData formData =
new FileIOAccountCsvUploadFormData();
formData.initField();
/* ファイルのアップロード */
ALCSVUtils.csvUpload(rundata, context, this, formData);
context.put("temp_folder", formData.getTempFolderIndex());
// 読み込み順序の設定
List<String> sequency = new ArrayList<String>();
sequency.add("0");
sequency.add("1");
sequency.add("2");
sequency.add("3");
sequency.add("4");
sequency.add("5");
sequency.add("6");
sequency.add("7");
sequency.add("8");
sequency.add("9");
sequency.add("10");
sequency.add("11");
sequency.add("12");
sequency.add("13");
ALCSVUtils.setSequency(rundata, context, sequency);
setTemplate(rundata, "fileio-account-read-csv");
doAccount_list_csv(rundata, context, formData.getTempFolderIndex());
}
/**
* 読み込んだ内容をリスト表示 <BR>
*
* @param rundata
* @param context
* @param folderIndex
* @throws Exception
*/
public void doAccount_list_csv(RunData rundata, Context context,
String folderIndex) throws Exception {
FileIOAccountCsvSelectData listData = new FileIOAccountCsvSelectData();
listData.initField();
listData.setTempFolderIndex(folderIndex);
/* リストの作成 */
ALCSVUtils.makeList(rundata, context, this, listData);
setTemplate(rundata, "fileio-account-read-csv");
}
/**
* 読み込んだ内容からエラーが発生した件のみリスト表示 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAccount_csv_list_error(RunData rundata, Context context)
throws Exception {
FileIOAccountCsvSelectData listData = new FileIOAccountCsvSelectData();
listData.initField();
listData.setTempFolderIndex(rundata
.getParameters()
.getString("temp_folder"));
ALCSVUtils.makeErrorList(rundata, context, this, listData);
listData.setNotErrorCount(Integer.parseInt(ALEipUtils.getTemp(
rundata,
context,
"not_error_count")));
context.put("validateError", true);
setTemplate(rundata, "fileio-account-read-csv");
}
/**
* データが多数に及んだ際における分割表示 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAccount_csv_list_page(RunData rundata, Context context)
throws Exception {
FileIOAccountCsvSelectData listData = new FileIOAccountCsvSelectData();
listData.initField();
listData.setTempFolderIndex(rundata
.getParameters()
.getString("temp_folder"));
context
.put("temp_folder", rundata.getParameters().getString("temp_folder"));
ALCSVUtils.makeListPage(rundata, context, this, listData);
setTemplate(rundata, "fileio-account-read-csv");
}
/**
* 部署の一括登録
*
* @param rundata
* @param context
*/
public void doAccount_postcsv_form(RunData rundata, Context context) {
try {
FileIOAccountPostCsvFormData formData =
new FileIOAccountPostCsvFormData();
// formData.loadParameters(rundata, context);
formData.initField();
formData.doViewForm(this, rundata, context);
// トップ画面からのスケジュール入力であるかを判定する.
String afterBehavior =
rundata.getRequest().getParameter(ALCSVUtils.AFTER_BEHAVIOR);
if (afterBehavior != null) {
context.put(ALCSVUtils.AFTER_BEHAVIOR, "1");
}
setTemplate(rundata, "fileio-account-post-csv");
} catch (Exception ex) {
logger.error("[AccountAction] Exception.", ex);
ALEipUtils.redirectDBError(rundata);
}
}
/**
* アドレス帳(会社情報)の一括入力する際のファイルアップロード <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAccount_postcsv_upload(RunData rundata, Context context)
throws Exception {
FileIOAccountPostCsvUploadFormData formData =
new FileIOAccountPostCsvUploadFormData();
formData.initField();
/* ファイルのアップロード */
ALCSVUtils.csvUpload(rundata, context, this, formData);
context.put("temp_folder", formData.getTempFolderIndex());
// 読み込み順序の設定
List<String> sequency = new ArrayList<String>();
sequency.add("0");
sequency.add("1");
sequency.add("2");
sequency.add("3");
sequency.add("4");
sequency.add("5");
ALCSVUtils.setSequency(rundata, context, sequency);
setTemplate(rundata, "fileio-account-post-csv");
doAccount_postcsv_list(rundata, context, formData.getTempFolderIndex());
}
/**
* 読み込んだ内容をリスト表示 <BR>
*
* @param rundata
* @param context
* @param folderIndex
* @throws Exception
*/
private void doAccount_postcsv_list(RunData rundata, Context context,
String folderIndex)// 最初に呼び出されたとき
throws Exception {
FileIOAccountPostCsvSelectData listData =
new FileIOAccountPostCsvSelectData();
listData.initField();
listData.setTempFolderIndex(folderIndex);
/* リストの作成 */
ALCSVUtils.makeList(rundata, context, this, listData);
setTemplate(rundata, "fileio-account-post-csv");
}
/**
* 読み込んだ内容からエラーが発生した件のみリスト表示 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAccount_postcsv_list_error(RunData rundata, Context context)
throws Exception {
FileIOAccountPostCsvSelectData listData =
new FileIOAccountPostCsvSelectData();
listData.initField();
listData.setTempFolderIndex(rundata
.getParameters()
.getString("temp_folder"));
ALCSVUtils.makeErrorList(rundata, context, this, listData);
listData.setNotErrorCount(Integer.parseInt(ALEipUtils.getTemp(
rundata,
context,
"not_error_count")));
context.put("validateError", true);
setTemplate(rundata, "fileio-account-post-csv");
}
/**
* データが多数に及んだ際における分割表示 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAccount_postcsv_list_page(RunData rundata, Context context)
throws Exception {
FileIOAccountPostCsvSelectData listData =
new FileIOAccountPostCsvSelectData();
listData.initField();
listData.setTempFolderIndex(rundata
.getParameters()
.getString("temp_folder"));
context
.put("temp_folder", rundata.getParameters().getString("temp_folder"));
ALCSVUtils.makeListPage(rundata, context, this, listData);
setTemplate(rundata, "fileio-account-post-csv");
}
/**
* CSVファイルからデータベースへの登録 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doAccount_postcsv_insert(RunData rundata, Context context)
throws Exception {
int not_error = 0;
String temp_folder_index = rundata.getParameters().getString("temp_folder");
String filepath =
FileIOAccountCsvUtils.getAccountPostCsvFolderName(temp_folder_index)
+ ALStorageService.separator()
+ FileIOAccountCsvUtils.CSV_ACCOUNT_POST_TEMP_FILENAME;
ALCsvTokenizer reader = new ALCsvTokenizer();
if (!reader.init(filepath)) {
return;
}
List<String> sequency = ALCSVUtils.getSequency(rundata, context);
String token;
int i, j;
while (reader.eof != -1) {
FileIOAccountPostCsvFormData formData =
new FileIOAccountPostCsvFormData();
formData.initField();
for (j = 0; j < sequency.size(); j++) {
token = reader.nextToken();
i = Integer.parseInt(sequency.get(j));
formData.addItemToken(token, i);
if (reader.eof == -1) {
break;
}
if (reader.line) {
break;
}
}
while ((!reader.line) && (reader.eof != -1)) {
reader.nextToken();
}
if (reader.eof == -1 && j == 0) {
break;
}
// カンマ不足対策
for (j++; j < sequency.size(); j++) {
i = Integer.parseInt(sequency.get(j));
formData.addItemToken("", i);
}
/** データベースから読み取る場合 */
try {
if (formData.getPostName().toString().equals("")) {
continue;
}
} catch (Exception e) {
continue;
}
if (!formData.getPostName().toString().equals("部署名")) {
if (formData.doInsert(this, rundata, context)) {
not_error++;
}
} else {
if (not_error > 0) {
not_error--;
}
}
}
logger.warn("[postImport]post CSV imported");
ALEipUtils.setTemp(rundata, context, "not_error_count", Integer
.toString(not_error));
int error_count =
Integer.parseInt(ALEipUtils.getTemp(rundata, context, "error_count"));
if (error_count > 0) {
doAccount_postcsv_list_error(rundata, context);
} else {
doAccount_postcsv_form(rundata, context);
}
}
/**
* 単体スケジュールの一括入力 <BR>
*
* @param rundata
* @param context
*/
public void doSchedule_form(RunData rundata, Context context) {
try {
FileIOScheduleCsvFormData formData = new FileIOScheduleCsvFormData();
formData.initField();
formData.doViewForm(this, rundata, context);
setTemplate(rundata, "fileio-schedule-csv");
} catch (Exception ex) {
logger.error("[ScheduleAction] Exception.", ex);
ALEipUtils.redirectDBError(rundata);
}
}
/**
* スケジュールの一括入力する際のファイルアップロード
*
* @param rundata
* @param context
* @throws Exception
*/
public void doSchedule_upload_csv(RunData rundata, Context context)
throws Exception {
FileIOScheduleCsvUploadFormData formData =
new FileIOScheduleCsvUploadFormData();
formData.initField();
/* ファイルのアップロード */
ALCSVUtils.csvUpload(rundata, context, this, formData);
context.put("temp_folder", formData.getTempFolderIndex());
List<String> sequency = new ArrayList<String>();
sequency.add("4");
sequency.add("6");
sequency.add("5");
sequency.add("7");
sequency.add("2");
sequency.add("1");
sequency.add("3");
sequency.add("0");
sequency.add("8");
ALCSVUtils.setSequency(rundata, context, sequency);
ALEipUtils.setTemp(rundata, context, "is_autotime", rundata
.getParameters()
.getString("autotime_flg", "0"));
doSchedule_list_csv(rundata, context, formData.getTempFolderIndex());
}
/**
* 読み込んだ内容をリスト表示 <BR>
*
* @param rundata
* @param context
* @param folderIndex
* @throws Exception
*/
public void doSchedule_list_csv(RunData rundata, Context context,
String folderIndex) throws Exception {
FileIOScheduleCsvSelectData listData = new FileIOScheduleCsvSelectData();
listData.initField();
listData.setTempFolderIndex(folderIndex);
listData.setIsAutoTime(ALEipUtils.getTemp(rundata, context, "is_autotime"));
/* リストの作成 */
ALCSVUtils.makeList(rundata, context, this, listData);
setTemplate(rundata, "fileio-schedule-csv");
}
/**
* 読み込んだ内容からエラーが発生した件のみリスト表示 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doSchedule_list_csv_error(RunData rundata, Context context)
throws Exception {
FileIOScheduleCsvSelectData listData = new FileIOScheduleCsvSelectData();
listData.initField();
listData.setTempFolderIndex(rundata
.getParameters()
.getString("temp_folder"));
listData.setIsAutoTime(ALEipUtils.getTemp(rundata, context, "is_autotime"));
ALCSVUtils.makeErrorList(rundata, context, this, listData);
listData.setNotErrorCount(Integer.parseInt(ALEipUtils.getTemp(
rundata,
context,
"not_error_count")));
context.put("validateError", true);
setTemplate(rundata, "fileio-schedule-csv");
}
/**
* 読み込んだ内容をリスト表示 <BR>
*
* @param rundata
* @param context
* @param folderIndex
* @throws Exception
*/
public void doSchedule_list_csv_page(RunData rundata, Context context)
throws Exception {
FileIOScheduleCsvSelectData listData = new FileIOScheduleCsvSelectData();
listData.initField();
listData.setTempFolderIndex(rundata
.getParameters()
.getString("temp_folder"));
context
.put("temp_folder", rundata.getParameters().getString("temp_folder"));
listData.setIsAutoTime(ALEipUtils.getTemp(rundata, context, "is_autotime"));
ALCSVUtils.makeListPage(rundata, context, this, listData);
setTemplate(rundata, "fileio-schedule-csv");
}
/**
* CSVファイルからデータベースへの登録 <BR>
*
* @param rundata
* @param context
* @throws Exception
*/
public void doSchedule_insert_csv(RunData rundata, Context context)
throws Exception {
int not_error = 0;
String temp_folder_index = rundata.getParameters().getString("temp_folder");
String filepath =
FileIOScheduleCsvUtils.getScheduleCsvFolderName(temp_folder_index)
+ ALStorageService.separator()
+ FileIOScheduleCsvUtils.FOLDER_TMP_FOR_USERINFO_CSV_FILENAME;
ALCsvTokenizer reader = new ALCsvTokenizer();
if (!reader.init(filepath)) {
return;
}
List<String> sequency = ALCSVUtils.getSequency(rundata, context);
String token;
int i, j;
while (reader.eof != -1) {
FileIOScheduleCsvFormData formData = new FileIOScheduleCsvFormData();
formData.initField();
formData.setIsAutoTime(ALEipUtils
.getTemp(rundata, context, "is_autotime"));
for (j = 0; j < sequency.size(); j++) {
token = reader.nextToken();
i = Integer.parseInt(sequency.get(j));
formData.addItemToken(token, i);
if (reader.eof == -1) {
break;
}
if (reader.line) {
break;
}
}
while ((!reader.line) && (reader.eof != -1)) {
reader.nextToken();
}
if (reader.eof == -1 && j == 0) {
break;
}
// カンマ不足対策
for (j++; j < sequency.size(); j++) {
i = Integer.parseInt(sequency.get(j));
formData.addItemToken("", i);
}
List<String> errmsg = new ArrayList<String>();
formData.adjust();
formData.adjustUser(errmsg);
if (errmsg.size() > 0) {
continue;
}
/** データベースから読み取る場合 */
try {
if (formData.getUserNameString().toString().equals("")) {
continue;
}
if (formData.getScheduleName().toString().equals("")) {
continue;
}
} catch (Exception e) {
continue;
}
if (!formData.getUserFullName().toString().equals("名前")) {
if (formData.doInsert(this, rundata, context)) {
not_error++;
}
} else {
if (not_error > 0) {
not_error--;
}
}
}
logger.warn("[scheduleImport]1 schedule CSV imported");
ALEipUtils.setTemp(rundata, context, "not_error_count", Integer
.toString(not_error));
int error_count =
Integer.parseInt(ALEipUtils.getTemp(rundata, context, "error_count"));
if (error_count > 0) {
doSchedule_list_csv_error(rundata, context);
} else {
doSchedule_form(rundata, context);
}
}
}