KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > groboutils > pmti > v1 > autodoc > v1 > server > AbstractNewFileServer


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

29 package net.sourceforge.groboutils.pmti.v1.autodoc.v1.server;
30
31 import java.io.File JavaDoc;
32 import java.io.IOException JavaDoc;
33 import java.io.Writer JavaDoc;
34 import java.io.FileWriter JavaDoc;
35
36 import net.sourceforge.groboutils.autodoc.v1.testserver.AbstractWriterServer;
37 import net.sourceforge.groboutils.autodoc.v1.testserver.TestData;
38 import net.sourceforge.groboutils.autodoc.v1.testserver.TestInfo;
39
40 import org.apache.log4j.Logger;
41
42
43 /**
44  * An interface which corresponds to a part of the framework that knows how
45  * to deal with the framework's <tt>TestData</tt>. It may directly deal with
46  * the data, or pass it off to a remote server.
47  *
48  * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
49  * @since March 17, 2002
50  * @version $Date: 2003/02/10 22:51:56 $
51  */

52 public abstract class AbstractNewFileServer extends AbstractWriterServer
53 {
54     private static Logger LOG = Logger.getLogger( AbstractNewFileServer.class );
55     
56     private String JavaDoc prefix;
57     private String JavaDoc postfix;
58     private boolean useTimestamp = true;
59     
60     /**
61      * Creates a new file for every BugTestResult, in the format
62      * <code>prefix + BugTestResult.getSuiteName() + '-' +
63      * BugTestResuilt.getTestMethodName() + '-' +
64      * Long.toString( System.currentTimeMillis() ) +
65      * postfix</code>. <tt>prefix</tt> should include the directory.
66      */

67     public AbstractNewFileServer( String JavaDoc prefix, String JavaDoc postfix )
68     {
69         this( prefix, postfix, true );
70     }
71     
72     /**
73      * Creates a new file for every BugTestResult, in the format
74      * <code>prefix + BugTestResult.getSuiteName() + '-' +
75      * BugTestResuilt.getTestMethodName() + '-' +
76      * Long.toString( System.currentTimeMillis() ) +
77      * postfix</code>. <tt>prefix</tt> should include the directory.
78      */

79     public AbstractNewFileServer( String JavaDoc prefix, String JavaDoc postfix,
80             boolean useTimestamp )
81     {
82         if (prefix == null || postfix == null)
83         {
84             throw new IllegalArgumentException JavaDoc("no null arguments");
85         }
86         this.prefix = prefix;
87         this.postfix = postfix;
88         this.useTimestamp = useTimestamp;
89     }
90     
91     
92     /**
93      * Open a writer stream. This will be done once per result, so log-like
94      * actions may need to append to the previous results.
95      */

96     protected Writer JavaDoc openOutput( TestData td )
97             throws IOException JavaDoc
98     {
99         File JavaDoc f = new File JavaDoc( createFileName( td ) );
100         LOG.debug("Opening file "+f.getAbsolutePath()+" for output.");
101         FileWriter JavaDoc fw = new FileWriter JavaDoc( f );
102         return fw;
103     }
104     
105     
106     /**
107      *
108      */

109     protected String JavaDoc createFileName( TestData td )
110     {
111         TestInfo ti = td.getTestInfo();
112         String JavaDoc suite = "suite";
113         String JavaDoc method = "method";
114         if (ti != null)
115         {
116             if (ti.getSuite() != null)
117             {
118                 suite = ti.getSuite();
119             }
120             if (ti.getMethod() != null)
121             {
122                 method = ti.getMethod();
123             }
124         }
125         StringBuffer JavaDoc sb = new StringBuffer JavaDoc( this.prefix );
126         sb.append( suite ).
127             append( '-' ).
128             append( method );
129         if (this.useTimestamp)
130         {
131             sb.append( '-' ).
132                 append( System.currentTimeMillis() );
133         }
134         sb.append( this.postfix );
135         String JavaDoc name = sb.toString();
136         return name;
137     }
138 }
139
140
Popular Tags