@Override public ArrayList<Relation> queryRelation( Class class1, Class class2, List<String> key1List, List<String> key2List) { acquireReference(); try { SQLStatement stmt = SQLBuilder.buildQueryRelationSql(class1, class2, key1List, key2List); final EntityTable table1 = TableManager.getTable(class1); final EntityTable table2 = TableManager.getTable(class2); final ArrayList<Relation> list = new ArrayList<Relation>(); Querier.doQuery( mHelper.getReadableDatabase(), stmt, new Querier.CursorParser() { @Override public void parseEachCursor(SQLiteDatabase db, Cursor c) throws Exception { Relation relation = new Relation(); relation.key1 = c.getString(c.getColumnIndex(table1.name)); relation.key2 = c.getString(c.getColumnIndex(table2.name)); list.add(relation); } }); return list; } finally { releaseReference(); } }
@Override public <T> ArrayList<T> queryAll(Class<T> claxx) { acquireReference(); try { SQLStatement stmt = new QueryBuilder(claxx).createStatement(); return stmt.query(mHelper.getReadableDatabase(), claxx); } finally { releaseReference(); } }
@Override public long queryCount(QueryBuilder qb) { acquireReference(); try { SQLiteDatabase db = mHelper.getReadableDatabase(); SQLStatement stmt = qb.createStatementForCount(); return stmt.queryForLong(db); } catch (Exception e) { e.printStackTrace(); } finally { releaseReference(); } return SQLStatement.NONE; }
@Override public <T> T queryById(String id, Class<T> claxx) { acquireReference(); try { SQLiteDatabase db = mHelper.getReadableDatabase(); EntityTable table = TableManager.getTable(claxx); SQLStatement stmt = new QueryBuilder(claxx) .where(table.key.column + "=?", new String[] {id}) .createStatement(); ArrayList<T> list = stmt.query(db, claxx); if (!Checker.isEmpty(list)) { return list.get(0); } } finally { releaseReference(); } return null; }
@Override public synchronized SQLiteDatabase getReadableDatabase() { return mHelper.getReadableDatabase(); }
@Override public <T> ArrayList<T> query(QueryBuilder qb) { SQLiteDatabase db = mHelper.getReadableDatabase(); // mTableManager.checkOrCreateTable(db, qb.getQueryClass()); return qb.createStatement().query(db, qb.getQueryClass()); }