package com.grendelscan.data.database; import java.io.IOException; import java.io.ObjectOutputStream; import com.almworks.sqlite4java.SQLiteConnection; import com.almworks.sqlite4java.SQLiteException; import com.almworks.sqlite4java.SQLiteJob; import com.almworks.sqlite4java.SQLiteStatement; public abstract class DbJob<T> extends SQLiteJob<T> { private final String query; private final Object[] values; protected SQLiteStatement st; protected DbJob(final String query, final Object[] values) { this.query = query; this.values = values; } protected void handleBindings(final SQLiteConnection connection) throws SQLiteException, IOException { st = connection.prepare(query); for (int index = 1; index <= values.length; index++) { Object o = values[index - 1]; if (o == null) { st.bindNull(index); } else if (o instanceof Double) { st.bind(index, (Double) o); } else if (o instanceof Integer) { st.bind(index, (Integer) o); } else if (o instanceof Long) { st.bind(index, (Long) o); } else if (o instanceof byte[]) { st.bind(index, (byte[]) o); } else if (o instanceof String) { st.bind(index, (String) o); } else { ObjectOutputStream objstream = new ObjectOutputStream(st.bindStream(index)); objstream.writeObject(o); objstream.close(); } } } }