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 }