io.realm.FieldAttribute Java Examples

The following examples show how to use io.realm.FieldAttribute. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: RealmUtils.java    From quill with MIT License 6 votes vote down vote up
private static void changeFieldType(RealmObjectSchema objectSchema, String fieldName,
                             Class newType, @Nullable FieldAttribute attribute,
                             Action3<DynamicRealmObject, String, String> transformation) {
    String tempFieldName = fieldName + "_temp";
    if (attribute != null) {
        if (attribute == FieldAttribute.PRIMARY_KEY && objectSchema.hasPrimaryKey()) {
            // remove existing primary key
            objectSchema.removePrimaryKey();
        }
        objectSchema.addField(tempFieldName, newType, attribute);
    } else {
        objectSchema.addField(tempFieldName, newType);
    }
    objectSchema
            .transform(obj -> {
                transformation.call(obj, fieldName, tempFieldName);
            })
            .removeField(fieldName)
            .renameField(tempFieldName, fieldName);
}
 
Example #2
Source File: AWRealmMigration.java    From alpha-wallet-android with MIT License 5 votes vote down vote up
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion)
{
    RealmSchema schema = realm.getSchema();
    if (oldVersion == 4)
    {
        RealmObjectSchema realmTicker = schema.get("RealmTokenTicker");
        if (!realmTicker.hasField("currencySymbol")) realmTicker.addField("currencySymbol", String.class);
        oldVersion++;
    }
    //Note: these version updates drop through; eg if oldVersion was 4, then the above code AND this code will execute
    if (oldVersion == 5)
    {
        RealmObjectSchema realmToken = schema.get("RealmToken");
        if (!realmToken.hasField("lastTxTime")) realmToken.addField("lastTxTime", long.class); //add the last transaction update time, used to check tokenscript cached result validity
        oldVersion++;
    }

    //Version 6
    if (oldVersion == 6)
    {
        schema.create("RealmCertificateData")
                .addField("instanceKey", String.class, FieldAttribute.PRIMARY_KEY)
                .addField("result", String.class)
                .addField("subject", String.class)
                .addField("keyName", String.class)
                .addField("keyType", String.class)
                .addField("issuer", String.class)
                .addField("certificateName", String.class)
                .addField("type", int.class);
        oldVersion++;
    }
}
 
Example #3
Source File: O2RealmMigration.java    From o2oa with GNU Affero General Public License v3.0 4 votes vote down vote up
@Override
    public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
        XLog.info("migrate oldVersion:" + oldVersion + ", newVersion:" + newVersion);
        RealmSchema schema = realm.getSchema();
        while (oldVersion< newVersion) {
            if (oldVersion == 9) {
                schema.create("PortalDataRealmObject")
                        .addField("id", String.class, FieldAttribute.PRIMARY_KEY)
                        .addField("name", String.class)
                        .addField("alias", String.class)
                        .addField("description", String.class)
                        .addField("portalCategory", String.class)
                        .addField("firstPage", String.class)
                        .addField("creatorPerson", String.class)
                        .addField("lastUpdateTime", String.class)
                        .addField("lastUpdatePerson", String.class)
                        .addField("createTime", String.class)
                        .addField("updateTime", String.class)
                        .addField("enable", Boolean.class);
                schema.create("NativeAppDataRealmObject")
                        .addField("id", String.class, FieldAttribute.PRIMARY_KEY)
                        .addField("key", String.class)
                        .addField("name", String.class)
                        .addField("enable", Boolean.class);
                oldVersion++;
            }
            if (oldVersion == 10) {
                oldVersion++;
            }
            if (oldVersion == 11) {
//                schema.create("IMUserEntryRealmObject")
//                        .addField("_id", String.class, FieldAttribute.PRIMARY_KEY)
//                        .addField("username", String.class)
//                        .addField("appKey", String.class);
//                schema.create("ImFriendEntryRealmObject")
//                        .addField("_id", String.class, FieldAttribute.PRIMARY_KEY)
//                        .addField("uid", Long.class)
//                        .addField("username", String.class)
//                        .addField("appKey", String.class)
//                        .addField("avatar", String.class)
//                        .addField("displayName", String.class)
//                        .addField("letter", String.class)
//                        .addField("nickName", String.class)
//                        .addField("noteName", String.class)
//                        .addField("user", IMUserEntryRealmObject.class);
//                oldVersion++;
            }
        }

    }
 
