Search in sources :

Example 1 with Lion

use of io.realm.examples.librarymodules.model.Lion in project realm-java by realm.

the class ModulesExampleActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_modules_example);
    rootLayout = ((LinearLayout) findViewById(R.id.container));
    rootLayout.removeAllViews();
    // The default Realm instance implicitly knows about all classes in the realmModuleAppExample Android Studio
    // module. This does not include the classes from the realmModuleLibraryExample AS module so a Realm using this
    // configuration would know about the following classes: { Cow, Pig, Snake, Spider }
    RealmConfiguration defaultConfig = new RealmConfiguration.Builder().build();
    // It is possible to extend the default schema by adding additional Realm modules using modules(). This can
    // also be Realm modules from libraries. The below Realm contains the following classes: { Cow, Pig, Snake,
    // Spider, Cat, Dog }
    RealmConfiguration farmAnimalsConfig = new RealmConfiguration.Builder().name("farm.realm").modules(Realm.getDefaultModule(), new DomesticAnimalsModule()).build();
    // Or you can completely replace the default schema.
    // This Realm contains the following classes: { Elephant, Lion, Zebra, Snake, Spider }
    RealmConfiguration exoticAnimalsConfig = new RealmConfiguration.Builder().name("exotic.realm").modules(new ZooAnimalsModule(), new CreepyAnimalsModule()).build();
    // Multiple Realms can be opened at the same time
    showStatus("Opening multiple Realms");
    Realm defaultRealm = Realm.getInstance(defaultConfig);
    final Realm farmRealm = Realm.getInstance(farmAnimalsConfig);
    Realm exoticRealm = Realm.getInstance(exoticAnimalsConfig);
    // Objects can be added to each Realm independantly
    showStatus("Create objects in the default Realm");
    defaultRealm.executeTransaction(new Realm.Transaction() {

        @Override
        public void execute(Realm realm) {
            realm.createObject(Cow.class);
            realm.createObject(Pig.class);
            realm.createObject(Snake.class);
            realm.createObject(Spider.class);
        }
    });
    showStatus("Create objects in the farm Realm");
    farmRealm.executeTransaction(new Realm.Transaction() {

        @Override
        public void execute(Realm realm) {
            realm.createObject(Cow.class);
            realm.createObject(Pig.class);
            realm.createObject(Cat.class);
            realm.createObject(Dog.class);
        }
    });
    showStatus("Create objects in the exotic Realm");
    exoticRealm.executeTransaction(new Realm.Transaction() {

        @Override
        public void execute(Realm realm) {
            realm.createObject(Elephant.class);
            realm.createObject(Lion.class);
            realm.createObject(Zebra.class);
            realm.createObject(Snake.class);
            realm.createObject(Spider.class);
        }
    });
    // You can copy objects between Realms
    showStatus("Copy objects between Realms");
    showStatus("Number of pigs on the farm : " + farmRealm.where(Pig.class).count());
    showStatus("Copy pig from defaultRealm to farmRealm");
    final Pig defaultPig = defaultRealm.where(Pig.class).findFirst();
    farmRealm.executeTransaction(new Realm.Transaction() {

        @Override
        public void execute(Realm realm) {
            realm.copyToRealm(defaultPig);
        }
    });
    showStatus("Number of unnamed pigs on the farm : " + farmRealm.where(Pig.class).isNull("name").count());
    // Each Realm is restricted to only accept the classes in their schema.
    showStatus("Trying to add an unsupported class");
    defaultRealm.beginTransaction();
    try {
        defaultRealm.createObject(Elephant.class);
    } catch (RealmException expected) {
        showStatus("This throws a :" + expected.toString());
    } finally {
        defaultRealm.cancelTransaction();
    }
    // And Realms in library projects are independent from Realms in the app code
    showStatus("Interacting with library code that uses Realm internally");
    int animals = 5;
    Zoo libraryZoo = new Zoo();
    libraryZoo.open();
    showStatus("Adding animals: " + animals);
    libraryZoo.addAnimals(5);
    showStatus("Number of animals in the library Realm:" + libraryZoo.getNoOfAnimals());
    libraryZoo.close();
    // Remember to close all open Realms
    defaultRealm.close();
    farmRealm.close();
    exoticRealm.close();
}
Also used : ZooAnimalsModule(io.realm.examples.librarymodules.modules.ZooAnimalsModule) CreepyAnimalsModule(io.realm.examples.appmodules.modules.CreepyAnimalsModule) Snake(io.realm.examples.appmodules.model.Snake) Zebra(io.realm.examples.librarymodules.model.Zebra) Cow(io.realm.examples.appmodules.model.Cow) DomesticAnimalsModule(io.realm.examples.librarymodules.modules.DomesticAnimalsModule) RealmException(io.realm.exceptions.RealmException) Pig(io.realm.examples.appmodules.model.Pig) RealmConfiguration(io.realm.RealmConfiguration) Cat(io.realm.examples.librarymodules.model.Cat) Elephant(io.realm.examples.librarymodules.model.Elephant) Spider(io.realm.examples.appmodules.model.Spider) Lion(io.realm.examples.librarymodules.model.Lion) Zoo(io.realm.examples.librarymodules.Zoo) Realm(io.realm.Realm) Dog(io.realm.examples.librarymodules.model.Dog) LinearLayout(android.widget.LinearLayout)

Aggregations

LinearLayout (android.widget.LinearLayout)1 Realm (io.realm.Realm)1 RealmConfiguration (io.realm.RealmConfiguration)1 Cow (io.realm.examples.appmodules.model.Cow)1 Pig (io.realm.examples.appmodules.model.Pig)1 Snake (io.realm.examples.appmodules.model.Snake)1 Spider (io.realm.examples.appmodules.model.Spider)1 CreepyAnimalsModule (io.realm.examples.appmodules.modules.CreepyAnimalsModule)1 Zoo (io.realm.examples.librarymodules.Zoo)1 Cat (io.realm.examples.librarymodules.model.Cat)1 Dog (io.realm.examples.librarymodules.model.Dog)1 Elephant (io.realm.examples.librarymodules.model.Elephant)1 Lion (io.realm.examples.librarymodules.model.Lion)1 Zebra (io.realm.examples.librarymodules.model.Zebra)1 DomesticAnimalsModule (io.realm.examples.librarymodules.modules.DomesticAnimalsModule)1 ZooAnimalsModule (io.realm.examples.librarymodules.modules.ZooAnimalsModule)1 RealmException (io.realm.exceptions.RealmException)1