View Javadoc
1   package net.logAnalyzer.reports;
2   
3   import java.lang.reflect.Constructor;
4   
5   import net.logAnalyzer.analysis.LAAnalyzer;
6   import net.logAnalyzer.patternParser.PatternParsingException;
7   
8   /***
9    * This class contains the definition of a renderer.
10   * 
11   * @author Karim REFEYTON
12   * @version 0.1
13   */
14  public class RendererDefinition {
15  
16      /***
17       * Name for IHM.
18       */
19      private String name;
20  
21      /***
22       * LARenderer class.
23       */
24      private Class rendererClass;
25  
26      /***
27       * Userfriendly label.
28       */
29      private String label;
30  
31      public RendererDefinition(String name, String classname, String label)
32              throws ClassNotFoundException {
33          this.name = name;
34          this.rendererClass = ClassLoader.getSystemClassLoader().loadClass(
35                  classname);
36          this.label = label;
37      }
38  
39      public RendererDefinition(String name, Class analyzerClass) {
40          this.name = name;
41          this.rendererClass = analyzerClass;
42      }
43  
44      public String getName() {
45          return this.name;
46      }
47  
48      public Class getRendererClass() {
49          return this.rendererClass;
50      }
51  
52      public String getLabel() {
53          return this.label;
54      }
55  
56      public LAReportRenderer createRendererInstance(LAAnalyzer[] analyzers)
57              throws PatternParsingException {
58          try {
59              Class[] classes = new Class[] { RendererDefinition.class,
60                      analyzers.getClass() };
61              Constructor constructor = rendererClass.getConstructor(classes);
62              Object[] parameters = new Object[] { this, analyzers };
63              return (LAReportRenderer) constructor.newInstance(parameters);
64          } catch (Exception e) {
65              throw new PatternParsingException(e);
66          }
67      }
68  }