Search in sources :

Example 16 with QueryToken

use of com.dailystudio.dataobject.query.QueryToken in project devbricks by dailystudio.

the class QueryTokenTest method testCreateQueryToken.

public void testCreateQueryToken() {
    QueryToken token = null;
    token = new QueryToken("1234");
    assertEquals("1234", token.toString());
    token = new QueryToken(new IntegerColumn("intVal"));
    assertEquals("intVal", token.toString());
}
Also used : IntegerColumn(com.dailystudio.dataobject.IntegerColumn) QueryToken(com.dailystudio.dataobject.query.QueryToken)

Example 17 with QueryToken

use of com.dailystudio.dataobject.query.QueryToken in project devbricks by dailystudio.

the class DatabaseConnectivity method onDelete.

@Override
protected int onDelete(Query query) {
    if (query == null) {
        return 0;
    }
    if (checkProviderPreparation() == false) {
        return 0;
    }
    Uri uri = ProviderUriBuilder.buildQueryUri(mAuthority, mObjectClass, getDatabaseVersion());
    if (uri == null) {
        return 0;
    }
    String selection = null;
    QueryToken selToken = query.getSelection();
    if (selToken != null) {
        selection = selToken.toString();
    }
    return mContentResovler.delete(uri, selection, null);
}
Also used : Uri(android.net.Uri) QueryToken(com.dailystudio.dataobject.query.QueryToken)

Example 18 with QueryToken

use of com.dailystudio.dataobject.query.QueryToken in project devbricks by dailystudio.

the class DatabaseConnectivity method doQueryCursor.

private Cursor doQueryCursor(long serial, Query query, Class<? extends DatabaseObject> projectionClass, boolean cursorOnly) {
    if (query == null) {
        return null;
    }
    if (checkProviderPreparation() == false) {
        return null;
    }
    Uri uri = ProviderUriBuilder.buildQueryUri(mAuthority, mObjectClass, getDatabaseVersion(), serial, cursorOnly);
    if (uri == null) {
        return null;
    }
    String selection = null;
    String groupBy = null;
    String having = null;
    String orderBy = null;
    String limit = null;
    QueryToken selToken = query.getSelection();
    if (selToken != null) {
        selection = selToken.toString();
    }
    QueryToken groupByToken = query.getGroupBy();
    if (groupByToken != null) {
        groupBy = groupByToken.toString();
    }
    QueryToken havingToken = query.getHaving();
    if (havingToken != null) {
        having = havingToken.toString();
    }
    QueryToken orderByToken = query.getOrderBy();
    if (orderByToken != null) {
        orderBy = orderByToken.toString();
    }
    QueryToken limitToken = query.getLimit();
    if (limitToken != null) {
        limit = limitToken.toString();
    }
    String sortOrder = SortOrderEncoder.encode(groupBy, having, orderBy, limit);
    String[] projection = createProjection(projectionClass);
    Cursor c = null;
    try {
        c = mContentResovler.query(uri, projection, selection, null, sortOrder);
    } catch (Exception e) {
        Logger.warn("content resolver failure: %s", e.toString());
    }
    if (c == null || c.getCount() <= 0) {
        if (c != null) {
            c.close();
        }
        return null;
    }
    return c;
}
Also used : AbstractWindowedCursor(android.database.AbstractWindowedCursor) Cursor(android.database.Cursor) Uri(android.net.Uri) QueryToken(com.dailystudio.dataobject.query.QueryToken)

Example 19 with QueryToken

use of com.dailystudio.dataobject.query.QueryToken in project devbricks by dailystudio.

the class DatabaseConnectivity method onUpdate.

@Override
protected int onUpdate(Query query, DatabaseObject object) {
    if (query == null || object == null || object.isEmpty()) {
        return 0;
    }
    if (checkProviderPreparation() == false) {
        return 0;
    }
    final ContentValues values = object.getValues();
    if (values == null) {
        return 0;
    }
    Uri uri = ProviderUriBuilder.buildQueryUri(mAuthority, mObjectClass, getDatabaseVersion());
    if (uri == null) {
        return 0;
    }
    final Template template = object.getTemplate();
    if (template == null) {
        return 0;
    }
    final String table = DatabaseObject.classToTable(mObjectClass);
    if (table == null) {
        return 0;
    }
    uri = ProviderUriBuilder.attachCreateTableParamter(uri, object.toSQLTableCreationString());
    if (uri == null) {
        return 0;
    }
    String selection = null;
    QueryToken selToken = query.getSelection();
    if (selToken != null) {
        selection = selToken.toString();
    }
    return mContentResovler.update(uri, values, selection, null);
}
Also used : ContentValues(android.content.ContentValues) Uri(android.net.Uri) Template(com.dailystudio.dataobject.Template) QueryToken(com.dailystudio.dataobject.query.QueryToken)

Example 20 with QueryToken

use of com.dailystudio.dataobject.query.QueryToken in project devbricks by dailystudio.

the class DatabaseConnectivityDirectSQLiteImpl method onDelete.

@Override
protected int onDelete(Query query) {
    if (query == null) {
        return 0;
    }
    if (mOpenHandler == null) {
        return 0;
    }
    final SQLiteDatabase db = mOpenHandler.getWritableDatabase();
    if (db == null) {
        return 0;
    }
    final String table = DatabaseObject.classToTable(query.getObjectClass());
    if (table == null) {
        db.close();
        return 0;
    }
    String selection = null;
    QueryToken selToken = query.getSelection();
    if (selToken != null) {
        selection = selToken.toString();
    }
    int affected = -1;
    try {
        db.beginTransaction();
        affected = db.delete(table, selection, null);
        if (selection == null) {
            db.execSQL(String.format("DROP TABLE %s", table));
        }
        db.setTransactionSuccessful();
    } catch (SQLException e) {
        Logger.warn("database failure: %s", e.toString());
    } catch (IllegalStateException e) {
        Logger.warn("database failure: %s", e.toString());
    } finally {
        try {
            db.endTransaction();
        } catch (Exception e) {
            Logger.warn("database failure: %s", e.toString());
        }
    }
    db.close();
    if (affected <= 0) {
        return 0;
    }
    return affected;
}
Also used : SQLiteDatabase(android.database.sqlite.SQLiteDatabase) SQLException(android.database.SQLException) SQLException(android.database.SQLException) QueryToken(com.dailystudio.dataobject.query.QueryToken)

Aggregations

QueryToken (com.dailystudio.dataobject.query.QueryToken)36 IntegerColumn (com.dailystudio.dataobject.IntegerColumn)5 DoubleColumn (com.dailystudio.dataobject.DoubleColumn)4 TextColumn (com.dailystudio.dataobject.TextColumn)4 SQLException (android.database.SQLException)3 Uri (android.net.Uri)3 Column (com.dailystudio.dataobject.Column)3 Template (com.dailystudio.dataobject.Template)3 ContentValues (android.content.ContentValues)2 Cursor (android.database.Cursor)2 SQLiteDatabase (android.database.sqlite.SQLiteDatabase)2 AbstractWindowedCursor (android.database.AbstractWindowedCursor)1 LongColumn (com.dailystudio.dataobject.LongColumn)1