]> source.dussan.org Git - archiva.git/blob
5434e6071b5549661f889d9153832c024d786c96
[archiva.git] /
1 package org.apache.maven.archiva.database;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import com.ibatis.sqlmap.client.SqlMapClient;
23
24 import org.apache.maven.archiva.database.key.MetadataKey;
25 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
26 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
27
28 import java.sql.SQLException;
29
30 /**
31  * RepositoryMetadataDatabase 
32  *
33  * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
34  * @version $Id$
35  * 
36  * @plexus.component role="org.apache.maven.archiva.database.RepositoryMetadataDatabase" role-hint="default"
37  */
38 public class RepositoryMetadataDatabase extends AbstractMetadataKeyDatabase
39 {
40     public void create( RepositoryMetadata metadata )
41         throws ArchivaDatabaseException
42     {
43     
44         SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
45
46         try
47         {
48             sqlMap.startTransaction();
49
50             getLogger().info( "Adding repository metadata" );
51             sqlMap.update( "addRepositoryMetadata", metadata );
52             
53             sqlMap.commitTransaction();
54         }
55         catch ( SQLException e )
56         {
57             getLogger().error( "Error while executing statement, showing all linked exceptions in SQLException." );
58
59             while ( e != null )
60             {
61                 getLogger().error( e.getMessage(), e );
62
63                 e = e.getNextException();
64             }
65
66             throw new ArchivaDatabaseException( "Error while executing statement.", e );
67         }
68         finally
69         {
70             try
71             {
72                 sqlMap.endTransaction();
73             }
74             catch ( SQLException e )
75             {
76                 e.printStackTrace();
77             }
78         }
79     }
80  
81
82     public RepositoryMetadata read( String groupId, String artifactId, String version )
83         throws ArchivaDatabaseException
84     {
85         
86         SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
87
88         try
89         {
90             sqlMap.startTransaction();
91
92             getLogger().info( "Reading repository metadata" );
93             RepositoryMetadata repositoryMetadata = (RepositoryMetadata) sqlMap.queryForObject( "getRepositoryMetadata", new MetadataKey( groupId, artifactId, version ) );
94             
95             return repositoryMetadata;
96         }
97         catch ( SQLException e )
98         {
99             getLogger().error( "Error while executing statement, showing all linked exceptions in SQLException." );
100
101             while ( e != null )
102             {
103                 getLogger().error( e.getMessage(), e );
104
105                 e = e.getNextException();
106             }
107
108             throw new ArchivaDatabaseException( "Error while executing statement.", e );
109         }
110         finally
111         {
112             try
113             {
114                 sqlMap.endTransaction();
115             }
116             catch ( SQLException e )
117             {
118                 e.printStackTrace();
119             }
120         }
121     }
122
123     /**
124      * not implemented yet
125      * 
126      * @param metadata
127      * @throws ArchivaDatabaseException
128      */
129     public void update( RepositoryMetadata metadata )
130         throws ArchivaDatabaseException
131     {
132         
133         SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
134
135         try
136         {
137             sqlMap.startTransaction();
138
139             getLogger().info( "Updating repository metadata" );
140             sqlMap.update( "updateRepositoryMetadata", metadata );
141             
142             sqlMap.commitTransaction();
143         }
144         catch ( SQLException e )
145         {
146             getLogger().error( "Error while executing statement, showing all linked exceptions in SQLException." );
147
148             while ( e != null )
149             {
150                 getLogger().error( e.getMessage(), e );
151
152                 e = e.getNextException();
153             }
154
155             throw new ArchivaDatabaseException( "Error while executing statement.", e );
156         }
157         finally
158         {
159             try
160             {
161                 sqlMap.endTransaction();
162             }
163             catch ( SQLException e )
164             {
165                 e.printStackTrace();
166             }
167         }
168     }
169
170     public void delete( RepositoryMetadata metadata )
171         throws ArchivaDatabaseException
172     {
173         // FIXME is this right? baseVersion seems wrong but I don't know enough about the metadata to say
174         delete( metadata.getGroupId(), metadata.getArtifactId(), metadata.getBaseVersion() );
175     }
176
177     public void delete( String groupId, String artifactId, String version )
178         throws ArchivaDatabaseException
179     {
180         SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
181
182         try
183         {
184             sqlMap.startTransaction();
185
186             getLogger().info( "Removing repository metadata" );
187             sqlMap.update( "removeRepositoryMetadata", new MetadataKey( groupId, artifactId, version ) );
188             
189             sqlMap.commitTransaction();
190         }
191         catch ( SQLException e )
192         {
193             getLogger().error( "Error while executing statement, showing all linked exceptions in SQLException." );
194
195             while ( e != null )
196             {
197                 getLogger().error( e.getMessage(), e );
198
199                 e = e.getNextException();
200             }
201
202             throw new ArchivaDatabaseException( "Error while executing statement.", e );
203         }
204         finally
205         {
206             try
207             {
208                 sqlMap.endTransaction();
209             }
210             catch ( SQLException e )
211             {
212                 e.printStackTrace();
213             }
214         }
215     }
216
217     public void initialize()
218         throws InitializationException
219     {        
220         super.initialize();
221         try
222         {
223             initializeTable( "RepositoryMetadata" );
224         }
225         catch ( ArchivaDatabaseException ade )
226         {
227             throw new InitializationException( "unable to initialize repository metadata table", ade );
228         }
229     }
230     
231     
232 }