Author: jochen
Date: Mon Aug 20 01:21:49 2007
New Revision: 567590
URL:
http://svn.apache.org/viewvc?rev=567590&view=rev
Log: (empty)
Added:
webservices/jaxme/branches/b0_5/.settings/org.eclipse.core.r
esources.prefs
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/IntersectionStatement.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/MinusStatement.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/SelectCombinationStatement.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/UnionStatement.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/IntersectionStatementImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/MinusStatementImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SelectCombinationStatementImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/UnionStatementImpl.java
Modified:
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxm
e/junit/BindingsTest.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/SQLFactory.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/ColumnImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SQLFactoryImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SQLGeneratorImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/junit/CreateTest.java
Added:
webservices/jaxme/branches/b0_5/.settings/org.eclipse.core.r
esources.prefs
URL: http://svn.apache.org/viewvc/webservices/jax
me/branches/b0_5/.settings/org.eclipse.core.resources.prefs?
rev=567590&view=auto
============================================================
==================
---
webservices/jaxme/branches/b0_5/.settings/org.eclipse.core.r
esources.prefs (added)
+++
webservices/jaxme/branches/b0_5/.settings/org.eclipse.core.r
esources.prefs Mon Aug 20 01:21:49 2007
 -0,0
+1,3 
+#Fri Apr 13 22:08:28 CEST 2007
+eclipse.preferences.version=1
+encoding//src/test/jaxb/enumeration.xsd=UTF8
Modified:
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxm
e/junit/BindingsTest.java
URL: http:
//svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/
jaxme/org/apache/ws/jaxme/junit/BindingsTest.java?rev=567590
&r1=567589&r2=567590&view=diff
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxm
e/junit/BindingsTest.java (original)
+++
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxm
e/junit/BindingsTest.java Mon Aug 20 01:21:49 2007
 -61,4
