package org.aksw.sparqlify.algebra.sql.exprs2;
import java.util.Arrays;
import java.util.List;
import org.aksw.sparqlify.core.TypeToken;
import org.apache.jena.atlas.io.IndentedWriter;
public abstract class SqlExpr1
extends SqlExprFunctionBase
{
private SqlExpr expr;
public SqlExpr1(TypeToken datatype, String name, SqlExpr expr) {
super(datatype, name);
this.expr = expr;
}
public SqlExpr getExpr() {
return expr;
}
public List<SqlExpr> getArgs() {
return Arrays.asList(expr);
}
public SqlExprType getType() {
return SqlExprType.Function;
}
@Override
public SqlExprFunction copy(List<SqlExpr> args) {
if(args.size() != 1) {
throw new RuntimeException("Exactly 1 argument expected, got: " + args);
}
SqlExprFunction result = copy(args.get(0));
return result;
}
public abstract SqlExprFunction copy(SqlExpr arg);
public void writeArgs(IndentedWriter writer) {
writer.incIndent();
expr.asString(writer);
writer.decIndent();
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((expr == null) ? 0 : expr.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
SqlExpr1 other = (SqlExpr1) obj;
if (expr == null) {
if (other.expr != null)
return false;
} else if (!expr.equals(other.expr))
return false;
return true;
}
/*
@Override
public String toString() {
return SqlExprBase.asString(this.getClass().getSimpleName(), expr);
}*/
}