diff --git a/core/src/main/java/com/riiablo/table/Tables.java b/core/src/main/java/com/riiablo/table/Tables.java index 00993900..00745b01 100644 --- a/core/src/main/java/com/riiablo/table/Tables.java +++ b/core/src/main/java/com/riiablo/table/Tables.java @@ -1,16 +1,55 @@ package com.riiablo.table; +import com.badlogic.gdx.files.FileHandle; + import com.riiablo.logger.LogManager; import com.riiablo.logger.Logger; public class Tables { private static final Logger log = LogManager.getLogger(Tables.class); + private static final boolean USE_TSV_ONLY = !true; + private Tables() {} + public static > + T load(T table, FileHandle tsv) { + return load(table, tsv, null); + } + + public static > + T load(T table, FileHandle tsv, FileHandle bin) { + if (!USE_TSV_ONLY && bin != null && bin.exists()) { + try { + return loadBin(table, bin); + } catch (Throwable t) { + log.error("Failed to load {}, defaulting to tsv", bin, t); + return loadTsv(table, tsv); + } + } else { + return loadTsv(table, tsv); + } + } + + static > + T loadTsv(T table, FileHandle tsv) { + log.info("Loading {}", tsv); + TsvParser parser = TsvParser.parse(tsv.readBytes()); + return loadTsv(table, parser); + } + static > T loadTsv(T table, TsvParser parser) { parser.primaryKey(table.primaryKey()); + table.initialize(); + return table; + } + + static > + T loadBin(T table, FileHandle bin) { + log.info("Loading {}", bin); + //... + table.initialize(); return table; } }