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 }