ManualRule.java

package com.mycim.valueobject.edcspc.rule;

import com.mycim.valueobject.edcspc.DataCollectionRule;
import com.mycim.valueobject.wip.Unit;

import java.util.List;

/**
 * 手动规则,该规则允许有选片<br> 不强制匹配选片,有则匹配,没有就不匹配<br>
 *
 * @author Qiansheng.Wang
 */
public class ManualRule extends CollectionRuleAbstract implements CollectionRule {

    public ManualRule(DataCollectionRule dataCollectionRule, List<Unit> unitList) {
        super(dataCollectionRule, unitList);
    }

    @Override
    public Boolean isAvailableDataCollectionRule() {
        int sampleSize = getWaferSamples().length;
        int specialSampleSize = getSpecialSampleSize();
        if (isNotAvailable(sampleSize, specialSampleSize)) {
            // 手动规则,不必强制判断
            return true;
        }

        for (int i = 0; i < sampleSize; i++) {
            String sample = getWaferSamples()[i];

            setAndCheckAvailableUnit(sample);
        }

        return checkResult(sampleSize);
    }

    /**
     * 通过选片数量和筛选出来的Unit数量,检查结果是否正确。<br> Manual规则,只要匹配数量小于等于选片数量即可。<br> 默认带出,可以手动调整
     *
     * @param sampleSize
     * @return
     */
    @Override
    protected Boolean checkResult(int sampleSize) {
        setAvailableSample(getSelectedUnitIdList().size());

        return getAvailableSample() <= sampleSize;
    }

}