package com.itemanalysis.squiggle.criteria;
import java.util.Set;
import com.itemanalysis.squiggle.base.Criteria;
import com.itemanalysis.squiggle.base.LiteralValueSet;
import com.itemanalysis.squiggle.base.Matchable;
import com.itemanalysis.squiggle.base.Table;
import com.itemanalysis.squiggle.base.ValueSet;
import com.itemanalysis.squiggle.output.Output;
/**
* @author <a href="joe@truemesh.com">Joe Walnes</a>
* @author Nat Pryce
*/
public class InCriteria extends Criteria {
private final Matchable matched;
private final ValueSet valueSet;
public InCriteria(Matchable matchable, ValueSet valueSet) {
this.matched = matchable;
this.valueSet = valueSet;
}
public InCriteria(Matchable column, String... values) {
this.matched = column;
this.valueSet = new LiteralValueSet(values);
}
public InCriteria(Matchable column, long... values) {
this.matched = column;
this.valueSet = new LiteralValueSet(values);
}
public InCriteria(Matchable column, double... values) {
this.matched = column;
this.valueSet = new LiteralValueSet(values);
}
public InCriteria(Table table, String columnname, ValueSet valueSet) {
this(table.getColumn(columnname), valueSet);
}
public InCriteria(Table table, String columnname, String[] values) {
this(table.getColumn(columnname), values);
}
public InCriteria(Table table, String columnname, double[] values) {
this(table.getColumn(columnname), values);
}
public InCriteria(Table table, String columnname, long[] values) {
this(table.getColumn(columnname), values);
}
public Matchable getMatched() {
return matched;
}
public void write(Output out) {
matched.write(out);
out.println(" IN (");
out.indent();
valueSet.write(out);
out.println();
out.unindent();
out.print(")");
}
public void addReferencedTablesTo(Set<Table> tables) {
matched.addReferencedTablesTo(tables);
}
}