package hu.sztaki.ilab.longneck.process.constraint; import hu.sztaki.ilab.longneck.Record; import hu.sztaki.ilab.longneck.process.VariableSpace; import hu.sztaki.ilab.longneck.process.block.BlockUtils; import java.util.ArrayList; import java.util.List; /** * Look up if the given wordset contain the apply-to filed(s) or not. * * @author Molnár Péter <molnarp@ilab.sztaki.hu> */ public class Lookup extends AbstractAtomicConstraint { protected Wordset words; public Wordset getWords() { return words; } public void setWords(Wordset words) { this.words = words; } @Override public CheckResult check(Record record, VariableSpace scope) { List<CheckResult> results = new ArrayList<CheckResult>(); for (String fName : applyTo) { if (words.contains(BlockUtils.getValue(fName, record, scope))) { results.add(new CheckResult( this, true, fName, BlockUtils.getValue(fName, record, scope), "Found in lookup wordset.")); } else { results.add(new CheckResult( this, false, fName, BlockUtils.getValue(fName, record, scope), "Not found in lookup wordset.")); return new CheckResult(this, false, null, null, null, results); } } return new CheckResult(this, true, null, null, null, results); } @Override public Lookup clone() { Lookup copy = (Lookup) super.clone(); copy.words = words.clone(); return copy; } }