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/27 20:15:01 UTC

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

Author: jmcconnell
Date: Tue Feb 27 11:15:00 2007
New Revision: 512366

URL: http://svn.apache.org/viewvc?view=rev&rev=512366
Log:
added missing xml file, added methods to determine if database exists or not, fixed up test cases for db initialization and removal

Added:
    maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/ManageTables.xml
      - copied, changed from r512053, 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/RepositoryMetadata.xml   (with props)
    maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/RepositoryMetadataDatabaseTest.java
      - copied, changed from r512316, maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java
Removed:
    maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml
    maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java
Modified:
    maven/archiva/trunk/archiva-database/pom.xml
    maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractMetadataKeyDatabase.java
    maven/archiva/trunk/archiva-database/src/main/resources/ibatis-config.xml
    maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/MetadataKey.xml

Modified: maven/archiva/trunk/archiva-database/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/pom.xml?view=diff&rev=512366&r1=512365&r2=512366
==============================================================================
--- maven/archiva/trunk/archiva-database/pom.xml (original)
+++ maven/archiva/trunk/archiva-database/pom.xml Tue Feb 27 11:15:00 2007
@@ -30,15 +30,15 @@
   <name>Archiva Database</name>
   <dependencies>
     <dependency>
-      <groupId>com.ibatis</groupId>
+      <groupId>org.apache.ibatis</groupId>
       <artifactId>ibatis-sqlmap</artifactId>
-      <version>2.1.0.565</version>
+      <version>2.3.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact-manager</artifactId>
     </dependency>
-    <dependency>
+    <dependency> 
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-project</artifactId>
     </dependency>

Modified: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractMetadataKeyDatabase.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractMetadataKeyDatabase.java?view=diff&rev=512366&r1=512365&r2=512366
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractMetadataKeyDatabase.java (original)
+++ maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractMetadataKeyDatabase.java Tue Feb 27 11:15:00 2007
@@ -179,7 +179,7 @@
     
     protected void dropTable( String tableName )
     throws ArchivaDatabaseException    
