Mercury-IM/data/src/main/java/org/mercury_im/messenger/data/mapping/MessageContentMapping.java

45 lines
1.4 KiB
Java

package org.mercury_im.messenger.data.mapping;
import org.mercury_im.messenger.data.model.MessagePayloadModel;
import org.mercury_im.messenger.entity.message.content.Payload;
import org.mercury_im.messenger.entity.message.content.TextPayload;
import static org.mercury_im.messenger.data.enums.MessageContentType.body;
public class MessageContentMapping implements Mapping<Payload, MessagePayloadModel> {
@Override
public MessagePayloadModel entityToModel(Payload entity, MessagePayloadModel model) {
if (entity == null) {
return null;
}
if (model == null) {
model = new MessagePayloadModel();
}
if (entity instanceof TextPayload) {
model.setType(body);
model.setBody(((TextPayload) entity).getBody());
}
// else if (...)
return model;
}
@Override
public Payload modelToEntity(MessagePayloadModel model, Payload entity) {
if (model == null) {
model = new MessagePayloadModel();
}
switch (model.getType()) {
case body:
if (entity == null) {
TextPayload body = new TextPayload();
body.setId(model.getId());
body.setBody(model.getBody());
entity = body;
}
}
return entity;
}
}