+61,22 
impFoo.setRequiredLong(1L);
impFoo.setOptionalLong(new Long(1));
}
+
+ /**
+ * Tests running the generator with a binding file.
+ */
+ public void testDatmlRaw() throws Exception {
+ try {
+ Generator g = new GeneratorImpl();
+ g.setTargetDirectory(new
File("build/tests/datml/src"));
+ g.setResourceTargetDirectory(new
File("build/tests/datml/src"));
+ g.addBindings(new InputSource(new
File("src/test/jaxb/datml-raw-de-2_0.jxb").toURI()
.toURL().toExternalForm()));
+ SchemaReader sr = new JAXBSchemaReader();
+ sr.setGenerator(g);
+ g.setSchemaReader(sr);
+ g.generate(new
File("src/test/jaxb/datml-raw-de-2_0.foo"));
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
}
Added:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/IntersectionStatement.java
URL: http://svn.apache.org/viewvc
/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/
sqls/IntersectionStatement.java?rev=567590&view=auto
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/IntersectionStatement.java (added)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/IntersectionStatement.java Mon Aug 20 01:21:49 2007
 -0,0
+1,5 
+package org.apache.ws.jaxme.sqls;
+
+public interface IntersectionStatement extends
SelectCombinationStatement {
+
+}
Added:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/MinusStatement.java
URL: http://svn.apache.org/viewvc/webser
vices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/Mi
nusStatement.java?rev=567590&view=auto
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/MinusStatement.java (added)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/MinusStatement.java Mon Aug 20 01:21:49 2007
 -0,0
+1,9 
+package org.apache.ws.jaxme.sqls;
+
+
+/**
+ * Interface of a "select ... MINUS select ..."
statement.
+ */
+public interface MinusStatement extends
SelectCombinationStatement {
+
+}
Modified:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/SQLFactory.java
URL: http://svn.
apache.org/viewvc/webservices/jaxme/branches/b0_5/src/js/org
/apache/ws/jaxme/sqls/SQLFactory.java?rev=567590&r1=5675
89&r2=567590&view=diff
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/SQLFactory.java (original)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/SQLFactory.java Mon Aug 20 01:21:49 2007
 -89,6
+89,21 
*/
public DeleteStatement newDeleteStatement();
+ /**
+ * <p>Creates a new UNION statement.</p>
+ */
+ public UnionStatement newUnionStatement();
+
+ /**
+ * <p>Creates a new INTERSECTION
statement.</p>
+ */
+ public IntersectionStatement newIntersectionStatement();
+
+ /**
+ * <p>Creates a new MINUS statement.</p>
+ */
+ public MinusStatement newMinusStatement();
+
/** <p>Creates a new { link Schema} with the given
name.</p>
*/
public Schema newSchema(String pName);
Added:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/SelectCombinationStatement.java
URL: http://svn.apache.org/v
iewvc/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/j
axme/sqls/SelectCombinationStatement.java?rev=567590&vie
w=auto
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/SelectCombinationStatement.java (added)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/SelectCombinationStatement.java Mon Aug 20 01:21:49
2007
 -0,0
+1,21 
+package org.apache.ws.jaxme.sqls;
+
+import java.util.Iterator;
+
+
+/**
+ * Common base interface for { link UnionStatement}, and
+ * { link IntersectionStatement}.
+ */
+public interface SelectCombinationStatement extends
Statement {
+ /**
+ * Adds a select statement to the given
"union", or
+ * "intersection" statement.
+ */
+ void addStatement(SelectStatement pStatement);
+
+ /**
+ * Returns an iterator over all the select statements.
+ */
+ Iterator getSelectStatements();
+}
Added:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/UnionStatement.java
URL: http://svn.apache.org/viewvc/webser
vices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/Un
ionStatement.java?rev=567590&view=auto
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/UnionStatement.java (added)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/UnionStatement.java Mon Aug 20 01:21:49 2007
 -0,0
+1,19 
+package org.apache.ws.jaxme.sqls;
+
+
+/**
+ * Interface of a "select .... union select ..."
statement.
+ */
+public interface UnionStatement extends
SelectCombinationStatement {
+ /**
+ * Sets, whether this is a "union all"
statement. By default,
+ * it isn't.
+ */
+ void setAll(boolean pAll);
+
+ /**
+ * Returns, whether this is a "union all"
statement. By default,
+ * it isn't.
+ */
+ boolean isAll();
+}
Modified:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/ColumnImpl.java
URL: http:/
/svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/j
s/org/apache/ws/jaxme/sqls/impl/ColumnImpl.java?rev=567590&a
mp;r1=567589&r2=567590&view=diff
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/ColumnImpl.java (original)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/ColumnImpl.java Mon Aug 20 01:21:49 2007
 -36,16
+36,30 
return o != null && (o instanceof
Column.Name) && super.equals(o);
}
}
- public static class TypeImpl extends
SQLFactoryImpl.IdentImpl implements Column.Type {
- private int jdbcType;
- public TypeImpl(String pName, int pJDBCType) {
- super(pName);
- jdbcType = pJDBCType;
+
+ public static class TypeImpl extends
SQLFactoryImpl.IdentImpl implements Column.Type {
+ private int jdbcType;
+ public TypeImpl(String pName, int pJDBCType) {
+ super(pName);
+ jdbcType = pJDBCType;
+ }
+ public int getJDBCType() {
+ return jdbcType;
+ }
+ public int hashCode() {
+ return 31 * jdbcType;
+ }
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final TypeImpl other = (TypeImpl) obj;
+ return jdbcType == other.jdbcType;
+ }
}
- public int getJDBCType() {
- return jdbcType;
- }
- }
private Table table;
Added:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/IntersectionStatementImpl.java
URL: http://svn.apache.o
rg/viewvc/webservices/jaxme/branches/b0_5/src/js/org/apache/
ws/jaxme/sqls/impl/IntersectionStatementImpl.java?rev=567590
&view=auto
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/IntersectionStatementImpl.java (added)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/IntersectionStatementImpl.java Mon Aug 20 01:21:49
2007
 -0,0
