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()]);
}
}