/*
 * Aipo is a groupware program developed by Aimluck,Inc.
 * Copyright (C) 2004-2008 Aimluck,Inc.
 * http://aipostyle.com/
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.aimluck.eip.juchu;

import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.cayenne.DataRow;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.query.SQLTemplate;
import org.apache.cayenne.query.SelectQuery;
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.commons.field.ALDateField;
import com.aimluck.commons.field.ALDateTimeField;
import com.aimluck.commons.field.ALNumberField;
import com.aimluck.commons.field.ALStringField;
import com.aimluck.eip.juchu.util.JuchuUtils;
import com.aimluck.eip.cayenne.om.portlet.ImwTJobOrder;
import com.aimluck.eip.cayenne.om.security.TurbineUser;
import com.aimluck.eip.common.ALAbstractFormData;
import com.aimluck.eip.common.ALDBErrorException;
import com.aimluck.eip.common.ALEipConstants;
import com.aimluck.eip.common.ALEipManager;
import com.aimluck.eip.common.ALPageNotFoundException;
import com.aimluck.eip.modules.actions.common.ALAction;
import com.aimluck.eip.orm.DatabaseOrmService;
import com.aimluck.eip.services.datasync.ALDataSyncFactoryService;
import com.aimluck.eip.util.ALEipUtils;

/**
 * ユーザーアカウントのフォームデータを管理するクラスです。 <BR>
 * 
 */
public class JuchuUserFormData extends ALAbstractFormData {

  /** logger */
  private static final JetspeedLogger logger = JetspeedLogFactoryService
      .getLogger(JuchuUserFormData.class.getName());

  /** ブラウザに表示するデフォルトのパスワード（ダミーパスワード） */
  private static final String DEFAULT_VIEW_PASSWORD = "******";

  // /** ユーザー名 */
  // private ALStringField username;
  //
  // /** パスワード */
  // private ALStringField password;
  //
  // /** パスワード */
  // private ALStringField password2;
  //
  // /** 名前（名） */
  // private ALStringField firstname;
  //
  // /** 名前（姓） */
  // private ALStringField lastname;
  //
  // /** メールアドレス */
  // private ALStringField email;
  //
  // /** アカウント有効/無効 */
  // private ALStringField disabled;
  //
  // /** 電話番号（内線） */
  // private ALStringField in_telephone;
  //
  // /** 電話番号 */
  // private ALStringField out_telephone1;
  //
  // /** 電話番号 */
  // private ALStringField out_telephone2;
  //
  // /** 電話番号 */
  // private ALStringField out_telephone3;
  //
  // /** 電話番号（携帯） */
  // private ALStringField cellular_phone1;
  //
  // /** 電話番号（携帯） */
  // private ALStringField cellular_phone2;
  //
  // /** 電話番号（携帯） */
  // private ALStringField cellular_phone3;
  //
  // /** 携帯メールアドレス */
  // private ALStringField cellular_mail;
  //
  // /** 会社 ID */
  // private ALNumberField company_id;
  //
  // /** 役職 ID */
  // private ALNumberField position_id;
  //
  // /** 部署 ID */
  // private ALNumberField post_id;
  //
  // /** 部署マップ */
  // private Map user_post_map;
  //
  // /** フリガナ（名） */
  // private ALStringField first_name_kana;
  //
  // /** フリガナ（姓） */
  // private ALStringField last_name_kana;
  //
  // /** 顔写真 */
  // private ALStringField photo = null;
  //
  // /** 添付ファイル */
  // private FileuploadLiteBean filebean = null;
  //
  // /** 添付フォルダ名 */
  // private String folderName = null;
  //
  // /** 部署リスト */
  // private List postList;
  //
  // /** 役職リスト */
  // private ArrayList positionList;
  //
  // /** 部署 */
  // private JuchuPostFormData post;
  //
  // /** 役職 */
  // private JuchuPositionFormData position;

  /** */
  private boolean is_new_post;

  /** */
  private boolean is_new_position;

  // /** パスワード変更の可否．変更する場合は，false． */
  // private boolean dontUpdatePasswd = false;
  //
  private String org_id;

  private DataContext dataContext;

  //
  // /** 顔写真データ */
  // private byte[] facePhoto;

  public String modeFlag = "";

  /** 受注番号 */
  private ALStringField job_order_number;

  /** 受付日 */
  private ALDateField receipt_date;

  /** 初期化受付日 */
  private ALDateField init_receipt_date;

  /** 件名 */
  private ALStringField job_order_name;

  /** 受付担当ＩＤ */
  private ALNumberField receipt_user_id;

  /** 受付担当名 */
  private ALStringField receipt_user_nm;

  /** 受注区分 */
  private ALStringField juchukubun;

  /** 受注区分名 */
  private ALStringField juchukubun_nm;

  /** 費用区分 */
  private ALStringField hiyokubun;

  /** 費用区分名 */
  private ALStringField hiyokubun_nm;

  /** 顧客ＩＤ */
  private ALNumberField client_id;

  /** 遷移した顧客ＩＤ */
  public ALNumberField client_id_old = null;

  /** 顧客名 */
  private ALStringField client_nm;

  /** システム区分 */
  private ALStringField system_class1;

  /** システム区分名 */
  private ALStringField system_class1_nm;

  /** 開発言語 */
  private ALStringField system_class2;

  /** 開発言語名 */
  private ALStringField system_class2_nm;

  /** ユーザ担当 */
  private ALStringField charge_name;

  /** 作業者１（社員番号） */
  private ALNumberField worker_user_id01;

  /** 作業者１（社員番号）名 */
  private ALStringField worker_user_nm01;

  /** 作業者２（社員番号） */
  private ALNumberField worker_user_id02;

  /** 作業者２（社員番号）名 */
  private ALStringField worker_user_nm02;

  /** 納期 */
  private ALDateField period;

  /** 受注金額 */
  private ALNumberField price;

  /** 予定工数 */
  private ALNumberField yoteikosu;

  /** 分納区分 */
  private ALStringField installmen_class;

  /** 分納区分名 */
  private ALStringField installmen_class_nm;

  /** 完了区分 */
  private ALStringField completion_class;

  /** 完了区分名 */
  private ALStringField completion_class_nm;

  /** 担当リスト */
  private ArrayList tantoList;

  /** 受注区分リスト */
  private ArrayList juchukubunList;

  /** 費用区分リスト */
  private ArrayList hiyokubunList;

  /** 顧客名リスト */
  private ArrayList clientNmList;

  /** システム区分１リスト */
  private ArrayList systemClass1List;

  /** システム区分２リスト */
  private ArrayList systemClass2List;

  /** 作業者１リスト */
  private ArrayList workerUserNm01List;

  /** 作業者２リスト */
  private ArrayList workerUserNm02List;

  /** 分納区分リスト */
  private ArrayList installmenClassList;

  /** 完了区分リスト */
  private ArrayList completionClassList;

  /**
   * 初期化します。
   * 
   * @param action
   * @param rundata
   * @param context
   * @see com.aimluck.eip.common.ALAbstractFormData#init(com.aimluck.eip.modules.actions.common.ALAction,
   *      org.apache.turbine.util.RunData, org.apache.velocity.context.Context)
   */
  public void init(ALAction action, RunData rundata, Context context)
      throws ALPageNotFoundException, ALDBErrorException {
    super.init(action, rundata, context);

    // folderName = rundata.getParameters().getString("folderName");

    is_new_post = rundata.getParameters().getBoolean("is_new_post");
    is_new_position = rundata.getParameters().getBoolean("is_new_position");

    org_id = DatabaseOrmService.getInstance().getOrgId(rundata);

    dataContext = DatabaseOrmService.getInstance().getDataContext();
  }

