You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by jo...@apache.org on 2010/08/23 09:29:17 UTC

svn commit: r988008 - in /labs/jaxmas/trunk/JaxMas/src: main/java/org/apache/labs/jaxmas/registry/schema/ main/java/org/apache/labs/jaxmas/registry/sql/ test/java/org/apache/labs/jaxmas/registry/schema/

Author: jochen
Date: Mon Aug 23 07:29:17 2010
New Revision: 988008

URL: http://svn.apache.org/viewvc?rev=988008&view=rev
Log:
Fixed loading of registry objects upon JOIN.

Modified:
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java
    labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/schema/MacroProcessorTest.java

Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql?rev=988008&r1=988007&r2=988008&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql Mon Aug 23 07:29:17 2010
@@ -161,6 +161,7 @@ INSERT INTO Ids (name, nextValue) VALUES
 &{Concept, 9, '00000000000000000000000000000030', '00000000000000000000000000000002', 'Replaces'}
 &{Concept, 10, '00000000000000000000000000000031', '00000000000000000000000000000002', 'RelatedTo'}
 &{Concept, 11, '00000000000000000000000000000032', '00000000000000000000000000000002', 'Supersedes'}
+&{Concept, 12, '00000000000000000000000000000051', '00000000000000000000000000000002', 'EmployeeOf'}
 
 &{Concept, 0, '00000000000000000000000000000034', '00000000000000000000000000000033', 'AttributeTypes'}
 &{Concept, 0, '00000000000000000000000000000035', '00000000000000000000000000000034', 'string'}

Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java?rev=988008&r1=988007&r2=988008&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java Mon Aug 23 07:29:17 2010
@@ -18,7 +18,6 @@
  */
 package org.apache.labs.jaxmas.registry.sql;
 
-import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -41,13 +40,11 @@ import org.apache.labs.jaxmas.registry.a
 import org.apache.labs.jaxmas.registry.accessor.ROAccessors.ObjectTypes;
 import org.apache.labs.jaxmas.registry.infomodel.AssociationImpl;
 import org.apache.labs.jaxmas.registry.infomodel.ClassificationImpl;
-import org.apache.labs.jaxmas.registry.infomodel.ConnectionImpl;
 import org.apache.labs.jaxmas.registry.infomodel.KeyImpl;
 import org.apache.labs.jaxmas.registry.infomodel.OwnedRegistryObject;
 import org.apache.labs.jaxmas.registry.infomodel.ROState;
 import org.apache.labs.jaxmas.registry.infomodel.RegistryEntryImpl;
 import org.apache.labs.jaxmas.registry.infomodel.RegistryObjectImpl;
-import org.apache.log4j.Logger;
 
 
 /**
@@ -55,7 +52,6 @@ import org.apache.log4j.Logger;
  * objects.
  */
 public class RegistryObjectLoader {
-    private static final Logger log = Logger.getLogger(RegistryObjectLoader.class);
     private static final TableHandler[] EXTENSION_HANDLERS_REGISTRY_OBJECT = new TableHandler[]{
         new DefaultTableHandler()
     };
@@ -561,8 +557,6 @@ public class RegistryObjectLoader {
                     sb.append(".roType=");
                     sb.append(objectType.ordinal());
                 }
-                final Collection<FilterPredicate> predicates = q.getPredicates();
-                appendToQuery(predicates, parameterList, objectTypeSep, sb, false);
             } else {
                 sb.append(" FROM RegistryObjects ");
                 sb.append(table);
@@ -574,18 +568,22 @@ public class RegistryObjectLoader {
                 otTableHandlers[j].addJoin(sb, q.getPrefix(), parameterList);
             }
         }
-        final RegistryObjectQuery q = queries[0];
-        final ObjectTypes objectType = q.getObjectType();
-        if (objectType != null) {
-            final String table = getRoTable(q.getPrefix());
-            sb.append(sep);
-            sep = " AND ";
-            sb.append(table);
-            sb.append(".roType=");
-            sb.append(objectType.ordinal());
+        {
+            final RegistryObjectQuery q = queries[0];
+            final ObjectTypes objectType = q.getObjectType();
+            if (objectType != null) {
+                final String table = getRoTable(q.getPrefix());
+                sb.append(sep);
+                sep = " AND ";
+                sb.append(table);
+                sb.append(".roType=");
+                sb.append(objectType.ordinal());
+            }
+        }
+        for (RegistryObjectQuery q : queries) {
+            final Collection<FilterPredicate> predicates = q.getPredicates();
+            appendToQuery(predicates, parameterList, sep, sb, true);
         }
-        final Collection<FilterPredicate> predicates = q.getPredicates();
-        appendToQuery(predicates, parameterList, sep, sb, true);
         appendToQuery(pOrderPredicates, parameterList, sb);
         parameters = parameterList.toArray();
         query = sb.toString();
@@ -682,7 +680,49 @@ public class RegistryObjectLoader {
             if (rs != null) { try { rs.close(); } catch (Throwable t) { /* Ignore me */ } }
         }
     }
