List Info

Thread: svn commit: r567590 - in /webservices/jaxme/branches/b0_5: .settings/ src/jaxme/org/apache/ws/jaxme/




svn commit: r567590 - in /webservices/jaxme/branches/b0_5: .settings/ src/jaxme/org/apache/ws/jaxme/
country flaguser name
United States
2007-08-20 03:21:50
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-unsubscribews.apache.org
For additional commands, e-mail: jaxme-dev-helpws.apache.org


[1]

about | contact  Other archives ( Real Estate discussion Medical topics )