00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 package org.objectweb.jonas.newbean;
00031
00032
00033 import java.io.BufferedReader;
00034 import java.io.InputStreamReader;
00035 import java.io.IOException;
00036
00037 import org.apache.velocity.VelocityContext;
00038
00039
00056 public abstract class Parameter {
00057
00058 private static final String PROMPT = "> ";
00059 private static final int INPUT_BUFFER_SIZE = 80;
00060 private static BufferedReader reader =
00061 new BufferedReader(new InputStreamReader(System.in));
00062
00067 protected VelocityContext vContext = null;
00068
00072 protected String value = null;
00073
00074
00082 public Parameter(VelocityContext context) {
00083 vContext = context;
00084 }
00085
00086
00096 public void walkThrough() {
00097 obtainValue();
00098 export();
00099 Parameter nextParameter = getNextParameter();
00100 if (nextParameter != null) {
00101 nextParameter.walkThrough();
00102 }
00103 }
00104
00105
00112 public void obtainValue() {
00113
00114
00115 String inp = getCmdArg( getArgKeyword() );
00116 if( inp!=null ) {
00117 setValue(inp);
00118 if( isValid() ) { return; }
00119 }
00120
00121 for (;;) {
00122 String input = null;
00123 System.out.println(getPrompt());
00124 System.out.print("> ");
00125 try {
00126 input = reader.readLine();
00127 } catch (IOException e) {
00128 NewBean.error(e.toString());
00129 }
00130 if (input == null) {
00131 input = "";
00132 }
00133 setValue(input);
00134 if (isValid())
00135 break;
00136 System.out.println("Invalid value, please retry");
00137 }
00138 System.out.println();
00139 }
00140
00141
00151 public void setValue(String input) {
00152 value = input;
00153 }
00154
00155
00160 public abstract String getPrompt();
00161
00162
00170 public abstract boolean isValid();
00171
00172
00177 public abstract void export();
00178
00179
00191 public abstract Parameter getNextParameter();
00192
00196 public abstract String getArgKeyword();
00197
00198 private String getCmdArg( String kwd )
00199 {
00200 return (String)NewBean.commandLine.get( kwd );
00201 }
00202
00203 }