View Javadoc
1   package net.logAnalyzer.gui;
2   
3   import java.lang.reflect.Constructor;
4   import java.util.Hashtable;
5   
6   import net.logAnalyzer.patternParser.PatternParsingException;
7   
8   /***
9    * This class contains the definition of a view.
10   * @author Karim REFEYTON
11   * @version 0.1
12   */
13  public class ViewDefinition {
14  
15      /***
16       * Name for IHM.
17       */
18      private String name;
19  
20      /***
21       * LAView class.
22       */
23      private Class viewClass;
24  
25      /***
26       * User friendly label.
27       */
28      private String label;
29  
30      /***
31       * View attributes.
32       */
33      private Hashtable attributes;
34  
35      /***
36       * Constructs a new view definition.
37       * @param name Name of the view.
38       * @param classname Class of the new view instances.
39       * @param label User friendly label.
40       * @param attributes View attributes.
41       * @throws ClassNotFoundException If the specified view class does not
42       *             exists.
43       */
44      public ViewDefinition(String name, String classname, String label,
45              Hashtable attributes) throws ClassNotFoundException {
46          this.name = name;
47          this.viewClass = ClassLoader.getSystemClassLoader()
48                  .loadClass(classname);
49          this.label = label;
50          this.attributes = attributes;
51      }
52  
53      public String getName() {
54          return this.name;
55      }
56  
57      public Class getViewClass() {
58          return this.viewClass;
59      }
60  
61      public String getLabel() {
62          return this.label;
63      }
64  
65      public Hashtable getAttributes() {
66          return this.attributes;
67      }
68  
69      public LAView createViewInstance() throws PatternParsingException {
70          try {
71              Class[] classes = new Class[] { ViewDefinition.class,
72                      Hashtable.class };
73              Object[] parameters = new Object[] { this, this.attributes };
74              Constructor constructor = viewClass.getConstructor(classes);
75              return (LAView) constructor.newInstance(parameters);
76          } catch (Exception e) {
77              throw new PatternParsingException(e);
78          }
79      }
80  
81  }