01: /*
02: * The contents of this file are subject to the terms
03: * of the Common Development and Distribution License
04: * (the "License"). You may not use this file except
05: * in compliance with the License.
06: *
07: * You can obtain a copy of the license at
08: * https://jwsdp.dev.java.net/CDDLv1.0.html
09: * See the License for the specific language governing
10: * permissions and limitations under the License.
11: *
12: * When distributing Covered Code, include this CDDL
13: * HEADER in each file and include the License file at
14: * https://jwsdp.dev.java.net/CDDLv1.0.html If applicable,
15: * add the following below this CDDL HEADER, with the
16: * fields enclosed by brackets "[]" replaced with your
17: * own identifying information: Portions Copyright [yyyy]
18: * [name of copyright owner]
19: */
20: package com.sun.codemodel.writer;
21:
22: import java.io.File;
23: import java.io.IOException;
24: import java.io.OutputStream;
25: import java.io.PrintStream;
26: import java.io.Writer;
27:
28: import com.sun.codemodel.CodeWriter;
29: import com.sun.codemodel.JPackage;
30:
31: /**
32: * Filter CodeWriter that writes a progress message to the specified
33: * PrintStream.
34: *
35: * @author
36: * Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
37: */
38: public class ProgressCodeWriter extends FilterCodeWriter {
39: public ProgressCodeWriter(CodeWriter output, PrintStream progress) {
40: super (output);
41: this .progress = progress;
42: if (progress == null)
43: throw new IllegalArgumentException();
44: }
45:
46: private final PrintStream progress;
47:
48: public OutputStream openBinary(JPackage pkg, String fileName)
49: throws IOException {
50: report(pkg, fileName);
51: return super .openBinary(pkg, fileName);
52: }
53:
54: public Writer openSource(JPackage pkg, String fileName)
55: throws IOException {
56: report(pkg, fileName);
57: return super .openSource(pkg, fileName);
58: }
59:
60: private void report(JPackage pkg, String fileName) {
61: if (pkg.isUnnamed())
62: progress.println(fileName);
63: else
64: progress.println(pkg.name()
65: .replace('.', File.separatorChar)
66: + File.separatorChar + fileName);
67: }
68:
69: }
|