// Path: src/main/java/salarycalculation/database/model/CapabilityRecord.java
// public class CapabilityRecord {
// 
//     /** 等級 */
//     private String rank;
// 
//     /** 金額 */
//     private int amount;
// 
//     /**
//      * 等級を取得する。
//      *
//      * @return 等級
//      */
//     public String getRank() {
//         return rank;
//     }
// 
//     /**
//      * 等級を設定する。
//      *
//      * @param rank 等級
//      */
//     public void setRank(String rank) {
//         this.rank = rank;
//     }
// 
//     /**
//      * 金額を取得する。
//      *
//      * @return 金額
//      */
//     public int getAmount() {
//         return amount;
//     }
// 
//     /**
//      * 金額を設定する。
//      *
//      * @param amount 金額
//      */
//     public void setAmount(int amount) {
//         this.amount = amount;
//     }
// }
// 
// Path: src/main/java/salarycalculation/domain/employee/Capability.java
// public class Capability extends BaseValueObject {
// 
//     /** 等級 */
//     private final CapabilityRank rank;
// 
//     /** 金額 */
//     private final Money amount;
// 
//     public Capability(CapabilityRank rank, Money amount) {
//         this.rank = rank;
//         this.amount = amount;
//     }
// 
//     public static Capability pm(Money amount) {
//         return new Capability(CapabilityRank.PM, amount);
//     }
// 
//     public static Capability pl(Money amount) {
// 
//         return new Capability(CapabilityRank.PL, amount);
//     }
// 
//     public static Capability normal(CapabilityRank rank, Money amount) {
//         return new Capability(rank, amount);
//     }
// 
//     public Money getAmount() {
//         return amount;
//     }
// 
//     public CapabilityRank getRank() {
//         return rank;
//     }
// 
//     public Money getSeparatedAllowance() {
//         return rank.getSeparatedAllowance();
//     }
// 
//     public boolean isManager() {
//         return rank.isManager();
//     }
// }


import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import salarycalculation.database.model.CapabilityRecord;
import salarycalculation.domain.employee.Capability;
import salarycalculation.exception.RecordNotFoundException;
package salarycalculation.database;



/**
 * 能力等級 Dao。
 *
 * @author naotake
 */
public class CapabilityDao extends BaseDao<CapabilityRecord> {

    public CapabilityDao() {
        super();
    }

    /**
     * 等級を基に能力等級を取得する。
     *
     * @param rank 等級
     * @return 能力等力
     */
    public CapabilityRecord get(String rank) {
        String query = "select * from capability where rank = ?";

        CapabilityRecord result = getByQuery(query, rank);
        if (result == null) {
            throw new RecordNotFoundException(Capability.class, rank);
        }
        return result;
    }

    @Override
    protected BeanHandler<CapabilityRecord> newBeanHandler() {
        return new BeanHandler<CapabilityRecord>(CapabilityRecord.class);
    }

    @Override
// Path: src/main/java/salarycalculation/database/model/CapabilityRecord.java
// public class CapabilityRecord {
// 
//     /** 等級 */
//     private String rank;
// 
//     /** 金額 */
//     private int amount;
// 
//     /**
//      * 等級を取得する。
//      *
//      * @return 等級
//      */
//     public String getRank() {
//         return rank;
//     }
// 
//     /**
//      * 等級を設定する。
//      *
//      * @param rank 等級
//      */
//     public void setRank(String rank) {
//         this.rank = rank;
//     }
// 
//     /**
//      * 金額を取得する。
//      *
//      * @return 金額
//      */
//     public int getAmount() {
//         return amount;
//     }
// 
//     /**
//      * 金額を設定する。
//      *
//      * @param amount 金額
//      */
//     public void setAmount(int amount) {
//         this.amount = amount;
//     }
// }
// 
// Path: src/main/java/salarycalculation/domain/employee/Capability.java
// public class Capability extends BaseValueObject {
// 
//     /** 等級 */
//     private final CapabilityRank rank;
// 
//     /** 金額 */
//     private final Money amount;
// 
//     public Capability(CapabilityRank rank, Money amount) {
//         this.rank = rank;
//         this.amount = amount;
//     }
// 
//     public static Capability pm(Money amount) {
//         return new Capability(CapabilityRank.PM, amount);
//     }
// 
//     public static Capability pl(Money amount) {
// 
//         return new Capability(CapabilityRank.PL, amount);
//     }
// 
//     public static Capability normal(CapabilityRank rank, Money amount) {
//         return new Capability(rank, amount);
//     }
// 
//     public Money getAmount() {
//         return amount;
//     }
// 
//     public CapabilityRank getRank() {
//         return rank;
//     }
// 
//     public Money getSeparatedAllowance() {
//         return rank.getSeparatedAllowance();
//     }
// 
//     public boolean isManager() {
//         return rank.isManager();
//     }
// }


// Path: src/main/java/salarycalculation/database/CapabilityDao.java
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import salarycalculation.database.model.CapabilityRecord;
import salarycalculation.domain.employee.Capability;
import salarycalculation.exception.RecordNotFoundException;

package salarycalculation.database;



/**
 * 能力等級 Dao。
 *
 * @author naotake
 */
public class CapabilityDao extends BaseDao<CapabilityRecord> {

    public CapabilityDao() {
        super();
    }

    /**
     * 等級を基に能力等級を取得する。
     *
     * @param rank 等級
     * @return 能力等力
     */
    public CapabilityRecord get(String rank) {
        String query = "select * from capability where rank = ?";

        CapabilityRecord result = getByQuery(query, rank);
        if (result == null) {
            throw new RecordNotFoundException(Capability.class, rank);
        }
        return result;
    }

    @Override
    protected BeanHandler<CapabilityRecord> newBeanHandler() {
        return new BeanHandler<CapabilityRecord>(CapabilityRecord.class);
    }

    @Override
    protected BeanListHandler<CapabilityRecord> newBeanListHandler() {