package org.aksw.sparqlify.core.domain.input;
import org.aksw.jena_sparql_api.views.VarDefinition;
import org.aksw.sparqlify.algebra.sql.nodes.SqlOp;
/**
* This class expresses an RDB and RDF mapping.
* It is comprised of
* - A set of variable definitions
* - An SQL node
*
*
* @author Claus Stadler <cstadler@informatik.uni-leipzig.de>
*
*/
public class Mapping
// TODO: A mapping is an algebraic entity extends Op
{
private VarDefinition varDefinition;
private SqlOp sqlOp;
public Mapping(SqlOp sqlOp) {
this.varDefinition = new VarDefinition();
this.sqlOp = sqlOp;
}
/**
* This constructor does not create copy of the arguments
*
* @param other
*/
public Mapping(VarDefinition varDefinition, SqlOp sqlOp) {
this.varDefinition = varDefinition;
this.sqlOp = sqlOp;
}
public VarDefinition getVarDefinition() {
return varDefinition;
}
public SqlOp getSqlOp() {
return sqlOp;
}
/**
*
* @return whether the underlying sql of has zero rows
*/
public boolean isEmpty() {
return sqlOp.isEmpty();
}
/*
public Mapping createRenamed(Map<String, String> map) {
varDefinition.createWithRenamedColumnReferences();
}*/
@Override
public String toString() {
return "Mapping [varDefinition=" + varDefinition
+ ", sqlOp=" + sqlOp + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((sqlOp == null) ? 0 : sqlOp.hashCode());
result = prime
* result
+ ((varDefinition == null) ? 0 : varDefinition
.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Mapping other = (Mapping) obj;
if (sqlOp == null) {
if (other.sqlOp != null)
return false;
} else if (!sqlOp.equals(other.sqlOp))
return false;
if (varDefinition == null) {
if (other.varDefinition != null)
return false;
} else if (!varDefinition.equals(other.varDefinition))
return false;
return true;
}
}