]> source.dussan.org Git - archiva.git/commitdiff
a bit more realistic test using actual metadata objects and testing getting the key...
authorJesse McConnell <jmcconnell@apache.org>
Mon, 26 Feb 2007 22:49:51 +0000 (22:49 +0000)
committerJesse McConnell <jmcconnell@apache.org>
Mon, 26 Feb 2007 22:49:51 +0000 (22:49 +0000)
git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@512053 13f79535-47bb-0310-9956-ffa450edef68

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

index 781b2fe30d7bab6884a9006ec8596f5e82910c2b..e65841bb721097edd19f3de16c532ee61e57b0b3 100644 (file)
@@ -54,7 +54,7 @@ public class IbatisMetadataStore
                 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 class IbatisMetadataStore
         }
     }
     
-    public void addMetadataKey( MetadataKey metadataKey ) 
+    public void addMetadata( Metadata metadata ) 
         throws MetadataStoreException
     {
         SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
@@ -112,7 +112,7 @@ public class IbatisMetadataStore
             sqlMap.startTransaction();
 
             getLogger().info( "Adding metadata key" );
-            sqlMap.update( "addMetadataKey", metadataKey );
+            sqlMap.update( "addMetadataKey", metadata );
 
             sqlMap.commitTransaction();
         }
@@ -141,5 +141,46 @@ public class IbatisMetadataStore
             }
         }
     }
+    
+    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();
+        }
+    }
+}
 
 }
index ccf5f8fda48b6174ab401d7b3004133b1a6099e8..deb4590c7986ceb5c43de2c493869642e5214777 100644 (file)
@@ -7,6 +7,8 @@ public interface MetadataStore
 {
     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;
     
 }
index 2bdf072e4a2cbe0c9cff4aabe91252f508eeadac..7a60dad832c426ea21494fbe91e86aaff62235d3 100644 (file)
@@ -5,7 +5,7 @@ public class MetadataKey {
        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 class MetadataKey {
        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;
index 800e855d9c938a99821006c91cac906fb1e28bd7..ef518fc96f526a7220eaca8cdcdcecdc5a86783e 100644 (file)
@@ -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 (
index 06bce40e05e702aea72514f764c8cfeb083df326..5d18d0d86d7912fc8127e62b3f4bc8831ee1bccf 100644 (file)
@@ -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>
\ No newline at end of file
index 3526ead2c04305422d62a1fb0816f049c4dcd2c6..0fdd9df0d14b831e9d4535b7ed0282927c8e539d 100644 (file)
@@ -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 @@ public class IbatisMetadataStoreTest
     {
         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 );       
     }