KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > groboutils > codecoverage > v2 > logger > DirectoryChannelLogReader


1 /*
2  * @(#)DirectoryChannelLogReader.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.logger;
28
29 import java.io.File JavaDoc;
30 import java.io.IOException JavaDoc;
31
32 import net.sourceforge.groboutils.codecoverage.v2.IChannelLogReader;
33 import net.sourceforge.groboutils.codecoverage.v2.IClassChannelLogReader;
34
35 /**
36  * Reads logs written by DirectoryChannelLogger.
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 17, 2002
41  */

42 public class DirectoryChannelLogReader implements IChannelLogReader
43 {
44     private static final org.apache.log4j.Logger LOG =
45         org.apache.log4j.Logger.getLogger( DirectoryChannelLogReader.class );
46     private static final String JavaDoc EXTENTION =
47             DirectoryChannelLogger.CLASS_LOG_EXTENTION;
48     
49     private File JavaDoc channelDir;
50     
51     
52     public DirectoryChannelLogReader( File JavaDoc baseDir, short channel )
53     {
54         File JavaDoc newDir = new File JavaDoc( baseDir, Short.toString( channel ) );
55         if (!newDir.exists() || !newDir.isDirectory())
56         {
57             throw new IllegalArgumentException JavaDoc( "File "+newDir+
58                 " is not a directory or doesn't exist." );
59         }
60         this.channelDir = newDir;
61     }
62     
63     
64     /**
65      * Returns a channel reader for a specific class signature.
66      *
67      * @return the reader for the given class signature. If there are no
68      * logs for the given class, then the reader will not return anything.
69      * @exception IOException thrown if there was an underlying problem reading
70      * from the log.
71      */

72     public IClassChannelLogReader getReaderForClassSignature( String JavaDoc signature )
73             throws IOException JavaDoc
74     {
75         File JavaDoc logFile = new File JavaDoc( this.channelDir, signature+EXTENTION );
76         if (!logFile.exists())
77         {
78             // this isn't a critical error: it means that nothing in this class
79
// was ever executed.
80
LOG.info( "Couldn't finding a log file for class "+signature+
81                 " in file "+logFile+"." );
82             return new EmptyClassChannelLogReader();
83         }
84         
85         LOG.debug( "Loading class log reader from file "+logFile+"." );
86         return new DirectoryClassChannelLogReader( logFile, signature );
87     }
88 }
89
90
Popular Tags