private void processFiles( List<String> files ) {
        Parser parser = new Parser();
        Table table = null;
        List<String> classNames = new ArrayList<String>();

        for ( String file : files ) {
            table = parser.parse( file );
            table.setPackage( basePkg );
            if ( classNames.contains( table.getDomName() ) ) {
                throw new IllegalArgumentException( "This class name is used multiple times, " + table.getDomName() );
            }
            classNames.add( table.getDomName() );
            generateAll( table );
        }

        ForeignKeyGenerator foreignKey = new ForeignKeyGenerator( Parser.getForeignKeyList(), Parser.getTableMap() );
        foreignKey.createForeignKeys();

        SessionFactoryGenerator sfg = new SessionFactoryGenerator( basePkg );
        printPath( sfg.createSession() );

        MybatisConfigGenerator mcg = new MybatisConfigGenerator( classNames, basePkg, databaseType );
        printPath( mcg.createConfiguration() );

        printPath( "sql/_CreateTables.sql" );
        printPath( "sql/_AlterTables.sql" );
        printPath( "sql/_DropTables.sql" );

        System.out.println( "\nDone." );
    }