  /**
   * 各フィールドを初期化します。 <BR>
   * 
   * @see com.aimluck.eip.common.ALData#initField()
   */
  public void initField() {
    // // ログイン名
    // username = new ALStringField();
    // username.setFieldName("ログイン名");
    // username.setTrim(true);
    // // パスワード
    // password = new ALStringField();
    // password.setFieldName("パスワード");
    // password.setTrim(true);
    // // パスワード2
    // password2 = new ALStringField();
    // password2.setFieldName("パスワード（確認用）");
    // password2.setTrim(true);
    // // 名
    // firstname = new ALStringField();
    // firstname.setFieldName("名前（名）");
    // firstname.setTrim(true);
    // // 姓
    // lastname = new ALStringField();
    // lastname.setFieldName("名前（姓）");
    // lastname.setTrim(true);
    // // メールアドレス
    // email = new ALStringField();
    // email.setFieldName("メールアドレス");
    // email.setTrim(true);
    // // アカウント有効/無効
    // disabled = new ALStringField();
    // disabled.setFieldName("アカウント有効/無効");
    // disabled.setTrim(true);
    // // 内線番号
    // in_telephone = new ALStringField();
    // in_telephone.setFieldName("電話番号（内線）");
    // in_telephone.setTrim(true);
    //
    // // 外線番号
    // out_telephone1 = new ALStringField();
    // out_telephone1.setFieldName("電話番号（外線）");
    // out_telephone1.setTrim(true);
    // out_telephone2 = new ALStringField();
    // out_telephone2.setFieldName("電話番号（外線）");
    // out_telephone2.setTrim(true);
    // out_telephone3 = new ALStringField();
    // out_telephone3.setFieldName("電話番号（外線）");
    // out_telephone3.setTrim(true);
    //
    // // 携帯番号
    // cellular_phone1 = new ALStringField();
    // cellular_phone1.setFieldName("電話番号（携帯）");
    // cellular_phone1.setTrim(true);
    // cellular_phone2 = new ALStringField();
    // cellular_phone2.setFieldName("電話番号（携帯）");
    // cellular_phone2.setTrim(true);
    // cellular_phone3 = new ALStringField();
    // cellular_phone3.setFieldName("電話番号（携帯）");
    // cellular_phone3.setTrim(true);
    //
    // // 携帯アドレス
    // cellular_mail = new ALStringField();
    // cellular_mail.setFieldName("携帯メールアドレス");
    // cellular_mail.setTrim(true);
    // // 名（フリガナ）
    // first_name_kana = new ALStringField();
    // first_name_kana.setFieldName("名前（フリガナ）");
    // first_name_kana.setTrim(true);
    // // 姓（フリガナ）
    // last_name_kana = new ALStringField();
    // last_name_kana.setFieldName("名前（フリガナ）");
    // last_name_kana.setTrim(true);
    // // 顔写真
    // photo = new ALStringField();
    // photo.setFieldName("顔写真");
    // photo.setTrim(true);
    //
    // // 部署ID
    // post_id = new ALNumberField();
    // post_id.setFieldName("部署");
    //
    // // 役職ID
    // position_id = new ALNumberField();
    // position_id.setFieldName("役職");
    //
    /** Del 20110905 小濵 Start --- */
    // 担当リスト
    tantoList = new ArrayList();
    /** Del 20110905 小濵 End   --- */

    // 受注区分リスト
    juchukubunList = new ArrayList();

    // 費用区分リスト
    hiyokubunList = new ArrayList();

    // 顧客名リスト
    clientNmList = new ArrayList();

    // システム区分１リスト
    systemClass1List = new ArrayList();

    // システム区分２リスト
    systemClass2List = new ArrayList();

    // 作業者１リスト
    workerUserNm01List = new ArrayList();

    // 作業者２リスト
    workerUserNm02List = new ArrayList();

    // 分納区分リスト
    installmenClassList = new ArrayList();

    // 完了区分リスト
    completionClassList = new ArrayList();

    // 受注番号
    job_order_number = new ALStringField();
    job_order_number.setFieldName("受注番号");

    // 受付日
    receipt_date = new ALDateField();
    receipt_date.setFieldName("受付日");

    // 受付日
    init_receipt_date = new ALDateField();

    // 件名
    job_order_name = new ALStringField();
    job_order_name.setFieldName("件名");

    // 受付担当ID
    receipt_user_id = new ALNumberField();
    receipt_user_id.setFieldName("受付担当");

    // 受付担当名
    receipt_user_nm = new ALStringField();

    // 受注区分
    juchukubun = new ALStringField();
    juchukubun.setFieldName("受注区分");

    // 受注区分名
    juchukubun_nm = new ALStringField();

    // 費用区分
    hiyokubun = new ALStringField();
    hiyokubun.setFieldName("費用区分");

    // 費用区分名
    hiyokubun_nm = new ALStringField();

    // 顧客ＩＤ
    client_id = new ALNumberField();
    client_id.setFieldName("顧客");
    // client_id_old=new ALNumberField ();

    // 顧客名
    client_nm = new ALStringField();

    // システム区分
    system_class1 = new ALStringField();
    system_class1.setFieldName("システム区分１");

    // システム区分名
    system_class1_nm = new ALStringField();

    // 開発言語
    system_class2 = new ALStringField();
    system_class2.setFieldName("システム区分２");

    // 開発言語名
    system_class2_nm = new ALStringField();

    // ユーザ担当
    charge_name = new ALStringField();
    charge_name.setFieldName("ユーザ担当");

    // 作業者１（社員番号）
    worker_user_id01 = new ALNumberField();
    worker_user_id01.setFieldName("作業者１");

    // 作業者１（社員番号）名
    worker_user_nm01 = new ALStringField();

    // 作業者２（社員番号）
    worker_user_id02 = new ALNumberField();
    worker_user_id02.setFieldName("作業者２");

    // 作業者２（社員番号）名
    worker_user_nm02 = new ALStringField();

    // 納期
    period = new ALDateField();
    period.setFieldName("納期");

    // 受注金額
    price = new ALNumberField();
    price.setFieldName("受注金額");

    // 予定工数
    yoteikosu = new ALNumberField();
    yoteikosu.setFieldName("予定工数");

    // 分納区分
    installmen_class = new ALStringField();
    installmen_class.setFieldName("分納区分");

    // 分納区分名
    installmen_class_nm = new ALStringField();

    // 完了区分
    completion_class = new ALStringField();
    completion_class.setFieldName("完了区分");

    // 完了区分名
    completion_class_nm = new ALStringField();

    // String mode = this.getMode();
    if (modeFlag.equals("insertMode")) {
      /** Del 20110905 小濵 Start --- */
//      // 担当リスト
//      tantoList.addAll(getTantoListData());
      /** Del 20110905 小濵 End   --- */

      // 受注区分リスト
      juchukubunList.addAll(getJuchukubunListData());

      // 費用区分リスト
      hiyokubunList.addAll(getHiyokubunListData());

      // 顧客名リスト
      clientNmList.addAll(getClientNmListData());

      // システム区分１リスト
      systemClass1List.addAll(getSystemClass1ListData());

      // システム区分２リスト
      systemClass2List.addAll(getSystemClass2ListData());

      /** Del 20110905 小濵 Start --- */
//      // 作業者１リスト
//      workerUserNm01List.addAll(getWorkerUserId01ListData());
//
//      // 作業者２リスト
//      workerUserNm02List.addAll(getWorkerUserId02ListData());
      /** Del 20110905 小濵 End   --- */

      // 分納区分リスト
      installmenClassList.addAll(getInstallmenClassListData());

      // 完了区分リスト
      completionClassList.addAll(getCompletionClassListData());

      // 受付日初期化
      // Date now = new Date();
      // Date date = null;
      // SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
      // try {
      // date = format.parse(now.toString());
      // } catch (ParseException e) {
      // }
      // ALDateTimeField tmpDate = new ALDateTimeField("yyyy/MM/dd");
      // tmpDate.setValue(date);

      // init_receipt_date.setValue(tmpDate.getValue());
      // init_receipt_date.setValue(format.format(now));
      SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");
      Calendar rightNow = Calendar.getInstance();
      String tempPassDate = df.format(rightNow.getTime());
      SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
      Date date = null;
      try {
        date = format.parse(tempPassDate);
      } catch (ParseException e) {
      }
      ALDateTimeField tmpDate = new ALDateTimeField("yyyy/MM/dd");
      tmpDate.setValue(date);
      init_receipt_date.setValue(tmpDate.getValue());

      modeFlag = "";
    }

    // post = new JuchuPostFormData();
    // post.setJoinMember(false);
    // post.initField();
    //
    // position = new JuchuPositionFormData();
    // position.initField();
  }

  /**
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#setFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  protected boolean setFormData(RunData rundata, Context context,
      ArrayList msgList) throws ALPageNotFoundException, ALDBErrorException {
    boolean res = super.setFormData(rundata, context, msgList);
    try {
      if (res) {
        // post.setFormData(rundata, context, msgList);
        // position.setFormData(rundata, context, msgList);
        /*
         * ArrayList fileBeanList = FileuploadUtils.getFileuploadList(rundata);
         * if (fileBeanList != null && fileBeanList.size() > 0) { filebean =
         * (FileuploadLiteBean) fileBeanList.get(0); if (filebean.getFileId() >
         * 0) { // 顔写真をセットする． String[] acceptExts =
         * ImageIO.getWriterFormatNames(); facePhoto =
         * FileuploadUtils.getBytesShrinkFilebean(org_id, folderName,
         * ALEipUtils.getUserId(rundata), filebean, acceptExts,
         * FileuploadUtils.DEF_THUMBNAIL_WIDTH,
         * FileuploadUtils.DEF_THUMBNAIL_HEIGTH, msgList); } else { facePhoto =
         * null; } }
         */
        /** Add 20110905 小濵 Start --- */
        SelectQuery mapquery = new SelectQuery(TurbineUser.class);
        Expression mapexp1 = ExpressionFactory.noMatchDbExp(
            TurbineUser.USER_ID_PK_COLUMN,0);
        Expression mapexp2 = ExpressionFactory.noMatchExp(
            TurbineUser.COMPANY_ID_PROPERTY, null);
        Expression mapexp3 = ExpressionFactory.noMatchExp(
            TurbineUser.COMPANY_ID_PROPERTY, 0);
        Expression mapexp4 = ExpressionFactory.matchExp(
            TurbineUser.DISABLED_PROPERTY, "F");
        mapquery.setQualifier(mapexp1.andExp(mapexp2.andExp(
            mapexp3.andExp(mapexp4))));
        List list = dataContext.performQuery(mapquery);

