use of org.apache.cayenne.access.translator.select.JoinTreeNode in project cayenne by apache.
the class OpenBaseJoinStack method appendQualifierSubtree.
protected void appendQualifierSubtree(StringBuilder out, JoinTreeNode node) {
DbRelationship relationship = node.getRelationship();
String srcAlias = node.getSourceTableAlias();
String targetAlias = node.getTargetTableAlias();
List<DbJoin> joins = relationship.getJoins();
int len = joins.size();
for (int i = 0; i < len; i++) {
DbJoin join = joins.get(i);
if (i > 0) {
out.append(" AND ");
}
out.append(srcAlias).append('.').append(join.getSourceName());
switch(node.getJoinType()) {
case INNER:
out.append(" = ");
break;
case LEFT_OUTER:
out.append(" * ");
break;
default:
throw new IllegalArgumentException("Unsupported join type: " + node.getJoinType());
}
out.append(targetAlias).append('.').append(join.getTargetName());
}
for (JoinTreeNode child : node.getChildren()) {
out.append(" AND ");
appendQualifierSubtree(out, child);
}
}
use of org.apache.cayenne.access.translator.select.JoinTreeNode in project cayenne by apache.
the class Oracle8JoinStack method appendJoinSubtree.
@Override
protected void appendJoinSubtree(StringBuilder out, JoinTreeNode node) {
DbRelationship relationship = node.getRelationship();
if (relationship == null) {
return;
}
DbEntity targetEntity = relationship.getTargetEntity();
String targetAlias = node.getTargetTableAlias();
out.append(", ").append(targetEntity.getFullyQualifiedName()).append(' ').append(targetAlias);
for (JoinTreeNode child : node.getChildren()) {
appendJoinSubtree(out, child);
}
}
use of org.apache.cayenne.access.translator.select.JoinTreeNode in project cayenne by apache.
the class Oracle8JoinStack method appendQualifier.
@Override
protected void appendQualifier(StringBuilder out, boolean firstQualifierElement) {
boolean first = firstQualifierElement;
for (JoinTreeNode node : rootNode.getChildren()) {
if (!first) {
out.append(" AND ");
}
appendQualifierSubtree(out, node);
first = false;
}
}
use of org.apache.cayenne.access.translator.select.JoinTreeNode in project cayenne by apache.
the class OpenBaseJoinStack method appendQualifier.
@Override
protected void appendQualifier(StringBuilder out, boolean firstQualifierElement) {
boolean first = firstQualifierElement;
for (JoinTreeNode node : rootNode.getChildren()) {
if (!first) {
out.append(" AND ");
}
appendQualifierSubtree(out, node);
first = false;
}
}
use of org.apache.cayenne.access.translator.select.JoinTreeNode in project cayenne by apache.
the class OpenBaseJoinStack method appendJoinSubtree.
@Override
protected void appendJoinSubtree(StringBuilder out, JoinTreeNode node) {
DbRelationship relationship = node.getRelationship();
if (relationship == null) {
return;
}
DbEntity targetEntity = relationship.getTargetEntity();
String targetAlias = node.getTargetTableAlias();
out.append(", ").append(targetEntity.getFullyQualifiedName()).append(' ').append(targetAlias);
for (JoinTreeNode child : node.getChildren()) {
appendJoinSubtree(out, child);
}
}
Aggregations