[Registry-dev] svn commit r14848 - branches/registry/1_0/modules/core/src/main/java/org/wso2/registry/jdbc/dao

svn at wso2.org svn at wso2.org
Sat Mar 15 08:46:18 PDT 2008


Author: glen
Date: Sat Mar 15 08:46:15 2008
New Revision: 14848

Log:

Use SQL joins instead of manual coding and re-querying to get child/parent paths

Hopefully this should improve performance some.


Modified:
   branches/registry/1_0/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java

Modified: branches/registry/1_0/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java
==============================================================================
--- branches/registry/1_0/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java	(original)
+++ branches/registry/1_0/modules/core/src/main/java/org/wso2/registry/jdbc/dao/VersionedResourceDAO.java	Sat Mar 15 08:46:15 2008
@@ -353,12 +353,12 @@
         return -1;
     }
 
-    public String[] getChildPaths(long artifcatID, long versionNumber,
+    public String[] getChildPaths(long artifactID, long versionNumber,
                                   Connection connection) throws SQLException {
 
-        String selectSql = "SELECT DAID, DVN FROM DEPENDENCY WHERE AID=? AND VN=?";
+        String selectSql = "SELECT A.PATH, D.DVN FROM DEPENDENCY D, ARTIFACTS A WHERE D.AID=? AND D.VN=? AND A.AID=D.DAID";
         PreparedStatement s = connection.prepareStatement(selectSql);
-        s.setLong(1, artifcatID);
+        s.setLong(1, artifactID);
         s.setLong(2, versionNumber);
         ResultSet result = s.executeQuery();
 
@@ -366,16 +366,18 @@
 
         //to see whether the patent node is there in the table , if not need to add that
         while (result.next()) {
-            long daid = result.getLong("DAID");
-            long childVersion = result.getLong("DVN");
-            String SQL = "SELECT PATH FROM ARTIFACTS WHERE AID=?";
-            PreparedStatement ps = connection.prepareStatement(SQL);
-            ps.setLong(1, daid);
-            ResultSet pathResult = ps.executeQuery();
-            if (pathResult.next()) {
-                String path = pathResult.getString("PATH") + "?v=" + childVersion;
-                dependencyPathList.add(path);
-            }
+            String path = result.getString("PATH") + "?v=" + result.getLong("DVN");
+            dependencyPathList.add(path);
+//
+//            long daid = result.getLong("DAID");
+//            long childVersion = result.getLong("DVN");
+//            String SQL = "SELECT PATH FROM ARTIFACTS WHERE AID=?";
+//            PreparedStatement ps = connection.prepareStatement(SQL);
+//            ps.setLong(1, daid);
+//            ResultSet pathResult = ps.executeQuery();
+//            if (pathResult.next()) {
+//                String path = pathResult.getString("PATH") + "?v=" + childVersion;
+//            }
         }
         return (String[]) (dependencyPathList.toArray(new String[dependencyPathList.size()]));
     }
@@ -389,7 +391,7 @@
         if (versionNumber == -1) {
             return null;
         }
-        String selectSql = "SELECT AID , VN FROM DEPENDENCY WHERE DAID=? AND DVN=?";
+        String selectSql = "SELECT A.PATH, D.VN FROM ARTIFACTS A, DEPENDENCY D WHERE D.DAID=? AND D.DVN=? AND A.AID=D.AID";
         PreparedStatement s = connection.prepareStatement(selectSql);
         s.setLong(1, resourceID);
         s.setLong(2, versionNumber);
@@ -399,16 +401,17 @@
 
         //to see whether the patent node is there in the table , if not need to add that
         if (result.next()) {
-            long aid = result.getLong("AID");
-            long parentVersionNumber = result.getLong("VN");
-            String SQL = "SELECT PATH FROM ARTIFACTS WHERE AID=?";
-            PreparedStatement ps = connection.prepareStatement(SQL);
-            ps.setLong(1, aid);
-            ResultSet pathResult = ps.executeQuery();
-            if (pathResult.next()) {
-                String path = pathResult.getString("PATH");
-                parentPath = path + "?v=" + parentVersionNumber;
-            }
+            parentPath = result.getString("PATH") + "?v=" + result.getLong("VN");
+//            long aid = result.getLong("AID");
+//            long parentVersionNumber = result.getLong("VN");
+//            String SQL = "SELECT PATH FROM ARTIFACTS WHERE AID=?";
+//            PreparedStatement ps = connection.prepareStatement(SQL);
+//            ps.setLong(1, aid);
+//            ResultSet pathResult = ps.executeQuery();
+//            if (pathResult.next()) {
+//                String path = pathResult.getString("PATH");
+//                parentPath = path + "?v=" + parentVersionNumber;
+//            }
         }
         return parentPath;
     }
@@ -416,7 +419,8 @@
     public String[] getLatestChildPaths(long resourceID, long versionNumber,
                                         Connection connection) throws SQLException {
 
-        String selectSql = "SELECT DAID, DVN FROM DEPENDENCY WHERE AID=? AND VN=?";
+//        String selectSql = "SELECT DAID, DVN FROM DEPENDENCY WHERE AID=? AND VN=?";
+        String selectSql = "SELECT A.PATH FROM ARTIFACTS A, DEPENDENCY D WHERE D.AID=? AND D.VN=? AND A.AID=D.DAID";
         PreparedStatement s = connection.prepareStatement(selectSql);
         s.setLong(1, resourceID);
         s.setLong(2, versionNumber);
@@ -426,15 +430,17 @@
 
         //to see whether the patent node is there in the table , if not need to add that
         while (result.next()) {
-            long daid = result.getLong("DAID");
-            String SQL = "SELECT PATH FROM ARTIFACTS WHERE AID=?";
-            PreparedStatement ps = connection.prepareStatement(SQL);
-            ps.setLong(1, daid);
-            ResultSet pathResult = ps.executeQuery();
-            if (pathResult.next()) {
-                String path = pathResult.getString("PATH");
-                dependencyPathList.add(path);
-            }
+            String path = result.getString("PATH");
+            dependencyPathList.add(path);
+//            long daid = result.getLong("DAID");
+//            String SQL = "SELECT PATH FROM ARTIFACTS WHERE AID=?";
+//            PreparedStatement ps = connection.prepareStatement(SQL);
+//            ps.setLong(1, daid);
+//            ResultSet pathResult = ps.executeQuery();
+//            if (pathResult.next()) {
+//                String path = pathResult.getString("PATH");
+//                dependencyPathList.add(path);
+//            }
         }
         return (String[]) (dependencyPathList.toArray(new String[dependencyPathList.size()]));
     }



More information about the Registry-dev mailing list