package at.ac.tuwien.infosys.jaxb;
import java.math.BigDecimal;
import java.net.URI;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import javax.xml.bind.annotation.Facets.WhiteSpace;
/**
* Common constants.
* @author hummer
*/
public class Constants {
public static String FACET_ENUMERATION = "enumeration";
public static String FACET_LENGTH = "length";
public static String FACET_PATTERN = "pattern";
public static String FACET_WHITESPACE = "whiteSpace";
public static String FACET_TOTALDIGITS = "totalDigits";
public static String FACET_FRACTIONDIGITS = "fractionDigits";
public static String FACET_MAXEXCLUSIVE = "maxExclusive";
public static String FACET_MINEXCLUSIVE = "minExclusive";
public static String FACET_MAXINCLUSIVE = "maxInclusive";
public static String FACET_MININCLUSIVE = "minInclusive";
public static String FACET_MAXLENGTH = "maxLength";
public static String FACET_MINLENGTH = "minLength";
/** types of available facets */
@SuppressWarnings("all")
public static final Map<String,Class<?>> FACET_TYPES = new HashMap<String,Class<?>>(){
{
put(FACET_ENUMERATION, String[].class);
put(FACET_LENGTH, long.class);
put(FACET_PATTERN, String.class);
put(FACET_WHITESPACE, WhiteSpace.class);
put(FACET_TOTALDIGITS, long.class);
put(FACET_FRACTIONDIGITS, long.class);
put(FACET_MAXEXCLUSIVE, String.class);
put(FACET_MINEXCLUSIVE, String.class);
put(FACET_MAXINCLUSIVE, String.class);
put(FACET_MININCLUSIVE, String.class);
put(FACET_MAXLENGTH, long.class);
put(FACET_MINLENGTH, long.class);
}};
/** list of available facets */
public static final Set<String> FACET_NAMES = new HashSet<String>(FACET_TYPES.keySet());
/** facets allowed for specific base type, based on
* [XSD2] http://www.w3.org/TR/xmlschema-2/#defn-coss */
@SuppressWarnings("all")
public static final Map<Class<?>,Set<String>> FACETS_BY_TYPE = new HashMap<Class<?>,Set<String>>(){
{
put(String.class, new HashSet<String>(Arrays.asList(
FACET_LENGTH,
FACET_MINLENGTH,
FACET_MAXLENGTH,
FACET_PATTERN,
FACET_ENUMERATION,
FACET_WHITESPACE)));
put(URI.class, get(String.class));
put(Enum.class, new HashSet<String>(Arrays.asList(
FACET_PATTERN,
FACET_ENUMERATION)));
put(Boolean.class, new HashSet<String>(Arrays.asList(
FACET_PATTERN,
FACET_WHITESPACE,
FACET_ENUMERATION)));
put(BigDecimal.class, new HashSet<String>(Arrays.asList(
FACET_TOTALDIGITS,
FACET_FRACTIONDIGITS,
FACET_PATTERN,
FACET_WHITESPACE,
FACET_ENUMERATION,
FACET_MAXINCLUSIVE,
FACET_MAXEXCLUSIVE,
FACET_MININCLUSIVE,
FACET_MINEXCLUSIVE)));
put(Integer.class, get(BigDecimal.class));
put(Double.class, new HashSet<String>(Arrays.asList(
FACET_TOTALDIGITS, /* not strictly [XSD2], but still allowed here */
FACET_FRACTIONDIGITS, /* not strictly [XSD2], but still allowed here */
FACET_PATTERN,
FACET_WHITESPACE,
FACET_ENUMERATION,
FACET_MAXINCLUSIVE,
FACET_MAXEXCLUSIVE,
FACET_MININCLUSIVE,
FACET_MINEXCLUSIVE)));
put(Date.class, get(Double.class));
}};
}