/** * */ package org.ebayopensource.turmeric.tools.codegen.fastserformat.protobuf.model; import java.util.HashMap; import java.util.List; import java.util.Map; import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.schema.Attribute; import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.schema.AttributeGroupType; import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.schema.ComplexType; import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.schema.ElementType; import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.schema.GroupType; import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.schema.SchemaType; import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.schema.SimpleType; /** * @author rkulandaivel * * This class is holds various schema type map. * The types needs to be holded different Map for each type * because a complex type name can be same as element name * which again can be same for group type name which again can be same for attribute. * * This is the reason separate Map needs to be maintained. */ public class SchemaTypeMap { private Map<SchemaTypeName, SchemaType> m_allComplexAndSimpleTypesMap = new HashMap<SchemaTypeName, SchemaType>(); private Map<SchemaTypeName, SchemaType> m_allAttributeTypesMap = new HashMap<SchemaTypeName, SchemaType>(); private Map<SchemaTypeName, SchemaType> m_allAttributeGroupTypesMap = new HashMap<SchemaTypeName, SchemaType>(); private Map<SchemaTypeName, SchemaType> m_allGroupTypesMap = new HashMap<SchemaTypeName, SchemaType>(); private Map<SchemaTypeName, SchemaType> m_allElementTypesMap = new HashMap<SchemaTypeName, SchemaType>(); private SchemaTypeMap(){ } public static SchemaTypeMap createSchemaTypeMapFromList(List<SchemaType> schemaTypes){ SchemaTypeMap map = new SchemaTypeMap(); for(SchemaType schemaType : schemaTypes){ SchemaTypeName typeName = new SchemaTypeName(schemaType.getTypeName()); if( schemaType instanceof ComplexType ){ map.m_allComplexAndSimpleTypesMap.put(typeName, schemaType); }else if( schemaType instanceof SimpleType ){ map.m_allComplexAndSimpleTypesMap.put(typeName, schemaType); }else if( schemaType instanceof AttributeGroupType ){ map.m_allAttributeGroupTypesMap.put(typeName, schemaType); }else if( schemaType instanceof ElementType ){ map.m_allElementTypesMap.put(typeName, schemaType); }else if( schemaType instanceof Attribute ){ map.m_allAttributeTypesMap.put(typeName, schemaType); }else if( schemaType instanceof GroupType ){ map.m_allGroupTypesMap.put(typeName, schemaType); } } return map; } public Map<SchemaTypeName, SchemaType> getAllComplexAndSimpleTypes(){ return m_allComplexAndSimpleTypesMap; } public SchemaType getComplexOrSimpleType(SchemaTypeName typeName){ return m_allComplexAndSimpleTypesMap.get(typeName); } public Map<SchemaTypeName, SchemaType> getAllElementTypes(){ return m_allElementTypesMap; } public SchemaType getElementType(SchemaTypeName typeName){ return m_allElementTypesMap.get(typeName); } public SchemaType getArrtibuteGroupType(SchemaTypeName typeName){ return m_allAttributeGroupTypesMap.get(typeName); } public SchemaType getArrtibuteType(SchemaTypeName typeName){ return m_allAttributeTypesMap.get(typeName); } public SchemaType getGroupType(SchemaTypeName typeName){ return m_allGroupTypesMap.get(typeName); } }