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 }