-{
+    {
     SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
 
     try
@@ -231,6 +231,58 @@
     }
     
     
-    
+    protected boolean tableExists( String tableName )
+    throws ArchivaDatabaseException    
+{
+    SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
+
+    try
+    {
+        sqlMap.startTransaction();
+
+        Connection con = sqlMap.getCurrentConnection();
+
+        DatabaseMetaData databaseMetaData = con.getMetaData();
+
+        ResultSet rs = databaseMetaData.getTables( con.getCatalog(), null, null, null );
+
+        // check if the index database exists in the database
+        while ( rs.next() )
+        {
+            String dbTableName = rs.getString( "TABLE_NAME" );
+
+            // if it does then we are already initialized
+            if ( dbTableName.toLowerCase().equals( tableName.toLowerCase() ) )
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+    catch ( SQLException e )
+    {
+        getLogger().error( "Error while check database, showing all linked exceptions in SQLException." );
+
+        while ( e != null )
+        {
+            getLogger().error( e.getMessage(), e );
+
+            e = e.getNextException();
+        }
+
+        throw new ArchivaDatabaseException( "Error while checking database.", e );
+    }
+    finally
+    {
+        try
+        {
+            sqlMap.endTransaction();
+        }
+        catch ( SQLException e )
+        {
+            e.printStackTrace();
+        }
+    }
+}
     
 }

Modified: maven/archiva/trunk/archiva-database/src/main/resources/ibatis-config.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/resources/ibatis-config.xml?view=diff&rev=512366&r1=512365&r2=512366
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/resources/ibatis-config.xml (original)
+++ maven/archiva/trunk/archiva-database/src/main/resources/ibatis-config.xml Tue Feb 27 11:15:00 2007
@@ -22,7 +22,14 @@
       <property name="JDBC.Password" value="${jdbc.password}"/>
     </dataSource>
   </transactionManager>
+  
+  <!--
+  <resultObjectFactory type="org.codehaus.plexus.ibatis.PlexusResultObjectFactory" >
+  	<property name="foo" value="bar"/>
+  </resultObjectFactory> 
+  -->
 
-  <sqlMap resource="org/apache/maven/archiva/database/CreateTables.xml"/>
+  <sqlMap resource="org/apache/maven/archiva/database/ManageTables.xml"/>
   <sqlMap resource="org/apache/maven/archiva/database/MetadataKey.xml"/>
+  <sqlMap resource="org/apache/maven/archiva/database/RepositoryMetadata.xml"/>
 </sqlMapConfig>

Copied: maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/ManageTables.xml (from r512053, 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/ManageTables.xml?view=diff&rev=512366&p1=maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/CreateTables.xml&r1=512053&p2=maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/ManageTables.xml&r2=512366
==============================================================================
--- 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/ManageTables.xml Tue Feb 27 11:15:00 2007
@@ -10,7 +10,7 @@
 
 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">
+<statement id="createMetadataKeys">
     CREATE TABLE MetadataKeys (
       metadataKey     integer generated always as identity ( start with 1 ) primary key,
       groupId         varchar(100) not null,
@@ -19,22 +19,29 @@
     )
 </statement>
 
-<statement id="initializeRepositoryMetadataTable">
+<statement id="dropMetadataKeys">
+	DROP TABLE MetadataKeys
+</statement>
+
+<statement id="createRepositoryMetadata">
     CREATE TABLE RepositoryMetadata (
       metadataKey         integer not null,
       id                  integer generated always as identity ( start with 1 ) primary key,
-      repositoryId        varchar(100) not null,
       latest              varchar(100) not null,
       release             varchar(100) not null,
-      lastUpdated         integer not null,
-      snapshotTimestamp   integer not null,
-      snapshotBuildNumber integer not null,
-      snapshotLocalCopy   char(1) not null,
+      lastUpdated         integer,
+      snapshotTimestamp   integer,
+      snapshotBuildNumber integer,
+      snapshotLocalCopy   char(1),
       foreign key( metadataKey ) references MetadataKeys( metadataKey )
     )
 </statement>
 
-<statement id="initializeHealthMetadataTable">
+<statement id="dropRepositoryMetadata">
+	DROP TABLE RepositoryMetadata
+</statement>
+
+<statement id="createHealthMetadata">
     CREATE TABLE HealthMetadata (
       metadataKey         integer not null,
       id                  integer generated always as identity ( start with 1 ) primary key,     
@@ -45,7 +52,7 @@
     )
 </statement>
 
-<statement id="initializeVersionsMetadataTable">
+<statement id="createVersionsMetadata">
     CREATE TABLE VersionMetadata (
       metadataKey         integer not null,
       id             integer generated always as identity ( start with 1 ) primary key,

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=512366&r1=512365&r2=512366
==============================================================================
--- 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 Tue Feb 27 11:15:00 2007
@@ -5,6 +5,9 @@
 
 <sqlMap namespace="MetadataKey">
 
+<!-- 
+this query can be improved by adding a lookup index based on these trinity of values
+ -->
 <select id="getMetadataKey" resultClass="org.apache.maven.archiva.database.key.MetadataKey">
   SELECT 
     metadataKey,
@@ -20,5 +23,11 @@
   MetadataKeys  ( groupId, artifactId, version ) 
   VALUES ( #groupId#, #artifactId#, #version# ) 
 </insert> 
+
+<delete id="removeMetadataKey" parameterClass="org.apache.maven.archiva.database.key.MetadataKey">
+	DELETE FROM
+	MetadataKeys
+	WHERE metadataKey=#metadataKey#
+</delete>
 
 </sqlMap>

Added: maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/RepositoryMetadata.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/RepositoryMetadata.xml?view=auto&rev=512366
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/RepositoryMetadata.xml (added)
+++ maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/RepositoryMetadata.xml Tue Feb 27 11:15:00 2007
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
+"http://ibatis.apache.org/dtd/sql-map-2.dtd">
+
+<!--
+      metadataKey         integer not null,
+      id                  integer generated always as identity ( start with 1 ) primary key,
+      latest              varchar(100) not null,
+      release             varchar(100) not null,
+      lastUpdated         integer not null,
+      snapshotTimestamp   integer not null,
+      snapshotBuildNumber integer not null,
+      snapshotLocalCopy   char(1) not null,
+      foreign key( metadataKey ) references MetadataKeys( metadataKey )
+-->
+
+<sqlMap namespace="RepositoryMetadata">
+
+<select id="getRepositoryMetadata" 
+	parameterClass="org.apache.maven.archiva.database.key.MetadataKey"
+	resultClass="org.apache.maven.artifact.repository.metadata.Metadata">
+  SELECT 
+    mk.groupId AS groupId,
+    mk.artifactId AS artifactId,
+    mk.version AS baseVersion,
+ 	rm.latest AS latest,
+ 	rm.release AS release,
+ 	rm.lastUpdated AS lastUpdated	
+  FROM RepositoryMetadata rm, MetadataKeys mk
+  WHERE 
+    mk.metadataKey = rm.metadataKey
+    AND mk.metadataKey = #metadataKey# 
+</select> 
+
+<!--
+<insert id="addRepositoryMetadata" parameterClass="org.apache.maven.artifact.repository.metadata.Metadata"> 
+  INSERT INTO 
+  RepositoryMetadata  ( latest, release, lastUpdated ) 
+  VALUES ( #latest#, #release#, #lastUpdated# ) 
+</insert> 
+-->
+
+<delete id="removeRepositoryMetadata" parameterClass="org.apache.maven.archiva.database.key.MetadataKey">
+	DELETE FROM
+	RepositoryMetadata
+	WHERE metadataKey=#metadataKey#
+</delete>
+
+</sqlMap>
\ No newline at end of file

Propchange: maven/archiva/trunk/archiva-database/src/main/resources/org/apache/maven/archiva/database/RepositoryMetadata.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/RepositoryMetadataDatabaseTest.java (from r512316, 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/RepositoryMetadataDatabaseTest.java?view=diff&rev=512366&p1=maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/IbatisMetadataStoreTest.java&r1=512316&p2=maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/RepositoryMetadataDatabaseTest.java&r2=512366
==============================================================================
--- 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/RepositoryMetadataDatabaseTest.java Tue Feb 27 11:15:00 2007
@@ -3,11 +3,16 @@
 import org.apache.maven.archiva.database.key.MetadataKey;
 import org.apache.maven.artifact.repository.metadata.Metadata;
 import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.ibatis.PlexusIbatisHelper;
 
-public class IbatisMetadataStoreTest
+public class RepositoryMetadataDatabaseTest
     extends PlexusTestCase
 {
-
+    /**
+     * @plexus.requirement 
+     */
+    protected PlexusIbatisHelper ibatisHelper;
+    
     protected void setUp()
         throws Exception
     {
@@ -15,30 +20,42 @@
         super.setUp();
     }
 
-    public void testMetadataKeysInitialization() throws Exception
+    public void testRepositoryMetadataCreationAndDeletion() throws Exception
     {
-        MetadataStore store = (MetadataStore) lookup( MetadataStore.ROLE, "ibatis" );
+        RepositoryMetadataDatabase db = (RepositoryMetadataDatabase) lookup( "org.apache.maven.archiva.database.RepositoryMetadataDatabase", "default" );
+        
+        assertNotNull( db );
+        assertTrue( db.tableExists( "RepositoryMetadata" ) );
+        assertTrue( db.tableExists( "MetadataKeys" ) );
+        
+        db.dropTable( "RepositoryMetadata" );
+        db.dropTable( "MetadataKeys" );
         
-        assertNotNull( store );
+        assertFalse( db.tableExists( "RepositoryMetadata" ) );
+        assertFalse( db.tableExists( "MetadataKeys" ) );
     }
     
     public void testMetadataKeyRetrieval() throws Exception
     {
-        MetadataStore store = (MetadataStore) lookup( MetadataStore.ROLE, "ibatis" );
+        RepositoryMetadataDatabase db = (RepositoryMetadataDatabase) lookup( "org.apache.maven.archiva.database.RepositoryMetadataDatabase", "default" );
         
         Metadata metadata = new Metadata();
         metadata.setArtifactId( "testArtifactId" );
         metadata.setGroupId( "testGroupId" );
         metadata.setVersion( "testVersion" );
-        
-        store.addMetadata( metadata );                
-        
-        MetadataKey metadataKey = store.getMetadataKey( metadata );
+           
+        MetadataKey metadataKey = db.getMetadataKey( metadata );
         
         assertTrue( metadataKey.getMetadataKey() > 0 );
         assertEquals( metadataKey.getArtifactId(), metadata.getArtifactId() );
         assertEquals( metadataKey.getGroupId(), metadata.getGroupId() );
-        assertEquals( metadataKey.getVersion(), metadata.getVersion() );
+        assertEquals( metadataKey.getVersion(), metadata.getVersion() );        
+        
+        db.dropTable( "RepositoryMetadata" );
+        db.dropTable( "MetadataKeys" );
+        
+        assertFalse( db.tableExists( "RepositoryMetadata" ) );
+        assertFalse( db.tableExists( "MetadataKeys" ) );
         
     }