WaferSelectionRule.java

package com.mycim.valueobject.edcspc.rule;

import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.valueobject.consts.EDCConst;

import java.io.Serializable;

public class WaferSelectionRule implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    private long ruleRrn;

    private long mainRrn;

    private long facilityRrn;

    private String ruleType;

    private int assignedPosition;

    private int searchStep;

    private int upperLimit;

    private int lowerLimit;

    private long createUserRrn;

    private String createBy;

    private String createDate;

    private long modifyUserRrn;

    private String modifyBy;

    private String modifyDate;

    public long getRuleRrn() {
        return ruleRrn;
    }

    public void setRuleRrn(long ruleRrn) {
        this.ruleRrn = ruleRrn;
    }

    public long getMainRrn() {
        return mainRrn;
    }

    public void setMainRrn(long mainRrn) {
        this.mainRrn = mainRrn;
    }

    public long getFacilityRrn() {
        return facilityRrn;
    }

    public void setFacilityRrn(long facilityRrn) {
        this.facilityRrn = facilityRrn;
    }

    public String getRuleType() {
        return ruleType;
    }

    public void setRuleType(String ruleType) {
        this.ruleType = ruleType;
    }

    public int getAssignedPosition() {
        return assignedPosition;
    }

    public void setAssignedPosition(int assignedPosition) {
        this.assignedPosition = assignedPosition;
    }

    public int getSearchStep() {
        return searchStep;
    }

    public void setSearchStep(int searchStep) {
        this.searchStep = searchStep;
    }

    public int getUpperLimit() {
        return upperLimit;
    }

    public void setUpperLimit(int upperLimit) {
        this.upperLimit = upperLimit;
    }

    public int getLowerLimit() {
        return lowerLimit;
    }

    public void setLowerLimit(int lowerLimit) {
        this.lowerLimit = lowerLimit;
    }

    public String getCreateBy() {
        return createBy;
    }

    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    public String getCreateDate() {
        return createDate;
    }

    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }

    public String getModifyBy() {
        return modifyBy;
    }

    public void setModifyBy(String modifyBy) {
        this.modifyBy = modifyBy;
    }

    public String getModifyDate() {
        return modifyDate;
    }

    public void setModifyDate(String modifyDate) {
        this.modifyDate = modifyDate;
    }

    public long getCreateUserRrn() {
        return createUserRrn;
    }

    public void setCreateUserRrn(long createUserRrn) {
        this.createUserRrn = createUserRrn;
    }

    public long getModifyUserRrn() {
        return modifyUserRrn;
    }

    public void setModifyUserRrn(long modifyUserRrn) {
        this.modifyUserRrn = modifyUserRrn;
    }

    /**
     * Get rule type code from <code>EDCConst.WaferSelectionRuleTypeEnum</code>.
     *
     * @return empty means not found, else means found
     */
    public String getRuleTypeCode() {
        if (StringUtils.equalsIgnoreCase(EDCConst.WaferSelectionRuleTypeEnum.UPTHENDOWN.getRuleType(), this.ruleType)) {
            return EDCConst.WaferSelectionRuleTypeEnum.UPTHENDOWN.getRuleTypeCode();
        } else if (StringUtils
                .equalsIgnoreCase(EDCConst.WaferSelectionRuleTypeEnum.DOWNTHENUP.getRuleType(), this.ruleType)) {
            return EDCConst.WaferSelectionRuleTypeEnum.DOWNTHENUP.getRuleTypeCode();
        } else if (StringUtils
                .equalsIgnoreCase(EDCConst.WaferSelectionRuleTypeEnum.NEARESTUPFIRST.getRuleType(), this.ruleType)) {
            return EDCConst.WaferSelectionRuleTypeEnum.NEARESTUPFIRST.getRuleTypeCode();
        } else if (StringUtils
                .equalsIgnoreCase(EDCConst.WaferSelectionRuleTypeEnum.NEARESTDOWNFIRST.getRuleType(), this.ruleType)) {
            return EDCConst.WaferSelectionRuleTypeEnum.NEARESTDOWNFIRST.getRuleTypeCode();
        }

        return "";
    }

    public boolean equalsRule(WaferSelectionRule targetRule) {
        if (targetRule == null) {
            return false;
        }

        /*
         * if (this.getMainRrn() != targetRule.getMainRrn()) { return false; }
         */

        if (this.getRuleRrn() != targetRule.getRuleRrn()) {
            return false;
        }

        if (this.getFacilityRrn() != targetRule.getFacilityRrn()) {
            return false;
        }

        if (!StringUtils.equals(this.getRuleType(), targetRule.getRuleType())) {
            return false;
        }

        if (this.getAssignedPosition() != targetRule.getAssignedPosition()) {
            return false;
        }

        if (this.getSearchStep() != targetRule.getSearchStep()) {
            return false;
        }

        if (this.getUpperLimit() != targetRule.getUpperLimit()) {
            return false;
        }

        if (this.getLowerLimit() != targetRule.getLowerLimit()) {
            return false;
        }

        return true;
    }

    @Override
    public String toString() {
        StringBuilder str = new StringBuilder("");
        str.append("[Rule Type: ");
        str.append(this.getRuleType());
        str.append(", Assigned Position: ");
        str.append(this.getAssignedPosition());
        str.append(", Search Step: ");
        str.append(this.getSearchStep());
        str.append(", Upper Limit: ");
        str.append(this.getUpperLimit());
        str.append(", Lower Limit: ");
        str.append(this.getLowerLimit());
        str.append("]");

        return str.toString();
    }

}