private String getInputFor(ParameterType t, BulkParameterFactory f) {
   if (t.getType().isEnum()) {
     final StringBuilder ret = new StringBuilder();
     ret.append("<select name=\"").append(t.name()).append("\">");
     for (final Object o : t.getType().getEnumConstants()) {
       if (o.equals(f.getParam(t))) {
         ret.append("<option selected=\"selected\">");
       } else {
         ret.append("<option>");
       }
       ret.append(o.toString()).append("</option>");
     }
     ret.append("</select>");
     return ret.toString();
   } else if (t.getType().equals(Double.class)) {
     return "<input name=\""
         + t.name()
         + "\" value=\""
         + f.getParam(t)
         + "\" type=\"number\" step=\"any\" />";
   } else if (t.getType().equals(Integer.class)) {
     return "<input name=\""
         + t.name()
         + "\" value=\""
         + f.getParam(t)
         + "\" type=\"number\" step=\"1\" />";
   } else {
     return "Invalid type: " + t.getType();
   }
 }
 private Properties parametersToProperties(BulkParameterFactory f) {
   final Properties ret = new Properties();
   for (final ParameterType type : ParameterType.values()) {
     ret.setProperty(type.name(), f.getParam(type).toString());
   }
   return ret;
 }
 private BulkParameterFactory getParameters(PrintWriter w, HttpServletRequest request) {
   BulkParameterFactory f = BulkParameterFactory.forCommercial();
   for (final ParameterType t : ParameterType.values()) {
     final String param = request.getParameter(t.name());
     if (param != null && !param.isEmpty()) {
       try {
         f = f.copyWithChangedParam(t, t.parse(param));
       } catch (final RuntimeException e) {
         this.printParseError(w, t.toString(), e);
       }
     }
   }
   return f;
 }