001 package com.croftsoft.apps.vaft.app;
002
003 import java.io.*;
004 import java.util.StringTokenizer;
005
006 import com.croftsoft.apps.vaft.core.HostInfo;
007
008 /*********************************************************************
009 * <P>
010 * @author
011 * <A HREF="http://www.alumni.caltech.edu/~croft">David W. Croft</A>
012 * @version
013 * 1998-04-26
014 *********************************************************************/
015
016 public class Config implements Serializable
017 //////////////////////////////////////////////////////////////////////
018 //////////////////////////////////////////////////////////////////////
019 {
020
021 private boolean use_control_panel;
022 private String rmi_server_name;
023 private int rmi_server_port;
024 private String rmi_object_name;
025 private String web_server_name;
026 private int web_server_port;
027 private String web_server_root;
028 private String peer_list_path;
029 private String seed_server_name;
030 private int seed_server_port;
031 private String seed_object_name;
032 private long swap_delay;
033 private String agent_dir;
034
035 public static final String USE_CONTROL_PANEL = "USE_CONTROL_PANEL";
036 public static final String RMI_SERVER_NAME = "RMI_SERVER_NAME";
037 public static final String RMI_SERVER_PORT = "RMI_SERVER_PORT";
038 public static final String RMI_OBJECT_NAME = "RMI_OBJECT_NAME";
039 public static final String WEB_SERVER_NAME = "WEB_SERVER_NAME";
040 public static final String WEB_SERVER_PORT = "WEB_SERVER_PORT";
041 public static final String WEB_SERVER_ROOT = "WEB_SERVER_ROOT";
042 public static final String PEER_LIST_PATH = "PEER_LIST_PATH";
043 public static final String SEED_SERVER_NAME = "SEED_SERVER_NAME";
044 public static final String SEED_SERVER_PORT = "SEED_SERVER_PORT";
045 public static final String SEED_OBJECT_NAME = "SEED_OBJECT_NAME";
046 public static final String SWAP_DELAY = "SWAP_DELAY";
047 public static final String AGENT_DIR = "AGENT_DIR";
048
049 //////////////////////////////////////////////////////////////////////
050 // Static methods
051 //////////////////////////////////////////////////////////////////////
052
053 public static void help ( PrintStream printStream )
054 //////////////////////////////////////////////////////////////////////
055 {
056 Config default_Config = new Config (
057 Defaults.USE_CONTROL_PANEL,
058 Defaults.RMI_SERVER_NAME ,
059 Defaults.RMI_SERVER_PORT ,
060 Defaults.RMI_OBJECT_NAME ,
061 Defaults.WEB_SERVER_NAME ,
062 Defaults.WEB_SERVER_PORT ,
063 Defaults.WEB_SERVER_ROOT ,
064 Defaults.PEER_LIST_PATH ,
065 Defaults.SEED_SERVER_NAME ,
066 Defaults.SEED_SERVER_PORT ,
067 Defaults.SEED_OBJECT_NAME ,
068 Defaults.SWAP_DELAY ,
069 Defaults.AGENT_DIR );
070 printStream.println ( Defaults.INFO + "\n"
071 + "Argument...: Default\n" + display ( default_Config ) );
072 }
073
074 public static String display ( Config config )
075 //////////////////////////////////////////////////////////////////////
076 {
077 return
078 USE_CONTROL_PANEL + "...:" + config.use_control_panel + "\n"
079 + RMI_SERVER_NAME + ".....:" + config.rmi_server_name + "\n"
080 + RMI_SERVER_PORT + ".....:" + config.rmi_server_port + "\n"
081 + RMI_OBJECT_NAME + ".....:" + config.rmi_object_name + "\n"
082 + WEB_SERVER_NAME + ".....:" + config.web_server_name + "\n"
083 + WEB_SERVER_PORT + ".....:" + config.web_server_port + "\n"
084 + WEB_SERVER_ROOT + ".....:" + config.web_server_root + "\n"
085 + PEER_LIST_PATH + "......:" + config.peer_list_path + "\n"
086 + SEED_SERVER_NAME + "....:" + config.seed_server_name + "\n"
087 + SEED_SERVER_PORT + "....:" + config.seed_server_port + "\n"
088 + SEED_OBJECT_NAME + "....:" + config.seed_object_name + "\n"
089 + SWAP_DELAY + "..........:" + config.swap_delay + "\n"
090 + AGENT_DIR + "...........:" + config.agent_dir + "\n";
091 }
092
093 //////////////////////////////////////////////////////////////////////
094 // Factory method
095 //////////////////////////////////////////////////////////////////////
096
097 public static Config parse (
098 String [ ] args, PrintStream printStream )
099 //////////////////////////////////////////////////////////////////////
100 {
101 if ( ( args == null ) || ( args.length == 0 ) )
102 {
103 Config.help ( printStream );
104 return null;
105 }
106
107 boolean use_control_panel = Defaults.USE_CONTROL_PANEL;
108 String rmi_server_name = Defaults.RMI_SERVER_NAME;
109 int rmi_server_port = Defaults.RMI_SERVER_PORT;
110 String rmi_object_name = Defaults.RMI_OBJECT_NAME;
111 String web_server_name = Defaults.WEB_SERVER_NAME;
112 int web_server_port = Defaults.WEB_SERVER_PORT;
113 String web_server_root = Defaults.WEB_SERVER_ROOT;
114 String peer_list_path = Defaults.PEER_LIST_PATH;
115 String seed_server_name = Defaults.SEED_SERVER_NAME;
116 int seed_server_port = Defaults.SEED_SERVER_PORT;
117 String seed_object_name = Defaults.SEED_OBJECT_NAME;
118 long swap_delay = Defaults.SWAP_DELAY;
119 String agent_dir = Defaults.AGENT_DIR;
120
121 try
122 {
123 for ( int i = 0; i < args.length; i++ )
124 {
125 String argument_name = args [ i ];
126 String argument_value = args [ ++i ];
127
128 argument_name = argument_name.toUpperCase ( );
129
130 if ( argument_name.equals ( USE_CONTROL_PANEL ) )
131 use_control_panel
132 = Boolean.valueOf ( argument_value ).booleanValue ( );
133 else if ( argument_name.equals ( RMI_SERVER_NAME ) )
134 rmi_server_name = argument_value;
135 else if ( argument_name.equals ( RMI_SERVER_PORT ) )
136 rmi_server_port = Integer.parseInt ( argument_value );
137 else if ( argument_name.equals ( RMI_OBJECT_NAME ) )
138 rmi_object_name = argument_value;
139 else if ( argument_name.equals ( WEB_SERVER_NAME ) )
140 web_server_name = argument_value;
141 else if ( argument_name.equals ( WEB_SERVER_PORT ) )
142 web_server_port = Integer.parseInt ( argument_value );
143 else if ( argument_name.equals ( WEB_SERVER_ROOT ) )
144 web_server_root = argument_value;
145 else if ( argument_name.equals ( PEER_LIST_PATH ) )
146 peer_list_path = argument_value;
147 else if ( argument_name.equals ( SEED_SERVER_NAME ) )
148 seed_server_name = argument_value;
149 else if ( argument_name.equals ( SEED_SERVER_PORT ) )
150 seed_server_port = Integer.parseInt ( argument_value );
151 else if ( argument_name.equals ( SEED_OBJECT_NAME ) )
152 seed_object_name = argument_value;
153 else if ( argument_name.equals ( SWAP_DELAY ) )
154 swap_delay = Long.parseLong ( argument_value );
155 else if ( argument_name.equals ( AGENT_DIR ) )
156 agent_dir = argument_value;
157 else
158 throw new IllegalArgumentException ( args [ i ] );
159 }
160 }
161 catch ( IllegalArgumentException ex )
162 {
163 if ( printStream == null ) throw ex;
164 Config.help ( printStream );
165 printStream.println ( ex.getMessage ( ) );
166 return null;
167 }
168
169 return new Config (
170 use_control_panel,
171 rmi_server_name,
172 rmi_server_port,
173 rmi_object_name,
174 web_server_name,
175 web_server_port,
176 web_server_root,
177 peer_list_path,
178 seed_server_name,
179 seed_server_port,
180 seed_object_name,
181 swap_delay,
182 agent_dir );
183 }
184
185 //////////////////////////////////////////////////////////////////////
186 // Constructor method
187 //////////////////////////////////////////////////////////////////////
188
189 public Config (
190 boolean use_control_panel,
191 String rmi_server_name,
192 int rmi_server_port,
193 String rmi_object_name,
194 String web_server_name,
195 int web_server_port,
196 String web_server_root,
197 String peer_list_path,
198 String seed_server_name,
199 int seed_server_port,
200 String seed_object_name,
201 long swap_delay,
202 String agent_dir )
203 //////////////////////////////////////////////////////////////////////
204 {
205 this.use_control_panel = use_control_panel;
206 this.rmi_server_name = rmi_server_name;
207 this.rmi_server_port = rmi_server_port;
208 this.rmi_object_name = rmi_object_name;
209 this.web_server_name = web_server_name;
210 this.web_server_port = web_server_port;
211 this.web_server_root = web_server_root;
212 this.peer_list_path = peer_list_path;
213 this.seed_server_name = seed_server_name;
214 this.seed_server_port = seed_server_port;
215 this.seed_object_name = seed_object_name;
216 this.swap_delay = swap_delay;
217 this.agent_dir = agent_dir;
218 }
219
220 //////////////////////////////////////////////////////////////////////
221 // Access methods
222 //////////////////////////////////////////////////////////////////////
223
224 public boolean getUse_control_panel ( ) { return use_control_panel; }
225 public String getRmi_server_name ( ) { return rmi_server_name ; }
226 public int getRmi_server_port ( ) { return rmi_server_port ; }
227 public String getRmi_object_name ( ) { return rmi_object_name ; }
228 public String getWeb_server_name ( ) { return web_server_name ; }
229 public int getWeb_server_port ( ) { return web_server_port ; }
230 public String getWeb_server_root ( ) { return web_server_root ; }
231 public String getPeer_list_path ( ) { return peer_list_path ; }
232 public String getSeed_server_name ( ) { return seed_server_name ; }
233 public int getSeed_server_port ( ) { return seed_server_port ; }
234 public String getSeed_object_name ( ) { return seed_object_name ; }
235 public long getSwap_delay ( ) { return swap_delay ; }
236 public String getAgent_dir ( ) { return agent_dir ; }
237
238 //////////////////////////////////////////////////////////////////////
239 //////////////////////////////////////////////////////////////////////
240
241 public String display ( )
242 //////////////////////////////////////////////////////////////////////
243 {
244 return display ( this );
245 }
246
247 public HostInfo createSeed ( )
248 //////////////////////////////////////////////////////////////////////
249 {
250 return new HostInfo (
251 seed_server_name, seed_server_port, seed_object_name,
252 new String [ ] { "com.orbs.pub.app.agent.vaft.core.SwapRemote" }
253 );
254 }
255
256 //////////////////////////////////////////////////////////////////////
257 //////////////////////////////////////////////////////////////////////
258 }