-    
+
+    public List<RegistryObject[]> getResultArrayList(final RegistryService pService, final PreparedStatement pStmt)
+            throws JAXRException {
+        final List<RegistryObject[]> list = new ArrayList<RegistryObject[]>();
+        ResultSet rs = null;
+        try {
+            rs = pStmt.executeQuery();
+            while (rs.next()) {
+                final RegistryObject[] row = new RegistryObject[queries.length];
+                int index = 1;
+                for (int i = 0;  i < row.length;  i++) {
+                    int type = rs.getInt(index+1);
+                    assert(!rs.wasNull());
+                    final ROAccessor<?> roAcc = ROAccessors.getROAccessor(type);
+                    final String key = rs.getString(index+1);
+                    assert(key != null);
+
+                    final RegistryObjectImpl<?> ro = (RegistryObjectImpl<?>) roAcc.create(pService, new KeyImpl(key));
+                    ro.setState(ROState.loaded);
+                    
+                    final TableHandler[] tableHandlers = queries[i].tableHandlers;
+                    index = tableHandlers[0].load(rs, ro, index);
+                    row[i] = ro;
+                }
+                for (int i = 0;  i < row.length;  i++) {
+                    final RegistryObject ro = row[i];
+                    final TableHandler[] tableHandlers = queries[i].tableHandlers;
+                    for (int j = 1;  j < tableHandlers.length;  j++) {
+                        index = tableHandlers[j].load(rs, ro, index);
+                    }
+                }
+                list.add(row);
+            }
+            rs.close();
+            rs = null;
+            return list;
+        } catch (SQLException e) {
+            throw new JAXRException(e);
+        } finally {
+            if (rs != null) { try { rs.close(); } catch (Throwable t) { /* Ignore me */ } }
+        }
+    }
+
     private <RO extends RegistryObject> List<RegistryObject> getResultList(final RegistryService pRegistryService,
             String pQuery, Object[] pParameters) throws JAXRException {
         final List<RegistryObject> list = new ArrayList<RegistryObject>();
@@ -765,7 +805,7 @@ public class RegistryObjectLoader {
         return qu.getResult();
     }
 
-    private void load(RegistryObject pRegistryObject, ResultSet pResultSet) throws SQLException, JAXRException {
+    private int load(RegistryObject pRegistryObject, ResultSet pResultSet) throws SQLException, JAXRException {
         final RegistryObjectImpl<?> ro = (RegistryObjectImpl<?>) pRegistryObject;
         ro.setState(ROState.loaded);
 
@@ -774,6 +814,7 @@ public class RegistryObjectLoader {
         for (int i = 0;  i < tableHandlers.length;  i++) {
             index = tableHandlers[i].load(pResultSet, pRegistryObject, index);
         }
+        return index;
     }
 
     /**
@@ -811,19 +852,7 @@ public class RegistryObjectLoader {
         return query;
     }
 
-    public PreparedStatement getPreparedStatement(javax.xml.registry.Connection pConnection) throws JAXRException {
-        try {
-            return getPreparedStatement(((ConnectionImpl) pConnection).getConnection());
-        } catch (SQLException e) {
-            throw new JAXRException(e);
-        }
-    }
-
-    protected PreparedStatement getPreparedStatement(Connection pConnection) throws JAXRException, SQLException {
-        final String query = getQuery();
-        log.debug(query);
-        final PreparedStatement stmt = pConnection.prepareStatement(getQuery());
-        StmtUser.setParams(stmt, parameters);
-        return stmt;
+    public Object[] getParameters() {
+        return parameters;
     }
 }

Modified: labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/schema/MacroProcessorTest.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/schema/MacroProcessorTest.java?rev=988008&r1=988007&r2=988008&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/schema/MacroProcessorTest.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/schema/MacroProcessorTest.java Mon Aug 23 07:29:17 2010
@@ -80,6 +80,7 @@ public class MacroProcessorTest extends 
 
     /**
      * Test for the &{macro, ...} definition.
+     * @throws IOException 
      */
     @Test
     public void testMacroDefinition() throws IOException {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org