KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * @(#)AnalysisModuleSetIO.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.IOException JavaDoc;
30 import java.io.Reader JavaDoc;
31 import java.io.StringReader JavaDoc;
32 import java.io.StringWriter JavaDoc;
33 import java.io.Writer JavaDoc;
34
35 import net.sourceforge.groboutils.codecoverage.v2.IAnalysisModule;
36
37 /**
38  * Knows how to read and write an AnalysisModuleSet object.
39  *
40  * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
41  * @version $Date: 2004/04/15 05:48:26 $
42  * @since December 15, 2002
43  */

44 class AnalysisModuleSetIO
45 {
46     public AnalysisModuleSetIO()
47     {
48         // do nothing
49
}
50     
51     
52     public void writeAnalysisModuleSet( AnalysisModuleSet ams, Writer JavaDoc out )
53             throws IOException JavaDoc
54     {
55         AnalysisModuleIO amw = new AnalysisModuleIO();
56         
57         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
58         
59         int count = ams.getAnalysisModuleCount();
60         sb.append( count ).append( '{' );
61         for (short i = 0; i < count; ++i)
62         {
63             StringWriter JavaDoc sw = new StringWriter JavaDoc();
64             amw.writeAnalysisModule( ams.getAnalysisModuleAt( i ), sw );
65             String JavaDoc text = sw.toString();
66             sb.append( '[' ).append( i ).append( ';' ).
67                 append( text.length() ).append( ';' ).append( text ).
68                 append( ']' );
69         }
70         sb.append( '}' );
71         
72         out.write( sb.toString() );
73     }
74     
75     
76     public AnalysisModuleSet readAnalysisModuleSet( Reader JavaDoc in )
77             throws IOException JavaDoc
78     {
79         AnalysisModuleIO amr = new AnalysisModuleIO();
80         
81         int count = ReadUtil.toInt( ReadUtil.readTo( in, '{' ) );
82         AnalysisModuleSet ams = new AnalysisModuleSet();
83         for (int i = 0; i < count; ++i)
84         {
85             ReadUtil.readTo( in, '[' );
86             int index = ReadUtil.toInt( ReadUtil.readTo( in, ';' ) );
87             if (i != index)
88             {
89                 throw new IOException JavaDoc( "Expected to find index "+i+
90                     ", but found "+index+"." );
91             }
92             int size = ReadUtil.toInt( ReadUtil.readTo( in, ';' ) );
93             StringReader JavaDoc sr = new StringReader JavaDoc(
94                 ReadUtil.readCount( in, size ) );
95             IAnalysisModule am = amr.readAnalysisModule( sr );
96             ams.addAnalysisModule( am );
97             ReadUtil.readTo( in, ']' );
98         }
99         ReadUtil.readTo( in, '}' );
100         
101         return ams;
102     }
103 }
104
105
Popular Tags