KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > groboutils > codecoverage > v2 > datastore > DirMetaDataReader


1 /*
2  * @(#)DirMetaDataReader.java
3  *
4  * Copyright (C) 2002-2003 Matt Albrecht
5  * groboclown@users.sourceforge.net
6  * http://groboutils.sourceforge.net
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the "Software"),
10  * to deal in the Software without restriction, including without limitation
11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14  *
15  * The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24  * DEALINGS IN THE SOFTWARE.
25  */

26
27 package net.sourceforge.groboutils.codecoverage.v2.datastore;
28
29 import java.io.File JavaDoc;
30 import java.io.IOException JavaDoc;
31
32 import net.sourceforge.groboutils.codecoverage.v2.IAnalysisModule;
33
34
35 /**
36  * Knows how to read the meta-data in a repository.
37  *
38  * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
39  * @version $Date: 2004/04/15 05:48:26 $
40  * @since December 15, 2002
41  */

42 public class DirMetaDataReader implements IMetaDataReader
43 {
44     private DirMetaDataIO store;
45     
46     
47     /**
48      * Creates a meta-data writer for a specific directory. This directory
49      * should be dedicated to just this writer.
50      */

51     public DirMetaDataReader( File JavaDoc basedir )
52             throws IOException JavaDoc
53     {
54         if (basedir == null)
55         {
56             throw new IllegalArgumentException JavaDoc( "No null args." );
57         }
58         this.store = new DirMetaDataIO( basedir );
59     }
60     
61     
62     /**
63      * Returns a mark meta-data reader for a specific class signature.
64      */

65     public IClassMetaDataReader getClassReader( IAnalysisModule module )
66             throws IOException JavaDoc
67     {
68         if (module == null)
69         {
70             throw new IllegalArgumentException JavaDoc("no null args");
71         }
72         checkClose();
73         
74         // check if the module exists?
75

76         return new DirClassMetaDataReader( module, this.store );
77     }
78     
79     
80     /**
81      * Returns the list of all known modules at the time of recording.
82      */

83     public AnalysisModuleSet getAnalysisModuleSet()
84             throws IOException JavaDoc
85     {
86         checkClose();
87         
88         return this.store.getAnalysisModuleSet();
89     }
90     
91     
92     /**
93      * Closes this reader to prevent further access.
94      */

95     public void close()
96             throws IOException JavaDoc
97     {
98         checkClose();
99         this.store.close();
100         this.store = null;
101     }
102     
103     
104     private void checkClose()
105             throws IOException JavaDoc
106     {
107         if (this.store == null)
108         {
109             throw new IOException JavaDoc( "Writer has already been closed." );
110         }
111     }
112     
113     
114     protected void finalize() throws Throwable JavaDoc
115     {
116         Exception JavaDoc ex = null;
117         if (this.store != null)
118         {
119             ex = new IllegalStateException JavaDoc("Did not close writer.");
120         }
121         
122         super.finalize();
123         
124         // class-based post condition
125
if (ex != null)
126         {
127             throw ex;
128         }
129     }
130 }
131
132
Popular Tags