TemplateDescription.java
00001
00002
00003
00004
00005
00006
00007 package org.nees.rbnb;
00008
00009 import java.util.Hashtable;
00010 import java.util.Enumeration;
00011
00012 import javax.swing.tree.DefaultMutableTreeNode;
00013 import javax.swing.tree.MutableTreeNode;
00014
00015 import org.w3c.dom.Document;
00016 import org.w3c.dom.Element;
00017 import org.w3c.dom.Node;
00018 import org.w3c.dom.NodeList;
00019
00020 class TemplateDescription {
00021 private final NeesControlMetadata metadata;
00022 private String name;
00023 private String type = "undefined";
00024 private Hashtable parameters = new Hashtable();
00025
00029 public TemplateDescription(NeesControlMetadata metadata, Node node) {
00030 NodeList children = node.getChildNodes();
00031 this.metadata = metadata;
00032 final int length = children.getLength();
00033 for(int i = 0; i < length; i++)
00034 {
00035 Node child = children.item(i);
00036 if (child.getNodeType() == Node.ELEMENT_NODE)
00037 {
00038 Element element = (Element)child;
00039 String tag = element.getTagName();
00040 if (tag.equals(NeesControlMetadata.XML_TAG_FOR_TEMPLATE_NAME))
00041 {
00042
00043
00044 String name = child.getChildNodes().item(0).getNodeValue();
00045 setName(name);
00046 }
00047 else
00048 if (tag.equals(NeesControlMetadata.XML_TAG_FOR_TEMPLATE_TYPE))
00049 {
00050
00051
00052 String type = child.getChildNodes().item(0).getNodeValue();
00053 setType(type);
00054 }
00055 else
00056 if (tag.equals(NeesControlMetadata.XML_TAG_FOR_PARAMETER_LIST))
00057 {
00058 NodeList param_children = child.getChildNodes();
00059 final int l = param_children.getLength();
00060 for(int j = 0; j < l; j++)
00061 {
00062 Node param_child = param_children.item(j);
00063 if (param_child.getNodeType() == Node.ELEMENT_NODE)
00064 {
00065 Element e = (Element)param_child;
00066 String tg = e.getTagName();
00067 if (tg.equals(NeesControlMetadata.XML_TAG_FOR_PARAMETER))
00068 {
00069 RBNBBaseParameterHolder h =
00070 new RBNBBaseParameterHolder(param_child);
00071 parameters.put(h.getName(),h);
00072 }
00073 }
00074 }
00075 }
00076 }
00077 }
00078 }
00079
00083 public MutableTreeNode makeSwingTreeNode() {
00084 DefaultMutableTreeNode root = new DefaultMutableTreeNode(this);
00085 DefaultMutableTreeNode node = new DefaultMutableTreeNode("Type: " + type);
00086 root.add(node);
00087 root.add(RBNBBaseParameterHolder.makeParamersSwingTreeNode(parameters));
00088 return root;
00089 }
00090
00094 public void setParamters(Hashtable hashtable) {
00095 System.out.println("Set Paramters for " + name + " size = " + hashtable.size());
00096 parameters = hashtable;
00097 }
00098
00103 public Node createXmlNode(Document doc) {
00104 Node node, root = doc.createElement(NeesControlMetadata.XML_TAG_FOR_TEMPLATE);
00105 if (valid())
00106 {
00107 node = doc.createElement(NeesControlMetadata.XML_TAG_FOR_TEMPLATE_NAME);
00108 node.appendChild(doc.createTextNode(name));
00109 root.appendChild(node);
00110
00111 node = doc.createElement(NeesControlMetadata.XML_TAG_FOR_TEMPLATE_TYPE);
00112 node.appendChild(doc.createTextNode(type));
00113 root.appendChild(node);
00114
00115 if ((parameters != null) && (parameters.size() > 0))
00116 root.appendChild(createParamterListNode(doc));
00117 }
00118 return root;
00119 }
00120
00121 private Node createParamterListNode(Document doc)
00122 {
00123 Node node, root = doc.createElement(NeesControlMetadata.XML_TAG_FOR_PARAMETER_LIST);
00124 Enumeration e = parameters.elements();
00125 while (e.hasMoreElements())
00126 {
00127 RBNBBaseParameterHolder p = (RBNBBaseParameterHolder)e.nextElement();
00128 root.appendChild(p.createXmlNode(doc));
00129 }
00130 return root;
00131 }
00132
00133
00137 public boolean valid() {
00138 return
00139 ( (name != null)
00140 && (!name.equals(""))
00141 && (type != null)
00142 && ((type.equals(NeesControlMetadata.IMAGE_TYPE))
00143 || (type.equals(NeesControlMetadata.MOVIE_TYPE))
00144 || (type.equals(NeesControlMetadata.DATA_TYPE))
00145 || (type.equals(NeesControlMetadata.DAQ_TYPE)))
00146 );
00147 }
00148
00154 public TemplateDescription(NeesControlMetadata metadata, String name, String type)
00155 {
00156 setName(name);
00157 this.metadata = metadata;
00158 setType(type);
00159 }
00160
00161 public void setName(String name)
00162 {
00163 this.name = name;
00164 }
00165
00166 public String getName()
00167 {
00168 return name;
00169 }
00170
00171 public String toString()
00172 {
00173 return getName();
00174 }
00175
00176 public void addParameterTemplate(String name, String type, Object defaultValue)
00177 {
00178 parameters.put(name,new RBNBBaseParameterHolder(name,type,defaultValue));
00179 }
00180
00181 public RBNBBaseParameterHolder getParameterTemplate(String name)
00182 {
00183 return (RBNBBaseParameterHolder)parameters.get(name);
00184 }
00185
00186 public void setType(String type)
00187 {
00188 this.type = type;
00189 }
00190
00191 public Enumeration getParameterEnumeration()
00192 {
00193 return parameters.elements();
00194 }
00195
00196 }
Generated on Tue Aug 24 11:12:26 2004 for Data turbine for NEESGrid by
1.3.7