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

59 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 MessagePayloadContainerMapping extends AbstractMapping<PayloadContainer, MessagePayloadContainerModel> {
private final MessagePayloadMapping messagePayloadMapping;
@Inject
public MessagePayloadContainerMapping(MessagePayloadMapping messagePayloadMapping) {
this.messagePayloadMapping = messagePayloadMapping;
}
@Override
public PayloadContainer newEntity(MessagePayloadContainerModel model) {
return new IPayloadContainer();
}
@Override
public MessagePayloadContainerModel newModel(PayloadContainer entity) {
return new MessagePayloadContainerModel();
}
@Override
public MessagePayloadContainerModel mapToModel(PayloadContainer entity, MessagePayloadContainerModel model) {
model.getContents().clear();
for (Payload contentEntity : entity.getMessageContents()) {
MessagePayloadModel contentModel = messagePayloadMapping.toModel(contentEntity, new MessagePayloadModel());
contentModel.setPayloadContainer(model);
model.getContents().add(contentModel);
}
return model;
}
@Override
public PayloadContainer mapToEntity(MessagePayloadContainerModel model, PayloadContainer entity) {
entity.setId(model.getId());
List<Payload> contents = new ArrayList<>(model.getContents().size());
for (MessagePayloadModel contentModel : model.getContents()) {
Payload contentEntity = messagePayloadMapping.toEntity(contentModel, null);
contents.add(contentEntity);
}
entity.setMessageContents(contents);
return entity;
}
}