Use Relation's additionalTables option when building queries.

This activates the additionalTables feature contributed by Juerg Lehni.
This commit is contained in:
hns 2003-10-23 14:35:02 +00:00
parent e45ef47dee
commit 39d8683b84

View file

@ -988,9 +988,15 @@ public final class NodeManager {
try { try {
String q = null; String q = null;
StringBuffer tables = new StringBuffer(table);
if (rel.additionalTables != null) {
tables.append(',').append(rel.additionalTables);
}
StringBuffer b = new StringBuffer("SELECT ").append(table).append('.') StringBuffer b = new StringBuffer("SELECT ").append(table).append('.')
.append(idfield).append(" FROM ") .append(idfield).append(" FROM ")
.append(table); .append(tables);
if (home.getSubnodeRelation() != null) { if (home.getSubnodeRelation() != null) {
// subnode relation was explicitly set // subnode relation was explicitly set
@ -1085,6 +1091,10 @@ public final class NodeManager {
Relation[] joins = dbm.getJoins(); Relation[] joins = dbm.getJoins();
StringBuffer q = dbm.getSelect(); StringBuffer q = dbm.getSelect();
if (rel.additionalTables != null) {
q.append(',').append(rel.additionalTables);
}
try { try {
if (home.getSubnodeRelation() != null) { if (home.getSubnodeRelation() != null) {
q.append(home.getSubnodeRelation()); q.append(home.getSubnodeRelation());
@ -1163,6 +1173,10 @@ public final class NodeManager {
Relation[] joins = dbm.getJoins(); Relation[] joins = dbm.getJoins();
StringBuffer q = dbm.getSelect(); StringBuffer q = dbm.getSelect();
if (rel.additionalTables != null) {
q.append(',').append(rel.additionalTables);
}
try { try {
String idfield = (rel.groupby != null) ? rel.groupby : dbm.getIDField(); String idfield = (rel.groupby != null) ? rel.groupby : dbm.getIDField();
boolean needsQuotes = dbm.needsQuotes(idfield); boolean needsQuotes = dbm.needsQuotes(idfield);
@ -1335,7 +1349,13 @@ public final class NodeManager {
try { try {
String q = null; String q = null;
StringBuffer b = new StringBuffer("SELECT count(*) FROM ").append(table); StringBuffer tables = new StringBuffer(table);
if (rel.additionalTables != null) {
tables.append(',').append(rel.additionalTables);
}
StringBuffer b = new StringBuffer("SELECT count(*) FROM ").append(tables);
if (home.getSubnodeRelation() != null) { if (home.getSubnodeRelation() != null) {
// use the manually set subnoderelation of the home node // use the manually set subnoderelation of the home node
@ -1398,10 +1418,16 @@ public final class NodeManager {
Statement stmt = null; Statement stmt = null;
StringBuffer tables = new StringBuffer(table);
if (rel.additionalTables != null) {
tables.append(',').append(rel.additionalTables);
}
try { try {
StringBuffer q = new StringBuffer("SELECT ").append(namefield) StringBuffer q = new StringBuffer("SELECT ").append(namefield)
.append(" FROM ") .append(" FROM ")
.append(table); .append(tables);
if (home.getSubnodeRelation() != null) { if (home.getSubnodeRelation() != null) {
q.append(" ").append(home.getSubnodeRelation()); q.append(" ").append(home.getSubnodeRelation());
@ -1558,6 +1584,10 @@ public final class NodeManager {
Relation[] joins = dbm.getJoins(); Relation[] joins = dbm.getJoins();
StringBuffer q = dbm.getSelect(); StringBuffer q = dbm.getSelect();
if (rel.additionalTables != null) {
q.append(',').append(rel.additionalTables);
}
if (home.getSubnodeRelation() != null && !rel.isComplexReference()) { if (home.getSubnodeRelation() != null && !rel.isComplexReference()) {
// combine our key with the constraints in the manually set subnode relation // combine our key with the constraints in the manually set subnode relation
q.append("WHERE "); q.append("WHERE ");