        List users = new ArrayList();
        int size = list.size();
        for (int i = 0; i < size; i++) {
          TurbineUser map = (TurbineUser) list.get(i);
          users.add(map.getUserId());
        }
        SelectQuery query = new SelectQuery(TurbineUser.class);
        Expression exp = ExpressionFactory.inDbExp(TurbineUser.USER_ID_PK_COLUMN,
            users);
        query.setQualifier(exp);
        tantoList.addAll(ALEipUtils.getUsersFromSelectQuery(query));
        workerUserNm01List.addAll(ALEipUtils.getUsersFromSelectQuery(query));
        workerUserNm02List.addAll(ALEipUtils.getUsersFromSelectQuery(query));
        /** Add 20110905 小濵 End   --- */
      }
    } catch (Exception ex) {
      logger.error("Exception", ex);
      res = false;
    }
    return res;
  }

  /**
   * 担当リストを取得する。
   * 
   * @return
   */
  public static List getTantoListData() {
    List resultList = new ArrayList();

    // SQLの作成
    StringBuffer statement = new StringBuffer();
    statement.append("SELECT USER_ID,(LAST_NAME || ' ' || FIRST_NAME) AS NM ");
    statement.append("FROM TURBINE_USER ");
    statement.append("WHERE USER_ID <> 0 ");
    statement.append("  AND NOT COMPANY_ID IS NULL AND COMPANY_ID <> 0 ");
    statement.append("  AND DISABLED <> 'T'");
    statement.append("  AND DISABLED <> 'N'");
    // statement.append(" ORDER BY POST_NAME");
    String query = statement.toString();
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    int recNum = list.size();
    DataRow currentDataRow;
    ImwTJobOrder record;
    // データを追加
    for (int i = 0; i < recNum; i++) {
      currentDataRow = (DataRow) list.get(i);
      record = new ImwTJobOrder();
      record.setReceiptUserId(((Integer) ALEipUtils.getObjFromDataRow(
          currentDataRow, "USER_ID")).intValue());
      record.setReceiptUserNm(((String) ALEipUtils.getObjFromDataRow(
          currentDataRow, "NM")));
      resultList.add(record);
    }
    if (resultList == null || resultList.size() < 0) {
      return null;
    }
    return resultList;
  }

  /**
   * 受注区分リストを取得する。
   * 
   * @return
   */
  public static List getJuchukubunListData() {
    List resultList = new ArrayList();

    // SQLの作成
    StringBuffer statement = new StringBuffer();
    statement.append("SELECT VALUE,HANYOKUBUNNM AS NM ");
    statement.append("FROM IMW_M_HANYO ");
    statement.append("WHERE PARENT_HANYO_ID = 2 ");
    statement.append("  AND DISABLED <> 'T'");
    statement.append("  AND DISABLED <> 'N'");
    String query = statement.toString();
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    int recNum = list.size();
    DataRow currentDataRow;
    ImwTJobOrder record;
    // データを追加
    for (int i = 0; i < recNum; i++) {
      currentDataRow = (DataRow) list.get(i);
      record = new ImwTJobOrder();
      record.setJuchukubun((ALEipUtils.getObjFromDataRow(currentDataRow,
          "VALUE")).toString());
      record.setJuchukubunNm(((String) ALEipUtils.getObjFromDataRow(
          currentDataRow, "NM")));
      resultList.add(record);
    }
    if (resultList == null || resultList.size() < 0) {
      return null;
    }
    return resultList;
  }

  /**
   * 費用区分リストを取得する。
   * 
   * @return
   */
  public static List getHiyokubunListData() {
    List resultList = new ArrayList();

    // SQLの作成
    StringBuffer statement = new StringBuffer();
    statement.append("SELECT VALUE,HANYOKUBUNNM AS NM ");
    statement.append("FROM IMW_M_HANYO ");
    statement.append("WHERE PARENT_HANYO_ID = 8 ");
    statement.append("  AND DISABLED <> 'T'");
    statement.append("  AND DISABLED <> 'N'");
    // statement.append(" ORDER BY POST_NAME");
    String query = statement.toString();
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    int recNum = list.size();
    DataRow currentDataRow;
    ImwTJobOrder record;
    // データを追加
    for (int i = 0; i < recNum; i++) {
      currentDataRow = (DataRow) list.get(i);
      record = new ImwTJobOrder();
      record.setHiyokubun((ALEipUtils
          .getObjFromDataRow(currentDataRow, "VALUE")).toString());
      record.setHiyokubunNm(((String) ALEipUtils.getObjFromDataRow(
          currentDataRow, "NM")));
      resultList.add(record);
    }
    if (resultList == null || resultList.size() < 0) {
      return null;
    }
    return resultList;
  }

  /**
   * 顧客リストを取得する。
   * 
   * @return
   */
  public static List getClientNmListData() {
    List resultList = new ArrayList();

    // SQLの作成
    StringBuffer statement = new StringBuffer();
    statement.append("SELECT CLIENT_ID,CLIENT_NAME AS NM ");
    statement.append("FROM IMW_M_CLIENT ");
    statement.append("WHERE DISABLED <> 'T'");
    statement.append("  AND DISABLED <> 'N'");
    String query = statement.toString();
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    int recNum = list.size();
    DataRow currentDataRow;
    ImwTJobOrder record;
    // データを追加
    for (int i = 0; i < recNum; i++) {
      currentDataRow = (DataRow) list.get(i);
      record = new ImwTJobOrder();
      record.setClientId(((Integer) ALEipUtils.getObjFromDataRow(
          currentDataRow, "CLIENT_ID")).intValue());
      record.setClientNm(((String) ALEipUtils.getObjFromDataRow(currentDataRow,
          "NM")));
      resultList.add(record);
    }
    if (resultList == null || resultList.size() < 0) {
      return null;
    }
    return resultList;
  }

  /**
   * システム区分１リストを取得する。
   * 
   * @return
   */
  public static List getSystemClass1ListData() {
    List resultList = new ArrayList();

    // SQLの作成
    StringBuffer statement = new StringBuffer();
    statement.append("SELECT VALUE,HANYOKUBUNNM AS NM ");
    statement.append("FROM IMW_M_HANYO ");
    statement.append("WHERE PARENT_HANYO_ID = 3 ");
    statement.append("  AND DISABLED <> 'T'");
    statement.append("  AND DISABLED <> 'N'");
    // statement.append(" ORDER BY POST_NAME");
    String query = statement.toString();
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    int recNum = list.size();
    DataRow currentDataRow;
    ImwTJobOrder record;
    // データを追加
    for (int i = 0; i < recNum; i++) {
      currentDataRow = (DataRow) list.get(i);
      record = new ImwTJobOrder();
      record.setSystemClass1((ALEipUtils.getObjFromDataRow(currentDataRow,
          "VALUE")).toString());
      record.setSystemClass1Nm(((String) ALEipUtils.getObjFromDataRow(
          currentDataRow, "NM")));
      resultList.add(record);
    }
    if (resultList == null || resultList.size() < 0) {
      return null;
    }
    return resultList;
  }

  /**
   * システム区分２リストを取得する。
   * 
   * @return
   */
  public static List getSystemClass2ListData() {
    List resultList = new ArrayList();

    // SQLの作成
    StringBuffer statement = new StringBuffer();
    statement.append("SELECT VALUE,HANYOKUBUNNM AS NM ");
    statement.append("FROM IMW_M_HANYO ");
    statement.append("WHERE PARENT_HANYO_ID = 4 ");
    statement.append("  AND DISABLED <> 'T'");
    statement.append("  AND DISABLED <> 'N'");
    // statement.append(" ORDER BY POST_NAME");
    String query = statement.toString();
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    int recNum = list.size();
    DataRow currentDataRow;
    ImwTJobOrder record;
    // データを追加
    for (int i = 0; i < recNum; i++) {
      currentDataRow = (DataRow) list.get(i);
      record = new ImwTJobOrder();
      record.setSystemClass2((ALEipUtils.getObjFromDataRow(currentDataRow,
          "VALUE")).toString());
      record.setSystemClass2Nm(((String) ALEipUtils.getObjFromDataRow(
          currentDataRow, "NM")));
      resultList.add(record);
    }
    if (resultList == null || resultList.size() < 0) {
      return null;
    }
    return resultList;
  }

  /**
   * 作業者１リストを取得する。
   * 
   * @return
   */
  public static List getWorkerUserId01ListData() {
    List resultList = new ArrayList();

    // SQLの作成
    StringBuffer statement = new StringBuffer();
    statement.append("SELECT USER_ID,(LAST_NAME || ' ' || FIRST_NAME) AS NM ");
    statement.append("FROM TURBINE_USER ");
    statement.append("WHERE USER_ID <> 0 ");
    statement.append("  AND NOT COMPANY_ID IS NULL AND COMPANY_ID <> 0 ");
    statement.append("  AND DISABLED <> 'T'");
    statement.append("  AND DISABLED <> 'N'");
    // statement.append(" ORDER BY POST_NAME");
    String query = statement.toString();
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    int recNum = list.size();
    DataRow currentDataRow;
    ImwTJobOrder record;
    // データを追加
    for (int i = 0; i < recNum; i++) {
      currentDataRow = (DataRow) list.get(i);
      record = new ImwTJobOrder();
      record.setWorkerUserId01(((Integer) ALEipUtils.getObjFromDataRow(
          currentDataRow, "USER_ID")).intValue());
      record.setWorkerUserId01Nm(((String) ALEipUtils.getObjFromDataRow(
          currentDataRow, "NM")));
      resultList.add(record);
    }
    if (resultList == null || resultList.size() < 0) {
      return null;
    }
    return resultList;
  }

  /**
   * 作業者２リストを取得する。
   * 
   * @return
   */
  public static List getWorkerUserId02ListData() {
    List resultList = new ArrayList();

    // SQLの作成
    StringBuffer statement = new StringBuffer();
    statement.append("SELECT USER_ID,(LAST_NAME || ' ' || FIRST_NAME) AS NM ");
    statement.append("FROM TURBINE_USER ");
    statement.append("WHERE USER_ID <> 0 ");
    statement.append("  AND NOT COMPANY_ID IS NULL AND COMPANY_ID <> 0 ");
    statement.append("  AND DISABLED <> 'T'");
    statement.append("  AND DISABLED <> 'N'");
    // statement.append(" ORDER BY POST_NAME");
    String query = statement.toString();
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    int recNum = list.size();
    DataRow currentDataRow;
    ImwTJobOrder record;
    // データを追加
    for (int i = 0; i < recNum; i++) {
      currentDataRow = (DataRow) list.get(i);
      record = new ImwTJobOrder();
      record.setWorkerUserId02(((Integer) ALEipUtils.getObjFromDataRow(
          currentDataRow, "USER_ID")).intValue());
      record.setWorkerUserId02Nm(((String) ALEipUtils.getObjFromDataRow(
          currentDataRow, "NM")));
      resultList.add(record);
    }
    if (resultList == null || resultList.size() < 0) {
      return null;
    }
    return resultList;
  }

  /**
   * 分納区分リストリストを取得する。
   * 
   * @return
   */
  public static List getInstallmenClassListData() {
    List resultList = new ArrayList();

    // SQLの作成
    StringBuffer statement = new StringBuffer();
    statement.append("SELECT VALUE,HANYOKUBUNNM AS NM ");
    statement.append("FROM IMW_M_HANYO ");
    statement.append("WHERE PARENT_HANYO_ID = 5 ");
    statement.append("  AND DISABLED <> 'T'");
    statement.append("  AND DISABLED <> 'N'");
    // statement.append(" ORDER BY POST_NAME");
    String query = statement.toString();
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    int recNum = list.size();
    DataRow currentDataRow;
    ImwTJobOrder record;
    // データを追加
    for (int i = 0; i < recNum; i++) {
      currentDataRow = (DataRow) list.get(i);
      record = new ImwTJobOrder();
      record.setInstallmenClass((ALEipUtils.getObjFromDataRow(currentDataRow,
          "VALUE")).toString());
      record.setInstallmenClassNm(((String) ALEipUtils.getObjFromDataRow(
          currentDataRow, "NM")));
      resultList.add(record);
    }
    if (resultList == null || resultList.size() < 0) {
      return null;
    }
    return resultList;
  }

  /**
   * 完了区分リストリストを取得する。
   * 
   * @return
   */
  public static List getCompletionClassListData() {
    List resultList = new ArrayList();

    // SQLの作成
    StringBuffer statement = new StringBuffer();
    statement.append("SELECT VALUE,HANYOKUBUNNM AS NM ");
    statement.append("FROM IMW_M_HANYO ");
    statement.append("WHERE PARENT_HANYO_ID = 6 ");
    statement.append("  AND DISABLED <> 'T'");
    statement.append("  AND DISABLED <> 'N'");
    // statement.append(" ORDER BY POST_NAME");
    String query = statement.toString();
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    int recNum = list.size();
    DataRow currentDataRow;
    ImwTJobOrder record;
    // データを追加
    for (int i = 0; i < recNum; i++) {
      currentDataRow = (DataRow) list.get(i);
      record = new ImwTJobOrder();
      record.setCompletionClass((ALEipUtils.getObjFromDataRow(currentDataRow,
          "VALUE")).toString());
      record.setCompletionClassNm(((String) ALEipUtils.getObjFromDataRow(
          currentDataRow, "NM")));
      resultList.add(record);
    }
    if (resultList == null || resultList.size() < 0) {
      return null;
    }
    return resultList;
  }

  /**
   * 各フィールドに対する制約条件を設定します。 <BR>
   * 
   * @see com.aimluck.eip.common.ALAbstractFormData#setValidator()
   */
  protected void setValidator() {
    // // ユーザー名
    // username.setNotNull(true);
    // username.setCharacterType(ALStringField.TYPE_ASCII);
    // username.limitMaxLength(16);
    // // パスワード
    // password.setNotNull(true);
    // password.setCharacterType(ALStringField.TYPE_ALPHABET_NUMBER);
    // password.limitMaxLength(16);
    // // パスワード2
    // password2.setNotNull(true);
    // password2.setCharacterType(ALStringField.TYPE_ALPHABET_NUMBER);
    // password2.limitMaxLength(16);
    // // 名
    // firstname.setNotNull(true);
    // firstname.limitMaxLength(20);
    // // 姓
    // lastname.setNotNull(true);
    // lastname.limitMaxLength(20);
    //
    // // 名（フリガナ）
    // first_name_kana.setNotNull(true);
    // first_name_kana.limitMaxLength(20);
    // // 姓（フリガナ）
    // last_name_kana.setNotNull(true);
    // last_name_kana.limitMaxLength(20);
    //
    // // 内線
    // in_telephone.setCharacterType(ALStringField.TYPE_ALPHABET_NUMBER);
    // in_telephone.limitMaxLength(13);
    // // メールアドレス
    // email.setCharacterType(ALStringField.TYPE_ASCII);
    // email.limitMaxLength(50);
    //
    // // 外線
    // out_telephone1.setCharacterType(ALStringField.TYPE_NUMBER);
    // out_telephone1.limitMaxLength(5);
    // out_telephone2.setCharacterType(ALStringField.TYPE_NUMBER);
    // out_telephone2.limitMaxLength(4);
    // out_telephone3.setCharacterType(ALStringField.TYPE_NUMBER);
    // out_telephone3.limitMaxLength(4);
    //
    // // 携帯
    // cellular_phone1.setCharacterType(ALStringField.TYPE_NUMBER);
    // cellular_phone1.limitMaxLength(5);
    // cellular_phone2.setCharacterType(ALStringField.TYPE_NUMBER);
    // cellular_phone2.limitMaxLength(4);
    // cellular_phone3.setCharacterType(ALStringField.TYPE_NUMBER);
    // cellular_phone3.limitMaxLength(4);
    // // 携帯メール
    // cellular_mail.setCharacterType(ALStringField.TYPE_ASCII);
    //    
    // 件名
    job_order_name.setNotNull(true);
    job_order_name.limitMaxLength(128);

    // 受注金額
    price.setNotNull(true);
    price.limitMaxValue(999999999);

    // 予定工数
    yoteikosu.setNotNull(true);
    yoteikosu.limitMaxValue((long) 999999.9);

    // 受注担当者
    receipt_user_id.setNotNull(true);

    // 受注区分
    juchukubun.setNotNull(true);

    // 費用区分
    hiyokubun.setNotNull(true);

    // 顧客
    client_id.setNotNull(true);

    // システム区分１
    system_class1.setNotNull(true);

    // システム区分2
    system_class2.setNotNull(true);

    // ユーザー担当
    charge_name.limitMaxLength(25);

    // 作業者１
    worker_user_id01.setNotNull(true);

    // post.setValidator();
    // position.setValidator();
  }

  /**
   * フォームに入力されたデータの妥当性検証を行います。 <BR>
   * 
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#validate(java.util.ArrayList)
   */
  protected boolean validate(ArrayList msgList) {

    // 件名
    job_order_name.validate(msgList);

    // 受付担当者
    receipt_user_id.validate(msgList);

    // 受注区分
    juchukubun.validate(msgList);

    // 費用区分
    hiyokubun.validate(msgList);
    // if (modeFlag.equals("insertMode")){
    if (ALEipConstants.MODE_INSERT.equals(getMode())) {
      // 顧客
      client_id.validate(msgList);
    }
    // システム区分１
    system_class1.validate(msgList);

    // システム区分２
    system_class2.validate(msgList);

    // 作業者１
    worker_user_id01.validate(msgList);

    // 受注金額
    price.validate(msgList);

    // 予定工数
    yoteikosu.validate(msgList);

    // ArrayList dummy = new ArrayList();
    // username.validate(msgList);
    // if (ALEipConstants.MODE_INSERT.equals(getMode())) {
    // try {
    // Expression exp = ExpressionFactory.matchExp(
    // TurbineUser.LOGIN_NAME_PROPERTY, username.getValue());
    // SelectQuery query = new SelectQuery(TurbineUser.class, exp);
    // List ulist = dataContext.performQuery(query);
    // if (ulist.size() > 0) {
    // TurbineUser user = (TurbineUser) ulist.get(0);
    // // if ("F".equals(user.getDisabled())) {
    // msgList.add("ログイン名『 <span class='em'>" + username
    // + "</span> 』はすでに登録されています。別のログイン名で登録してください。");
    // // } else {
    // // msgList.add("ログイン名『 <span class='em'>" + username
    // // + "</span> 』はすでに削除されています。一旦削除したログイン名では登録できません。");
    // // }
    // }
    // } catch (Exception ex) {
    // logger.error("Exception", ex);
    // return false;
    // }
    // }
    //
    // String unameValue = username.getValue();
    // int length = unameValue.length();
    // for (int i1 = 0; i1 < length; i1++) {
    // if (isSymbol(unameValue.charAt(i1))) {
    // // 使用されているのが妥当な記号であるかの確認
    // if (!(unameValue.charAt(i1) == "_".charAt(0)
    // || unameValue.charAt(i1) == "-".charAt(0) || unameValue.charAt(i1) == "."
    // .charAt(0))) {
    // msgList
    // .add("『 <span class='em'>ログイン名</span> 』に使用できる記号は「-」「.」「_」のみです。");
    // break;
    // }
    // }
    // }
    //
    // // ユーザー名の先頭にdummy_が含まれるかの確認
    // if (ALEipConstants.MODE_INSERT.equals(getMode())) {
    // if (username.getValue().length() > 5) {
    // if (ALEipUtils.dummy_user_head.equals((username.getValue()).substring(
    // 0, 6))) {
    // msgList.add("ログイン名の先頭に『 <span class='em'>"
    // + ALEipUtils.dummy_user_head
    // + "</span> 』は使用出来ません。別のログイン名で登録してください。");
    // }
    // }
    // }
    //
    // // パスワードの確認
    // if (ALEipConstants.MODE_INSERT.equals(getMode())) {
    // if (!password.getValue().equals(password2.getValue())) {
    // msgList
    // .add("『 <span class='em'>パスワード</span> 』と『 <span
    // class='em'>パスワード（確認用）</span> 』を正しく入力してください。");
    // } else {
    // password.validate(msgList);
    // password2.validate(msgList);
    // }
    // } else if (ALEipConstants.MODE_UPDATE.equals(getMode())) {
    // if (password.getValue().equals(DEFAULT_VIEW_PASSWORD)
    // && password2.getValue().equals(DEFAULT_VIEW_PASSWORD)) {
    // dontUpdatePasswd = true;
    // } else {
    // if (!password.getValue().equals(password2.getValue())) {
    // msgList
    // .add("『 <span class='em'>パスワード</span> 』と『 <span
    // class='em'>パスワード（確認用）</span> 』を正しく入力してください。");
    // } else {
    // password.validate(msgList);
    // password2.validate(msgList);
    // }
    // }
    // }
    //
    // firstname.validate(msgList);
    // lastname.validate(msgList);
    //
    // // フリガナのカタカナへの変換
    // first_name_kana.setValue(ALStringUtil.convertHiragana2Katakana(ALStringUtil
    // .convertH2ZKana(first_name_kana.toString())));
    // last_name_kana.setValue(ALStringUtil.convertHiragana2Katakana(ALStringUtil
    // .convertH2ZKana(last_name_kana.toString())));
    // first_name_kana.validate(msgList);
    // last_name_kana.validate(msgList);
    //
    // // メールアドレス
    // email.validate(msgList);
    // if (email.getValue() != null && email.getValue().trim().length() > 0
    // && !ALStringUtil.isCellPhoneMailAddress(email.getValue())) {
    // msgList.add("『 <span class='em'> メールアドレス </span>』を正しく入力してください。");
    // }
    //
    // if (!out_telephone1.getValue().equals("")
    // || !out_telephone2.getValue().equals("")
    // || !out_telephone3.getValue().equals("")) {
    //
    // if (!out_telephone1.validate(dummy) || !out_telephone2.validate(dummy)
    // || !out_telephone3.validate(dummy)) {
    // msgList.add("『 <span class='em'>電話番号（外線）</span> 』を正しく入力してください。");
    // } else {
    // // 電話番号の長さチェック
    // int req_size = out_telephone1.getValue().length()
    // + out_telephone2.getValue().length()
    // + out_telephone3.getValue().length();
    // int limit_size = out_telephone1.getMaxLength()
    // + out_telephone2.getMaxLength() + out_telephone3.getMaxLength();
    // if (req_size > limit_size) {
    // msgList.add("『 <span class='em'>電話番号（外線）</span> 』を" + limit_size
    // + "桁以内で正しく入力してください。");
    // }
    // }
    // }
    //
    // in_telephone.validate(msgList);
    //
    // if (!cellular_phone1.getValue().equals("")
    // || !cellular_phone2.getValue().equals("")
    // || !cellular_phone3.getValue().equals("")) {
    // if (!cellular_phone1.validate(dummy) || !cellular_phone2.validate(dummy)
    // || !cellular_phone3.validate(dummy)) {
    // msgList.add("『 <span class='em'>電話番号（携帯）</span> 』を正しく入力してください。");
    // }
    // }
    //
    // // 携帯メールアドレス
    // cellular_mail.validate(msgList);
    // if (cellular_mail.getValue().trim().length() > 0
    // && !ALStringUtil.isCellPhoneMailAddress(cellular_mail.getValue())) {
    // msgList.add("『 <span class='em'> 携帯メールアドレス </span>』を正しく入力してください。");
    // }
    //
    // // 顔写真
    // if (filebean != null && filebean.getFileId() > 0 && facePhoto == null) {
    // msgList.add("『 <span class='em'>顔写真</span> 』にはJpeg画像を指定してください。");
    // }
    //
    // if (is_new_post) {
    // post.setMode(ALEipConstants.MODE_INSERT);
    // post.validate(msgList);
    // }
    // if (is_new_position) {
    // position.setMode(ALEipConstants.MODE_INSERT);
    // position.validate(msgList);
    // }

    return (msgList.size() == 0);
  }

  /**
   * 『ユーザー』を読み込みます。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#loadFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  protected boolean loadFormData(RunData rundata, Context context,
      ArrayList msgList) {
    try {
      // ALBaseUser user = JuchuUtils.getBaseUser(rundata, context);
      ImwTJobOrder jobOrder = JuchuUtils.getEipMJuchu(rundata, context);
      if (jobOrder == null)
        return false;
      // 受注番号
      job_order_number.setValue(jobOrder.getJobOrderNumber());

      // 受付日
      receipt_date.setValue(jobOrder.getReceiptDate());

      // 件名
      job_order_name.setValue(jobOrder.getJobOrderName());

      // 受付担当ＩＤ
      receipt_user_id.setValue(jobOrder.getReceiptUserId());

      // 受注区分
      juchukubun.setValue(jobOrder.getJuchukubun());

      // 費用区分
      hiyokubun.setValue(jobOrder.getHiyokubun());

      // 顧客ＩＤ
      client_id.setValue(jobOrder.getClientId());

      // 遷移した顧客ＩＤ
      if (client_id_old == null) {
        client_id_old = new ALNumberField();
        client_id_old.setValue(jobOrder.getClientId());
      }

      // システム区分
      system_class1.setValue(jobOrder.getSystemClass1());

      // 開発言語
      system_class2.setValue(jobOrder.getSystemClass2());

      // ユーザ担当
      charge_name.setValue(jobOrder.getChargeName());

      // 作業者１（社員番号）
      worker_user_id01.setValue(jobOrder.getWorkerUserId01());

      // 作業者２（社員番号）
      worker_user_id02.setValue(jobOrder.getWorkerUserId02());

      // 納期
      period.setValue(jobOrder.getPeriod());

      // 受注金額
      price.setValue(jobOrder.getPrice());

      // 予定工数
      yoteikosu.setValue(jobOrder.getYoteikosu().longValue());

      // 分納区分
      installmen_class.setValue(jobOrder.getInstallmenClass());

      // 完了区分
      completion_class.setValue(jobOrder.getCompletionClass());

      // 担当リスト
      tantoList = new ArrayList();

      // 受注区分リスト
      juchukubunList = new ArrayList();

      // 費用区分リスト
      hiyokubunList = new ArrayList();

      // 顧客名リスト
      clientNmList = new ArrayList();

      // システム区分１リスト
      systemClass1List = new ArrayList();

      // システム区分２リスト
      systemClass2List = new ArrayList();

      // 作業者１リスト
      workerUserNm01List = new ArrayList();

      // 作業者２リスト
      workerUserNm02List = new ArrayList();

      // 分納区分リスト
      installmenClassList = new ArrayList();

      // 完了区分リスト
      completionClassList = new ArrayList();

      /** Del 20110905 小濵 Start --- */