+1,15 
+package org.apache.ws.jaxme.sqls.impl;
+
+import org.apache.ws.jaxme.sqls.IntersectionStatement;
+import org.apache.ws.jaxme.sqls.SQLFactory;
+
+
+/**
+ * Default implementation of { link
IntersectionStatement}.
+ */
+public class IntersectionStatementImpl extends
SelectCombinationStatementImpl
+ implements IntersectionStatement {
+ protected IntersectionStatementImpl(SQLFactory
pFactory) {
+ super(pFactory);
+ }
+}
Added:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/MinusStatementImpl.java
URL: http://svn.apache.org/view
vc/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxm
e/sqls/impl/MinusStatementImpl.java?rev=567590&view=auto
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/MinusStatementImpl.java (added)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/MinusStatementImpl.java Mon Aug 20 01:21:49 2007
 -0,0
+1,31 
+package org.apache.ws.jaxme.sqls.impl;
+
+import java.util.Iterator;
+
+import org.apache.ws.jaxme.sqls.MinusStatement;
+import org.apache.ws.jaxme.sqls.SQLFactory;
+import org.apache.ws.jaxme.sqls.SelectStatement;
+
+
+
+/**
+ * Default implementation of { link MinusStatement}.
+ */
+public class MinusStatementImpl extends
SelectCombinationStatementImpl
+ implements MinusStatement {
+ protected MinusStatementImpl(SQLFactory pFactory) {
+ super(pFactory);
+ }
+
+ public void addStatement(SelectStatement pStatement) {
+ super.addStatement(pStatement);
+ Iterator iter = getSelectStatements();
+ iter.next();
+ if (iter.hasNext()) {
+ iter.next();
+ if (iter.hasNext()) {
+ throw new IllegalArgumentException("A
MINUS statement must not have more than two SELECT
statements.");
+ }
+ }
+ }
+}
Modified:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SQLFactoryImpl.java
URL: ht
tp://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/s
rc/js/org/apache/ws/jaxme/sqls/impl/SQLFactoryImpl.java?rev=
567590&r1=567589&r2=567590&view=diff
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SQLFactoryImpl.java (original)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SQLFactoryImpl.java Mon Aug 20 01:21:49 2007
 -34,6
+34,8 
import org.apache.ws.jaxme.sqls.ForeignKey;
import org.apache.ws.jaxme.sqls.Index;
import org.apache.ws.jaxme.sqls.InsertStatement;
+import org.apache.ws.jaxme.sqls.IntersectionStatement;
+import org.apache.ws.jaxme.sqls.MinusStatement;
import org.apache.ws.jaxme.sqls.ObjectFactory;
import org.apache.ws.jaxme.sqls.SQLFactory;
import org.apache.ws.jaxme.sqls.SQLGenerator;
 -41,6
+43,7 
import org.apache.ws.jaxme.sqls.SelectStatement;
import org.apache.ws.jaxme.sqls.StringColumn;
import org.apache.ws.jaxme.sqls.Table;
+import org.apache.ws.jaxme.sqls.UnionStatement;
import org.apache.ws.jaxme.sqls.UpdateStatement;
 -608,4
+611,16 
public Table getTable(Connection pConnection, String
pSchema, String pTable) throws SQLException {
return getTable(pConnection, pSchema == null ? null :
new SchemaImpl.NameImpl(pSchema), new
TableImpl.NameImpl(pTable));
}
+
+ public IntersectionStatement newIntersectionStatement()
{
+ return new IntersectionStatementImpl(this);
+ }
+
+ public UnionStatement newUnionStatement() {
+ return new UnionStatementImpl(this);
+ }
+
+ public MinusStatement newMinusStatement() {
+ return new MinusStatementImpl(this);
+ }
}
Modified:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SQLGeneratorImpl.java
URL:
http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5
/src/js/org/apache/ws/jaxme/sqls/impl/SQLGeneratorImpl.java?
rev=567590&r1=567589&r2=567590&view=diff
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SQLGeneratorImpl.java (original)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SQLGeneratorImpl.java Mon Aug 20 01:21:49 2007
 -34,11
+34,14 
import org.apache.ws.jaxme.sqls.ForeignKey;
import org.apache.ws.jaxme.sqls.Function;
import org.apache.ws.jaxme.sqls.Index;
+import org.apache.ws.jaxme.sqls.IntersectionStatement;
+import org.apache.ws.jaxme.sqls.MinusStatement;
import org.apache.ws.jaxme.sqls.RawSQLCode;
import org.apache.ws.jaxme.sqls.SQLGenerator;
import org.apache.ws.jaxme.sqls.InsertStatement;
import org.apache.ws.jaxme.sqls.JoinReference;
import org.apache.ws.jaxme.sqls.Schema;
+import
org.apache.ws.jaxme.sqls.SelectCombinationStatement;
import org.apache.ws.jaxme.sqls.SelectStatement;
import org.apache.ws.jaxme.sqls.SelectTableReference;
import org.apache.ws.jaxme.sqls.SetStatement;
 -46,6
+49,7 
import org.apache.ws.jaxme.sqls.StringColumn;
import org.apache.ws.jaxme.sqls.Table;
import org.apache.ws.jaxme.sqls.TableReference;
+import org.apache.ws.jaxme.sqls.UnionStatement;
import org.apache.ws.jaxme.sqls.UpdateStatement;
import org.apache.ws.jaxme.sqls.Value;
 -979,9
+983,66 
}
return sb.toString();
}
-
+
+ protected void checkSameStructure(SelectStatement pSt1,
SelectStatement pSt2) {
+ final Iterator it1 = pSt1.getResultColumns();
+ final Iterator it2 = pSt2.getResultColumns();
+ while (it1.hasNext()) {
+ if (!it2.hasNext()) {
+ throw new
IllegalArgumentException("The SELECT statements in the
UNION, INTERSECT, or MINUS statements have different number
of columns.");
+ }
+ final ColumnReference cr1 = (ColumnReference)
it1.next();
+ final ColumnReference cr2 = (ColumnReference)
it2.next();
+ final Column c1 = cr1.getColumn();
+ final Column c2 = cr2.getColumn();
+ final Column.Name n1 = cr1.getAlias() == null ?
c1.getName() : cr1.getAlias();
+ final Column.Name n2 = cr2.getAlias() == null ?
c2.getName() : cr2.getAlias();
+ if (!n1.getName().equals(n2.getName())) {
+ throw new
IllegalArgumentException("The SELECT statements in the
UNION, INTERSECT, or MINUS statements have varying names:
" +
+ n1.getName() + " vs. " +
n2.getName());
+ }
+ if (!c1.getType().equals(c2.getType())) {
+ throw new
IllegalArgumentException("The SELECT statements in the
UNION, INTERSECT, or MINUS statements have varying types:
" +
+ c1.getType().getName() + " vs.
" + c2.getType().getName());
+ }
+ }
+ if (it2.hasNext()) {
+ throw new IllegalArgumentException("The
SELECT statements in the UNION, INTERSECT, or MINUS
statements have different number of columns.");
+ }
+ }
+
+ protected String
getSelectCombinationStatement(SelectCombinationStatement
pStatement, String pSep) {
+ final Iterator iter =
pStatement.getSelectStatements();
+ if (!iter.hasNext()) {
+ throw new IllegalArgumentException("A
UNION, INTERSECT, or MINUS statement requires at least on
SELECT statement.");
+ }
+ final SelectStatement first = (SelectStatement)
iter.next();
+ final String s = getQuery(first);
+ if (!iter.hasNext()) {
+ return s;
+ }
+ StringBuffer sb = new StringBuffer();
+ sb.append('(');
+ sb.append(s);
+ sb.append(')');
+ int i = 0;
+ while (iter.hasNext()) {
+ if (++i > 2 && pStatement
instanceof MinusStatement) {
+ throw new IllegalArgumentException("A
MINUS statement must not have more that two SELECT
statements.");
+ }
+ SelectStatement other = (SelectStatement)
iter.next();
+ checkSameStructure(first, other);
+ sb.append(' ');
+ sb.append(pSep);
+ sb.append(" (");
+ sb.append(getQuery(other));
+ sb.append(')');
+ }
+ return sb.toString();
+ }
+
public String getQuery(Statement pStatement) {
- String s;
+ final String s;
if (pStatement instanceof InsertStatement) {
s = getInsertQuery((InsertStatement)
pStatement);
} else if (pStatement instanceof UpdateStatement)
{
 -990,8
+1051,16 
s = getDeleteQuery((DeleteStatement)
pStatement);
} else if (pStatement instanceof SelectStatement)
{
s = getSelectQuery((SelectStatement)
pStatement);
+ } else if (pStatement instanceof UnionStatement) {
+ final UnionStatement us = (UnionStatement)
pStatement;
+ final boolean all = us.isAll();
+ s = getSelectCombinationStatement(us, all ?
"UNION ALL" : "UNION");
+ } else if (pStatement instanceof
IntersectionStatement) {
+ s =
getSelectCombinationStatement((IntersectionStatement)
pStatement, "INTERSECT");
+ } else if (pStatement instanceof MinusStatement) {
+ s =
getSelectCombinationStatement((MinusStatement) pStatement,
"MINUS");
} else {
- throw new IllegalArgumentException("The
Statement is neither an INSERT, UPDATE, DELETE nor a SELECT
statement.");
+ throw new IllegalArgumentException("The
Statement is neither an INSERT, UPDATE, DELETE, SELECT,
UNION, INTERSECT, nor MINUS statement.");
}
return newStatement(s);
}
Added:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SelectCombinationStatementImpl.java
URL: http://svn.apa
che.org/viewvc/webservices/jaxme/branches/b0_5/src/js/org/ap
ache/ws/jaxme/sqls/impl/SelectCombinationStatementImpl.java?
rev=567590&view=auto
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SelectCombinationStatementImpl.java (added)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/SelectCombinationStatementImpl.java Mon Aug 20
01:21:49 2007
 -0,0
+1,29 
+package org.apache.ws.jaxme.sqls.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.ws.jaxme.sqls.SQLFactory;
+import
org.apache.ws.jaxme.sqls.SelectCombinationStatement;
+import org.apache.ws.jaxme.sqls.SelectStatement;
+
+
+/**
+ * Default implementation of { link SelectStatement}.
+ */
+public abstract class SelectCombinationStatementImpl
extends StatementImpl implements SelectCombinationStatement
{
+ private final List statements = new ArrayList();
+
+ protected SelectCombinationStatementImpl(SQLFactory
pFactory) {
+ super(pFactory);
+ }
+
+ public void addStatement(SelectStatement pStatement) {
+ statements.add(pStatement);
+ }
+
+ public Iterator getSelectStatements() {
+ return statements.iterator();
+ }
+}
Added:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/UnionStatementImpl.java
URL: http://svn.apache.org/view
vc/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxm
e/sqls/impl/UnionStatementImpl.java?rev=567590&view=auto
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/UnionStatementImpl.java (added)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/impl/UnionStatementImpl.java Mon Aug 20 01:21:49 2007
 -0,0
+1,24 
+package org.apache.ws.jaxme.sqls.impl;
+
+import org.apache.ws.jaxme.sqls.SQLFactory;
+import org.apache.ws.jaxme.sqls.UnionStatement;
+
+
+/**
+ * Default implementation of { link UnionStatement}.
+ */
+public class UnionStatementImpl extends
SelectCombinationStatementImpl implements UnionStatement {
+ private boolean all;
+
+ protected UnionStatementImpl(SQLFactory pFactory) {
+ super(pFactory);
+ }
+
+ public boolean isAll() {
+ return all;
+ }
+
+ public void setAll(boolean pAll) {
+ all = pAll;
+ }
+}
Modified:
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/junit/CreateTest.java
URL: http:
//svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/
js/org/apache/ws/jaxme/sqls/junit/CreateTest.java?rev=567590
&r1=567589&r2=567590&view=diff
============================================================
==================
---
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/junit/CreateTest.java (original)
+++
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/s
qls/junit/CreateTest.java Mon Aug 20 01:21:49 2007
 -31,15
+31,19 
import org.apache.ws.jaxme.sqls.ForeignKey;
import org.apache.ws.jaxme.sqls.Index;
import org.apache.ws.jaxme.sqls.InsertStatement;
+import org.apache.ws.jaxme.sqls.IntersectionStatement;
import org.apache.ws.jaxme.sqls.JoinReference;
+import org.apache.ws.jaxme.sqls.MinusStatement;
import org.apache.ws.jaxme.sqls.SQLFactory;
import org.apache.ws.jaxme.sqls.SQLGenerator;
import org.apache.ws.jaxme.sqls.Schema;
+import
org.apache.ws.jaxme.sqls.SelectCombinationStatement;
import org.apache.ws.jaxme.sqls.SelectStatement;
import org.apache.ws.jaxme.sqls.SelectTableReference;
import org.apache.ws.jaxme.sqls.StringColumn;
import org.apache.ws.jaxme.sqls.Table;
import org.apache.ws.jaxme.sqls.TableReference;
+import org.apache.ws.jaxme.sqls.UnionStatement;
import org.apache.ws.jaxme.sqls.UpdateStatement;
import org.apache.ws.jaxme.sqls.impl.SQLFactoryImpl;
import org.apache.ws.jaxme.sqls.impl.VirtualColumn;
 -453,4
+457,63 
String expect = "SELECT MyIndex, MyName, MyDate FROM
MySchema.MyTable WHERE (MyIndex+3)>5";
assertEquals(expect, got);
}
+
+ /** Test for UNION and UNION ALL.
+ */
+ public void testUnion() {
+ UnionStatement us =
getSQLFactory().newUnionStatement();
+ createSelectCombinationStatement(us);
+ SQLGenerator gen = getSQLGenerator();
+ String got = gen.getQuery(us);
+ String expect = "(SELECT MyIndex, MyName,
MyDate FROM MySchema.MyTable WHERE 'MyIndex'>5) UNION
(SELECT MyIndex, MyName, MyDate FROM MySchema.MyTable WHERE
'MyName' LIKE 'x%')";
+ assertEquals(expect, got);
+ us.setAll(true);
+ String gotAll = gen.getQuery(us);
+ String expectAll = "(SELECT MyIndex, MyName,
MyDate FROM MySchema.MyTable WHERE 'MyIndex'>5) UNION ALL
(SELECT MyIndex, MyName, MyDate FROM MySchema.MyTable WHERE
'MyName' LIKE 'x%')";
+ assertEquals(expectAll, gotAll);
+ }
+
+ private void
createSelectCombinationStatement(SelectCombinationStatement
pStatement) {
+ Table t = getBasicTable();
+ SelectStatement st1 = t.getSelectStatement();
+ SelectStatement st2 = t.getSelectStatement();
+ BooleanConstraint bc1 = st1.getWhere().createGT();
+ bc1.addPart("MyIndex");
+ bc1.addPart(5);
+ BooleanConstraint bc2 =
st2.getWhere().createLIKE();
+ bc2.addPart("MyName");
+ bc2.addPart("x%");
+ pStatement.addStatement(st1);
+ pStatement.addStatement(st2);
+ }
+
+ /** Test for INTERSECT.
+ */
+ public void testIntersect() {
+ IntersectionStatement is =
getSQLFactory().newIntersectionStatement();
+ createSelectCombinationStatement(is);
+ SQLGenerator gen = getSQLGenerator();
+ String got = gen.getQuery(is);
+ String expect = "(SELECT MyIndex, MyName,
MyDate FROM MySchema.MyTable WHERE 'MyIndex'>5) INTERSECT
(SELECT MyIndex, MyName, MyDate FROM MySchema.MyTable WHERE
'MyName' LIKE 'x%')";
+ assertEquals(expect, got);
+ }
+
+ /** Test for MINUS.
+ */
+ public void testMinus() {
+ MinusStatement ms =
getSQLFactory().newMinusStatement();
+ createSelectCombinationStatement(ms);
+ SQLGenerator gen = getSQLGenerator();
+ String got = gen.getQuery(ms);
+ String expect = "(SELECT MyIndex, MyName,
MyDate FROM MySchema.MyTable WHERE 'MyIndex'>5) MINUS
(SELECT MyIndex, MyName, MyDate FROM MySchema.MyTable WHERE
'MyName' LIKE 'x%')";
+ assertEquals(expect, got);
+
+ SelectStatement st =
getSQLFactory().newSelectStatement();
+ try {
+ ms.addStatement(st);
+ fail("Expected exception");
+ } catch (IllegalArgumentException e) {
+ // Ok
+ }
+ }
}
------------------------------------------------------------
---------
To unsubscribe, e-mail: jaxme-dev-unsubscribe ws.apache.org
For additional commands, e-mail: jaxme-dev-help ws.apache.org
|