Example #4
Source File: BlogMetadataDBMigration.java    From quill with MIT License 4 votes vote down vote up
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
    RealmSchema schema = realm.getSchema();
    Crashlytics.log(Log.INFO, TAG, "MIGRATING DATABASE from v" + oldVersion + " to v" + newVersion);

    if (oldVersion == 0) {
        if (schema.get("Post").isNullable("slug")) {
            // get rid of null-valued slugs, if any exist
            RealmResults<DynamicRealmObject> postsWithNullSlug = realm
                    .where(Post.class.getSimpleName())
                    .isNull("slug")
                    .findAll();
            Crashlytics.log(Log.DEBUG, TAG, "CONVERTING " + postsWithNullSlug.size() + " SLUGS FROM NULL TO \"\"");
            for (DynamicRealmObject obj : postsWithNullSlug) {
                obj.setString("slug", "");
            }
            // finally, make the field required
            schema.get("Post").setNullable("slug", false);
        }

        schema.get("Post")
                .setNullable("html", true)
                .setNullable("image", true)
                .setNullable("createdAt", true)
                .setNullable("publishedAt", true)
                .setNullable("metaTitle", true)
                .setNullable("metaDescription", true);
        schema.get("User")
                .addIndex("id")
                .setNullable("image", true)
                .setNullable("bio", true);
        schema.get("Tag")
                .setNullable("slug", true)
                .setNullable("description", true)
                .setNullable("image", true)
                .setNullable("metaTitle", true)
                .setNullable("metaDescription", true)
                .setNullable("createdAt", true)
                .setNullable("updatedAt", true);
        schema.get("Setting")
                .addIndex("id");
        ++oldVersion;
    }

    if (oldVersion == 1) {
        // delete all etags, so the info can be fetched and stored
        // again, with role-based permissions enforced
        RealmResults<DynamicRealmObject> allEtags = realm
                .where(ETag.class.getSimpleName())
                .equalTo("type", ETag.TYPE_CURRENT_USER)
                .or()
                .equalTo("type", ETag.TYPE_ALL_POSTS)
                .findAll();
        Crashlytics.log(Log.DEBUG, TAG, "DELETING ALL ETAGS TO REFRESH DATA COMPLETELY");
        allEtags.deleteAllFromRealm();

        if (!schema.contains("Role")) {
            // create the Role table
            Crashlytics.log(Log.DEBUG, TAG, "CREATING ROLE TABLE");
            schema.create("Role")
                    .addField("id", Integer.class, FieldAttribute.PRIMARY_KEY)
                    .addField("uuid", String.class, FieldAttribute.REQUIRED)
                    .addField("name", String.class, FieldAttribute.REQUIRED)
                    .addField("description", String.class, FieldAttribute.REQUIRED);
        }

        if (!schema.get("User").hasField("roles")) {
            Crashlytics.log(Log.DEBUG, TAG, "ADDING ROLES FIELD TO USER TABLE");
            schema.get("User").addRealmListField("roles", schema.get("Role"));
        }
        ++oldVersion;
    }

    if (oldVersion == 2) {
        if (!schema.get("Post").hasField("conflictState")) {
            Crashlytics.log(Log.DEBUG, TAG, "ADDING CONFLICT STATE FIELD TO POST TABLE");
            schema.get("Post").addField("conflictState", String.class, FieldAttribute.REQUIRED);
        }
        ++oldVersion;
    }

    if (oldVersion == 3) {
        // Ghost 1.0 upgrade, drop all data
        Crashlytics.log(Log.WARN, TAG, "DROPPING ALL DATA");
        final SpectreApplication app = SpectreApplication.getInstance();
        app.setOldRealmSchemaVersion(3);

        // clear logged in state
        AppState.getInstance(app).setBoolean(AppState.Key.LOGGED_IN, false);
        UserPrefs.getInstance(app).clear(UserPrefs.Key.EMAIL);
        UserPrefs.getInstance(app).clear(UserPrefs.Key.PASSWORD);
        UserPrefs.getInstance(app).clear(UserPrefs.Key.PERMALINK_FORMAT);

        ++oldVersion;
    }

    // STARTING FROM V4, THE REALM THAT USED TO STORE THE BLOG DATA NOW
    // ONLY STORES THE *METADATA* FOR ALL CONNECTED BLOGS
}