package jp.co.sint.beans.mallmgr;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import jp.co.sint.config.SIConfig;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;

import org.apache.log4j.Category;

/**
 * 商品添付資料オブジェクト
 */
public class UIIndividualAttachedFile {

  // ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);

  // 在庫コード
  private String individualCode = "";

  // 資料番号
  private String attachedfilecode = "";

  // 表示名
  private String attachedfilename = "";

  // 拡張子
  private String extension = "";

  /**
   * @return individualCode
   */
  public String getIndividualCode() {
    return individualCode;
  }

  /**
   * @param individualCode セットする individualCode
   */
  public void setIndividualCode(String individualCode) {
    this.individualCode = individualCode;
  }

  /**
   * @return attachedfilecode
   */
  public String getAttachedfilecode() {
    return attachedfilecode;
  }

  /**
   * @param attachedfilecode セットする attachedfilecode
   */
  public void setAttachedfilecode(String attachedfilecode) {
    this.attachedfilecode = attachedfilecode;
  }

  /**
   * @return attachedfilename
   */
  public String getAttachedfilename() {
    return attachedfilename;
  }

  /**
   * @param attachedfilename セットする attachedfilename
   */
  public void setAttachedfilename(String attachedfilename) {
    this.attachedfilename = attachedfilename;
  }

  /**
   * @return extension
   */
  public String getExtension() {
    return extension;
  }

  /**
   * @param extension セットする extension
   */
  public void setExtension(String extension) {
    this.extension = extension;
  }

  /**
   * 商品添付資料のリストを取得します
   *
   * @param conn コネクション
   * @param individualCode 在庫コード
   * @return 対象の商品添付資料のリスト
   * @throws SIDBAccessException
   */
  public Collection getAttachedFiles(Connection conn, String individualCode) throws SIDBAccessException {

    log.debug("UIIndividualAttachedFile -> getAttachedFiles. individualCode=[" + individualCode + "]");
    Collection attachedFileColl = new ArrayList();

    Statement statement = null;
    ResultSet resultSet = null;
    StringBuffer sqlStatement = new StringBuffer();

    sqlStatement.append("SELECT * FROM individualattachedfiletbl");
    sqlStatement.append(" WHERE individualcode = ").append(SIDBUtil.SQL2Str(individualCode));
    sqlStatement.append(" ORDER BY attachedfilecode ASC");

    try{
      statement = conn.createStatement();
      log.debug("SQL=" + sqlStatement.toString());
      resultSet = statement.executeQuery(sqlStatement.toString());

      while(resultSet.next()){
        UIIndividualAttachedFile attachedFile = new UIIndividualAttachedFile();
        attachedFile.setAttachedfilecode(resultSet.getString("attachedfilecode"));// 資料番号
        attachedFile.setAttachedfilename(resultSet.getString("attachedfilename"));// 表示ファイル名
        attachedFile.setExtension(resultSet.getString("extension"));// 拡張子

        attachedFileColl.add(attachedFile);
      }
      log.debug("individualCode=[" + individualCode + "]のダウンロード資料：[" + attachedFileColl.size() + "]件取得しました。" );
    } catch (SQLException e) {
      log.debug("exception sql = " + sqlStatement.toString());
      throw new SIDBAccessException(e);
    } finally {
      SIDBUtil.close(resultSet, statement);
    }
    return attachedFileColl;
  }

  /**
   * @param attachedfilecode セットする attachedfilecode
   */
  public void setAttachedfilecode(int attachedfilecode) {
      this.attachedfilecode = String.valueOf(attachedfilecode);
  }
}
