package org.aksw.sparqlify.algebra.sql.exprs2; import org.aksw.sparqlify.core.TypeToken; import org.apache.jena.atlas.io.IndentedWriter; public class S_ColumnRef extends SqlExprVarBase { private String columnName; private String relationAlias; public S_ColumnRef(TypeToken datatype, String columnName) { this(datatype, columnName, null); } public S_ColumnRef(TypeToken datatype, String columnName, String relationAlias) { super(datatype); this.columnName = columnName; this.relationAlias = relationAlias; } public String getColumnName() { return columnName; } public String getRelationAlias() { return relationAlias; } @Override public void asString(IndentedWriter writer) { writer.print(getVarName()); } @Override public String toString() { return getVarName() + "(" + datatype + ")"; } @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((columnName == null) ? 0 : columnName.hashCode()); result = prime * result + ((relationAlias == null) ? 0 : relationAlias.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; S_ColumnRef other = (S_ColumnRef) obj; if (columnName == null) { if (other.columnName != null) return false; } else if (!columnName.equals(other.columnName)) return false; if (relationAlias == null) { if (other.relationAlias != null) return false; } else if (!relationAlias.equals(other.relationAlias)) return false; return true; } @Override public String getVarName() { String result; if(relationAlias == null) { result = "" + columnName; } else { result = relationAlias + "." + columnName; } return result; } @Override public <T> T accept(SqlExprVisitor<T> visitor) { T result = visitor.visit(this); return result; } }