You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jm...@apache.org on 2007/02/26 23:49:51 UTC

svn commit: r512053 - in /maven/archiva/trunk/archiva-database/src: main/java/org/apache/maven/archiva/database/ main/java/org/apache/maven/archiva/database/key/ main/resources/org/apache/maven/archiva/database/ test/java/org/apache/maven/archiva/datab...

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 );       
     }