/*
Montréal Just in Case
Copyright (C) 2011 Mudar Noufal <mn@mudar.ca>
Geographic locations of public safety services. A Montréal Open Data
project.
This file is part of Montréal Just in Case.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package ca.mudar.mtlaucasou.data;
import ca.mudar.mtlaucasou.model.RealmPlacemark;
import io.realm.DynamicRealm;
import io.realm.DynamicRealmObject;
import io.realm.FieldAttribute;
import io.realm.RealmMigration;
import io.realm.RealmObjectSchema;
import io.realm.RealmSchema;
import static ca.mudar.mtlaucasou.util.LogUtils.makeLogTag;
public class RealmSchemaMigration implements RealmMigration {
private static final String TAG = makeLogTag("RealmSchemaMigration");
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
final RealmSchema schema = realm.getSchema();
if (oldVersion == 10 && newVersion == 11) {
/**
* v11 added string field `layerType` to v10
*/
final RealmObjectSchema placemarkSchema = schema.get("RealmPlacemark");
// Add the `layerType` field, and set its migration value to `mapType`.
// Placemarks in v10 didn't have mixed types yet.
placemarkSchema
.addField(RealmPlacemark.FIELD_LAYER_TYPE, String.class, FieldAttribute.INDEXED)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set(RealmPlacemark.FIELD_LAYER_TYPE,
obj.getString(RealmPlacemark.FIELD_MAP_TYPE));
}
});
oldVersion++;
}
}
}