// Path: library/src/main/java/com/thefinestartist/royal/Royal.java
// public class Royal {
// 
//     private static Context context;
// 
//     public static void joinWith(@NonNull Context context) {
//         Royal.context = context.getApplicationContext();
//         Logger.init("Royal");
//     }
// 
//     public static Context getApplicationContext() {
//         if (Royal.context == null)
//             throw new NullPointerException("Please call Royal.joinWith(context) within your Application onCreate() method.");
//         return Royal.context;
//     }
// 
//     public static Map<Class<? extends RoyalDatabase>, RealmConfiguration> configurationMap = new ConcurrentHashMap<>();
//     public static Map<Class<? extends RoyalDatabase>, RoyalDatabase> databaseMap = new ConcurrentHashMap<>();
// 
//     public static void addDatabase(@NonNull RoyalDatabase royalDatabase) {
//         Context context = Royal.getApplicationContext();
//         RealmConfiguration.Builder builder = new RealmConfiguration.Builder(context);
//         builder.name(royalDatabase.getFileName() + ".realm");
//         if (royalDatabase.forCache())
//             builder.inMemory();
//         if (royalDatabase.getEncryptionKey() != null)
//             builder.encryptionKey(royalDatabase.getEncryptionKey());
//         if (royalDatabase.shouldDeleteIfMigrationNeeded())
//             builder.deleteRealmIfMigrationNeeded();
// 
//         List<Object> modules = royalDatabase.getModules();
//         if (modules != null && modules.size() > 0) {
//             Object baseModule;
//             baseModule = modules.get(0);
//             modules.remove(0);
//             Object[] additionalModules = modules.toArray(new Object[modules.size()]);
//             builder.setModules(baseModule, additionalModules);
//         }
// 
//         builder.migration(royalDatabase);
//         RealmConfiguration configuration = builder.build();
//         configurationMap.put(royalDatabase.getClass(), configuration);
//         databaseMap.put(royalDatabase.getClass(), royalDatabase);
//     }
// 
//     public static RealmConfiguration getConfigurationOf(Class<? extends RoyalDatabase> clazz) {
//         return configurationMap.get(clazz);
//     }
// 
//     public static Realm getRealmOf(Class<? extends RoyalDatabase> clazz) {
//         RealmConfiguration configuration = configurationMap.get(clazz);
//         return Realm.getInstance(configuration);
//     }
// 
//     public static RoyalDatabase getDatabaseOf(Class<? extends RoyalDatabase> clazz) {
//         return databaseMap.get(clazz);
//     }
// 
// //    public static Realm openRealm(Class<? extends RoyalDatabase> clazz) {
// //        RealmConfiguration configuration = configurationMap.get(clazz);
// //        return Realm.getInstance(configuration);
// //    }
// //
// //    public static void closeRealm(Realm realm) {
// //        realm.close();
// //    }
// }


import android.app.Application;
import com.thefinestartist.royal.Royal;
package com.thefinestartist.royal.example;



/**
 * Created by TheFinestArtist on 8/3/15.
 */
public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
// Path: library/src/main/java/com/thefinestartist/royal/Royal.java
// public class Royal {
// 
//     private static Context context;
// 
//     public static void joinWith(@NonNull Context context) {
//         Royal.context = context.getApplicationContext();
//         Logger.init("Royal");
//     }
// 
//     public static Context getApplicationContext() {
//         if (Royal.context == null)
//             throw new NullPointerException("Please call Royal.joinWith(context) within your Application onCreate() method.");
//         return Royal.context;
//     }
// 
//     public static Map<Class<? extends RoyalDatabase>, RealmConfiguration> configurationMap = new ConcurrentHashMap<>();
//     public static Map<Class<? extends RoyalDatabase>, RoyalDatabase> databaseMap = new ConcurrentHashMap<>();
// 
//     public static void addDatabase(@NonNull RoyalDatabase royalDatabase) {
//         Context context = Royal.getApplicationContext();
//         RealmConfiguration.Builder builder = new RealmConfiguration.Builder(context);
//         builder.name(royalDatabase.getFileName() + ".realm");
//         if (royalDatabase.forCache())
//             builder.inMemory();
//         if (royalDatabase.getEncryptionKey() != null)
//             builder.encryptionKey(royalDatabase.getEncryptionKey());
//         if (royalDatabase.shouldDeleteIfMigrationNeeded())
//             builder.deleteRealmIfMigrationNeeded();
// 
//         List<Object> modules = royalDatabase.getModules();
//         if (modules != null && modules.size() > 0) {
//             Object baseModule;
//             baseModule = modules.get(0);
//             modules.remove(0);
//             Object[] additionalModules = modules.toArray(new Object[modules.size()]);
//             builder.setModules(baseModule, additionalModules);
//         }
// 
//         builder.migration(royalDatabase);
//         RealmConfiguration configuration = builder.build();
//         configurationMap.put(royalDatabase.getClass(), configuration);
//         databaseMap.put(royalDatabase.getClass(), royalDatabase);
//     }
// 
//     public static RealmConfiguration getConfigurationOf(Class<? extends RoyalDatabase> clazz) {
//         return configurationMap.get(clazz);
//     }
// 
//     public static Realm getRealmOf(Class<? extends RoyalDatabase> clazz) {
//         RealmConfiguration configuration = configurationMap.get(clazz);
//         return Realm.getInstance(configuration);
//     }
// 
//     public static RoyalDatabase getDatabaseOf(Class<? extends RoyalDatabase> clazz) {
//         return databaseMap.get(clazz);
//     }
// 
// //    public static Realm openRealm(Class<? extends RoyalDatabase> clazz) {
// //        RealmConfiguration configuration = configurationMap.get(clazz);
// //        return Realm.getInstance(configuration);
// //    }
// //
// //    public static void closeRealm(Realm realm) {
// //        realm.close();
// //    }
// }


// Path: example/src/main/java/com/thefinestartist/royal/example/App.java
import android.app.Application;
import com.thefinestartist.royal.Royal;

package com.thefinestartist.royal.example;



/**
 * Created by TheFinestArtist on 8/3/15.
 */
public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Royal.joinWith(this);