Author: jmcconnell
Date: Mon Feb 26 14:49:51 2007
New Revision: 512053

URL: http://svn.apache.org/viewvc?view=rev&rev=512053
Log:
a bit more realistic test using actual metadata objects and testing getting the 
key from the key table, and we can actually directly influence performance by 
monkeying in xml files for sql..ibatis is pretty slick

Modified:
    
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/IbatisMetadataStore.java
    
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/MetadataStore.java
    
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java
    
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml
    
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml
    
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java

Modified: 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/IbatisMetadataStore.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/IbatisMetadataStore.java?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
--- 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/IbatisMetadataStore.java
 (original)
+++ 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/IbatisMetadataStore.java
 Mon Feb 26 14:49:51 2007
@@ -54,7 +54,7 @@
                 String tableName = rs.getString( "TABLE_NAME" );
 
                 // if it does then we are already initialized
-                if ( tableName.toLowerCase().equals( "MetadataKeys" ) )
+                if ( tableName.toLowerCase().equals( "metadatakeys" ) )
                 {
                     return;
                 }
@@ -102,7 +102,7 @@
         }
     }
     
-    public void addMetadataKey( MetadataKey metadataKey ) 
+    public void addMetadata( Metadata metadata ) 
         throws MetadataStoreException
     {
         SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
@@ -112,7 +112,7 @@
             sqlMap.startTransaction();
 
             getLogger().info( "Adding metadata key" );
-            sqlMap.update( "addMetadataKey", metadataKey );
+            sqlMap.update( "addMetadataKey", metadata );
 
             sqlMap.commitTransaction();
         }
@@ -141,5 +141,46 @@
             }
         }
     }
+    
+    public MetadataKey getMetadataKey( Metadata metadata ) 
+    throws MetadataStoreException
+    {
+    SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
+
+    try
+    {
+        sqlMap.startTransaction();
+
+        getLogger().info( "Getting metadata key" );
+        MetadataKey newMetadataKey = (MetadataKey) sqlMap.queryForObject( 
"getMetadataKey", metadata );
+        
+        return newMetadataKey;
+        
+    }
+    catch ( SQLException e )
+    {
+        getLogger().error( "Error while adding metadata, showing all linked 
exceptions in SQLException." );
+
+        while ( e != null )
+        {
+            getLogger().error( e.getMessage(), e );
+
+            e = e.getNextException();
+        }
+
+        throw new MetadataStoreException ( "Error while interacting with the 
database.", e );
+    }
+    finally
+    {
+        try
+        {
+            sqlMap.endTransaction();
+        }
+        catch ( SQLException e )
+        {
+            e.printStackTrace();
+        }
+    }
+}
 
 }

Modified: 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/MetadataStore.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/MetadataStore.java?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
--- 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/MetadataStore.java
 (original)
+++ 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/MetadataStore.java
 Mon Feb 26 14:49:51 2007
@@ -7,6 +7,8 @@
 {
     public static final String ROLE = MetadataStore.class.getName();
     
-    public void addMetadataKey( MetadataKey metadataKey ) throws 
MetadataStoreException;
+    public void addMetadata( Metadata metadata ) throws MetadataStoreException;
+    
+    public MetadataKey getMetadataKey( Metadata metadata ) throws 
MetadataStoreException;
     
 }

Modified: 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
--- 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java
 (original)
+++ 
maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java
 Mon Feb 26 14:49:51 2007
@@ -5,7 +5,7 @@
        private String groupId;
        private String artifactId;
        private String version;
-       private long id;
+       private int metadataKey;
        
        public String getArtifactId() {
                return artifactId;
@@ -19,11 +19,11 @@
        public void setGroupId(String groupId) {
                this.groupId = groupId;
        }
-       public long getId() {
-               return id;
+       public int getMetadataKey() {
+               return metadataKey;
        }
-       public void setId(long id) {
-               this.id = id;
+       public void setMetadataKey(int id) {
+               this.metadataKey = id;
        }
        public String getVersion() {
                return version;

Modified: 
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
--- 
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml
 (original)
+++ 
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml
 Mon Feb 26 14:49:51 2007
@@ -7,6 +7,8 @@
 
 <!-- 
 METADATA_KEYS is the index table for all other tables
+
+need to make the lookup on this table fast, perhaps by indexing the 
combination of g:a:v in a lookup column
  -->
 <statement id="initializeMetadataKeyTable">
     CREATE TABLE MetadataKeys (

Modified: 
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
--- 
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml
 (original)
+++ 
maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml
 Mon Feb 26 14:49:51 2007
@@ -7,18 +7,18 @@
 
 <select id="getMetadataKey" 
resultClass="org.apache.maven.archiva.database.key.MetadataKey">
   SELECT 
-    metadataKey as id    
-    groupId    as groupId,
-    artifactId  as artifactId,
-    version    as version, 
+    metadataKey,
+    groupId,
+    artifactId,
+    version
   FROM MetadataKeys 
-  WHERE metadataKey = #value# 
+  WHERE groupId = #groupId# and artifactId = #artifactId# and version = 
#version#
 </select> 
 
-<insert id="addMetadataKey" 
parameterClass="org.apache.maven.archiva.database.key.MetadataKey"> 
+<insert id="addMetadataKey" 
parameterClass="org.apache.maven.artifact.repository.metadata.Metadata"> 
   INSERT INTO 
   MetadataKeys  ( groupId, artifactId, version ) 
-  VALUES (#groupId#, #artifactId#, #version# ) 
+  VALUES ( #groupId#, #artifactId#, #version# ) 
 </insert> 
 
 </sqlMap>

Modified: 
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java?view=diff&rev=512053&r1=512052&r2=512053
==============================================================================
--- 
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java
 (original)
+++ 
maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java
 Mon Feb 26 14:49:51 2007
@@ -1,6 +1,7 @@
 package org.apache.maven.archiva.database;
 
 import org.apache.maven.archiva.database.key.MetadataKey;
+import org.apache.maven.artifact.repository.metadata.Metadata;
 import org.codehaus.plexus.PlexusTestCase;
 
 public class IbatisMetadataStoreTest
@@ -18,13 +19,27 @@
     {
         MetadataStore store = (MetadataStore) lookup( MetadataStore.ROLE, 
"ibatis" );
         
-        MetadataKey testMetadataKey = new MetadataKey();
+        assertNotNull( store );
+    }
+    
+    public void testMetadataKeyRetrieval() throws Exception
+    {
+        MetadataStore store = (MetadataStore) lookup( MetadataStore.ROLE, 
"ibatis" );
+        
+        Metadata metadata = new Metadata();
+        metadata.setArtifactId( "testArtifactId" );
+        metadata.setGroupId( "testGroupId" );
+        metadata.setVersion( "testVersion" );
+        
+        store.addMetadata( metadata );                
+        
+        MetadataKey metadataKey = store.getMetadataKey( metadata );
         
-        testMetadataKey.setArtifactId( "testArtfiactId" );
-        testMetadataKey.setGroupId( "testGroupId" );
-        testMetadataKey.setVersion( "testVersion" );
+        assertTrue( metadataKey.getMetadataKey() > 0 );
+        assertEquals( metadataKey.getArtifactId(), metadata.getArtifactId() );
+        assertEquals( metadataKey.getGroupId(), metadata.getGroupId() );
+        assertEquals( metadataKey.getVersion(), metadata.getVersion() );
         
-        store.addMetadataKey( testMetadataKey );       
     }
     
     


Reply via email to