Android Open Source - droidkit-engines List Engine Dao






From Project

Back to project page droidkit-engines.

License

The source code is released under:

MIT License

If you think the Android project droidkit-engines listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.droidkit.engine.list.sqlite.internal;
/*  ww w  .  jav a2s . com*/
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;

import com.droidkit.engine.list.DataAdapter;
import com.droidkit.engine._internal.sqlite.AbstractDao;

import java.util.ArrayList;

public class ListEngineDao<V> extends AbstractDao<V> {

    private static final String TAG = "ListEngine";

    private static final String TABLENAME_PREFIX = "LIST_ENGINE_ITEM_";
    private static final String COLUMN_LIST_ID = "LIST_ID";
    private static final String COLUMN_ID = "ID";
    private static final String COLUMN_SORT_KEY = "SORT_KEY";
    private static final String COLUMN_BYTES = "BYTES";

    private final long listEngineId;
    private final boolean ascSorting;

    private DataAdapter<V> classConnector;

    public ListEngineDao(String listEngineName,
                         long listEngineId,
                         SQLiteDatabase db,
                         boolean ascSorting,
                         final DataAdapter<V> classConnector) {
        super(TABLENAME_PREFIX + listEngineName,
                db,
                new ListEngineTableStatements(db, TABLENAME_PREFIX + listEngineName),
                classConnector);
        this.listEngineId = listEngineId;
        this.ascSorting = ascSorting;
        this.classConnector = classConnector;
    }

    @Override
    public void createTable() {
        if (!isTableExists()) {
            String constraint = "IF NOT EXISTS ";
            db.execSQL("CREATE TABLE " + constraint + "'" + tableName + "' (" + //
                            "'LIST_ID' INTEGER NOT NULL," + // 0: listId
                            "'ID' INTEGER NOT NULL," + // 1: id
                            "'SORT_KEY' INTEGER NOT NULL," + // 2: sortKey
                            "'BYTES' BLOB NOT NULL," + // 3: bytes
                            "PRIMARY KEY('LIST_ID', 'ID'));"
            );

            db.execSQL("CREATE INDEX " + constraint + "IDX_LIST_ENGINE_ITEM_LIST_ID_SORT_KEY ON '" + tableName + "'" +
                    " (LIST_ID, SORT_KEY);");
            db.execSQL("CREATE INDEX " + constraint + "IDX_LIST_ENGINE_ITEM_ID ON '" + tableName + "'" +
                    " (ID);");
        }
    }

    @Override
    protected void bindValues(SQLiteStatement stmt, V entity) {
        stmt.clearBindings();

        stmt.bindLong(1, listEngineId);

        Long id = classConnector.getId(entity);
        if (id != null) {
            stmt.bindLong(2, id);
        }

        Long sortKey = classConnector.getSortKey(entity);
        if (sortKey != null) {
            stmt.bindLong(3, sortKey);
        }

        byte[] bytes = binarySerializator.serialize(entity);
        if (bytes != null) {
            stmt.bindBlob(4, bytes);
        }
    }

    @Override
    public V readEntity(Cursor cursor) {
        return (V) binarySerializator.deserialize(cursor.isNull(3) ? null : cursor.getBlob(3));
    }

    @Override
    public void deleteByKeyInsideSynchronized(long id, SQLiteStatement stmt) {
        stmt.clearBindings();
        stmt.bindLong(1, listEngineId);
        stmt.bindLong(2, id);
        stmt.execute();
    }

    @Override
    public ArrayList<V> getAll() {
        final String stmt = statements.getAllStatement();
        return loadAllAndCloseCursor(db.rawQuery(stmt,
                new String[]{
                        String.valueOf(listEngineId),
                }
        ));
    }

    @Override
    public V getById(long id) {
        final String stmt = statements.getGetByIdStatement();
        return loadSingleAndCloseCursor(db.rawQuery(stmt,
                new String[]{
                        String.valueOf(listEngineId),
                        String.valueOf(id)
                }
        ));
    }

    public ArrayList<V> getNextSlice(int limit, int offset) {
        final String stmt = ((ListEngineTableStatements) statements).getNextSliceStatement(ascSorting);
        return loadAllAndCloseCursor(db.rawQuery(stmt,
                new String[]{
                        String.valueOf(listEngineId),
                        String.valueOf(limit),
                        String.valueOf(offset)
                }
        ));
    }

}




Java Source Code List

com.droidkit.engine.Engines.java
com.droidkit.engine.common.KeyCallback.java
com.droidkit.engine.common.ValueCallback.java
com.droidkit.engine.common.ValuesCallback.java
com.droidkit.engine.event.Events.java
com.droidkit.engine.event.NotificationCenter.java
com.droidkit.engine.event.NotificationListener.java
com.droidkit.engine.event.StateInitValue.java
com.droidkit.engine.event.State.java
com.droidkit.engine._internal.RunnableActor.java
com.droidkit.engine._internal.sqlite.AbstractDao.java
com.droidkit.engine._internal.sqlite.BinarySerializator.java
com.droidkit.engine._internal.sqlite.DbHelper.java
com.droidkit.engine._internal.sqlite.DbProvider.java
com.droidkit.engine._internal.sqlite.FastCursor.java
com.droidkit.engine._internal.sqlite.SqlStatements.java
com.droidkit.engine._internal.util.SortedArrayList.java
com.droidkit.engine._internal.util.Utils.java
com.droidkit.engine._internal.util.WeakEqualReference.java
com.droidkit.engine.keyvalue.DataAdapter.java
com.droidkit.engine.keyvalue.KeyValueEngine.java
com.droidkit.engine.keyvalue.StorageAdapter.java
com.droidkit.engine.keyvalue.sqlite.SQLiteStorageAdapter.java
com.droidkit.engine.keyvalue.sqlite.internal.KeyValueEngineDao.java
com.droidkit.engine.keyvalue.sqlite.internal.KeyValueEngineTableStatements.java
com.droidkit.engine.list.DataAdapter.java
com.droidkit.engine.list.ListEngine.java
com.droidkit.engine.list.StorageAdapter.java
com.droidkit.engine.list.sqlite.SQLiteMultipleStorageAdapter.java
com.droidkit.engine.list.sqlite.SQLiteStorageAdapter.java
com.droidkit.engine.list.sqlite.internal.ListEngineDao.java
com.droidkit.engine.list.sqlite.internal.ListEngineTableStatements.java
com.droidkit.sample.ActivityHelper.java
com.droidkit.sample.BaseActivity.java
com.droidkit.sample.TestMainActivity.java
com.droidkit.sample.listenginetest.TestListEngineActivity.java
com.droidkit.sample.listenginetest.TestProto.java
com.droidkit.sample.view.BlockingListView.java