Conversation class previously had a string field named "message". Now this "message" field is removed and i have added a "RealmList allMessages" inside Conversation class instead of old "message" field. ChatMessage class has a field name "messageText". How can i migrate "message" from Conversation class to "messageText" of list "allMessages"??
public class ChatMessage extends RealmObject implements Parcelable {
....
private String messageText;
....
}
Old Conversation class.
public class Conversation extends RealmObject implements Parcelable{
private String message;
....
}
New Conversation class.
public class Conversation extends RealmObject implements Parcelable{
private RealmList<ChatMessage> allMessages;
}
I tried till this. But it is not working.
if (oldVersion == 6){
RealmObjectSchema messageSchema = schema.create("ChatMessage")
.addField("messageText", String.class);
RealmObjectSchema userChatSchema = schema.get("Conversation");
if (userChatSchema != null) {
userChatSchema.addRealmListField("message_tmp", messageSchema)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(@NonNull DynamicRealmObject obj) {
String message = obj.getString("message");
RealmList<DynamicRealmObject> valueObj = obj.getList("message_tmp");
//What next?Am i right till this point??
}
})
.removeField("message")
.renameField("message_tmp", "allMessages");
}
}
RealmObjectSchema messageSchema = schema.create("ChatMessage")
.addField("txt", String.class);
RealmObjectSchema userChatSchema = schema.get("Conversation");
if (userChatSchema != null) {
userChatSchema.addRealmListField("message_tmp", messageSchema)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(@NonNull DynamicRealmObject obj) {
String message = obj.getString("message");
RealmList<DynamicRealmObject> valueObj = obj.getList("message_tmp");
DynamicRealmObject dynamicRealmObject = realm.createObject("ChatMessage");
if (message != null)
dynamicRealmObject.set("txt", message);
else
dynamicRealmObject.set("txt", "This message has been deleted");
valueObj.add(dynamicRealmObject);
}
})
.removeField("message")
.renameField("message_tmp", "allMessages");
}