package org.activityinfo.model.expr.functions;
import com.google.common.base.Preconditions;
import org.activityinfo.model.type.FieldType;
import org.activityinfo.model.type.FieldValue;
import org.activityinfo.model.type.primitive.BooleanFieldValue;
import org.activityinfo.model.type.primitive.BooleanType;
import java.util.List;
public class NotFunction extends ExprFunction {
public static final NotFunction INSTANCE = new NotFunction();
private NotFunction() {}
@Override
public String getId() {
return "!";
}
@Override
public String getLabel() {
return getId();
}
@Override
public BooleanFieldValue apply(List<FieldValue> arguments) {
Preconditions.checkArgument(arguments.size() == 1);
boolean x = Casting.toBoolean(arguments.get(0));
return BooleanFieldValue.valueOf(!x);
}
@Override
public FieldType resolveResultType(List<FieldType> argumentTypes) {
return BooleanType.INSTANCE;
}
}