//      // 担当リスト
//      tantoList.addAll(getTantoListData());
      /** Del 20110905 小濵 End   --- */

      // 受注区分リスト
      juchukubunList.addAll(getJuchukubunListData());

      // 費用区分リスト
      hiyokubunList.addAll(getHiyokubunListData());

      // 顧客名リスト
      clientNmList.addAll(getClientNmListData());

      // システム区分１リスト
      systemClass1List.addAll(getSystemClass1ListData());

      // システム区分２リスト
      systemClass2List.addAll(getSystemClass2ListData());

      /** Del 20110905 小濵 Start --- */
//      // 作業者１リスト
//      workerUserNm01List.addAll(getWorkerUserId01ListData());
//
//      // 作業者２リスト
//      workerUserNm02List.addAll(getWorkerUserId02ListData());
      /** Del 20110905 小濵 End   --- */

      // 分納区分リスト
      installmenClassList.addAll(getInstallmenClassListData());

      // 完了区分リスト
      completionClassList.addAll(getCompletionClassListData());
      
      /** Add 20110905 小濵 Start --- */
      SelectQuery mapquery = new SelectQuery(TurbineUser.class);
      Expression mapexp1 = ExpressionFactory.noMatchDbExp(
          TurbineUser.USER_ID_PK_COLUMN,0);
      Expression mapexp2 = ExpressionFactory.noMatchExp(
          TurbineUser.COMPANY_ID_PROPERTY, null);
      Expression mapexp3 = ExpressionFactory.noMatchExp(
          TurbineUser.COMPANY_ID_PROPERTY, 0);
      Expression mapexp4 = ExpressionFactory.matchExp(
          TurbineUser.DISABLED_PROPERTY, "F");
      mapquery.setQualifier(mapexp1.andExp(mapexp2.andExp(
          mapexp3.andExp(mapexp4))));
      List list = dataContext.performQuery(mapquery);

      List users = new ArrayList();
      int size = list.size();
      for (int i = 0; i < size; i++) {
        TurbineUser map = (TurbineUser) list.get(i);
        users.add(map.getUserId());
      }
      SelectQuery query = new SelectQuery(TurbineUser.class);
      Expression exp = ExpressionFactory.inDbExp(TurbineUser.USER_ID_PK_COLUMN,
          users);
      query.setQualifier(exp);
      tantoList.addAll(ALEipUtils.getUsersFromSelectQuery(query));
      workerUserNm01List.addAll(ALEipUtils.getUsersFromSelectQuery(query));
      workerUserNm02List.addAll(ALEipUtils.getUsersFromSelectQuery(query));
      /** Add 20110905 小濵 End   --- */

      // // ユーザー名
      // username.setValue(user.getUserName());
      // // パスワード
      // password.setValue(DEFAULT_VIEW_PASSWORD);
      // // パスワード2
      // password2.setValue(DEFAULT_VIEW_PASSWORD);
      // // 名前（名）
      // firstname.setValue(user.getFirstName());
      // // 名前（姓）
      // lastname.setValue(user.getLastName());
      // // メールアドレス
      // email.setValue(user.getEmail());
      // // 電話番号（内線）
      // in_telephone.setValue(user.getInTelephone());
      // // 電話番号（外線）
      // StringTokenizer token;
      // if (user.getOutTelephone() != null) {
      // token = new StringTokenizer(user.getOutTelephone(), "-");
      // if (token.countTokens() == 3) {
      // out_telephone1.setValue(token.nextToken());
      // out_telephone2.setValue(token.nextToken());
      // out_telephone3.setValue(token.nextToken());
      // }
      // } // 電話番号（携帯）
      // if (user.getCellularPhone() != null) {
      // token = new StringTokenizer(user.getCellularPhone(), "-");
      // if (token.countTokens() == 3) {
      // cellular_phone1.setValue(token.nextToken());
      // cellular_phone2.setValue(token.nextToken());
      // cellular_phone3.setValue(token.nextToken());
      // }
      // } // 携帯メールアドレス
      // cellular_mail.setValue(user.getCellularMail());
      // // 会社ID
      // // company_id.setValue(user.getCompanyId());
      // // 役職ID
      // position_id.setValue(user.getPositionId());
      // // フリガナ（名）
      // first_name_kana.setValue(user.getFirstNameKana());
      // // フリガナ（姓）
      // last_name_kana.setValue(user.getLastNameKana());
      //
      // if (user.getPhoto() != null) {
      // filebean = new FileuploadLiteBean();
      // filebean.initField();
      // filebean.setFolderName("");
      // filebean.setFileId(0);
      // filebean.setFileName("以前の写真ファイル");
      // }
      //
      // postList = JuchuUtils.getPostBeanList(Integer
      // .parseInt(user.getUserId()));

      return true;
    } catch (Exception e) {
      logger.error("Exception", e);
      return false;
    }
  }

  /**
   * @param
   * @return 受注名を作成する
   * @throws ParseException
   */
  protected String getJuchuName() throws ParseException {
    String juchuName = "";
    String clientNm = "";
    String kin = "";
    String renban = "";
    String query = "";
    // 顧客.顧客略称 + 会社の期 + 連番 を受注番号にセットする

    // 顧客.顧客略称を取得する
    query = " SELECT CLIENT_ID,CLIENT_NAMES AS NM ";
    query = query + " FROM IMW_M_CLIENT ";
    query = query + " WHERE DISABLED <> 'T'";
    query = query + "   AND DISABLED <> 'N'";
    query = query + "   AND CLIENT_ID=' " + client_id + "'";
    DataContext dataContext = DatabaseOrmService.getInstance().getDataContext();
    SQLTemplate rawSelect = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect.setFetchingDataRows(true);
    List list = dataContext.performQuery(rawSelect);
    org.apache.cayenne.DataRow currentDataRow;
    currentDataRow = (org.apache.cayenne.DataRow) list.get(0);
    clientNm = ALEipUtils.getObjFromDataRow(currentDataRow, "NM").toString();

    // 会社の期を取得する
    query = "";
    /** Update　2010/08/25 チョウコウ Start */
    query = "SELECT VALUE FROM IMW_M_HANYO WHERE PARENT_HANYO_ID = '10' AND DISABLED='F' ";// AND
    /** Update　2010/08/25 チョウコウ End */
    // VALUE=''"
    // ;
    DataContext dataContext1 = DatabaseOrmService.getInstance()
        .getDataContext();
    SQLTemplate rawSelect1 = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect1.setFetchingDataRows(true);
    List list1 = dataContext1.performQuery(rawSelect1);
    org.apache.cayenne.DataRow currentDataRow1;
    currentDataRow1 = (org.apache.cayenne.DataRow) list1.get(0);
    /** Update　2010/08/25 チョウコウ Start */
    String dateString = ALEipUtils.getObjFromDataRow(currentDataRow1, "VALUE")
        .toString();
    SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy");
    Date date = sdFormat.parse(dateString);
    String year = sdFormat.format(date);
    kin = String.valueOf((Integer.parseInt(receipt_date.getYear()))
        - Integer.parseInt(year));
    /** Update　2010/08/25 チョウコウ End */
    /** Add　2010/09/08 金廣 Start */
    // 課題27：受注のレコードを入力した際の期が正しく算出されていない問題の対応 
    SimpleDateFormat sdFormat_m = new SimpleDateFormat("yyyy/MM/dd");
    Date date_m = sdFormat_m.parse(dateString);
    // 受付日の月
    Integer receipt_month = Integer.valueOf(receipt_date.getMonth());
    // 会社設立日の月
    Integer found_month = date_m.getMonth() + 1;
    // 受付日の月が会社設立日の月以上であれば、期を+1する。
    if(receipt_month >= found_month){
      kin = String.valueOf(Integer.parseInt(kin) + 1);
    }
    /** Add　2010/09/08 金廣 End */
    // 連番を取得する
    query = "";
    query = "SELECT JOB_ORDER_NUMBER FROM IMW_T_JOB_ORDER  ";
    query = query + "WHERE JOB_ORDER_NUMBER LIKE '" + clientNm + kin + "%'  ";
    query = query + "ORDER BY JOB_ORDER_NUMBER DESC";
    DataContext dataContext2 = DatabaseOrmService.getInstance()
        .getDataContext();
    SQLTemplate rawSelect2 = new SQLTemplate(TurbineUser.class, query, true);
    rawSelect2.setFetchingDataRows(true);
    List list2 = dataContext1.performQuery(rawSelect2);
    org.apache.cayenne.DataRow currentDataRow2;
    if (list2.size() > 0) {
      currentDataRow2 = (org.apache.cayenne.DataRow) list2.get(0);
      renban = ALEipUtils
          .getObjFromDataRow(currentDataRow2, "JOB_ORDER_NUMBER").toString();
      renban = renban.substring(renban.length() - 3, renban.length());
      String tempStr = ("000" + (Integer.parseInt(renban) + 1));
      renban = tempStr.substring(tempStr.length() - 3, tempStr.length());
    } else {
      renban = "001";
    }

    juchuName = clientNm + kin + renban;

    return juchuName;
  }

  /**
   * 『ユーザー』を追加します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#insertFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  protected boolean insertFormData(RunData rundata, Context context,
      ArrayList msgList) {

    boolean res = true;
    Date now = new Date();
    try {

      // int user_num = ALEipUtils.getCurrentUserNum(rundata);
      // int max_user = ALEipUtils.getLimitUsers();
      // if ((max_user > 0) && (user_num + 1 > max_user)) {
      // msgList.add("ユーザー数が利用制限を超えています。");
      // return false;
      // }

      // WebAPIのDBへ接続できるか確認
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .checkConnect()) {
        msgList.add("コントロールパネルWebAPIのデータベースの接続に失敗したため、処理は実行されませんでした。");
        return false;
      }

      // if (is_new_post) {
      // // 部署登録も同時に行う場合
      // res = post.insertFormData(rundata, context, msgList);
      // if (res)
      // post_id.setValue(post.getPostId());
      // }
      /*
       * if (is_new_position && res) { // 役職登録も同時に行う場合 res =
       * position.insertFormData(rundata, context, msgList); if (res)
       * position_id.setValue(position.getPositionId()); }
       * 
       */

      if (dataContext == null) {
        dataContext = DatabaseOrmService.getInstance().getDataContext();
      }

      if (res) { // オブジェクトモデルを生成
        ImwTJobOrder jobOrder = (ImwTJobOrder) dataContext
            .createAndRegisterNewObject(ImwTJobOrder.class);
        // ImwTJobOrder jobOrder = JuchuUtils.getEipMJuchu(rundata, context);
        // rundata.getParameters().setProperties(jobOrder);
        // if (jobOrder == null) {
        // return false;
        // }
        // String oldDisabled = user.getDisabled();
        // rundata.getParameters().setProperties(user);
        // user.setLastAccessDate();

        jobOrder.setJobOrderNumber(getJuchuName());
        jobOrder.setReceiptDate(receipt_date.getValue().getDate());
        jobOrder.setJobOrderName(job_order_name.getValue());
        // jobOrder.setJobOrderName(getJuchuName());
        jobOrder.setReceiptUserId((int) receipt_user_id.getValue());
        jobOrder.setJuchukubun(juchukubun.getValue());
        // jobOrder.setJobOrderName(job_order_name.getValue());
        jobOrder.setHiyokubun(hiyokubun.getValue());
        jobOrder.setClientId((int) client_id.getValue());
        jobOrder.setSystemClass1(system_class1.getValue());
        jobOrder.setSystemClass2(system_class2.getValue());
        if ("".equals(charge_name.getValue())) {
          jobOrder.setChargeName(null);
        } else {
          jobOrder.setChargeName(charge_name.getValue());
        }
        jobOrder.setWorkerUserId01((int) worker_user_id01.getValue());
        jobOrder.setWorkerUserId02((int) worker_user_id02.getValue());
        try {
          jobOrder.setPeriod(period.getValue().getDate());
        } catch (Exception e) {
          jobOrder.setPeriod(null);
        }

        jobOrder.setPrice(price.getValue());

        // 問題がある
        // jobOrder.setYoteikosu((java.math.BigDecimal) yoteikosu.getValue());
        BigDecimal yoteikosuTemp = new BigDecimal(yoteikosu.getValueAsString());
        jobOrder.setYoteikosu(yoteikosuTemp);
        if ("".equals(installmen_class.getValue())) {
          jobOrder.setInstallmenClass(null);
        } else {
          jobOrder.setInstallmenClass(installmen_class.getValue());
        }
        if ("".equals(completion_class.getValue())) {
          jobOrder.setCompletionClass(null);
        } else {
          jobOrder.setCompletionClass(completion_class.getValue());
        }

        jobOrder.setUpdateUserId(ALEipUtils.getUserId(rundata));
        jobOrder.setCreateDate(now);
        jobOrder.setUpdateDate(now);
        jobOrder.setDisabled("F");
        jobOrder.setCreateUserId(ALEipUtils.getUserId(rundata));

        // 受注データを更新
        dataContext.commitChanges();
      }
      /*
       * ALBaseUser user = (ALBaseUser) JetspeedSecurity.getUserInstance();
       * rundata.getParameters().setProperties(user); // ユーザー名
       * user.setUserName(JetspeedSecurity.convertUserName(username.getValue()));
       * Date now = new Date(); // 作成日 // 以下のメソッドは動作しないため、ALBaseUserにてオーバーライド //
       * user.setCreateDate(now); user.setCreated(now); user.setModified(now);
       * user.setLastLogin(now);
       * user.setCreatedUserId(ALEipUtils.getUserId(rundata));
       * user.setUpdatedUserId(ALEipUtils.getUserId(rundata));
       * user.setConfirmed(JetspeedResources.CONFIRM_VALUE); //
       * user.setDisabled(disabled.getValue()); user.setDisabled("F");
       * user.setPassword(password.getValue()); user.setPasswordChanged(new
       * Date()); user.setInTelephone(in_telephone.getValue()); if
       * (!out_telephone1.getValue().equals("") &&
       * !out_telephone2.getValue().equals("") &&
       * !out_telephone3.getValue().equals("")) { user.setOutTelephone(new
       * StringBuffer().append( out_telephone1.getValue()).append("-").append(
       * out_telephone2.getValue()).append("-").append(
       * out_telephone3.getValue()).toString()); } else {
       * user.setOutTelephone(""); }
       * 
       * if (!cellular_phone1.getValue().equals("") &&
       * !cellular_phone2.getValue().equals("") &&
       * !cellular_phone3.getValue().equals("")) { user.setCellularPhone(new
       * StringBuffer().append( cellular_phone1.getValue()).append("-").append(
       * cellular_phone2.getValue()).append("-").append(
       * cellular_phone3.getValue()).toString()); } else {
       * user.setCellularPhone(""); }
       * user.setCellularMail(cellular_mail.getValue()); user.setCompanyId(1);
       * user.setPositionId((int) position_id.getValue()); user.setPostId((int)
       * post_id.getValue()); user.setFirstNameKana(first_name_kana.getValue());
       * user.setLastNameKana(last_name_kana.getValue()); if (filebean != null &&
       * filebean.getFileId() > 0) { // 顔写真を登録する． user.setPhoto(facePhoto); } //
       * ユーザーを追加 JetspeedSecurity.addUser(user); logger.debug("JOIN GROUP:" +
       * "LoginUser"); // ユーザーをグループに追加。 String[] groups =
       * rundata.getParameters().getStrings("group_to"); if (groups != null &&
       * groups.length != 0) { for (int i = 0; i < groups.length; i++) {
       * JetspeedSecurity.joinGroup(user.getUserName(), groups[i]); } } //
       * 初期メールアカウントの作成 // if (email.getValue() != null &&
       * (!email.getValue().equals(""))) { //
       * ALMailUtils.insertMailJuchuData(rundata, msgList, Integer //
       * .parseInt(user.getUserId()), "初期アカウント", //
       * ALMailUtils.ACCOUNT_TYPE_INIT, email.getValue(), "未設定", "未設定", // 25,
       * "未設定", 110, "未設定", "未設定", ALSmtpMailSender.AUTH_SEND_NONE, // null,
       * null, ALPop3MailReceiver.AUTH_RECEIVE_NORMAL, 0, 0, 1, "0"); // } //
       * アクセス権限 ALAccessControlFactoryService aclservice =
       * (ALAccessControlFactoryService) ((TurbineServices) TurbineServices
       * .getInstance())
       * .getService(ALAccessControlFactoryService.SERVICE_NAME);
       * ALAccessControlHandler aclhandler = aclservice
       * .getAccessControlHandler();
       * aclhandler.insertDefaultRole(Integer.parseInt(user.getUserId()));
       * 
       * dataContext.commitChanges(); // WebAPIとのDB同期 if
       * (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
       * .addUser(user)) { return false; } } // 一時的な添付ファイルの削除 File folder =
       * FileuploadUtils.getFolder(org_id, ALEipUtils .getUserId(rundata),
       * folderName); FileuploadUtils.deleteFolder(folder);
       * 
       */
    } catch (Exception e) {
      logger.error("Exception", e);
      res = false;
    }
    return res;
  }

  /**
   * 『ユーザー』を更新します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#updateFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  protected boolean updateFormData(RunData rundata, Context context,
      ArrayList msgList) {
    boolean res = true;
    Date now = new Date();
    try {
      // WebAPIのDBへ接続できるか確認
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .checkConnect()) {
        msgList.add("コントロールパネルWebAPIのデータベースの接続に失敗したため、処理は実行されませんでした。");
        return false;
      }
      /*
       * if (is_new_post) { // 部署登録も同時に行う場合 res = post.insertFormData(rundata,
       * context, msgList); if (res) post_id.setValue(post.getPostId()); } if
       * (is_new_position && res) { // 役職登録も同時に行う場合 res =
       * position.insertFormData(rundata, context, msgList); if (res)
       * position_id.setValue(position.getPositionId()); }
       */
      if (res) {
        ImwTJobOrder jobOrder = JuchuUtils.getEipMJuchu(rundata, context);
        if (jobOrder == null) {
          return false;
        }
        // String oldDisabled = user.getDisabled();
        // rundata.getParameters().setProperties(user);
        // user.setLastAccessDate();

        jobOrder.setJobOrderNumber(job_order_number.getValue());
        // jobOrder.setReceiptDate(receipt_date.getValue().getDate());
        jobOrder.setJobOrderName(job_order_name.getValue());
        jobOrder.setReceiptUserId((int) receipt_user_id.getValue());
        jobOrder.setJuchukubun(juchukubun.getValue());
        jobOrder.setJobOrderName(job_order_name.getValue());
        jobOrder.setHiyokubun(hiyokubun.getValue());
        // jobOrder.setClientId((int)client_id.getValue());
        jobOrder.setSystemClass1(system_class1.getValue());
        jobOrder.setSystemClass2(system_class2.getValue());
        jobOrder.setChargeName(charge_name.getValue());
        jobOrder.setWorkerUserId01((int) worker_user_id01.getValue());
        jobOrder.setWorkerUserId02((int) worker_user_id02.getValue());
        /** Update　2010/09/14 金廣 Start */
        // 課題35:受注編集画面で納期を入れても更新されない問題の対応
//        /** Add　2010/08/25 チョウコウ Start */
//        if (period.isNotNull()) {
//          jobOrder.setPeriod(period.getValue().getDate());
//        }
//        /** Add　2010/08/25 チョウコウ End */
        // isNotNull()は必須項目かどうかを返すメソッドであり、値がNULLかどうかを返すメソッドではない。
        // NULLの判断は下記のように行う。
        if (!period.getValue().isNullYear()
            && !period.getValue().isNullMonth()
            && !period.getValue().isNullDay()) {
          jobOrder.setPeriod(period.getValue().getDate());
        } else {
          jobOrder.setPeriod(null);
        }  
        /** Update　2010/09/14 金廣 End */
        jobOrder.setPrice(price.getValue());

        // 問題がある
        // jobOrder.setYoteikosu((java.math.BigDecimal) yoteikosu.getValue());
        BigDecimal yoteikosuTemp = new BigDecimal(yoteikosu.getValueAsString());
        jobOrder.setYoteikosu(yoteikosuTemp);
        jobOrder.setInstallmenClass(installmen_class.getValue());
        jobOrder.setCompletionClass(completion_class.getValue());

        jobOrder.setUpdateUserId(ALEipUtils.getUserId(rundata));
        jobOrder.setUpdateDate(now);

        // 受注データを更新
        dataContext.commitChanges();
      }

      /*
       * if (!dontUpdatePasswd) { JetspeedSecurity.forcePassword(user,
       * password.getValue()); } else { Expression exp =
       * ExpressionFactory.matchDbExp( TurbineUser.USER_ID_PK_COLUMN,
       * user.getUserId()); SelectQuery query = new
       * SelectQuery(TurbineUser.class, exp); List list =
       * dataContext.performQuery(query); if (list == null || list.size() == 0)
       * return false; TurbineUser tuser = (TurbineUser) list.get(0);
       * user.setPassword(tuser.getPasswordValue()); } String strDisabled =
       * user.getDisabled(); // String strDisabled = disabled.getValue();
       * user.setDisabled(strDisabled); if (!"T".equals(strDisabled) &&
       * "T".equals(oldDisabled) &&
       * JetspeedSecurity.isDisableAccountCheckEnabled()) {
       * JetspeedSecurity.resetDisableAccountCheck(user.getUserName()); }
       * 
       * user.setInTelephone(in_telephone.getValue()); if
       * (!out_telephone1.getValue().equals("") &&
       * !out_telephone2.getValue().equals("") &&
       * !out_telephone3.getValue().equals("")) { user.setOutTelephone(new
       * StringBuffer().append( out_telephone1.getValue()).append("-").append(
       * out_telephone2.getValue()).append("-").append(
       * out_telephone3.getValue()).toString()); } else {
       * user.setOutTelephone(""); }
       * 
       * if (!cellular_phone1.getValue().equals("") &&
       * !cellular_phone2.getValue().equals("") &&
       * !cellular_phone3.getValue().equals("")) { user.setCellularPhone(new
       * StringBuffer().append( cellular_phone1.getValue()).append("-").append(
       * cellular_phone2.getValue()).append("-").append(
       * cellular_phone3.getValue()).toString()); } else {
       * user.setCellularPhone(""); }
       * user.setCellularMail(cellular_mail.getValue()); //
       * user.setCompanyId((int)company_id.getValue()); user.setPositionId((int)
       * position_id.getValue());
       * user.setFirstNameKana(first_name_kana.getValue());
       * user.setLastNameKana(last_name_kana.getValue()); if (filebean != null) {
       * if (filebean.getFileId() > 0) { // 顔写真を登録する． user.setPhoto(facePhoto); } }
       * else { user.setPhoto(null); }
       * 
       * user.setEmail(email.getValue()); // ユーザーを更新
       * JetspeedSecurity.saveUser(user); // 部署を移動 List postList_old =
       * JuchuUtils.getPostBeanList(Integer.parseInt(user .getUserId())); if
       * (postList_old != null && postList_old.size() > 0) { UserGroupLiteBean
       * uglb = null; int old_size = postList_old.size(); // グループからユーザーを削除 for
       * (int i = 0; i < old_size; i++) { uglb = (UserGroupLiteBean)
       * postList_old.get(i); JetspeedSecurity.unjoinGroup(user.getUserName(),
       * uglb.getGroupId()); } }
       * 
       * String[] groupNameList =
       * rundata.getParameters().getStrings("group_to"); if (groupNameList !=
       * null && groupNameList.length > 0) { int size = groupNameList.length;
       * for (int i = 0; i < size; i++) { // グループへユーザーを追加
       * JetspeedSecurity.joinGroup(user.getUserName(), groupNameList[i]); } }
       * 
       * ALBaseUser currentUser = (ALBaseUser) rundata.getUser(); //
       * もし編集者自身が自分の情報を修正していた場合には // セッション情報も書き換える。現状は以下のため、ifは常にfalse //
       * CurrentUser ： 管理者のみ // User : 一般ユーザーのみ if
       * (currentUser.getUserName().equals(user.getUserName())) {
       * currentUser.setPassword(user.getPassword());
       * currentUser.setFirstName(user.getFirstName());
       * currentUser.setLastName(user.getLastName());
       * currentUser.setEmail(user.getEmail());
       * currentUser.setInTelephone(user.getInTelephone());
       * currentUser.setOutTelephone(user.getOutTelephone());
       * currentUser.setCellularPhone(user.getCellularPhone());
       * currentUser.setCellularMail(user.getCellularMail()); //
       * user.setCompanyId((int)company_id.getValue());
       * currentUser.setPositionId(user.getPositionId());
       * currentUser.setPostId(user.getPostId());
       * currentUser.setFirstNameKana(user.getFirstNameKana());
       * currentUser.setLastNameKana(user.getLastNameKana()); } // WebAPIとのDB同期
       * if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
       * .updateUser(user)) { return false; } } // 一時的な添付ファイルの削除 File folder =
       * FileuploadUtils.getFolder(org_id, ALEipUtils .getUserId(rundata),
       * folderName); FileuploadUtils.deleteFolder(folder);
       */
    } catch (Exception e) {
      logger.error("Exception", e);
      res = false;
    }
    return res;
  }

  /**
   * 『ユーザー』を無効化します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * 
   */
  public boolean disableFormData(RunData rundata, Context context,
      ArrayList msgList) {
    try {
      if (!doCheckSecurity(rundata, context)) {
        return false;
      }
      // WebAPIのDBへ接続できるか確認
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .checkConnect()) {
        msgList.add("コントロールパネルWebAPIのデータベースの接続に失敗したため、処理は実行されませんでした。");
        return false;
      }
      String user_name = ALEipUtils.getTemp(rundata, context,
          ALEipConstants.ENTITY_ID);

      if (user_name == null || "".equals(user_name)) {
        return false;
      }

      DataContext dataContext = DatabaseOrmService.getInstance()
          .getDataContext();
      SelectQuery query = new SelectQuery(TurbineUser.class);
      Expression exp = ExpressionFactory.matchExp(
          TurbineUser.LOGIN_NAME_PROPERTY, user_name);
      query.setQualifier(exp);
      List list = dataContext.performQuery(query);

      if (list == null || list.size() == 0) {
        return false;
      }

      TurbineUser target_user = (TurbineUser) list.get(0);
      target_user.setDisabled("N");

      // ワークフロー自動承認
      JuchuUtils.acceptWorkflow(target_user.getUserId());

      dataContext.commitChanges();

      // WebAPIとのDB同期
      String[] user_name_list = { user_name };
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .multiDisableUser(user_name_list, user_name_list.length)) {
        return false;
      }

    } catch (Exception e) {
      logger.error("Exception", e);
      return false;
    }
    return true;
  }

  /**
   * 『ユーザー』を有効化します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * 
   */
  public boolean enableFormData(RunData rundata, Context context,
      ArrayList msgList) {
    try {
      if (!doCheckSecurity(rundata, context)) {
        return false;
      }
      // WebAPIのDBへ接続できるか確認
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .checkConnect()) {
        msgList.add("コントロールパネルWebAPIのデータベースの接続に失敗したため、処理は実行されませんでした。");
        return false;
      }
      String user_name = ALEipUtils.getTemp(rundata, context,
          ALEipConstants.ENTITY_ID);

      if (user_name == null || "".equals(user_name)) {
        return false;
      }

      DataContext dataContext = DatabaseOrmService.getInstance()
          .getDataContext();
      SelectQuery query = new SelectQuery(TurbineUser.class);
      Expression exp = ExpressionFactory.matchExp(
          TurbineUser.LOGIN_NAME_PROPERTY, user_name);
      query.setQualifier(exp);
      List list = dataContext.performQuery(query);

      if (list == null || list.size() == 0) {
        return false;
      }

      ((TurbineUser) list.get(0)).setDisabled("F");
      dataContext.commitChanges();

      // WebAPIとのDB同期
      String[] user_name_list = { user_name };
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .multiEnableUser(user_name_list, user_name_list.length)) {
        return false;
      }

    } catch (Exception e) {
      logger.error("Exception", e);
      return false;
    }
    return true;
  }

  /**
   * 『ユーザー』を削除します。 <BR>
   * 
   * @param rundata
   * @param context
   * @param msgList
   * @return
   * @see com.aimluck.eip.common.ALAbstractFormData#deleteFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  protected boolean deleteFormData(RunData rundata, Context context,
      ArrayList msgList) {
    /*
     * // PSMLも含め、ユーザを削除 try { ALBaseUser user = JuchuUtils.getBaseUser(rundata,
     * context); if (user == null) return false; // ユーザーを削除
     * JetspeedSecurity.removeUser(user.getUserName()); // TODO:
     * ユーザーグループロールを削除する処理 return true; } catch (Exception e) {
     * logger.error("Exception", e); return false; }
     */

    try {
      Date now = new Date();
      // WebAPIのDBへ接続できるか確認
      logger.debug("deleteFormData");
      if (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
          .checkConnect()) {
        msgList.add("コントロールパネルWebAPIのデータベースの接続に失敗したため、処理は実行されませんでした。");
        return false;
      }
      logger.debug("enddeleteFormData");
      String job_order_id = ALEipUtils.getTemp(rundata, context,
          ALEipConstants.ENTITY_ID);

      if (job_order_id == null)
        return false;

      // ユーザーを論理削除
      DataContext dataContext = DatabaseOrmService.getInstance()
          .getDataContext();
      /*
       * ObjectId oid_user = new ObjectId("TurbineUser",
       * TurbineUser.LOGIN_NAME_COLUMN, user_name); TurbineUser user =
       * (TurbineUser) dataContext.refetchObject(oid_user);
       * 
       * user.setPositionId(Integer.valueOf(0)); user.setDisabled("T");
       * 
       */
      ObjectId oid_job_order_id = new ObjectId("ImwTJobOrder",
          ImwTJobOrder.JOB_ORDER_ID_PK_COLUMN, job_order_id);
      ImwTJobOrder jobOrder = (ImwTJobOrder) dataContext
          .refetchObject(oid_job_order_id);
      // user.setPositionId(Integer.valueOf(0));
      jobOrder.setDisabled("T");
      jobOrder.setUpdateUserId(ALEipUtils.getUserId(rundata));
      jobOrder.setUpdateDate(now);

      // dataContext.commitChanges();

      /*
       * String query1 = "UPDATE TURBINE_USER SET DISABLED = 'T', POST_ID = 0,
       * POSITION_ID = 0 WHERE LOGIN_NAME = '" + user_name + "'"; SQLTemplate
       * rawSelect1 = new SQLTemplate(TurbineUser.class, query1, false);
       * dataContext.performQuery(rawSelect1);
       */

      /* Delete 2010/8/5 tou Start--- */

      /*
       * // ユーザーIDを取得する SelectQuery query = new SelectQuery(TurbineUser.class);
       * Expression exp1 = ExpressionFactory.matchExp(
       * TurbineUser.LOGIN_NAME_PROPERTY, user_name); query.setQualifier(exp1);
       * List list3 = dataContext.performQuery(query);
       * 
       * int userNum = list3.size(); if (userNum != 1) return false; TurbineUser
       * deleteuser = (TurbineUser) list3.get(0); String userId; userId =
       * deleteuser.getUserId().toString(); // 対象ユーザのユーザーグループロールをすべて削除する
       * SelectQuery query2 = new SelectQuery(TurbineUserGroupRole.class);
       * Expression exp2 = ExpressionFactory.matchExp(
       * TurbineUserGroupRole.TURBINE_USER_PROPERTY, userId);
       * query2.setQualifier(exp2); List list4 =
       * dataContext.performQuery(query2);
       * 
       * TurbineUserGroupRole ugr = null; for (int i = 0; i < list4.size(); i++) {
       * ugr = (TurbineUserGroupRole) list4.get(i);
       * dataContext.deleteObject(ugr); }
       * 
       */
      /* Delete 2010/8/5 tou End--- */

      /*
       * ObjectId oid_ugr = new ObjectId("TurbineUserGroupRole",
       * TurbineUserGroupRole.TURBINE_USER_PROPERTY, userId);
       * 
       * //TurbineUserGroupRole ugr = (TurbineUserGroupRole)
       * dataContext.refetchObject(oid_ugr); dataContext.deleteObject(ugr);
       */

      // dataContext.commitChanges();
      /*
       * String query2 = "DELETE FROM TURBINE_USER_GROUP_ROLE " + "WHERE USER_ID
       * IN " + "(SELECT USER_ID FROM TURBINE_USER WHERE login_name= '" +
       * user_name + "')"; SQLTemplate rawSelect2 = new
       * SQLTemplate(TurbineUser.class, query2, false);
       * dataContext.performQuery(rawSelect2);
       */

      /*
       * String query3 = "SELECT USER_ID FROM TURBINE_USER WHERE login_name= '" +
       * user_name + "'"; SQLTemplate rawSelect3 = new
       * SQLTemplate(TurbineUser.class, query3, true);
       * rawSelect3.setFetchingDataRows(true); List list3 =
       * dataContext.performQuery(rawSelect3);
       */

      /* Delete 2010/8/55 tou Start--- */
      /*
       * // ToDoを削除する String sql4 = "DELETE FROM EIP_T_TODO WHERE USER_ID = '" +
       * userId + "'"; SQLTemplate rawSelect4 = new SQLTemplate(EipTTodo.class,
       * sql4, false); dataContext.performQuery(rawSelect4); String sql5 =
       * "DELETE FROM EIP_T_TODO_CATEGORY WHERE USER_ID = '" + userId + "'";
       * SQLTemplate rawSelect5 = new SQLTemplate(EipTTodoCategory.class, sql5,
       * false); dataContext.performQuery(rawSelect5); // ブログを削除する String sql6 =
       * "DELETE FROM EIP_T_BLOG WHERE OWNER_ID = '" + userId + "'"; SQLTemplate
       * rawSelect6 = new SQLTemplate(EipTBlog.class, sql6, false);
       * dataContext.performQuery(rawSelect6); // ブログの足跡を削除する String sql7 =
       * "DELETE FROM EIP_T_BLOG_FOOTMARK_MAP WHERE USER_ID = '" + userId + "'";
       * SQLTemplate rawSelect7 = new SQLTemplate(EipTBlogFootmarkMap.class,
       * sql7, false); dataContext.performQuery(rawSelect7); // ワークフロー自動承認
       * JuchuUtils.acceptWorkflow(deleteuser.getUserId());
       * 
       */
      /* Delete 2010/8/5 tou End--- */

      /*
       * SelectQuery workflow_request_map_query = new
       * SelectQuery(EipTWorkflowRequestMap.class); Expression workflow_exp =
       * ExpressionFactory.matchExp( EipTWorkflowRequestMap.USER_ID_PROPERTY,
       * userId); Expression workflow_exp2 = ExpressionFactory.matchExp(
       * EipTWorkflowRequestMap.STATUS_PROPERTY, "C");
       * workflow_request_map_query.setQualifier(workflow_exp.andExp(workflow_exp2));
       * List workflow_request_map_list =
       * dataContext.performQuery(workflow_request_map_query);
       * EipTWorkflowRequestMap workflow_request_map = null; for (int j = 0; j <
       * list4.size(); j++) { workflow_request_map = (EipTWorkflowRequestMap)
       * workflow_request_map_list.get(j); // 次の人がいるかどうか int request_number =
       * workflow_request_map.getOrderIndex(); SelectQuery
       * workflow_request_map_query2 = new
       * SelectQuery(EipTWorkflowRequestMap.class); Expression workflow_exp3 =
       * ExpressionFactory.matchExp(
       * EipTWorkflowRequestMap.EIP_TWORKFLOW_REQUEST_PROPERTY,
       * workflow_request_map.getEipTWorkflowRequest()); Expression
       * workflow_exp4 = ExpressionFactory.matchExp(
       * EipTWorkflowRequestMap.ORDER_INDEX_PROPERTY,
       * Integer.valueOf(request_number + 1));
       * workflow_request_map_query2.setQualifier(workflow_exp3.andExp(workflow_exp4));
       * List workflow_request_map_list2 =
       * dataContext.performQuery(workflow_request_map_query2); if
       * (workflow_request_map_list2.size() == 1) { // 自動的に承認して次の人に回す
       * workflow_request_map.setStatus("A"); EipTWorkflowRequestMap
       * workflow_request_map2 = (EipTWorkflowRequestMap)
       * workflow_request_map_list2.get(0);
       * workflow_request_map2.setStatus("C"); } }
       */

      dataContext.commitChanges();

      /* Delete 2010/8/5 tou Start--- */
      /*
       * // 他のユーザの順番を変更する． SelectQuery p_query = new
       * SelectQuery(EipMUserPosition.class);
       * p_query.addOrdering(EipMUserPosition.POSITION_PROPERTY, true); List
       * userPositions = dataContext.performQuery(p_query); if (userPositions !=
       * null && userPositions.size() > 0) { EipMUserPosition userPosition =
       * null; int index = -1; int size = userPositions.size(); for (int i = 0;
       * i < size; i++) { userPosition = (EipMUserPosition)
       * userPositions.get(i); if
       * (userId.equals(userPosition.getTurbineUser().toString())) { //
       * 指定したユーザを削除する． dataContext.deleteObject(userPosition); index = i; break; } }
       * if (index >= 0) { for (int i = index + 1; i < size; i++) { userPosition =
       * (EipMUserPosition) userPositions.get(i);
       * userPosition.setPosition(Integer.valueOf(i)); } } } // PSMLを削除
       * JetspeedUser juser = JetspeedSecurity.getUser(new UserNamePrincipal(
       * user_name)); PsmlManager.removeUserDocuments(juser); //
       * ユーザー名の先頭に"dummy_userid_"を追加 String dummy_user_name =
       * ALEipUtils.dummy_user_head + userId + "_" + user_name;
       * user.setLoginName(dummy_user_name);
       * 
       * dataContext.commitChanges(); // WebAPIとのDB同期 if
       * (!ALDataSyncFactoryService.getInstance().getDataSyncHandler()
       * .deleteUser(user_name)) { return false; }
       * 
       */
      /* Delete 2010/8/5 tou End--- */
      return true;
    } catch (Exception e) {
      logger.error("Exception", e);
      return false;
    }
  }

  /**
   * 添付ファイルを削除する．
   * 
   * @param action
   * @param rundata
   * @param context
   * @return TRUE 成功 FALSE 失敗
   */
  public boolean doDeleteAttachments(ALAction action, RunData rundata,
      Context context, String mode) {
    try {
      init(action, rundata, context);
      action.setMode(mode);
      setMode(mode);
      ArrayList msgList = new ArrayList();
      setValidator();
      // boolean res = (setFormData(rundata, context, msgList) &&
      // deleteAttachments(
      // rundata, context, msgList));
      boolean res = (setFormData(rundata, context, msgList));
      action.setResultData(this);
      action.addErrorMessages(msgList);
      action.putData(rundata, context);
      return res;
    } catch (ALPageNotFoundException e) {
      ALEipUtils.redirectPageNotFound(rundata);
      return false;
    } catch (ALDBErrorException e) {
      ALEipUtils.redirectDBError(rundata);
      return false;
    }
  }

  /**
   * @see com.aimluck.eip.common.ALAbstractFormData#updateFormData(org.apache.turbine.util.RunData,
   *      org.apache.velocity.context.Context, java.util.ArrayList)
   */
  // protected boolean deleteAttachments(RunData rundata, Context context,
  // ArrayList msgList) {
  // if (rundata == null || context == null) {
  // msgList.add("システム上の問題のため、削除できませんでした。");
  // return false;
  // }
  // int userId = ALEipUtils.getUserId(rundata);
  //
  // ArrayList fileBeanList = new ArrayList();
  // fileBeanList.add(filebean);
  // return FileuploadUtils.deleteAttachments(org_id, userId, folderName,
  // fileBeanList);
  // }
  /**
   * 指定したchar型文字が記号であるかを判断します。
   * 
   * @param ch
   * @return
   */
  protected boolean isSymbol(char ch) {
    byte[] chars;

    try {
      chars = (Character.valueOf(ch).toString()).getBytes("shift_jis");
    } catch (UnsupportedEncodingException ex) {
      return false;
    }

    if (chars == null || chars.length == 2 || Character.isDigit(ch)
        || Character.isLetter(ch)) {
      return false;
    } else {
      return true;
    }

  }

  /**
   * 初期化受付日を取得します。 <BR>
   * 
   * @return
   */
  public ALDateField getInitReceiptDate() {
    return init_receipt_date;
  }

  /**
   * 受注番号を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getJobOrderNumber() {
    return job_order_number;
  }

  /**
   * 受付日を取得します。 <BR>
   * 
   * @return
   */
  public ALDateField getReceiptDate() {
    return receipt_date;
  }

  /**
   * 件名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getJobOrderName() {
    return job_order_name;
  }

  /**
   * 受付担当ＩＤを取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getReceiptUserId() {
    return receipt_user_id;
  }

  /**
   * 受付担当名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getReceiptUserNm() {
    return receipt_user_nm;
  }

  /**
   * 受注区分を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getJuchukubun() {
    return juchukubun;
  }

  /**
   * 受注区分名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getJuchukubunNm() {
    return juchukubun_nm;
  }

  /**
   * 費用区分を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getHiyokubun() {
    return hiyokubun;
  }

  /**
   * 費用区分名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getHiyokubunNm() {
    return hiyokubun_nm;
  }

  /**
   * 顧客ＩＤを取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getClientId() {
    return client_id;
  }

  /**
   * 受付担当名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getClientNm() {
    return client_nm;
  }

  /**
   * システム区分を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getSystemClass1() {
    return system_class1;
  }

  /**
   * システム区分名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getSystemClass1Nm() {
    return system_class1_nm;
  }

  /**
   * 開発言語を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getSystemClass2() {
    return system_class2;
  }

  /**
   * 開発言語名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getSystemClass2Nm() {
    return system_class2_nm;
  }

  /**
   * ユーザ担当を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getChargeName() {
    return charge_name;
  }

  /**
   * 作業者１（社員番号）を取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getWorkerUserId01() {
    return worker_user_id01;
  }

  /**
   * 作業者１（社員番号）名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getWorkerUserId01Nm() {
    return worker_user_nm01;
  }

  /**
   * 作業者２（社員番号）を取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getWorkerUserId02() {
    return worker_user_id02;
  }

  /**
   * 作業者２（社員番号）名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getWorkerUserId02Nm() {
    return worker_user_nm02;
  }

  /**
   * 納期を取得します。 <BR>
   * 
   * @return
   */
  public ALDateField getPeriod() {
    return period;
  }

  /**
   * 受注金額を取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getPrice() {
    return price;
  }

  /**
   * 予定工数を取得します。 <BR>
   * 
   * @return
   */
  public ALNumberField getYoteikosu() {
    return yoteikosu;
  }

  /**
   * 分納区分を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getInstallmenClass() {
    return installmen_class;
  }

  /**
   * 分納区分名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getInstallmenClassNm() {
    return installmen_class_nm;
  }

  /**
   * 完了区分を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getCompletionClass() {
    return completion_class;
  }

  /**
   * 完了区分名を取得します。 <BR>
   * 
   * @return
   */
  public ALStringField getCompletionClassNm() {
    return completion_class_nm;
  }

  /**
   * 担当リストを取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getTantoList() {
    return tantoList;
  }

  /**
   * 受注区分リスト を取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getJuchukubunList() {
    return juchukubunList;
  }

  /**
   * 費用区分リストを取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getHiyokubunList() {
    return hiyokubunList;
  }

  /**
   * 顧客名リストを取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getClientNmList() {
    return clientNmList;
  }

  /**
   * システム区分１リストを取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getSystemClass1List() {
    return systemClass1List;
  }

  /**
   * システム区分２リストを取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getSystemClass2List() {
    return systemClass2List;
  }

  /**
   * 作業者１リストを取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getWorkerUserNm01List() {
    return workerUserNm01List;
  }

  /**
   * 作業者２リストを取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getWorkerUserNm02List() {
    return workerUserNm02List;
  }

  /**
   * 分納区分リストを取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getInstallmenClassList() {
    return installmenClassList;
  }

  /**
   * 完了区分リストを取得します。 <BR>
   * 
   * @return
   */
  public ArrayList getCompletionClassList() {
    return completionClassList;
  }

  //  
  //  
  //  
  //
  // /**
  // * 携帯メールアドレスを取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getCellularMail() {
  // return cellular_mail;
  // }
  //
  // /**
  // * 会社IDを取得します。 <BR>
  // *
  // * @return
  // */
  // public ALNumberField getCompanyId() {
  // return company_id;
  // }
  //
  // /**
  // * アカウント有効/無効フラグを取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getDisabled() {
  // return disabled;
  // }
  //
  // /**
  // * メールアドレスを取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getEmail() {
  // return email;
  // }
  //
  // /**
  // * フリガナ（名）を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getFirstNameKana() {
  // return first_name_kana;
  // }
  //
  // /**
  // * 名前（名）を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getFirstName() {
  // return firstname;
  // }
  //
  // /**
  // * 電話番号（内線）を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getInTelephone() {
  // return in_telephone;
  // }
  //
  // /**
  // * フリガナ（姓）を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getLastNameKana() {
  // return last_name_kana;
  // }
  //
  // /**
  // * 名前（姓）を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getLastName() {
  // return lastname;
  // }
  //
  // /**
  // * 携帯電話番号を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getCellularPhone1() {
  // return cellular_phone1;
  // }
  //
  // /**
  // * 携帯電話番号を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getCellularPhone2() {
  // return cellular_phone2;
  // }
  //
  // /**
  // * 携帯電話番号を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getCellularPhone3() {
  // return cellular_phone3;
  // }
  //
  // /**
  // * 電話番号を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getOutTelephone1() {
  // return out_telephone1;
  // }
  //
  // /**
  // * 電話番号を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getOutTelephone2() {
  // return out_telephone2;
  // }
  //
  // /**
  // * 電話番号を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getOutTelephone3() {
  // return out_telephone3;
  // }
  //
  // /**
  // * パスワードを取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getPassword() {
  // return password;
  // }
  //
  // /**
  // * パスワード2を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getPassword2() {
  // return password2;
  // }
  //
  // /**
  // * 役職IDを取得します。 <BR>
  // *
  // * @return
  // */
  // public ALNumberField getPositionId() {
  // return position_id;
  // }
  //
  // /**
  // * 部署IDを取得します。 <BR>
  // *
  // * @return
  // */
  // public ALNumberField getPostId() {
  // return post_id;
  // }
  //
  // /**
  // * ユーザー名を取得します。 <BR>
  // *
  // * @return
  // */
  // public ALStringField getUserName() {
  // return username;
  // }
  //
  // /**
  // * 役職リストを取得します。 <BR>
  // *
  // * @return
  // */
  // public ArrayList getPositionList() {
  // return positionList;
  // }
  //
  // /**
  // *
  // * @return
  // */
  // public List getPostList() {
  // return postList;
  // }

  /**
   * 
   * @return
   */
  public Map getPostMap() {
    return ALEipManager.getInstance().getPostMap();
  }

  /**
   * 
   * @return
   */
  public Map getPositionMap() {
    return ALEipManager.getInstance().getPositionMap();
  }

  // /**
  // *
  // * @return
  // */
  // public JuchuPostFormData getPost() {
  // return post;
  // }
  //
  // /**
  // *
  // * @return
  // */
  // public JuchuPositionFormData getPosition() {
  // return position;
  // }

  /**
   * 
   * @return
   */
  public boolean isNewPost() {
    return is_new_post;
  }

  /**
   * 
   * @return
   */
  public boolean isNewPosition() {
    return is_new_position;
  }

  // public FileuploadLiteBean getFileBean() {
  // return filebean;
  // }
  //
  // public List getAttachmentFileNameList() {
  // if (filebean == null)
  // return null;
  // ArrayList list = new ArrayList();
  // list.add(filebean);
  // return list;
  // }
  //
  // public String getFolderName() {
  // return folderName;
  // }

}
