Update of /cvsroot/commonjava/commonjava-projects/commonjava-console/src/java/org/commonjava/console
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26752/src/java/org/commonjava/console
Added Files:
PromptConfig.java SimplePrompt.java
Log Message:
updated documentation in project.xml files, and added functionality to:
Console:
- provide convenient way to prompt the user for more information
Config:
- Provide snap-in container stacking, or scoping
- Provide a JBoss service implementation of a snap-in container
Probably other things, but I don't honestly remember everything...
--- NEW FILE: PromptConfig.java ---
/* Created on Feb 6, 2004 */
package org.commonjava.console;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import org.commonjava.console.option.OptionFormat;
import org.commonjava.lang.Verifiable;
/**
* @author jdcasey
*/
public class PromptConfig implements Verifiable {
private InputStream in;
private OutputStream out;
private PrintStream err;
private String prompt;
private OptionFormat answerFormat;
private String defaultValue;
/**
*
*/
public PromptConfig() {
}
/* (non-Javadoc)
* @see org.commonjava.lang.Verifiable#verifyValid()
*/
public boolean verifyValid() {
return in != null && out != null && err != null && prompt != null && answerFormat != null;
}
/**
* @return
*/
public OptionFormat getAnswerFormat() {
return answerFormat;
}
/**
* @return
*/
public PrintStream getErr() {
return err;
}
/**
* @return
*/
public InputStream getIn() {
return in;
}
/**
* @return
*/
public OutputStream getOut() {
return out;
}
/**
* @return
*/
public String getPrompt() {
return prompt;
}
/**
* @param format
*/
public void setAnswerFormat(OptionFormat format) {
answerFormat = format;
}
/**
* @param stream
*/
public void setErr(PrintStream stream) {
err = stream;
}
/**
* @param stream
*/
public void setIn(InputStream stream) {
in = stream;
}
/**
* @param stream
*/
public void setOut(OutputStream stream) {
out = stream;
}
/**
* @param string
*/
public void setPrompt(String string) {
prompt = string;
}
/**
* @return
*/
public String getDefaultValue() {
return defaultValue;
}
/**
* @param string
*/
public void setDefaultValue(String string) {
defaultValue = string;
}
}
--- NEW FILE: SimplePrompt.java ---
/* Created on Feb 6, 2004 */
package org.commonjava.console;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import org.commonjava.console.option.OptionFormat;
/**
* @author jdcasey
*/
public class SimplePrompt {
private PromptConfig config;
/**
*
*/
public SimplePrompt(PromptConfig config) {
if(!config.verifyValid()){
throw new IllegalArgumentException("Prompt configuration is not complete.");
}
this.config = config;
}
public Object prompt() throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(config.getIn()));
PrintStream out = new PrintStream(config.getOut());
PrintStream err = config.getErr();
String defaultVal = config.getDefaultValue();
String answer = null;
Object result = null;
while(answer == null){
out.print(config.getPrompt() + " ");
out.flush();
answer = in.readLine();
OptionFormat format = config.getAnswerFormat();
if(format.isValid(answer)){
answer = null;
out.println("You must supply a valid value. Please try again.");
}
else if(defaultVal != null && format.isValid(defaultVal)){
result = format.getValue(defaultVal);
break;
}
else{
result = format.getValue(answer);
break;
}
}
return result;
}
}
|