InverseRule.java

package com.mycim.valueobject.edcspc.rule;

import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.valueobject.edcspc.DataCollectionRule;
import com.mycim.valueobject.wip.Unit;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 通过Unit在Carrier中的Position验证规则<br> 强制匹配,这个匹配是反选,及选中哪个,哪个就不采集
 */
public class InverseRule extends CollectionRuleAbstract implements CollectionRule {

    protected InverseRule(DataCollectionRule dataCollectionRule, List<Unit> unitList) {
        setDataCollectionRule(dataCollectionRule);
        setWaferSamples(getWaferSample());
        setUnitList(unitList);
        setSelectedUnitIdList(new ArrayList<String>());
        setSelectedUnitPositionList(new ArrayList<String>());
    }

    @Override
    protected Boolean isNotAvailable(int sampleSize, int specialSampleSize) {
        return sampleSize == 0 || getUnitList() == null;

    }

    @Override
    protected Boolean checkResult(int sampleSize) {
        setAvailableSample(getSelectedUnitIdList().size());

        return getAvailableSample() <= sampleSize;
    }

    private String[] getWaferSample() {
        List<String> ret = new ArrayList<String>();
        List<String> asList = Arrays.asList(StringUtils.split(dataCollectionRule.getWaferSample(), ','));
        for (int i = 1; i <= 25; i++) {
            if (!asList.contains(Integer.valueOf(i).toString())) {
                ret.add(Integer.valueOf(i).toString());
            }
        }

        return ret.toArray(new String[ret.size()]);
    }

}