/******************************************************************************* * Copyright (c) 2001, 2013 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.wst.xsd.contentmodel.internal; import java.util.HashMap; import java.util.Map; import org.eclipse.xsd.XSDSimpleTypeDefinition; import org.eclipse.xsd.XSDTypeDefinition; /** * Helper class to generate valid values for built-in simple types. */ public class XSDTypeUtil { protected static Map defaultValue = new HashMap(); public static void initialize() { defaultValue.put("anySimpleType", null); defaultValue.put("anyType", null); defaultValue.put("anyURI", "http://tempuri.org"); defaultValue.put("base64Binary", "MA=="); defaultValue.put("boolean", "true"); defaultValue.put("byte", "0"); defaultValue.put("date", "2001-01-01"); defaultValue.put("dateTime", "2001-12-31T12:00:00"); defaultValue.put("decimal", "0.0"); defaultValue.put("double", "0.0"); defaultValue.put("duration", "P1D"); defaultValue.put("ENTITY", "entity"); defaultValue.put("ENTITIES", "entities"); defaultValue.put("float", "0.0"); defaultValue.put("gDay", "---01"); defaultValue.put("gMonth", "--01"); defaultValue.put("gMonthDay", "--01-01"); defaultValue.put("gYear", "2001"); defaultValue.put("gYearMonth", "2001-01"); defaultValue.put("hexBinary", "0F00"); defaultValue.put("ID", null); defaultValue.put("IDREF", null); defaultValue.put("IDREFS", null); defaultValue.put("int", "0"); defaultValue.put("integer", "0"); defaultValue.put("language", "EN"); defaultValue.put("long", "0"); defaultValue.put("Name", "Name"); defaultValue.put("NCName", "NCName"); defaultValue.put("negativeInteger", "-1"); defaultValue.put("NMTOKEN", "NMTOKEN"); defaultValue.put("NMTOKENS", "NMTOKENS"); defaultValue.put("nonNegativeInteger", "0"); defaultValue.put("nonPositiveInteger", "0"); defaultValue.put("normalizedString", null); defaultValue.put("NOTATION", "NOTATION"); defaultValue.put("positiveInteger", "1"); defaultValue.put("QName", "QName"); defaultValue.put("short", "0"); defaultValue.put("string", null); defaultValue.put("time", "12:00:00"); defaultValue.put("token", "token"); defaultValue.put("unsignedByte", "0"); defaultValue.put("unsignedInt", "0"); defaultValue.put("unsignedLong", "0"); defaultValue.put("unsignedShort", "0"); } /* * Returns true if the type is built-in. * @param type - an XSDTypeDefinition object. * @return true if the type is built-in. */ public static boolean isBuiltIn(XSDTypeDefinition type) { boolean result = false; if (type instanceof XSDSimpleTypeDefinition) { String name = type.getName(); if (name != null) { return defaultValue.containsKey(name); } } return result; } /** * Returns a valid default value for the simple type. * @param type - a simple built-in type. * @return a valid default value for the simple type. */ public static String getInstanceValue(XSDTypeDefinition type) { if (type != null) { if (isBuiltIn(type)) { String nameID = type.getName(); return (String)defaultValue.get(nameID); } else { XSDTypeDefinition basetype = type.getBaseType(); if (basetype != type) return getInstanceValue(basetype); } } return null; } }