Main Page | Class Hierarchy | Class List | File List | Class Members | Related Pages

RBNBBase.java

00001 /* RBNBBase.java 00002 * ************************************************************************ 00003 * Created on May 7, 2004 00004 * 00005 * A base class for all RBNB widgets 00006 * 00007 */ 00008 package org.nees.rbnb; 00009 00010 import java.util.Hashtable; 00011 import java.util.Enumeration; 00012 00013 import java.io.IOException; 00014 00015 import com.rbnb.sapi.*; 00016 00017 //import COM.Creare.Utility.ArgHandler; //for argument parsing 00018 import com.rbnb.utility.ArgHandler; //for argument parsing 00019 00030 public abstract class RBNBBase 00031 { 00032 00033 private static final String SERVER_NAME_NAME = "ServerHostName"; 00034 private static final String SERVER_NAME = "localhost"; 00035 private static final String SERVER_PORT_NAME = "ServerPortNumber"; 00036 private static final String SERVER_PORT = "3333"; 00037 private String serverName = SERVER_NAME; 00038 private String serverPort = SERVER_PORT; 00039 private String server = serverName + ":" + serverPort; 00040 00041 protected static final String DATA_SOURCE_CHANNEL = "Untyped_Unnamed_data_source"; 00042 protected static final String DATA_SOURCE_NAME = "data.txt"; 00043 protected static final String LOGGING_SOURCE_CHANNEL = "Untyped_Unnamed_debug_log_source"; 00044 protected static final String LOGGING_SOURCE_NAME = "log.txt"; 00045 protected static final String COMMAND_PLUGIN_CHANNEL = "Untyped_Unnamed_command_plugin"; 00046 protected static final String COMMAND_PLUGIN_NAME = "command.text"; 00047 00048 protected String dataSourceChannel = DATA_SOURCE_CHANNEL; 00049 protected String dataSourceName = DATA_SOURCE_NAME; 00050 protected String loggingSourceChannel = LOGGING_SOURCE_CHANNEL; 00051 protected String loggindSourceName = LOGGING_SOURCE_NAME; 00052 protected String commandPluginChannel = COMMAND_PLUGIN_CHANNEL; 00053 protected String commandPluginName = COMMAND_PLUGIN_NAME; 00054 00055 private static String[] baseParameterNameArray; 00056 private static String[] baseParameterTypeArray; 00057 private static Object[] baseParameterDefaultArray; 00058 00059 private Hashtable parameters = new Hashtable(); 00060 00061 static 00062 { 00063 setBaseParamterArrays(); 00064 } 00065 00066 private static void setBaseParamterArrays() 00067 { 00068 baseParameterNameArray = new String[2]; 00069 baseParameterTypeArray = new String[2]; 00070 baseParameterDefaultArray = new Object[2]; 00071 00072 baseParameterNameArray[0] = SERVER_NAME_NAME; 00073 baseParameterTypeArray[0] = 00074 RBNBBaseParameterHolder.STRING_TYPE; 00075 baseParameterDefaultArray[0] = SERVER_NAME; 00076 00077 baseParameterNameArray[1] = SERVER_PORT_NAME; 00078 baseParameterTypeArray[1] = 00079 RBNBBaseParameterHolder.STRING_TYPE; 00080 baseParameterDefaultArray[1] = SERVER_PORT; 00081 } 00082 00083 protected void initialize() 00084 { 00085 parameters = new Hashtable(); 00086 setDefaultParameters(); 00087 } 00088 00089 protected boolean setArgs(String[] args) throws IllegalArgumentException 00090 { 00091 if (!setBaseArgs(args)) return false; 00092 return setInstanceArgs(args); 00093 } 00094 00095 private void setDefaultParameters() { 00096 String[] n = getParameterNameArray(); 00097 String[] t = getParameterTypeArray(); 00098 Object[] d = getParameterDefaultArray(); 00099 00100 for (int i = 0; i < n.length; i++) 00101 setNewParameter(n[i],t[i],d[i]); 00102 } 00103 00104 protected abstract void setParamterArrays(); 00105 00110 public void setBaseVarialbesFromParametes() 00111 { 00112 serverName = SERVER_NAME; 00113 try{ 00114 Object obj = getValueWithDefault(SERVER_NAME_NAME, SERVER_NAME); 00115 serverName = (String)obj; 00116 } catch (Throwable ignore){} 00117 00118 serverPort = SERVER_PORT; 00119 try{ 00120 Object obj = getValueWithDefault(SERVER_PORT_NAME, SERVER_PORT); 00121 serverPort = (String)obj; 00122 } catch (Throwable ignore){} 00123 00124 server = serverName + ":" + serverPort; 00125 } 00126 00127 protected Object getValueWithDefault(String parameterName, Object sourceDefualt) 00128 { 00129 RBNBBaseParameterHolder p = getParameter(parameterName); 00130 Object d = p.getDefaultValue(); 00131 Object v = p.getValue(); 00132 if (v == null) v = d; 00133 if (v == null) v = sourceDefualt; 00134 return v; 00135 } 00136 00137 protected boolean setBaseArgs(String[] args) throws IllegalArgumentException 00138 { 00139 //parse args 00140 try { 00141 ArgHandler ah=new ArgHandler(args); 00142 if (ah.checkFlag('h')) { 00143 printUsage(); 00144 return false; 00145 } 00146 if (ah.checkFlag('s')) { 00147 String a=ah.getOption('s'); 00148 if (a!=null) setServerName(a); 00149 } 00150 if (ah.checkFlag('p')) { 00151 String a=ah.getOption('p'); 00152 if (a!=null) setServerPort(a); 00153 } 00154 } catch (Exception e) { 00155 throw new IllegalArgumentException("setArg failed: " + e); 00156 } 00157 return true; 00158 } 00159 00163 public void setServerName(String name) { 00164 serverName = name; 00165 this.setParameterValue(SERVER_NAME_NAME,new String(name)); 00166 } 00167 00171 public void setServerPort(String port) { 00172 serverPort = port; 00173 this.setParameterValue(SERVER_PORT_NAME,new String(port)); 00174 } 00175 00176 public String getServer() 00177 { 00178 server = serverName + ":" + serverPort; 00179 return server; 00180 } 00181 00182 protected abstract boolean setInstanceArgs(String[] args) throws IllegalArgumentException; 00183 00184 protected void printUsage() { 00185 System.out.println("[-s Server Hostname *" + SERVER_NAME + "] "); 00186 System.out.println("[-p Server Port Number *" + SERVER_PORT + "] "); 00187 } 00188 00193 protected String getTemplateName() 00194 { 00195 String fullName = this.getClass().getName(); 00196 int pos = fullName.lastIndexOf("."); 00197 String shortName = ""; 00198 if (pos > -1) 00199 shortName = fullName.substring(pos+1,fullName.length()); 00200 else 00201 shortName = fullName; 00202 return shortName; 00203 } 00204 00205 protected Hashtable getParamterTable() 00206 { 00207 return parameters; 00208 } 00209 00210 protected void setNewParameter(String name, String type, Object defaultValue) 00211 throws IllegalArgumentException 00212 { 00213 System.out.println("Set new parameter (in " + this.getTemplateName() + ") name = " + name); 00214 if (name == null) throw new IllegalArgumentException("Null Name not allowed."); 00215 RBNBBaseParameterHolder p = new RBNBBaseParameterHolder(name, type, defaultValue); 00216 parameters.put(name, p); 00217 } 00218 00219 protected void setParameterValue(String name, Object value) 00220 throws IllegalArgumentException 00221 { 00222 RBNBBaseParameterHolder p = (RBNBBaseParameterHolder) parameters.get(name); 00223 if (p != null) p.setValue(value); 00224 } 00225 00226 protected RBNBBaseParameterHolder getParameter(String name) 00227 { 00228 return (RBNBBaseParameterHolder) parameters.get(name); 00229 } 00230 00234 public abstract String[] getParameterNameArray(); 00235 00239 public abstract String[] getParameterTypeArray(); 00240 00244 public abstract Object[] getParameterDefaultArray(); 00245 00249 public String[] getBaseParameterNameArray() { 00250 return baseParameterNameArray; 00251 } 00252 00256 public String[] getBaseParameterTypeArray() { 00257 return baseParameterTypeArray; 00258 } 00259 00263 public Object[] getBaseParameterDefaultArray() { 00264 return baseParameterDefaultArray; 00265 } 00266 00271 public abstract void setVariablesFromParameters(); 00272 00277 public abstract boolean start(); 00278 00283 public abstract boolean stop(); 00284 00289 public abstract boolean isRunning(); 00290 } 00291 /* 00292 * $Header: /disks/cvs/neesgrid/turbine/src/org/nees/rbnb/RBNBBase.java,v 1.10 2004/07/15 17:36:41 weymouth Exp $ 00293 */ 00294

Generated on Tue Aug 24 11:12:26 2004 for Data turbine for NEESGrid by doxygen 1.3.7