00001
00002
00003
00004
00005
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
00018
import com.rbnb.utility.ArgHandler;
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
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
00293
00294