/** * */ package org.javabuilders; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; /** * Type safe collection that holds a list of values and related information * @author Jacek Furmankiewicz * */ @SuppressWarnings("serial") public class Values<K,V> extends LinkedHashMap<K,V> { private Map<Object,String> errorMessages = new HashMap<Object, String>(); private ValueListDefinition definition = null; /** * Constructor */ public Values() { this(null); } /** * Constructor * @param def Value list definition for this value list */ public Values(ValueListDefinition def) { this.definition = def; } /** * @param key Key * @param value Value * @param errorMessageFormat Error msg format (for String.format()) * @param messageArgs Format arguments */ public void put(K key, V value, String errorMessageFormat, Object... messageArgs) { put(key,value); errorMessages.put(key,String.format(errorMessageFormat,messageArgs)); } /** * @return True if a validation results is valid, false if not */ public boolean isValid(String key) { return errorMessages.containsKey(key); } /** * @return True if a validation results is valid, false if not */ public boolean isValid() { return errorMessages.size() == 0; } /** * @return All the errors from the invalid validations */ public String getErrors() { StringBuilder builder = new StringBuilder(); for(String msg : errorMessages.values()) { builder.append(msg); builder.append("\n"); } return builder.toString(); } /** * @param key Key * @return Error msg */ public String getError(String key) { return errorMessages.get(key); } /** * @return Value list definition (may be null if none defined) */ public ValueListDefinition getDefinition() { return definition; } }