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

63 lines
2.1 KiB
Java

package org.mercury_im.messenger.data.mapping;
import org.mercury_im.messenger.data.model.MessagePayloadModel;
import org.mercury_im.messenger.data.model.MessagePayloadContainerModel;
import org.mercury_im.messenger.entity.message.IPayloadContainer;
import org.mercury_im.messenger.entity.message.PayloadContainer;
import org.mercury_im.messenger.entity.message.content.Payload;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
public class MessagePayloadMapping implements Mapping<PayloadContainer, MessagePayloadContainerModel> {
private final MessageContentMapping messageContentMapping;
@Inject
public MessagePayloadMapping(MessageContentMapping messageContentMapping) {
this.messageContentMapping = messageContentMapping;
}
@Override
public MessagePayloadContainerModel entityToModel(PayloadContainer entity, MessagePayloadContainerModel model) {
if (entity == null) {
return null;
}
if (model == null) {
model = new MessagePayloadContainerModel();
}
model.getContents().clear();
for (Payload contentEntity : entity.getMessageContents()) {
MessagePayloadModel contentModel = messageContentMapping.entityToModel(contentEntity, new MessagePayloadModel());
contentModel.setPayload(model);
model.getContents().add(contentModel);
}
return model;
}
@Override
public PayloadContainer modelToEntity(MessagePayloadContainerModel model, PayloadContainer entity) {
if (model == null) {
return null;
}
if (entity == null) {
entity = new IPayloadContainer();
}
entity.setId(model.getId());
List<Payload> contents = new ArrayList<>(model.getContents().size());
for (MessagePayloadModel contentModel : model.getContents()) {
Payload contentEntity = messageContentMapping.modelToEntity(contentModel, null);
contents.add(contentEntity);
}
entity.setMessageContents(contents);
return entity;
}
}