package edu.washington.escience.myria.accessmethod; import java.io.Serializable; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; import edu.washington.escience.myria.MyriaConstants; /** * Holds the info for a SQLite Connection. * * */ public final class SQLiteInfo extends ConnectionInfo implements Serializable { /** Required for Java serialization. */ private static final long serialVersionUID = 1L; /** The database to connect to. */ @JsonProperty private final String databaseFilename; /** * This is not really unused, it's used automagically by Jackson deserialization. */ private SQLiteInfo() { databaseFilename = null; } /** * Private constructor. * * @param databaseFilename the file containing the database. */ private SQLiteInfo(final String databaseFilename) { this.databaseFilename = databaseFilename; } /** * Creates a new SQLiteInfo object. * * @param dbms a string, which must equal MyriaConstants.STORAGE_SYSTEM_SQLITE. * @param databaseFilename the file containing the database. * @return a new SQLiteInfo containing this information. */ public static SQLiteInfo of(final String dbms, final String databaseFilename) { Preconditions.checkArgument( dbms.equals(MyriaConstants.STORAGE_SYSTEM_SQLITE), "The dbms parameter must equal " + MyriaConstants.STORAGE_SYSTEM_SQLITE); return new SQLiteInfo(databaseFilename); } /** * Creates a new SQLiteInfo object. * * @param databaseFilename the file containing the database. * @return a new SQLiteInfo containing this information. */ public static SQLiteInfo of(final String databaseFilename) { return new SQLiteInfo(databaseFilename); } /** * @return the file containing the database. */ public String getDatabaseFilename() { return databaseFilename; } @Override public String getDbms() { return MyriaConstants.STORAGE_SYSTEM_SQLITE; } }