All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.draagon.meta.loader.model.MetaModelLoader Maven / Gradle / Ivy

package com.draagon.meta.loader.model;

import com.draagon.meta.loader.LoaderOptions;
import com.draagon.meta.loader.MetaDataLoader;
import com.draagon.meta.loader.types.TypesConfig;
import com.draagon.meta.loader.types.TypesConfigLoader;

public class MetaModelLoader extends MetaDataLoader {

    public final static String SUBTYPE_METADATAMODEL = "metaDataModel";

    public MetaModelLoader(String name ) {
        super( LoaderOptions.create( false, false, true),
                SUBTYPE_METADATAMODEL, name );
    }

    public static MetaModelLoader create(String name ) {
        return new MetaModelLoader( name ).init();
    }

    public static MetaModelLoader create(String name, TypesConfig typesConfig ) {
        return new MetaModelLoader( name ).setTypesConfig( typesConfig ).init();
    }

    public MetaModelLoader setTypesConfig(TypesConfig typesConfig ) {
        super.setTypesConfig( typesConfig );
        return this;
    }

    /** Override this for custom MetaDataModels */
    protected void generatedAndAddMetaModels() {
        if ( getTypesConfig() == null ) {
            TypesConfigLoader loader = TypesConfigLoader.create();
            setTypesConfig( loader.newTypesConfig());
        }
        addChild( getTypesConfig().getGeneratedMetaModel() );
    }

    @Override
    public MetaModelLoader init() {
        super.init();
        generatedAndAddMetaModels();
        return this;
    }

    public MetaModel newMetaDataModel() {
        return (MetaModel) getMetaObjectByName( MetaModel.OBJECT_NAME).newInstance();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy