package org.aksw.sparqlify.algebra.sql.exprs2;
import java.util.ArrayList;
import java.util.List;
import org.aksw.sparqlify.core.TypeToken;
public class S_Case
extends SqlExprN
{
public S_Case(TypeToken datatype, List<SqlExpr> exprs) {
super(datatype, "case", exprs);
}
public static S_Case create(TypeToken type, List<S_When> whens, SqlExpr elseExpr) {
List<SqlExpr> exprs = new ArrayList<SqlExpr>(whens.size() + 1);
exprs.addAll(whens);
S_Else hack = new S_Else(elseExpr);
exprs.add(hack);
S_Case result = create(TypeToken.Boolean, exprs);
return result;
}
public static S_Case create(TypeToken type, List<SqlExpr> cases) {
S_Case result = new S_Case(type, cases);
return result;
}
@Override
public SqlExprFunction copy(List<SqlExpr> args) {
S_Case result = new S_Case(datatype, args);
return result;
}
@Override
public <T> T accept(SqlExprVisitor<T> visitor) {
T result = visitor.visit(this);
return result;
}
}
//public class S_Case
// extends SqlExprFunctionBase
//{
// private List<S_When> cases;
// private SqlExpr elseExpr;
//
// public S_Case(TypeToken datatype, List<S_When> cases, SqlExpr elseExpr) {
// super(datatype, "when");
// this.cases = cases;
// this.elseExpr = elseExpr;
// }
//
// public static S_Case create(TypeToken type, List<S_When> cases, SqlExpr elseExpr) {
// S_Case result = new S_Case(type, cases, elseExpr);
// return result;
// }
//
// public List<S_When> getCases() {
// return cases;
// }
//
// public SqlExpr getElseExpr() {
// return elseExpr;
// }
//
// @Override
// public SqlExprFunction copy(List<SqlExpr> args) {
// int n = args.size();
// int last = n - 1;
//
// List<S_When> cases = new ArrayList<S_When>();
// for(int i = 0; i < last; ++i) {
// S_When caze = (S_When) args.get(i);
// cases.add(caze);
// }
//
// SqlExpr elseExpr = args.get(last);
//
// S_Case result = new S_Case(datatype, cases, elseExpr);
//
// return result;
// }
//
// @Override
// public List<SqlExpr> getArgs() {
// List<SqlExpr> exprs = new ArrayList<SqlExpr>();
// for(S_When caze : cases) {
// exprs.add(caze);
// }
//
// exprs.add(elseExpr);
//
// return exprs;
// }
//
//// @Override
//// public void asString(IndentedWriter writer) {
//// writer.println("when - TODO implement toString");
//// }
//
// @Override
// public <T> T accept(SqlExprVisitor<T> visitor) {
// T result = visitor.visit(this);
// return result;
// }
//
//}