Author: brj
Date: Fri Jan 27 13:23:30 2006
New Revision: 372989

URL: http://svn.apache.org/viewcvs?rev=372989&view=rev
Log:
bugfix and testcase for quoted names

Added:
    
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QuotedTest.java
Modified:
    
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java
    db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml
    db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/AllTests.java

Modified: 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java?rev=372989&r1=372988&r2=372989&view=diff
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
 (original)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
 Fri Jan 27 13:23:30 2006
@@ -1584,6 +1584,17 @@
     }
 
     /**
+     * Append the TableAlias
+     * @param anAlias
+     * @param buf
+     */
+    private void appendTableAlias(TableAlias anAlias, StringBuffer buf)
+    {
+        appendTable(anAlias.table, buf);
+        buf.append(" ").append(anAlias.alias);
+    }
+
+    /**
      * Appends to the statement table and all tables joined to it.
      * @param alias the table alias
      * @param where append conditions for WHERE clause here
@@ -1604,14 +1615,14 @@
             if (getQuery() instanceof MtoNQuery)
             {
                 MtoNQuery mnQuery = (MtoNQuery)m_query; 
-                buf.append(getTableAliasForPath(mnQuery.getIndirectionTable(), 
null).getTableAndAlias());
+                
appendTableAlias(getTableAliasForPath(mnQuery.getIndirectionTable(), null), 
buf);
                 buf.append(", ");
             }           
-            buf.append(alias.getTableAndAlias());
+            appendTableAlias(alias, buf);
         }
         else if (joinSyntax != SQL92_NOPAREN_JOIN_SYNTAX)
         {
-            buf.append(alias.getTableAndAlias());
+            appendTableAlias(alias, buf);
         }
 
         if (!alias.hasJoins())

Modified: 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java?rev=372989&r1=372988&r2=372989&view=diff
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java
 (original)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/platforms/PlatformDefaultImpl.java
 Fri Jan 27 13:23:30 2006
@@ -455,7 +455,14 @@
      */
     public String quoteName(String aString)
     {
-        return SqlHelper.stripOjbQuotes(aString);
+        String result = SqlHelper.stripOjbQuotes(aString);
+        
+        if (aString.length() > result.length())
+        {
+            result = getQuotedName(result);           
+        }
+               
+        return result; 
     }
     
     /**

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml?rev=372989&r1=372988&r2=372989&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml Fri Jan 27 
13:23:30 2006
@@ -74,6 +74,18 @@
     </foreign-key>
   </table>
 
+    <table name="QUOTED_ARTICLE">
+        <column name="ARTICLE_ID" required="true" primaryKey="true" 
type="INTEGER"/>
+        <column name="ARTICLE_NAME" type="VARCHAR" size="150"/>
+        <column name="GROUP_ID" type="INTEGER"/>
+        <column name="UNIT" type="VARCHAR" size="150"/>
+        <column name="PRICE" type="FLOAT"/>
+        <column name="STOCK" type="INTEGER"/>
+        <foreign-key foreignTable="Kategorien">
+          <reference local="GROUP_ID" foreign="Kategorie_Nr"/>
+        </foreign-key>
+    </table>
+
   <table name="BOOKS">
     <column name="Artikel_Nr" required="true" primaryKey="true" 
type="INTEGER"/>
     <column name="Artikelname" type="VARCHAR" size="150"/>

Modified: 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/AllTests.java
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/AllTests.java?rev=372989&r1=372988&r2=372989&view=diff
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/AllTests.java 
(original)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/AllTests.java 
Fri Jan 27 13:23:30 2006
@@ -48,6 +48,7 @@
         suite.addTestSuite(QueryTest.class);
         suite.addTestSuite(EmptyTableTest.class);
         suite.addTestSuite(PersistenceBrokerTest.class);
+        suite.addTestSuite(QuotedTest.class);        
         suite.addTestSuite(BrokerExamples.class);
         suite.addTestSuite(ProxyExamples.class);
         suite.addTestSuite(PolymorphicExtents.class);

Added: 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QuotedTest.java
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QuotedTest.java?rev=372989&view=auto
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QuotedTest.java 
(added)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QuotedTest.java 
Fri Jan 27 13:23:30 2006
@@ -0,0 +1,253 @@
+/*
+ * Created on 25.11.2004
+ *
+ * To change the template for this generated file go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+package org.apache.ojb.broker;
+
+import java.util.Collection;
+
+import org.apache.ojb.broker.query.Criteria;
+import org.apache.ojb.broker.query.Query;
+import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.junit.PBTestCase;
+
+/**
+ * Test for Quoted Identifiers.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Jakob Braeuchi</a>
+ * @version $Id: QuotedTest.java 364933 2005-08-27 12:44:04Z arminw $
+ */
+public class QuotedTest extends PBTestCase
+{
+    private static final String ARTICLE_NAME = "Quoted Article";
+    private static final String PG_NAME = "Quoted Article ProductGroup";
+    
+    public static void main(String[] args)
+    {
+        String[] arr = {QuotedTest.class.getName()};
+        junit.textui.TestRunner.main(arr);
+    }
+
+    public void testRead()
+    {
+        String name = "_testRead_" + System.currentTimeMillis();
+        Integer lastInsert= null;
+        broker.beginTransaction();
+        for(int i=0;i<10;i++)
+        {
+            QuotedArticle a = new QuotedArticle();
+            a.setArticleName(ARTICLE_NAME + name);
+            a.setUnit("123");
+            broker.store(a);
+            if(i==9)
+            {
+                lastInsert = a.getArticleId();
+            }
+        }
+        broker.commitTransaction();
+
+        Criteria crit = new Criteria();
+        Criteria critSub = new Criteria();
+        critSub.addLike("articleName", ARTICLE_NAME + name);
+        crit.addAndCriteria(critSub);
+        crit.addLessThan("articleId", lastInsert);
+        Query q = QueryFactory.newQuery(QuotedArticle.class, crit);
+
+        Collection results = broker.getCollectionByQuery(q);
+        assertNotNull(results);
+        assertEquals(9, results.size());
+
+        // compare with count
+        int count = broker.getCount(q);
+        assertEquals(results.size(), count);       
+    }
+    
+    public void testInsert()
+    {
+        String postfix = "_" + System.currentTimeMillis();
+        QuotedArticle a = new QuotedArticle();
+        ProductGroup pg = new ProductGroup();
+
+        pg.setGroupName(PG_NAME + postfix);
+        a.setArticleName(ARTICLE_NAME + postfix);
+        a.setUnit("123");
+        a.setProductGroup(pg);
+
+        broker.beginTransaction();
+        broker.store(a);
+        broker.commitTransaction();
+        
+        broker.clearCache();
+        
+        Criteria crit = new Criteria();
+        crit.addEqualTo("articleName", ARTICLE_NAME + postfix);
+        Query q = QueryFactory.newQuery(QuotedArticle.class, crit);
+
+        Collection results = broker.getCollectionByQuery(q);
+        assertNotNull(results);
+        assertEquals(1, results.size());
+    }
+
+    public void testUpdate()
+    {
+        String postfix = "_" + System.currentTimeMillis();
+        QuotedArticle a = new QuotedArticle();
+        ProductGroup pg = new ProductGroup();
+
+        pg.setGroupName(PG_NAME + postfix);
+        a.setArticleName(ARTICLE_NAME + postfix);
+        a.setUnit("123");
+        a.setProductGroup(pg);
+
+        broker.beginTransaction();
+        broker.store(a);
+        broker.commitTransaction();
+        Identity id = broker.serviceIdentity().buildIdentity(a);
+        
+        broker.clearCache();
+        
+        QuotedArticle result = (QuotedArticle) broker.getObjectByIdentity(id);
+        assertNotNull(result);
+        assertEquals(result.getArticleName(), ARTICLE_NAME + postfix);
+        
+        result.setArticleName(ARTICLE_NAME + "_Updated" + postfix);
+        broker.beginTransaction();
+        broker.store(result);
+        broker.commitTransaction();
+
+        broker.clearCache();
+        
+        QuotedArticle updatedResult = (QuotedArticle) 
broker.getObjectByIdentity(id);
+        assertNotNull(updatedResult);
+        assertEquals(updatedResult.getArticleName(), ARTICLE_NAME + "_Updated" 
+ postfix);
+    }
+
+    public void testDelete()
+    {
+        String postfix = "_" + System.currentTimeMillis();
+        QuotedArticle a = new QuotedArticle();
+        ProductGroup pg = new ProductGroup();
+
+        pg.setGroupName(PG_NAME + postfix);
+        a.setArticleName(ARTICLE_NAME + postfix);
+        a.setUnit("123");
+        a.setProductGroup(pg);
+
+        broker.beginTransaction();
+        broker.store(a);
+        broker.commitTransaction();
+        Identity id = broker.serviceIdentity().buildIdentity(a);
+        
+        broker.clearCache();
+        
+        QuotedArticle result = (QuotedArticle) broker.getObjectByIdentity(id);
+        assertNotNull(result);
+        assertEquals(result.getArticleName(), ARTICLE_NAME + postfix);
+        
+        broker.beginTransaction();
+        broker.delete(result);
+        broker.commitTransaction();
+
+        broker.clearCache();
+        
+        QuotedArticle deletedResult = (QuotedArticle) 
broker.getObjectByIdentity(id);
+        assertNull(deletedResult);
+    }
+
+//    private void deleteProductGroups()
+//    {
+//        Criteria crit = new Criteria();
+//        crit.addLike("groupName", PG_NAME + "%");
+//        Query q = QueryFactory.newQuery(ProductGroup.class, crit);
+//        broker.deleteByQuery(q);
+//    }
+//
+//    private void deleteArticles()
+//    {
+//        Criteria crit = new Criteria();
+//        crit.addLike("articleName", ARTICLE_NAME + "%");
+//        Query q = QueryFactory.newQuery(QuotedArticle.class, crit);
+//        broker.deleteByQuery(q);
+//    }
+
+
+    //========================================================
+    // inner classes / persistent test classes
+    //========================================================
+
+    public static class QuotedArticle
+    {
+        private Integer articleId;
+        private String articleName;
+        private double price;
+        private InterfaceProductGroup productGroup;
+        private int stock;
+        private String unit;
+
+        public QuotedArticle()
+        {
+        }
+
+        public Integer getArticleId()
+        {
+            return articleId;
+        }
+
+        public void setArticleId(Integer articleId)
+        {
+            this.articleId = articleId;
+        }
+
+        public String getArticleName()
+        {
+            return articleName;
+        }
+
+        public void setArticleName(String articleName)
+        {
+            this.articleName = articleName;
+        }
+
+        public InterfaceProductGroup getProductGroup()
+        {
+            return productGroup;
+        }
+
+        public void setProductGroup(InterfaceProductGroup productGroup)
+        {
+            this.productGroup = productGroup;
+        }
+
+        public double getPrice()
+        {
+            return price;
+        }
+
+        public void setPrice(double price)
+        {
+            this.price = price;
+        }
+
+        public int getStock()
+        {
+            return stock;
+        }
+
+        public void setStock(int stock)
+        {
+            this.stock = stock;
+        }
+
+        public String getUnit()
+        {
+            return unit;
+        }
+
+        public void setUnit(String unit)
+        {
+            this.unit = unit;
+        }
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to