package org.safehaus.penrose.service;
import org.safehaus.penrose.config.Parameter;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.LinkedHashMap;
import java.util.Collection;
/**
* @author Endi Sukma Dewata
*/
public class ServiceConfigurator {
protected File serviceDir;
protected ServiceConfig serviceConfig;
protected PrintWriter out = new PrintWriter(System.out, true);
protected BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
protected Map<String,Parameter> parameters = new LinkedHashMap<String,Parameter>();
public ServiceConfigurator() {
}
public void init() throws Exception {
}
public void configure() throws Exception {
for (Parameter parameter : parameters.values()) {
boolean done = false;
while (!done) {
try {
configure(parameter);
done = true;
} catch (Exception e) {
out.println("Error: "+e.getMessage());
}
}
}
}
public void configure(Parameter parameter) throws Exception {
String description = parameter.getDisplayName();
String value = parameter.getDefaultValue();
out.print(description+" ["+value+"]: ");
out.flush();
String s = in.readLine();
if (s != null) {
s = s.trim();
if (!"".equals(s)) value = s;
}
Collection<String> options = parameter.getOptions();
if (!options.isEmpty() && !options.contains(value)) {
throw new Exception("Valid options are "+options+".");
}
setParameterValue(parameter, value);
}
public void close() throws Exception {
}
public ServiceConfig getServiceConfig() {
return serviceConfig;
}
public void setServiceConfig(ServiceConfig serviceConfig) {
this.serviceConfig = serviceConfig;
}
public File getServiceDir() {
return serviceDir;
}
public void setServiceDir(File serviceDir) {
this.serviceDir = serviceDir;
}
public Collection<Parameter> getParameters() {
return parameters.values();
}
public void setParameters(Map<String, Parameter> parameters) {
this.parameters = parameters;
}
public void addParameter(Parameter parameter) {
parameters.put(parameter.getName(), parameter);
}
public Collection<String> getParameterNames() {
return parameters.keySet();
}
public void setParameterValue(Parameter parameter, String value) throws Exception {
}
}