1 package net.logAnalyzer.reports;
2
3 import java.awt.image.BufferedImage;
4 import java.io.IOException;
5
6 import javax.swing.JComponent;
7
8 /***
9 * This interface defines the methods needed to manipulate generated reports.
10 * Generated reports could be based on an XML Document as
11 * {@link net.logAnalyzer.reports.XMLReport}, a chart as
12 * {@link net.logAnalyzer.reports.ChartReport} or simple plain text buffer as
13 * {@link net.logAnalyzer.reports.TXTReport} or any other implementation of
14 * yours.
15 *
16 * @author Karim REFEYTON
17 * @version 0.1
18 */
19 public interface LAReport {
20 /***
21 * Return the file extension of the report.
22 *
23 * @return Report file name extension.
24 */
25 public String getFileExtension();
26
27 /***
28 * Return the name of the report.
29 *
30 * @return Report name.
31 */
32 public String getName();
33
34 /***
35 * Set the name of the report.
36 *
37 * @param name
38 * Report name.
39 */
40 public void setName(String name);
41
42 /***
43 * Return the mime type of the report.
44 *
45 * @return Mime type of the report.
46 */
47 public String getMimeType();
48
49 /***
50 * Save the report with the specified filename. The filename can contain a
51 * relative or absolute path.
52 * <p>
53 * If the file exists, it is overwritten.
54 * </p>
55 *
56 * @param filename
57 * Name of the output file.
58 * @throws IOException
59 * If an I/O exception occurs.
60 */
61 public void saveToFile(String filename) throws IOException;
62
63 /***
64 * Create an image from the report as a {@link BufferedImage}.
65 *
66 * @param width
67 * Image width.
68 * @param height
69 * Image height.
70 * @return Image from the report; <tt>null</tt> if unsupported feature.
71 */
72 public BufferedImage createBufferedImage(int width, int height);
73
74 /***
75 * Create the GUI displaying the report as a {@link JComponent} component.
76 *
77 * @return GUI showing the report.
78 */
79 public JComponent createGUI();
80
81 /***
82 * Return the string representation of the report.
83 *
84 * @return String report.
85 * @see java.lang.Object#toString()
86 */
87 public String toString();
88 }