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