View Javadoc
1   package net.logAnalyzer.handlers;
2   
3   import net.logAnalyzer.analysis.LAAnalyzer;
4   import net.logAnalyzer.converters.LAConverter;
5   import net.logAnalyzer.converters.UnknownOrLiteralConverterException;
6   
7   /***
8    * This interface defines the log file handlers methods. A log file handler is
9    * used to apply filters and analyzers on a log file. Filters dans analyzers can
10   * be added before and/or after log file parsing.
11   * 
12   * @author Karim REFEYTON
13   * @version 0.1
14   */
15  public interface LALogHandler extends Runnable {
16  
17      /***
18       * Returns log analyzers added to the handler with
19       * {@link #setAnalyzers(LAAnalyzer[])}.
20       * 
21       * @return Log analyzers.
22       */
23      public LAAnalyzer[] getAnalyzers();
24  
25      /***
26       * Adds new analyzers to the log handler.
27       * 
28       * @param newAnalyzers
29       *            Analyzers to add.
30       */
31      public void setAnalyzers(LAAnalyzer[] newAnalyzers);
32  
33      /***
34       * Returns the converter at the specified index.
35       * 
36       * @param index
37       *            Converter index.
38       * @return Converter or <tt>null</tt> if unknown.
39       */
40      public LAConverter getConverter(int index);
41  
42      /***
43       * Returns the converter identified by the specified literal (for example,
44       * "%m" generally returns the messageLabel converter).
45       * 
46       * @param literal
47       *            Converter literal as %m" or %"p" or "%H{CLIENTIP}".
48       * @return Converter or <tt>null</tt> if unknown.
49       * @throws UnknownOrLiteralConverterException
50       *             If the literal does not identify a non literal column.
51       */
52      public LAConverter getConverter(String literal)
53              throws UnknownOrLiteralConverterException;
54  
55      /***
56       * Returns pattern converters.
57       * 
58       * @return Pattern converters.
59       */
60      public LAConverter[] getConverters();
61  
62      /***
63       * Returns the index of the identified by the specified literal.
64       * 
65       * @param literal
66       *            Converter literal as %m" or %"p" or "%H{CLIENTIP}".
67       * @return Index of the converter.
68       * @throws UnknownOrLiteralConverterException
69       *             If the literal does not identify a non literal column.
70       */
71      public int getConverterIndex(String literal)
72              throws UnknownOrLiteralConverterException;
73  
74      /***
75       * Returns the last exception thrown by the parsing process.
76       * 
77       * @return Last exception or <tt>null</tt> parsing was succesfull.
78       */
79      public Exception getLastException();
80  
81      /***
82       * Returns the number of records to parse; <tt>0</tt> for no limitation.
83       * 
84       * @return maxRecords Number of records.
85       */
86      public int getMaxRecords();
87  
88      /***
89       * Number of records to parse; <tt>0</tt> for no limitation.
90       * 
91       * @param maxRecords
92       *            Number of records.
93       */
94      public void setMaxRecords(int maxRecords);
95  
96      /***
97       * Returns the current messageLabel converter used to extend messageLabel
98       * text with unparsed lines.
99       * 
100      * @return Message converter.
101      * @see LAMessage#extendsMessage(String)
102      */
103     public LAConverter getMessageConverter();
104 
105     /***
106      * Returns the done percentage of the parsed file. If the handler is not
107      * parsing, returns <tt>0</tt>.
108      * 
109      * @return Done percentage.
110      */
111     public int getPercentDone();
112 
113     /***
114      * Returns the messageLabel at the specified position.
115      * 
116      * @param index
117      *            Physical index of the messageLabel in the log file.
118      * @return Message.
119      */
120     public LAMessage getMessage(int index);
121 
122     /***
123      * Returns the messages between specified positions. Uses
124      * {@link #getMessage(int)}to read messageLabel from the log file.
125      * 
126      * @param start
127      *            start physicial index (included in the result).
128      * @param end
129      *            end physical index (included in the result).
130      * @return messages.
131      */
132     public LAMessage[] getMessages(int start, int end);
133 
134     /***
135      * Returns the real number of messages in the log, not only in cache in case
136      * of a load on demand parsed log.
137      * 
138      * @return physical number of messages.
139      */
140     public int getSize();
141 
142     /***
143      * Returns <tt>true</tt> if the handler is currently parsing the log.
144      * 
145      * @return <tt>true</tt> if parsing; <tt>false</tt> otherwise.
146      */
147     public boolean isParsing();
148 
149     /***
150      * Adds a listener.
151      * 
152      * @param listener
153      *            Lister to add.
154      */
155     public void addLogHandlerListener(LALogHandlerListener listener);
156 
157     /***
158      * Fires a start parsing event.
159      */
160     public void fireStartParsing();
161 
162     /***
163      * Fires an end parsing event.
164      */
165     public void fireEndParsing();
166 
167     /***
168      * Parses the log content of the
169      * {@link net.logAnalyzer.utils.FilesSetReader}. Calls, in order :
170      * <p>
171      * Because a {@link LALogHandler} is a {@link Runnable}, for a threaded
172      * parsing you must start it in a new {@link Thread} :
173      * 
174      * <pre>
175      * handler.addLogHandlerListener(myLALogHandlerListener);
176      * Thread handlerThread = new Thread(handler);
177      * handlerThread.start();
178      * </pre>
179      * 
180      * </p>
181      * 
182      * @see AbstractLogHandler
183      * @throws ParsingException
184      *             If can't parse messageLabel.
185      */
186     public void parse() throws ParsingException;
187 
188     /***
189      * Removes a listener.
190      * 
191      * @param listener
192      *            Lister to remove.
193      */
194     public void removeLogHandlerListener(LALogHandlerListener listener);
195 }