package org.whole.lang.xsd.reflect;
import org.whole.lang.factories.IEntityRegistry;
import org.whole.lang.parsers.DataTypeParsers;
import org.whole.lang.parsers.IDataTypeParser;
import org.whole.lang.reflect.AbstractLanguageKit;
import org.whole.lang.reflect.EntityDescriptorEnum;
import org.whole.lang.reflect.FeatureDescriptorEnum;
import org.whole.lang.templates.ITemplateManager;
import org.whole.lang.xsd.codebase.IMappingStrategy;
import org.whole.lang.xsd.codebase.MappingStrategyRegistry;
import org.whole.lang.xsd.factories.XsdDefaultEntityRegistryConfiguration;
import org.whole.lang.xsd.model.adapters.XsdAdaptersEntityRegistry;
import org.whole.lang.xsd.model.impl.XsdImplEntityRegistry;
import org.whole.lang.xsd.model.impl.XsdStrictImplEntityRegistry;
import org.whole.lang.xsd.parsers.XsiDataTypeParser;
/**
* @generator Whole
*/
public class XsdLanguageKit extends AbstractLanguageKit {
public static final String URI = "http://www.w3.org/2001/XMLSchema";
public String getURI() {
return URI;
}
public String getNamespace() {
return "org.whole.lang.xsd";
}
public String getName() {
return "Xsd";
}
public EntityDescriptorEnum getEntityDescriptorEnum() {
return XsdEntityDescriptorEnum.instance;
}
public FeatureDescriptorEnum getFeatureDescriptorEnum() {
return XsdFeatureDescriptorEnum.instance;
}
protected IEntityRegistry createDefaultEntityRegistry() {
IEntityRegistry er = createImplEntityRegistry();
new XsdDefaultEntityRegistryConfiguration().apply(er);
return er;
}
protected IEntityRegistry createImplEntityRegistry() {
return new XsdImplEntityRegistry();
}
protected IEntityRegistry createStrictImplEntityRegistry() {
return new XsdStrictImplEntityRegistry();
}
protected IEntityRegistry createAdaptersEntityRegistry() {
return new XsdAdaptersEntityRegistry();
}
protected IDataTypeParser dataTypeParser = null;
@Override
public IDataTypeParser getDataTypeParser(DataTypeParsers kind) {
if (dataTypeParser == null) {
IMappingStrategy mappingStrategy = MappingStrategyRegistry.instance().getMappingStrategy(getURI());
if (mappingStrategy == null)
return super.getDataTypeParser(kind);
dataTypeParser = new XsiDataTypeParser(mappingStrategy.getDataTypeParsers());
}
return dataTypeParser;
}
public ITemplateManager getTemplateManager() {
return XsdTemplateManager.instance();
}
}