diff --git a/app/build.gradle b/app/build.gradle
index c41486c..da05184 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -4,7 +4,7 @@ apply plugin: 'realm-android'
android {
compileSdkVersion 22
- buildToolsVersion "23.0.3"
+ buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.raizlabs.android.databasecomparison"
@@ -36,4 +36,5 @@ dependencies {
compile 'com.github.PhilJay:MPAndroidChart:v2.1.0'
compile 'de.greenrobot:eventbus:2.4.0'
+ compile 'cn.ieclipse.aorm:aorm-core:1.1.5'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 39e99f5..8c5110a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -20,6 +20,10 @@
+
+
diff --git a/app/src/main/java/com/raizlabs/android/databasecomparison/MainActivity.java b/app/src/main/java/com/raizlabs/android/databasecomparison/MainActivity.java
index 1144e2e..5dced84 100644
--- a/app/src/main/java/com/raizlabs/android/databasecomparison/MainActivity.java
+++ b/app/src/main/java/com/raizlabs/android/databasecomparison/MainActivity.java
@@ -16,6 +16,7 @@
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.raizlabs.android.databasecomparison.activeandroid.AATester;
+import com.raizlabs.android.databasecomparison.aorm.AormTester;
import com.raizlabs.android.databasecomparison.dbflow.DBFlowTester;
import com.raizlabs.android.databasecomparison.events.LogTestDataEvent;
import com.raizlabs.android.databasecomparison.events.TrialCompletedEvent;
@@ -193,6 +194,7 @@ private void resetChart() {
chartEntrySets.put(OrmLiteTester.FRAMEWORK_NAME, new ArrayList());
chartEntrySets.put(OllieTester.FRAMEWORK_NAME, new ArrayList());
chartEntrySets.put(RealmTester.FRAMEWORK_NAME, new ArrayList());
+ chartEntrySets.put(AormTester.FRAMEWORK_NAME, new ArrayList());
//chartEntrySets.put(SugarTester.FRAMEWORK_NAME, new ArrayList());
//chartEntrySets.put(AATester.FRAMEWORK_NAME, new ArrayList());
//chartEntrySets.put(SprinklesTester.FRAMEWORK_NAME, new ArrayList());
@@ -216,6 +218,8 @@ private int getFrameworkColor(String framework) {
return Color.rgb(0x64, 0xB5, 0XF6); // blue
case RealmTester.FRAMEWORK_NAME:
return Color.rgb(0xAE, 0xD5, 0X81); // light green
+ case AormTester.FRAMEWORK_NAME:
+ return Color.rgb(0xCC, 0xCC, 0xCC); //gray
default:
return Color.WHITE;
}
@@ -247,6 +251,7 @@ public void run() {
DBFlowTester.testAddressItems(applicationContext);
OllieTester.testAddressItems(applicationContext);
RealmTester.testAddressItems(applicationContext);
+ AormTester.testAddressItems(applicationContext);
//SprinklesTester.testAddressItems(applicationContext);
//AATester.testAddressItems(applicationContext);
//SugarTester.testAddressItems(applicationContext);
@@ -273,6 +278,7 @@ public void run() {
DBFlowTester.testAddressBooks(applicationContext);
OllieTester.testAddressBooks(applicationContext);
RealmTester.testAddressBooks(applicationContext);
+ AormTester.testAddressBooks(applicationContext);
//SprinklesTester.testAddressBooks(applicationContext);
//AATester.testAddressBooks(applicationContext);
//SugarTester.testAddressBooks(applicationContext);
diff --git a/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AddressBook.java b/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AddressBook.java
new file mode 100644
index 0000000..04d908d
--- /dev/null
+++ b/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AddressBook.java
@@ -0,0 +1,91 @@
+package com.raizlabs.android.databasecomparison.aorm;
+
+import com.raizlabs.android.databasecomparison.interfaces.IAddressBook;
+
+import java.sql.SQLException;
+import java.util.Collection;
+
+import cn.ieclipse.aorm.Session;
+import cn.ieclipse.aorm.annotation.Column;
+import cn.ieclipse.aorm.annotation.Table;
+
+/**
+ * Description
+ *
+ * @author Jamling
+ */
+
+@Table(name = "addressbook")
+public class AddressBook implements IAddressBook {
+
+ @Column(name = "id", id = true)
+ private long id;
+ @Column(name = "name")
+ private String name;
+ @Column(name = "author")
+ private String author;
+
+ private Collection addresses;
+
+ private Collection contacts;
+
+ @Override
+ public void saveAll() {
+
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getAuthor() {
+ return author;
+ }
+
+ @Override
+ public void setAuthor(String author) {
+ this.author = author;
+ }
+
+ @Override
+ public Collection getAddresses() {
+ return addresses;
+ }
+
+ @Override
+ public void setAddresses(Collection addresses) {
+ this.addresses = addresses;
+ }
+
+ @Override
+ public Collection getContacts() {
+ return contacts;
+ }
+
+ @Override
+ public void setContacts(Collection contacts) {
+ this.contacts = contacts;
+ }
+
+ public void insertAddressItem(Session session) throws SQLException{
+ session.batchInsert(getAddresses());
+ }
+
+ public void insertContact(Session session) throws SQLException{
+ session.batchInsert(getContacts());
+ }
+}
diff --git a/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AddressItem.java b/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AddressItem.java
new file mode 100644
index 0000000..095e683
--- /dev/null
+++ b/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AddressItem.java
@@ -0,0 +1,102 @@
+package com.raizlabs.android.databasecomparison.aorm;
+
+import com.raizlabs.android.databasecomparison.interfaces.IAddressItem;
+
+import cn.ieclipse.aorm.annotation.Column;
+import cn.ieclipse.aorm.annotation.Table;
+
+/**
+ * Description
+ *
+ * @author Jamling
+ */
+
+@Table(name = "addressitem")
+public class AddressItem implements IAddressItem {
+
+ @Column(name = "id", id = true)
+ long id;
+
+ @Column(name = "name")
+ String name;
+
+ @Column(name = "address")
+ String address;
+
+ @Column(name = "city")
+ String city;
+
+ @Column(name = "state")
+ String state;
+
+ @Column(name = "phone")
+ long phone;
+
+ @Column(name = "aid", type = "Integer")
+ long addressBookId;
+
+ @Override
+ public void saveAll() {
+
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ @Override
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ @Override
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ @Override
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public long getPhone() {
+ return phone;
+ }
+
+ @Override
+ public void setPhone(long phone) {
+ this.phone = phone;
+ }
+
+ @Override
+ public void setAddressBook(AddressBook addressBook) {
+ if (addressBook != null) {
+ this.addressBookId = addressBook.getId();
+ }
+ }
+}
diff --git a/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AormTestContentProvider.java b/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AormTestContentProvider.java
new file mode 100644
index 0000000..0b81232
--- /dev/null
+++ b/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AormTestContentProvider.java
@@ -0,0 +1,77 @@
+package com.raizlabs.android.databasecomparison.aorm;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.net.Uri;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+
+import cn.ieclipse.aorm.Aorm;
+import cn.ieclipse.aorm.Session;
+
+/**
+ * Description
+ *
+ * @author Jamling
+ */
+
+public class AormTestContentProvider extends ContentProvider {
+ private static Session session;
+ private SQLiteOpenHelper mOpenHelper;
+
+ public static Session getSession() {
+ return session;
+ }
+
+ @Override
+ public boolean onCreate() {
+ mOpenHelper = new SQLiteOpenHelper(this.getContext(), "aorm.db", null, 1) {
+ public void onCreate(SQLiteDatabase db) {
+ Aorm.createTable(db, AddressBook.class);
+ Aorm.createTable(db, AddressItem.class);
+ Aorm.createTable(db, Contact.class);
+ }
+
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ Aorm.updateTable(db, AddressBook.class);
+ Aorm.updateTable(db, AddressItem.class);
+ Aorm.updateTable(db, Contact.class);
+ }
+ };
+ session = new Session(mOpenHelper, getContext().getContentResolver());
+ return true;
+ }
+
+ @Nullable
+ @Override
+ public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection,
+ @Nullable String[] selectionArgs, @Nullable String sortOrder) {
+ return null;
+ }
+
+ @Nullable
+ @Override
+ public String getType(@NonNull Uri uri) {
+ return null;
+ }
+
+ @Nullable
+ @Override
+ public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
+ return null;
+ }
+
+ @Override
+ public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
+ return 0;
+ }
+
+ @Override
+ public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection,
+ @Nullable String[] selectionArgs) {
+ return 0;
+ }
+}
diff --git a/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AormTester.java b/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AormTester.java
new file mode 100644
index 0000000..6649d50
--- /dev/null
+++ b/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/AormTester.java
@@ -0,0 +1,101 @@
+package com.raizlabs.android.databasecomparison.aorm;
+
+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.events.LogTestDataEvent;
+
+import java.sql.SQLException;
+import java.util.Collection;
+
+import cn.ieclipse.aorm.Aorm;
+import cn.ieclipse.aorm.Criteria;
+import cn.ieclipse.aorm.Restrictions;
+import cn.ieclipse.aorm.Session;
+import de.greenrobot.event.EventBus;
+
+/**
+ * Description
+ *
+ * @author Jamling
+ */
+
+public class AormTester {
+ public static final String FRAMEWORK_NAME = "Aorm";
+
+ public static void testAddressBooks(Context context) {
+ Session session = AormTestContentProvider.getSession();
+ try {
+ session.deleteAll(AddressBook.class);
+ session.deleteAll(AddressItem.class);
+ session.deleteAll(Contact.class);
+ } catch (Exception e) {
+ Aorm.logi(e.getMessage());
+ }
+
+ Collection addressBooks = Generator.createAddressBooks(AddressBook.class, Contact.class,
+ AddressItem.class, MainActivity.ADDRESS_BOOK_COUNT);
+ long startTime = System.currentTimeMillis();
+
+ try {
+ session.beginTransaction();
+ session.batchInsert(addressBooks);
+ for (AddressBook addressBook : addressBooks) {
+ addressBook.insertAddressItem(session);
+ addressBook.insertContact(session);
+ }
+ session.endTransaction();
+ EventBus.getDefault().post(new LogTestDataEvent(startTime, FRAMEWORK_NAME, MainActivity.SAVE_TIME));
+
+ startTime = System.currentTimeMillis();
+ addressBooks = session.list(AddressBook.class);
+ for (AddressBook addressBook : addressBooks) {
+ Criteria criteria = Criteria.create(Contact.class).add(Restrictions.eq("addressbook", addressBook
+ .getId()));
+ addressBook.setContacts(session.list(criteria));
+ criteria = Criteria.create(AddressItem.class).add(Restrictions.eq("addressbook", addressBook
+ .getId()));
+ addressBook.setAddresses(session.list(criteria));
+ }
+
+ Loader.loadAllInnerData(addressBooks);
+ EventBus.getDefault().post(new LogTestDataEvent(startTime, FRAMEWORK_NAME, MainActivity.LOAD_TIME));
+
+ // clean out DB for next run
+ session.deleteAll(AddressBook.class);
+ session.deleteAll(AddressItem.class);
+ session.deleteAll(Contact.class);
+ } catch (Exception e) {
+ Aorm.logi(e.getMessage());
+ }
+ }
+
+ public static void testAddressItems(Context context) {
+
+ Session session = AormTestContentProvider.getSession();
+
+ session.deleteAll(AddressItem.class);
+
+ Collection simpleAddressItems = Generator.getAddresses(AddressItem.class, MainActivity.LOOP_COUNT);
+ long startTime = System.currentTimeMillis();
+
+ try {
+ session.batchInsert(simpleAddressItems);
+ for (AddressItem simpleAddressItem : simpleAddressItems) {
+ //session.insertNative(simpleAddressItem);
+ }
+ } catch (SQLException e){
+ Aorm.logi(e.getMessage());
+ }
+ EventBus.getDefault().post(new LogTestDataEvent(startTime, FRAMEWORK_NAME, MainActivity.SAVE_TIME));
+
+ startTime = System.currentTimeMillis();
+ simpleAddressItems = session.list(AddressItem.class);
+ EventBus.getDefault().post(new LogTestDataEvent(startTime, FRAMEWORK_NAME, MainActivity.LOAD_TIME));
+
+ // clean out DB for next run
+ session.deleteAll(AddressItem.class);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/Contact.java b/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/Contact.java
new file mode 100644
index 0000000..7d45cc7
--- /dev/null
+++ b/app/src/main/java/com/raizlabs/android/databasecomparison/aorm/Contact.java
@@ -0,0 +1,69 @@
+package com.raizlabs.android.databasecomparison.aorm;
+
+import com.raizlabs.android.databasecomparison.interfaces.IContact;
+
+import cn.ieclipse.aorm.Criteria;
+import cn.ieclipse.aorm.Restrictions;
+import cn.ieclipse.aorm.annotation.Column;
+import cn.ieclipse.aorm.annotation.Table;
+
+/**
+ * Description
+ *
+ * @author Jamling
+ */
+
+@Table(name = "contact")
+public class Contact implements IContact {
+
+ @Column(name = "name")
+ private String name;
+
+ @Column(name = "email")
+ private String email;
+
+ @Column(name = "aid")
+ private long addressBookId;
+
+ private AddressBook addressBook;
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String getEmail() {
+ return email;
+ }
+
+ @Override
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public AddressBook getAddressBookField() {
+ if (addressBook == null) {
+ addressBook = (AddressBook) AormTestContentProvider.getSession().get(
+ Criteria.create(AddressBook.class).add(Restrictions.eq("id", addressBookId)));
+ }
+ return addressBook;
+ }
+
+ @Override
+ public void setAddressBook(AddressBook addressBook) {
+ if (addressBook != null) {
+ this.addressBookId = addressBook.getId();
+ }
+ }
+
+ @Override
+ public void saveAll() {
+
+ }
+}
diff --git a/images/complextrial.png b/images/complextrial.png
index afd7516..8366999 100644
Binary files a/images/complextrial.png and b/images/complextrial.png differ
diff --git a/images/simpletrial.png b/images/simpletrial.png
index be14922..c3cd78d 100644
Binary files a/images/simpletrial.png and b/images/simpletrial.png differ