OCAPRule.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.List;
/**
* Data Collection Rule For OCAP
*
* @author Qiansheng.Wang
* @since 2020-03-04
*/
public class OCAPRule extends CollectionRuleAbstract implements CollectionRule {
protected OCAPRule(DataCollectionRule dataCollectionRule, List<Unit> unitList) {
super(dataCollectionRule, unitList);
}
@Override
public Boolean isAvailableDataCollectionRule() {
int sampleSize = getWaferSamples().length;
int specialSampleSize = getSpecialSampleSize();
if (isNotAvailable(sampleSize, specialSampleSize)) {
return false;
}
for (int i = 0; i < sampleSize; i++) {
String sample = getWaferSamples()[i];
setAndCheckAvailableUnit(sample);
}
return checkResult(sampleSize);
}
@Override
protected void setAndCheckAvailableUnit(String sample) {
addToResultForNormalIndex(sample);
}
@Override
protected void addToResultForNormalIndex(String sample) {
for (Unit unit : getUnitList()) {
if (StringUtils.contains(unit.getUnitId(), sample)) {
addToResult(StringUtils.toString(unit.getPositionInCarrier()), unit.getUnitId());
break;
}
}
}
/**
* 检查结果是否正确。<br>
* OCAP 规则,匹配数量等于选片数量。<br>
*
* @param sampleSize
* @return
*/
@Override
protected Boolean checkResult(int sampleSize) {
setAvailableSample(getSelectedUnitIdList().size());
return getAvailableSample() == sampleSize;
}
}