public static final ParameterizedCommand generateCommand(Command command,
			Map parameters) {
		// no parameters
		if (parameters == null || parameters.isEmpty()) {
			return new ParameterizedCommand(command, null);
		}

		try {
			ArrayList parms = new ArrayList();
			Iterator i = parameters.keySet().iterator();

			// iterate over given parameters
			while (i.hasNext()) {
				String key = (String) i.next();
				IParameter parameter = null;
				// get the parameter from the command
				parameter = command.getParameter(key);

				// if the parameter is defined add it to the parameter list
				if (parameter == null) {
					return null;
				}
				ParameterType parameterType = command.getParameterType(key);
				if (parameterType == null) {
					parms.add(new Parameterization(parameter,
							(String) parameters.get(key)));
				} else {
					AbstractParameterValueConverter valueConverter = parameterType
							.getValueConverter();
					if (valueConverter != null) {
						String val = valueConverter.convertToString(parameters
								.get(key));
						parms.add(new Parameterization(parameter, val));
					} else {
						parms.add(new Parameterization(parameter,
								(String) parameters.get(key)));
					}
				}
			}

			// convert the parameters to an Parameterization array and create
			// the command
			return new ParameterizedCommand(command, (Parameterization[]) parms
					.toArray(new Parameterization[parms.size()]));
		} catch (NotDefinedException e) {
		} catch (ParameterValueConversionException e) {
		}
		return null;
	}