Search in sources :

Example 1 with JsonTable

use of org.apache.calcite.adapter.csv.JsonTable in project calcite by apache.

the class FileSchema method addTable.

private boolean addTable(ImmutableMap.Builder<String, Table> builder, Source source, String tableName, Map<String, Object> tableDef) {
    final Source sourceSansGz = source.trim(".gz");
    final Source sourceSansJson = sourceSansGz.trimOrNull(".json");
    if (sourceSansJson != null) {
        JsonTable table = new JsonTable(source);
        builder.put(Util.first(tableName, sourceSansJson.path()), table);
        return true;
    }
    final Source sourceSansCsv = sourceSansGz.trimOrNull(".csv");
    if (sourceSansCsv != null) {
        final Table table = new CsvFilterableTable(source, null);
        builder.put(Util.first(tableName, sourceSansCsv.path()), table);
        return true;
    }
    if (tableDef != null) {
        try {
            FileTable table = FileTable.create(source, tableDef);
            builder.put(Util.first(tableName, source.path()), table);
            return true;
        } catch (Exception e) {
            throw new RuntimeException("Unable to instantiate table for: " + tableName);
        }
    }
    return false;
}
Also used : JsonTable(org.apache.calcite.adapter.csv.JsonTable) Table(org.apache.calcite.schema.Table) CsvFilterableTable(org.apache.calcite.adapter.csv.CsvFilterableTable) JsonTable(org.apache.calcite.adapter.csv.JsonTable) CsvFilterableTable(org.apache.calcite.adapter.csv.CsvFilterableTable) Source(org.apache.calcite.util.Source) MalformedURLException(java.net.MalformedURLException)

Example 2 with JsonTable

use of org.apache.calcite.adapter.csv.JsonTable in project calcite by apache.

the class FileSchema method getTableMap.

@Override
protected Map<String, Table> getTableMap() {
    final ImmutableMap.Builder<String, Table> builder = ImmutableMap.builder();
    for (Map<String, Object> tableDef : this.tables) {
        String tableName = (String) tableDef.get("name");
        try {
            addTable(builder, tableDef);
        } catch (MalformedURLException e) {
            throw new RuntimeException("Unable to instantiate table for: " + tableName);
        }
    }
    // Look for files in the directory ending in ".csv", ".csv.gz", ".json",
    // ".json.gz".
    final Source baseSource = Sources.of(baseDirectory);
    File[] files = baseDirectory.listFiles(new FilenameFilter() {

        public boolean accept(File dir, String name) {
            final String nameSansGz = trim(name, ".gz");
            return nameSansGz.endsWith(".csv") || nameSansGz.endsWith(".json");
        }
    });
    if (files == null) {
        System.out.println("directory " + baseDirectory + " not found");
        files = new File[0];
    }
    // Build a map from table name to table; each file becomes a table.
    for (File file : files) {
        Source source = Sources.of(file);
        Source sourceSansGz = source.trim(".gz");
        final Source sourceSansJson = sourceSansGz.trimOrNull(".json");
        if (sourceSansJson != null) {
            JsonTable table = new JsonTable(source);
            builder.put(sourceSansJson.relative(baseSource).path(), table);
            continue;
        }
        final Source sourceSansCsv = sourceSansGz.trimOrNull(".csv");
        if (sourceSansCsv != null) {
            addTable(builder, source, sourceSansCsv.relative(baseSource).path(), null);
        }
    }
    return builder.build();
}
Also used : MalformedURLException(java.net.MalformedURLException) Table(org.apache.calcite.schema.Table) CsvFilterableTable(org.apache.calcite.adapter.csv.CsvFilterableTable) JsonTable(org.apache.calcite.adapter.csv.JsonTable) JsonTable(org.apache.calcite.adapter.csv.JsonTable) ImmutableMap(com.google.common.collect.ImmutableMap) Source(org.apache.calcite.util.Source) FilenameFilter(java.io.FilenameFilter) File(java.io.File)

Aggregations

MalformedURLException (java.net.MalformedURLException)2 CsvFilterableTable (org.apache.calcite.adapter.csv.CsvFilterableTable)2 JsonTable (org.apache.calcite.adapter.csv.JsonTable)2 Table (org.apache.calcite.schema.Table)2 Source (org.apache.calcite.util.Source)2 ImmutableMap (com.google.common.collect.ImmutableMap)1 File (java.io.File)1 FilenameFilter (java.io.FilenameFilter)1