Browse Source

quote remotedb, add support for remotedb type

git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@388 f203690c-595d-4dc9-a70b-905162fa7fd2
tags/rel_1_1_19
James Ahlborn 15 years ago
parent
commit
b07155fe47

+ 7
- 3
src/java/com/healthmarketscience/jackcess/query/AppendQuery.java View File

@@ -46,10 +46,14 @@ public class AppendQuery extends BaseSelectQuery
return getTypeRow().name1;
}

public String getRemoteDb() {
public String getRemoteDbPath() {
return getTypeRow().name2;
}

public String getRemoteDbType() {
return getTypeRow().expression;
}

protected List<Row> getValueRows() {
return filterRowsByFlag(super.getColumnRows(), APPEND_VALUE_FLAG);
}
@@ -71,11 +75,11 @@ public class AppendQuery extends BaseSelectQuery
protected void toSQLString(StringBuilder builder)
{
builder.append("INSERT INTO ").append(getTargetTable());
toRemoteDb(builder, getRemoteDb());
toRemoteDb(builder, getRemoteDbPath(), getRemoteDbType());
builder.append(NEWLINE);
List<String> values = getValues();
if(!values.isEmpty()) {
builder.append("VALUES (").append(values).append(")");
builder.append("VALUES (").append(values).append(')');
} else {
toSQLSelectString(builder, true);
}

+ 10
- 4
src/java/com/healthmarketscience/jackcess/query/BaseSelectQuery.java View File

@@ -52,7 +52,7 @@ public abstract class BaseSelectQuery extends Query
builder.append("SELECT ");
String selectType = getSelectType();
if(!DEFAULT_TYPE.equals(selectType)) {
builder.append(selectType).append(" ");
builder.append(selectType).append(' ');
}
}

@@ -62,7 +62,7 @@ public abstract class BaseSelectQuery extends Query
List<String> fromTables = getFromTables();
if(!fromTables.isEmpty()) {
builder.append(NEWLINE).append("FROM ").append(fromTables);
toRemoteDb(builder, getFromRemoteDb());
toRemoteDb(builder, getFromRemoteDbPath(), getFromRemoteDbType());
}

String whereExpr = getWhereExpression();
@@ -135,9 +135,15 @@ public abstract class BaseSelectQuery extends Query
}

@Override
public String getFromRemoteDb()
public String getFromRemoteDbPath()
{
return super.getFromRemoteDb();
return super.getFromRemoteDbPath();
}

@Override
public String getFromRemoteDbType()
{
return super.getFromRemoteDbType();
}

@Override

+ 6
- 2
src/java/com/healthmarketscience/jackcess/query/MakeTableQuery.java View File

@@ -46,15 +46,19 @@ public class MakeTableQuery extends BaseSelectQuery
return getTypeRow().name1;
}

public String getRemoteDb() {
public String getRemoteDbPath() {
return getTypeRow().name2;
}

public String getRemoteDbType() {
return getTypeRow().expression;
}

@Override
protected void toSelectInto(StringBuilder builder)
{
builder.append(" INTO ").append(getTargetTable());
toRemoteDb(builder, getRemoteDb());
toRemoteDb(builder, getRemoteDbPath(), getRemoteDbType());
}

@Override

+ 23
- 9
src/java/com/healthmarketscience/jackcess/query/Query.java View File

@@ -181,7 +181,7 @@ public abstract class Query
List<String> params = getParameters();
if(!params.isEmpty()) {
builder.append("PARAMETERS ").append(params)
.append(";").append(NEWLINE);
.append(';').append(NEWLINE);
}
}

@@ -195,9 +195,9 @@ public abstract class Query
throw new IllegalStateException("Unknown param type " + row.flag);
}
builder.append(name).append(" ").append(typeName);
builder.append(name).append(' ').append(typeName);
if((TEXT_FLAG.equals(row.flag)) && (getIntValue(row.extra, 0) > 0)) {
builder.append("(").append(row.extra).append(")");
builder.append('(').append(row.extra).append(')');
}
}
}).format();
@@ -266,11 +266,16 @@ public abstract class Query
throw new IllegalStateException("Cannot find join table " + table);
}

protected String getFromRemoteDb()
protected String getFromRemoteDbPath()
{
return getRemoteDatabaseRow().name1;
}

protected String getFromRemoteDbType()
{
return getRemoteDatabaseRow().expression;
}

protected String getWhereExpression()
{
return getWhereRow().expression;
@@ -318,7 +323,7 @@ public abstract class Query
builder.append(NEWLINE).append(accessType);
}
builder.append(";");
builder.append(';');
}
return builder.toString();
}
@@ -446,13 +451,22 @@ public abstract class Query
protected static StringBuilder toQuotedExpr(StringBuilder builder,
String expr)
{
return builder.append("[").append(expr).append("]");
return builder.append('[').append(expr).append(']');
}

protected static StringBuilder toRemoteDb(StringBuilder builder,
String remoteDb) {
if(remoteDb != null) {
builder.append(" IN ").append(remoteDb);
String remoteDbPath,
String remoteDbType) {
if((remoteDbPath != null) || (remoteDbType != null)) {
// note, always include path string, even if empty
builder.append(" IN '");
if(remoteDbPath != null) {
builder.append(remoteDbPath);
}
builder.append('\'');
if(remoteDbType != null) {
builder.append(" [").append(remoteDbType).append(']');
}
}
return builder;
}

+ 1
- 1
src/java/com/healthmarketscience/jackcess/query/UnionQuery.java View File

@@ -77,7 +77,7 @@ public class UnionQuery extends Query
.append("UNION ");
String unionType = getUnionType();
if(!DEFAULT_TYPE.equals(unionType)) {
builder.append(unionType).append(" ");
builder.append(unionType).append(' ');
}
builder.append(getUnionString2());
List<String> orderings = getOrderings();

+ 8
- 3
src/java/com/healthmarketscience/jackcess/query/UpdateQuery.java View File

@@ -47,9 +47,14 @@ public class UpdateQuery extends Query
return super.getFromTables();
}

public String getRemoteDb()
public String getRemoteDbPath()
{
return super.getFromRemoteDb();
return super.getFromRemoteDbPath();
}

public String getRemoteDbType()
{
return super.getFromRemoteDbType();
}

public List<String> getNewValues()
@@ -72,7 +77,7 @@ public class UpdateQuery extends Query
protected void toSQLString(StringBuilder builder)
{
builder.append("UPDATE ").append(getTargetTables());
toRemoteDb(builder, getRemoteDb());
toRemoteDb(builder, getRemoteDbPath(), getRemoteDbType());

builder.append(NEWLINE).append("SET ").append(getNewValues());


Loading…
Cancel
Save