@Override
    protected void init() {
        try {
            // check to see if the user is using a File or InputStream. This is
            // here for backwards compatability
            if (dataSourceStream != null) {
                final Reader r = new InputStreamReader(dataSourceStream);
                setDataSourceReader(r);
                addToCloseReaderList(r);
            } else if (dataSource != null) {
                final Reader r = new FileReader(dataSource);
                setDataSourceReader(r);
                addToCloseReaderList(r);
            }

            final List cmds = ParserUtils.buildMDFromSQLTable(con, getDataDefinition(), this);
            addToMetaData(cmds);

            if (cmds.isEmpty()) {
                throw new FileNotFoundException("DATA DEFINITION CAN NOT BE FOUND IN THE DATABASE " + getDataDefinition());
            }

            setInitialised(true);
        } catch (final SQLException e) {
            throw new InitialisationException(e);
        } catch (final FileNotFoundException e) {
            throw new InitialisationException(e);
        }
    }