You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jaxme-dev@ws.apache.org by jo...@apache.org on 2007/08/20 10:21:50 UTC
svn commit: r567590 - in /webservices/jaxme/branches/b0_5: .settings/
src/jaxme/org/apache/ws/jaxme/junit/ src/js/org/apache/ws/jaxme/sqls/
src/js/org/apache/ws/jaxme/sqls/impl/ src/js/org/apache/ws/jaxme/sqls/junit/
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.resources.prefs
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/IntersectionStatement.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/MinusStatement.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/SelectCombinationStatement.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/UnionStatement.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/IntersectionStatementImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/MinusStatementImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/SelectCombinationStatementImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/UnionStatementImpl.java
Modified:
webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/junit/BindingsTest.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/SQLFactory.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/ColumnImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/SQLFactoryImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/SQLGeneratorImpl.java
webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/junit/CreateTest.java
Added: webservices/jaxme/branches/b0_5/.settings/org.eclipse.core.resources.prefs
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/.settings/org.eclipse.core.resources.prefs?rev=567590&view=auto
==============================================================================
--- webservices/jaxme/branches/b0_5/.settings/org.eclipse.core.resources.prefs (added)
+++ webservices/jaxme/branches/b0_5/.settings/org.eclipse.core.resources.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/jaxme/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/jaxme/junit/BindingsTest.java (original)
+++ webservices/jaxme/branches/b0_5/src/jaxme/org/apache/ws/jaxme/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/sqls/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/sqls/IntersectionStatement.java (added)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/MinusStatement.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/MinusStatement.java?rev=567590&view=auto
==============================================================================
--- webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/MinusStatement.java (added)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/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=567589&r2=567590&view=diff
==============================================================================
--- webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/SQLFactory.java (original)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/SelectCombinationStatement.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/SelectCombinationStatement.java?rev=567590&view=auto
==============================================================================
--- webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/SelectCombinationStatement.java (added)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/UnionStatement.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/UnionStatement.java?rev=567590&view=auto
==============================================================================
--- webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/UnionStatement.java (added)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/impl/ColumnImpl.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/ColumnImpl.java?rev=567590&r1=567589&r2=567590&view=diff
==============================================================================
--- webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/ColumnImpl.java (original)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/impl/IntersectionStatementImpl.java
URL: http://svn.apache.org/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/sqls/impl/IntersectionStatementImpl.java (added)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/impl/MinusStatementImpl.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/MinusStatementImpl.java?rev=567590&view=auto
==============================================================================
--- webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/MinusStatementImpl.java (added)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/impl/SQLFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/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/sqls/impl/SQLFactoryImpl.java (original)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/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/sqls/impl/SQLGeneratorImpl.java (original)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/impl/SelectCombinationStatementImpl.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/SelectCombinationStatementImpl.java?rev=567590&view=auto
==============================================================================
--- webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/SelectCombinationStatementImpl.java (added)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/impl/UnionStatementImpl.java
URL: http://svn.apache.org/viewvc/webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/UnionStatementImpl.java?rev=567590&view=auto
==============================================================================
--- webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/impl/UnionStatementImpl.java (added)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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/sqls/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/sqls/junit/CreateTest.java (original)
+++ webservices/jaxme/branches/b0_5/src/js/org/apache/ws/jaxme/sqls/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