/*
 * Creado el 04-dic-03
 */
package es.ejie.frmk.presentacion.operacion.datos;

import java.lang.reflect.Array;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.DynaProperty;
import org.apache.struts.validator.DynaValidatorForm;


/**
 * Clase que será usada para identificar un form de entrada de una operación de
 * presentación con validator en el Struts-config.xml de cada operación.
 * 
 * @version 1.0
 * Fecha: 18-dic-03
 */
public class Q70OPValidatorForm extends DynaValidatorForm {
	
	/**
	 * Render a String representation of this object.
	 */
	public String toString() {

		StringBuffer sb = new StringBuffer("Q70OPValidatorForm\ndynaClass=");
		sb.append(getDynaClass().getName());
		DynaProperty props[] = getDynaClass().getDynaProperties();
		if (props == null) {
			props = new DynaProperty[0];
		}
		for (int i = 0; i < props.length; i++) {
			sb.append("\n");
			sb.append(props[i].getType()+" ");
			sb.append(props[i].getName());
			sb.append('=');
			Object value = get(props[i].getName());
			if (value == null) {
				sb.append("<NULL>");
			} else if (value.getClass().isArray()) {
				int n = Array.getLength(value);
				sb.append("{");
				for (int j = 0; j < n; j++) {
					if (j > 0) {
						sb.append(',');
					}
					sb.append(Array.get(value, j));
				}
				sb.append("}");
			} else if (value instanceof List) {
				int n = ((List) value).size();
				sb.append("{");
				for (int j = 0; j < n; j++) {
					if (j > 0) {
						sb.append(',');
					}
					sb.append(((List) value).get(j));
				}
				sb.append("}");
			} else if (value instanceof Map) {
				int n = 0;
				Iterator keys = ((Map) value).keySet().iterator();
				sb.append("{");
				while (keys.hasNext()) {
					if (n > 0) {
						sb.append(',');
					}
					n++;
					String key = (String) keys.next();
					sb.append(key);
					sb.append('=');
					sb.append(((Map) value).get(key));
				}
				sb.append("}");
			} else {
				sb.append(value);
			}
		}
		return (sb.toString());
	}
}
