/**
*
*/
package org.ebayopensource.turmeric.tools.codegen.fastserformat.protobuf;
import javax.xml.namespace.QName;
import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.schema.Attribute;
import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.schema.AttributeGroup;
import org.ebayopensource.turmeric.tools.codegen.external.wsdl.parser.schema.AttributeGroupType;
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.fastserformat.protobuf.model.SchemaTypeMap;
import org.ebayopensource.turmeric.tools.codegen.fastserformat.protobuf.model.SchemaTypeName;
/**
* @author rkulandaivel
*
* This is base abstract class for all Mapper types.
* This class has util methods to access SchemaTypeMap.
*
*/
public abstract class BaseSchemaTypeMapper {
private SchemaTypeMap m_schemaTypeMap = null;
private MapperInstanceProvider m_instProvider = null;
public BaseSchemaTypeMapper(SchemaTypeMap schemaTypeMap, MapperInstanceProvider instProvider){
this.m_schemaTypeMap = schemaTypeMap;
this.m_instProvider = instProvider;
}
public MapperInstanceProvider getInstanceProvider(){
return m_instProvider;
}
public SchemaTypeMap getSchemaTypeMap(){
return this.m_schemaTypeMap;
}
/**
* Return the complex type or simple type
*
* @param typeName
* @return
*/
public SchemaType getComplexOrSimpleType(SchemaTypeName typeName){
return getSchemaTypeMap().getComplexOrSimpleType(typeName);
}
/**
* Return the element type.
* @param typeName
* @return
*/
public ElementType getElementType(SchemaTypeName typeName){
return (ElementType)getSchemaTypeMap().getElementType(typeName);
}
/**
* Return the attribute group type
*
* @param typeName
* @return
*/
public AttributeGroupType getArrtibuteGroupType(SchemaTypeName typeName){
return (AttributeGroupType)getSchemaTypeMap().getArrtibuteGroupType(typeName);
}
/**
* Return the group type.
*
* @param typeName
* @return
*/
public GroupType getGroupType(SchemaTypeName typeName){
return (GroupType)getSchemaTypeMap().getGroupType(typeName);
}
/**
* Return the attribute type.
*
* @param typeName
* @return
*/
public Attribute getArrtibuteType(SchemaTypeName typeName){
return (Attribute)getSchemaTypeMap().getArrtibuteType(typeName);
}
/**
* This method finds the attribute group type based on the given attribute group ref.
*
* @param schemaTypeMap
* @param attributeGroup
* @return
*/
public AttributeGroupType getArrtibuteGroupType( AttributeGroup attributeGroup ){
QName ref = attributeGroup.getGroupRef();
if( ref == null ){
return null;
}
SchemaTypeName refName = new SchemaTypeName( ref );
return getArrtibuteGroupType( refName );
}
}