Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@ android {

}

def dbflow_version = "3.1.1"

dependencies {

apt 'com.raizlabs.android:DBFlow-Compiler:2.1.0'
compile "com.raizlabs.android:DBFlow-Core:2.1.0"
compile "com.raizlabs.android:DBFlow:2.1.0"
apt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}"

// This switches to a local copy of the DBFlow repo
//apt project(':Libraries:DBFlow:compiler')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.raizlabs.android.databasecomparison.activeandroid.AddressItem;
import com.raizlabs.android.databasecomparison.activeandroid.Contact;
import com.raizlabs.android.databasecomparison.activeandroid.SimpleAddressItem;
import com.raizlabs.android.dbflow.config.FlowConfig;
import com.raizlabs.android.dbflow.config.FlowManager;

import io.realm.Realm;
Expand Down Expand Up @@ -38,7 +39,7 @@ public void onCreate() {
.setLogLevel(Ollie.LogLevel.FULL)
.init();

FlowManager.init(this);
FlowManager.init(new FlowConfig.Builder(this).build());

Sprinkles.init(this, "sprinkles.db", 2);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.raizlabs.android.databasecomparison.activeandroid;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.activeandroid.ActiveAndroid;
import com.activeandroid.query.Delete;
Expand All @@ -10,7 +11,6 @@
import com.raizlabs.android.databasecomparison.MainActivity;
import com.raizlabs.android.databasecomparison.Saver;
import com.raizlabs.android.databasecomparison.events.LogTestDataEvent;
import com.raizlabs.android.dbflow.runtime.TransactionManager;

import java.util.Collection;

Expand All @@ -34,12 +34,15 @@ public static void testAddressBooks(Context context) {
MainActivity.ADDRESS_BOOK_COUNT);
long startTime = System.currentTimeMillis();
final Collection<AddressBook> finalAddressBooks = addressBooks;
TransactionManager.transact(ActiveAndroid.getDatabase(), new Runnable() {
@Override
public void run() {
Saver.saveAll(finalAddressBooks);
}
});
SQLiteDatabase database = ActiveAndroid.getDatabase();
database.beginTransaction();
try {
Saver.saveAll(finalAddressBooks);
database.setTransactionSuccessful();
} finally {
database.endTransaction();
}

EventBus.getDefault().post(new LogTestDataEvent(startTime, FRAMEWORK_NAME, MainActivity.SAVE_TIME));

startTime = System.currentTimeMillis();
Expand All @@ -59,13 +62,14 @@ public static void testAddressItems(Context context) {
Generator.getAddresses(SimpleAddressItem.class, MainActivity.LOOP_COUNT);

long startTime = System.currentTimeMillis();
// Reuse method so we don't have to write
TransactionManager.transact(ActiveAndroid.getDatabase(), new Runnable() {
@Override
public void run() {
Saver.saveAll(activeAndroidModels);
}
});
SQLiteDatabase database = ActiveAndroid.getDatabase();
database.beginTransaction();
try {
Saver.saveAll(activeAndroidModels);
database.setTransactionSuccessful();
} finally {
database.endTransaction();
}
EventBus.getDefault().post(new LogTestDataEvent(startTime, FRAMEWORK_NAME, MainActivity.SAVE_TIME));

startTime = System.currentTimeMillis();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
package com.raizlabs.android.databasecomparison.dbflow;

import com.raizlabs.android.databasecomparison.interfaces.IAddressBook;
import com.raizlabs.android.databasecomparison.MainActivity;
import com.raizlabs.android.databasecomparison.interfaces.IAddressBook;
import com.raizlabs.android.dbflow.annotation.Column;
import com.raizlabs.android.dbflow.annotation.ModelContainer;
import com.raizlabs.android.dbflow.annotation.OneToMany;
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
import com.raizlabs.android.dbflow.sql.builder.Condition;
import com.raizlabs.android.dbflow.sql.language.Select;
import com.raizlabs.android.dbflow.structure.cache.BaseCacheableModel;
import com.raizlabs.android.dbflow.sql.language.SQLite;
import com.raizlabs.android.dbflow.structure.BaseModel;

import java.util.Collection;

/**
* Description:
*/
@Table(tableName = "AddressBook", databaseName = DBFlowDatabase.NAME)
@Table(name = "AddressBook", database = DBFlowDatabase.class,
cacheSize = MainActivity.ADDRESS_BOOK_COUNT,
orderedCursorLookUp = true)
@ModelContainer
public class AddressBook extends BaseCacheableModel implements IAddressBook<AddressItem, Contact> {
public class AddressBook extends BaseModel implements IAddressBook<AddressItem, Contact> {

@PrimaryKey(autoincrement = true)
@Column
Expand Down Expand Up @@ -50,16 +52,20 @@ public void setAddresses(Collection<AddressItem> addresses) {
this.addresses = addresses;
}

@OneToMany(methods = OneToMany.Method.ALL)
public Collection<AddressItem> getAddresses() {
if (addresses == null) {
addresses = new Select().from(AddressItem.class).where(Condition.column(AddressItem$Table.ADDRESSBOOK_ADDRESSBOOK).is(id)).queryList();
addresses = SQLite.select().from(AddressItem.class)
.where(AddressItem_Table.addressBook.is(id)).queryList();
}
return addresses;
}

@OneToMany(methods = OneToMany.Method.ALL)
public Collection<Contact> getContacts() {
if (contacts == null) {
contacts = new Select().from(Contact.class).where(Condition.column(Contact$Table.ADDRESSBOOK_ADDRESSBOOK).is(id)).queryList();
contacts = SQLite.select().from(Contact.class)
.where(Contact_Table.addressBook.is(id)).queryList();
}
return contacts;
}
Expand All @@ -79,9 +85,4 @@ public void saveAll() {
}
}

@Override
public int getCacheSize() {
return MainActivity.ADDRESS_BOOK_COUNT;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,14 @@
import com.raizlabs.android.dbflow.annotation.ForeignKeyReference;
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
import com.raizlabs.android.dbflow.config.FlowManager;
import com.raizlabs.android.dbflow.structure.BaseModel;
import com.raizlabs.android.dbflow.structure.container.ForeignKeyContainer;

import java.util.LinkedHashMap;
import java.util.Map;

/**
* Description:
*/
@Table(databaseName = DBFlowDatabase.NAME)
@Table(database = DBFlowDatabase.class, orderedCursorLookUp = true)
public class AddressItem extends BaseModel implements IAddressItem<AddressBook> {

@PrimaryKey(autoincrement = true)
Expand All @@ -37,7 +35,6 @@ public class AddressItem extends BaseModel implements IAddressItem<AddressBook>
@Column(name = "phone")
long phone;


@Override
public void setName(String name) {
this.name = name;
Expand Down Expand Up @@ -69,17 +66,17 @@ public void saveAll() {
}

@ForeignKey(
references = {@ForeignKeyReference(columnName = "addressBook", columnType = long.class, foreignColumnName = "id")},
references = {@ForeignKeyReference(columnName = "addressBook",
columnType = long.class,
foreignKeyColumnName = "id")},
saveForeignKeyModel = false)
@Column
ForeignKeyContainer<AddressBook> addressBook;


@Override
public void setAddressBook(AddressBook addressBook) {
this.addressBook = new ForeignKeyContainer<>(AddressBook.class);
Map<String, Object> keys = new LinkedHashMap<>();
keys.put(AddressBook$Table.ID, addressBook.id);
this.addressBook.setData(keys);
this.addressBook = FlowManager.getContainerAdapter(AddressBook.class)
.toForeignKeyContainer(addressBook);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,17 @@
import com.raizlabs.android.dbflow.annotation.ForeignKeyReference;
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
import com.raizlabs.android.dbflow.config.FlowManager;
import com.raizlabs.android.dbflow.structure.BaseModel;
import com.raizlabs.android.dbflow.structure.container.ForeignKeyContainer;

import java.util.LinkedHashMap;
import java.util.Map;

/**
* Description:
*/
@Table(tableName = "contact", databaseName = DBFlowDatabase.NAME)
@Table(name = "contact", database = DBFlowDatabase.class, orderedCursorLookUp = true)
public class Contact extends BaseModel implements IContact<AddressBook> {

@PrimaryKey(autoincrement = true)
@Column
long id;

@Column(name = "name")
Expand All @@ -28,10 +25,11 @@ public class Contact extends BaseModel implements IContact<AddressBook> {
@Column(name = "email")
String email;

@ForeignKey(references = {@ForeignKeyReference(columnName = "addressBook",
foreignColumnName = "id", columnType = long.class)},
saveForeignKeyModel = false)
@Column
@ForeignKey(references =
{@ForeignKeyReference(columnName = "addressBook",
foreignKeyColumnName = "id",
columnType = long.class)},
saveForeignKeyModel = false)
ForeignKeyContainer<AddressBook> addressBook;

@Override
Expand Down Expand Up @@ -61,11 +59,8 @@ public AddressBook getAddressBookField() {

@Override
public void setAddressBook(AddressBook addressBook) {
this.addressBook = new ForeignKeyContainer<>(AddressBook.class);
Map<String, Object> keys = new LinkedHashMap<>();
keys.put(AddressBook$Table.ID, addressBook.id);
this.addressBook.setData(keys);
this.addressBook.setModel(addressBook);
this.addressBook = FlowManager.getContainerAdapter(AddressBook.class)
.toForeignKeyContainer(addressBook);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@
import android.content.Context;

import com.raizlabs.android.databasecomparison.Generator;
import com.raizlabs.android.databasecomparison.Loader;
import com.raizlabs.android.databasecomparison.MainActivity;
import com.raizlabs.android.databasecomparison.Saver;
import com.raizlabs.android.databasecomparison.events.LogTestDataEvent;
import com.raizlabs.android.dbflow.runtime.TransactionManager;
import com.raizlabs.android.dbflow.config.FlowManager;
import com.raizlabs.android.dbflow.sql.language.Delete;
import com.raizlabs.android.dbflow.sql.language.SQLite;
import com.raizlabs.android.dbflow.sql.language.Select;
import com.raizlabs.android.dbflow.structure.database.DatabaseWrapper;
import com.raizlabs.android.dbflow.structure.database.transaction.FastStoreModelTransaction;
import com.raizlabs.android.dbflow.structure.database.transaction.ITransaction;

import java.util.Collection;

Expand All @@ -21,51 +24,52 @@ public class DBFlowTester {
public static final String FRAMEWORK_NAME = "DBFlow";

public static void testAddressBooks(Context context) {
com.raizlabs.android.dbflow.sql.language.Delete.tables(AddressItem.class,
Contact.class, AddressBook.class);
Delete.tables(AddressItem.class, Contact.class, AddressBook.class);

Collection<AddressBook> addressBooks = Generator.createAddressBooks(AddressBook.class,
Contact.class, AddressItem.class,
MainActivity.ADDRESS_BOOK_COUNT);

long startTime = System.currentTimeMillis();
final Collection<AddressBook> finalAddressBooks = addressBooks;
TransactionManager.transact(DBFlowDatabase.NAME, new Runnable() {
@Override
public void run() {
Saver.saveAll(finalAddressBooks);
}
});
FlowManager.getDatabase(DBFlowDatabase.class)
.executeTransaction(new ITransaction() {
@Override
public void execute(DatabaseWrapper databaseWrapper) {
for (AddressBook addressBook : finalAddressBooks) {
addressBook.insert();
}
}
});
EventBus.getDefault().post(new LogTestDataEvent(startTime, FRAMEWORK_NAME, MainActivity.SAVE_TIME));

startTime = System.currentTimeMillis();
addressBooks = new Select().from(AddressBook.class).queryList();
Loader.loadAllInnerData(addressBooks);
addressBooks = SQLite.select().from(AddressBook.class).queryList();

EventBus.getDefault().post(new LogTestDataEvent(startTime, FRAMEWORK_NAME, MainActivity.LOAD_TIME));


com.raizlabs.android.dbflow.sql.language.Delete.tables(AddressItem.class,
Contact.class, AddressBook.class);
Delete.tables(AddressItem.class,
Contact.class, AddressBook.class);
}

public static void testAddressItems(Context context) {
com.raizlabs.android.dbflow.sql.language.Delete.table(SimpleAddressItem.class);
Delete.table(SimpleAddressItem.class);
Collection<SimpleAddressItem> dbFlowModels =
Generator.getAddresses(SimpleAddressItem.class, MainActivity.LOOP_COUNT);
long startTime = System.currentTimeMillis();
final Collection<SimpleAddressItem> finalDbFlowModels = dbFlowModels;
TransactionManager.transact(DBFlowDatabase.NAME, new Runnable() {
@Override
public void run() {
Saver.saveAll(finalDbFlowModels);
}
});
FlowManager.getDatabase(DBFlowDatabase.class)
.executeTransaction(FastStoreModelTransaction
.insertBuilder(FlowManager.getModelAdapter(SimpleAddressItem.class))
.addAll(finalDbFlowModels)
.build());
EventBus.getDefault().post(new LogTestDataEvent(startTime, FRAMEWORK_NAME, MainActivity.SAVE_TIME));

startTime = System.currentTimeMillis();
dbFlowModels = new Select().from(SimpleAddressItem.class).queryList();
EventBus.getDefault().post(new LogTestDataEvent(startTime, FRAMEWORK_NAME, MainActivity.LOAD_TIME));

com.raizlabs.android.dbflow.sql.language.Delete.table(SimpleAddressItem.class);
Delete.table(SimpleAddressItem.class);
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
package com.raizlabs.android.databasecomparison.dbflow;

import com.raizlabs.android.databasecomparison.interfaces.IAddressItem;
import com.raizlabs.android.databasecomparison.MainActivity;
import com.raizlabs.android.databasecomparison.interfaces.IAddressItem;
import com.raizlabs.android.dbflow.annotation.Column;
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
import com.raizlabs.android.dbflow.structure.cache.BaseCacheableModel;
import com.raizlabs.android.dbflow.structure.BaseModel;

/**
* Description:
*/
@Table(databaseName = DBFlowDatabase.NAME)
public class SimpleAddressItem extends BaseCacheableModel implements IAddressItem<AddressBook> {
@Table(database = DBFlowDatabase.class,
cachingEnabled = true,
cacheSize = MainActivity.LOOP_COUNT,
orderedCursorLookUp = true)
public class SimpleAddressItem extends BaseModel implements IAddressItem<AddressBook> {

@PrimaryKey(autoincrement = true)
@Column
long id;

@Column(name = "name")
Expand Down Expand Up @@ -67,8 +69,4 @@ public void saveAll() {
super.insert();
}

@Override
public int getCacheSize() {
return MainActivity.LOOP_COUNT;
}
}
Loading