TODOs - forking persistence by product flavor

Change-Id: I1493fa5f953eecf4dfdcd12a735886e68510d7f7
diff --git a/projects/todos/app/build.gradle b/projects/todos/app/build.gradle
index 3f6b1a5..b125830 100644
--- a/projects/todos/app/build.gradle
+++ b/projects/todos/app/build.gradle
@@ -11,6 +11,14 @@
         versionCode 1
         versionName "1.0"
     }
+    productFlavors {
+        firebase {
+            applicationId "io.v.todos.firebase"
+        }
+        syncbase {
+            applicationId "io.v.todos.syncbase"
+        }
+    }
     buildTypes {
         release {
             minifyEnabled false
@@ -27,9 +35,12 @@
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     testCompile 'junit:junit:4.12'
-    compile 'com.android.support:appcompat-v7:23.1.1'
-    compile 'com.android.support:design:23.1.1'
-    compile 'com.firebase:firebase-client-android:2.5.2'
-    compile 'com.android.support:cardview-v7:23.1.1'
-    compile 'com.android.support:recyclerview-v7:23.1.1'
+    compile (
+            'com.android.support:appcompat-v7:23.1.1',
+            'com.android.support:design:23.1.1',
+            'com.android.support:cardview-v7:23.1.1',
+            'com.android.support:recyclerview-v7:23.1.1'
+    )
+    firebaseCompile 'com.firebase:firebase-client-android:2.5.2'
+    syncbaseCompile 'com.fasterxml.jackson.core:jackson-annotations:2.7.3'
 }
diff --git a/projects/todos/app/src/main/java/io/v/todos/persistence/PersistenceFactory.java b/projects/todos/app/src/firebase/java/io/v/todos/persistence/PersistenceFactory.java
similarity index 91%
rename from projects/todos/app/src/main/java/io/v/todos/persistence/PersistenceFactory.java
rename to projects/todos/app/src/firebase/java/io/v/todos/persistence/PersistenceFactory.java
index b29f4f5..f137b99 100644
--- a/projects/todos/app/src/main/java/io/v/todos/persistence/PersistenceFactory.java
+++ b/projects/todos/app/src/firebase/java/io/v/todos/persistence/PersistenceFactory.java
@@ -20,7 +20,6 @@
      */
     public static MainPersistence getMainPersistence(Context context,
                                                      ListEventListener<TodoList> listener) {
-        // TODO(rosswang): Choose this by build variant.
         return new FirebaseMain(context, listener);
     }
 
@@ -31,7 +30,6 @@
      */
     public static TodoListPersistence getTodoListPersistence(Context context, String key,
                                                              TodoListListener listener) {
-        // TODO(rosswang): Choose this by build variant.
         return new FirebaseTodoList(context, key, listener);
     }
 }
diff --git a/projects/todos/app/src/main/java/io/v/todos/persistence/firebase/ChildEventListenerAdapter.java b/projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/ChildEventListenerAdapter.java
similarity index 100%
rename from projects/todos/app/src/main/java/io/v/todos/persistence/firebase/ChildEventListenerAdapter.java
rename to projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/ChildEventListenerAdapter.java
diff --git a/projects/todos/app/src/main/java/io/v/todos/persistence/firebase/FirebaseMain.java b/projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/FirebaseMain.java
similarity index 100%
rename from projects/todos/app/src/main/java/io/v/todos/persistence/firebase/FirebaseMain.java
rename to projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/FirebaseMain.java
diff --git a/projects/todos/app/src/main/java/io/v/todos/persistence/firebase/FirebasePersistence.java b/projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/FirebasePersistence.java
similarity index 100%
rename from projects/todos/app/src/main/java/io/v/todos/persistence/firebase/FirebasePersistence.java
rename to projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/FirebasePersistence.java
diff --git a/projects/todos/app/src/main/java/io/v/todos/persistence/firebase/FirebaseTodoList.java b/projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/FirebaseTodoList.java
similarity index 100%
rename from projects/todos/app/src/main/java/io/v/todos/persistence/firebase/FirebaseTodoList.java
rename to projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/FirebaseTodoList.java
diff --git a/projects/todos/app/src/main/java/io/v/todos/persistence/PersistenceFactory.java b/projects/todos/app/src/syncbase/java/io/v/todos/persistence/PersistenceFactory.java
similarity index 76%
copy from projects/todos/app/src/main/java/io/v/todos/persistence/PersistenceFactory.java
copy to projects/todos/app/src/syncbase/java/io/v/todos/persistence/PersistenceFactory.java
index b29f4f5..d19bd27 100644
--- a/projects/todos/app/src/main/java/io/v/todos/persistence/PersistenceFactory.java
+++ b/projects/todos/app/src/syncbase/java/io/v/todos/persistence/PersistenceFactory.java
@@ -7,8 +7,6 @@
 import android.content.Context;
 
 import io.v.todos.TodoList;
-import io.v.todos.persistence.firebase.FirebaseMain;
-import io.v.todos.persistence.firebase.FirebaseTodoList;
 
 public final class PersistenceFactory {
     private PersistenceFactory(){}
@@ -20,8 +18,7 @@
      */
     public static MainPersistence getMainPersistence(Context context,
                                                      ListEventListener<TodoList> listener) {
-        // TODO(rosswang): Choose this by build variant.
-        return new FirebaseMain(context, listener);
+        throw new RuntimeException("Unsupported product flavor.");
     }
 
     /**
@@ -31,7 +28,6 @@
      */
     public static TodoListPersistence getTodoListPersistence(Context context, String key,
                                                              TodoListListener listener) {
-        // TODO(rosswang): Choose this by build variant.
-        return new FirebaseTodoList(context, key, listener);
+        throw new RuntimeException("Unsupported product flavor.");
     }
 }
diff --git a/projects/todos/app/src/main/java/io/v/todos/persistence/syncbase/SyncbasePersistence.java b/projects/todos/app/src/syncbase/java/io/v/todos/persistence/syncbase/SyncbasePersistence.java
similarity index 100%
rename from projects/todos/app/src/main/java/io/v/todos/persistence/syncbase/SyncbasePersistence.java
rename to projects/todos/app/src/syncbase/java/io/v/todos/persistence/syncbase/SyncbasePersistence.java