001: /*
002: * TypeMappingRegistry.java
003: *
004: * Created on October 25, 2006, 3:10 PM
005: *
006: * To change this template, choose Tools | Template Manager
007: * and open the template in the editor.
008: */
009:
010: package org.netbeans.modules.e2e.api.schema;
011:
012: import java.util.Collections;
013: import java.util.HashMap;
014: import java.util.List;
015: import java.util.Map;
016: import javax.xml.namespace.QName;
017:
018: /**
019: *
020: * @author Michal Skvor
021: */
022: public class TypeMappingRegistry {
023:
024: private SchemaHolder schemaHolder;
025: private Map<QName, TypeMapping> mappings;
026:
027: /** Creates a new instance of TypeMappingRegistry */
028: public TypeMappingRegistry(SchemaHolder schemaHolder) {
029: this .schemaHolder = schemaHolder;
030: mappings = new HashMap();
031:
032: for (Element e : schemaHolder.getSchemaElements()) {
033: mapType(e);
034: }
035:
036: }
037:
038: public TypeMapping getType(QName name) {
039: return mappings.get(name);
040: }
041:
042: private void mapType(Element e) {
043: Type type = e.getType();
044: if (Type.FLAVOR_PRIMITIVE == type.getFlavor()) {
045: mappings.put(e.getName(), new TypeMappingImpl(type, e
046: .getMaxOccurs() > 1, e.isNillable()));
047: } else if (Type.FLAVOR_SEQUENCE == type.getFlavor()) {
048: if (type.getSubconstructs().size() == 0) {
049: System.err.print("void");
050: } else if (type.getSubconstructs().size() == 1) {
051: SchemaConstruct sc = type.getSubconstructs().get(0);
052: if (SchemaConstruct.ConstructType.ELEMENT == sc
053: .getConstructType()) {
054: Element sce = (Element) sc;
055: if (Type.FLAVOR_PRIMITIVE == sce.getType()
056: .getFlavor()) {
057: System.err.print(sce.getType()
058: .getJavaTypeName());
059: } else {
060: System.err.print(sce.getName().getLocalPart());
061: }
062: }
063: }
064: }
065: }
066:
067: private static final class TypeMappingImpl implements TypeMapping {
068:
069: private String name;
070: private boolean array;
071: private boolean primitive;
072: private boolean nillable;
073:
074: private Type type;
075:
076: public TypeMappingImpl(Type type, boolean array,
077: boolean nillable) {
078: this .type = type;
079: this .array = array;
080: this .nillable = nillable;
081: }
082:
083: // if( Type.FLAVOR_PRIMITIVE == type.getFlavor()) {
084: // System.err.print( type.getJavaTypeName());
085: // } else if( Type.FLAVOR_SEQUENCE == type.getFlavor()) {
086: // if( type.getSubconstructs().size() == 0 ) {
087: // System.err.print( "void" );
088: // } else if( type.getSubconstructs().size() == 1 ) {
089: // SchemaConstruct sc = type.getSubconstructs().get( 0 );
090: // if( SchemaConstruct.ConstructType.ELEMENT == sc.getConstructType()) {
091: // Element sce = (Element)sc;
092: // if( Type.FLAVOR_PRIMITIVE == sce.getType().getFlavor()) {
093: // System.err.print( sce.getType().getJavaTypeName());
094: // } else {
095: // System.err.print( sce.getName().getLocalPart());
096: // }
097: // }
098: // }
099: // }
100:
101: }
102: }
|