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

com.draagon.meta.loader.simple.SimpleModelParser Maven / Gradle / Ivy

package com.draagon.meta.loader.simple;

import com.draagon.meta.MetaDataException;
import com.draagon.meta.io.object.xml.XMLObjectReader;
import com.draagon.meta.loader.model.MetaModel;
import com.draagon.meta.loader.model.MetaModelLoader;
import com.draagon.meta.loader.model.MetaModelParser;
import com.draagon.meta.loader.types.TypesConfig;
import com.draagon.meta.loader.uri.URIHelper;

import java.io.IOException;
import java.io.InputStream;
import java.net.URI;

public class SimpleModelParser extends MetaModelParser {

    protected SimpleModelParser(MetaModelLoader modelLoader, String sourceName) {
        super(modelLoader, sourceName);
    }

    @Override
    public void loadAndMerge( SimpleLoader intoLoader, URI uri) {

        InputStream is = null;
        try {
            is = URIHelper.getInputStream( uri );
            //intoLoader.getResourceInputStream(resource);
            loadAndMergeFromStream( intoLoader, is );
        }
        catch( IOException e ) {
            throw new MetaDataException( "Unable to load URI ["+uri+"]: " + e.getMessage(), e );
        }
        finally {
            try {
                if ( is != null ) is.close();
            } catch( IOException e ) {
                throw new MetaDataException( "Unable to close URI ["+uri+"]: " + e.getMessage(), e );
            }
        }
    }

    /* Load MetaDataModel Stream */
    public void loadAndMergeFromStream( SimpleLoader intoLoader, InputStream in ) {

        IOException ioEx = null;

        MetaModel metadata = null;
        XMLObjectReader reader = null;

        try {
            reader = new XMLObjectReader( getLoader(), in );
            metadata = (MetaModel) reader.read( getLoader().getMetaObjectByName(MetaModel.OBJECT_NAME));
        } catch (IOException e) {
            ioEx = e;
        }

        try {
            reader.close();
        } catch (IOException ex) {
            if ( ioEx != null ) ioEx = ex;
        }
        if ( ioEx != null ) throw new MetaDataException( "Error loading MetaData from "+
                "["+getSourcename()+"]: "+ ioEx.toString(), ioEx );

        // Parse MetaData and Construct MetaData types
        mergeMetaDataModel( intoLoader, metadata );
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy