/**
 * Copyright (c) 2003-2004 System Integrator Corporation.
 *                 All Rights Reserved.
 */
package jp.co.sint.database;

import org.apache.log4j.Category;
import jp.co.sint.config.*;

/**
 * @version $Id : SIExecuteUpdate.java,v 1.0 Exp $
 * @author      : Jinwang Chen
 * <br>Description :テーブルに対する削除と修正などのアクションを行う親クラスです。
 * <p>History</p>
 * <p>Author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reason</p>
 * ============&nbsp;&nbsp;&nbsp;==========&nbsp;&nbsp;===========================<br>
 * J.W.Chen       2003/06/26  Original
 */

public abstract class SIExecuteUpdate extends SIExecute {

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

  public SIExecuteUpdate() {}

  public void addCondition(String lItemName,String lItemValue){
    this.addObjCondition(lItemName,lItemValue);
  }

  public void addCondition(String lItemName,int lItemValue){
    this.addObjCondition(lItemName,new Integer(lItemValue));
  }

  public void addCondition(String lItemName,long lItemValue){
    this.addObjCondition(lItemName,new Long(lItemValue));
  }

  public void addCondition(String lItemName,float lItemValue){
    this.addObjCondition(lItemName,new Float(lItemValue));
  }

  public void addCondition(String lItemName,SISpcType lItemValue){
    this.addObjCondition(lItemName,lItemValue);
  }

  public void addCondition(SITableCondition lTableCondition){
		if (tableConditionMan.size()==0)lTableCondition.setAndOrType(SIConfig.SICONDITION_TYPE_NOT);
		else lTableCondition.setAndOrType(SIConfig.SICONDITION_TYPE_AND);
		tableConditionMan.add(lTableCondition);
  }

  private void addObjCondition(String lItemName,Object lItemValue){
		SITableCondition lTableCondtion=new SITableCondition();
		lTableCondtion.setBlankEnable(true);
		lTableCondtion.setItemName(lItemName);
		lTableCondtion.setItemValue(lItemValue);
    if (tableConditionMan.size()==0)lTableCondtion.setAndOrType(SIConfig.SICONDITION_TYPE_NOT);
    else lTableCondtion.setAndOrType(SIConfig.SICONDITION_TYPE_AND);
    tableConditionMan.add(lTableCondtion);
  }

  protected String getConditionSQL(){
    return tableConditionMan.getCondtionSQL();
  }
}