package sample.org.itscool.msgbord;

import java.util.List;

import org.itscool.commons.connection.Record;
import org.itscool.commons.connection.Records;
import org.itscool.commons.dao.BaseDao;
import org.itscool.commons.dao.Criteria;

/**
 * メッセージテーブルのデータアクセスクラスです
 */
public class MessageDao extends BaseDao{
    
    /**
     * テーブルから全メッセージを取得します
     * @return メッセージの一覧をListで返します
     */
    public List getAllData(){
        Criteria crt = new Criteria(Message.class);
        List lst = select(crt);
        return lst;
    }
    
    /**
     * 主キーを作成します
     * @return 主キーを返します
     */
    public int getNewId(){
        int id = 0;
        Records result = transaction.select("select MAX("+Message.TABLE+"."+Message.PK_COLUM_id+") AS NEW_ID FROM "+Message.TABLE);
        if(result.size() > 0){
            Record record = (Record)result.getRecord(0);
            id = record.getInt("NEW_ID");
            id ++;
        }
        return id;
    }
    
    /**
     * メッセージのINSERTを行います
     * @param message メッセージ
     * @return Integer 登録後の主キー値を返す
     */
    public int save(Message message){
        Criteria crt = new Criteria(Message.class);
        int id = getNewId();
        message.setId(id);
        this.insert(crt, message);
        return id;
    }
    
    /**
     * メッセージのUPDATEを行います
     * @param message メッセージ
     */
    public int update(Message message){
        Criteria crt = new Criteria(Message.class);
        crt.eq(Message.TABLE+"."+Message.PK_COLUM_id, message.getId());
        return this.update(crt, message);
    }
    
    /**
     * メッセージのDELETEを行います
     * @param message メッセージ
     */
    public int delete(Message message){
        Criteria crt = new Criteria(Message.class);
        crt.eq(Message.TABLE + "." + Message.PK_COLUM_id, message.getId());
        return this.delete(crt);
    }
}
