org.cloudfoundry.multiapps.controller.persistence.services.ProgressMessageService Maven / Gradle / Ivy
package org.cloudfoundry.multiapps.controller.persistence.services;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.persistence.EntityManagerFactory;
import org.apache.commons.lang3.ObjectUtils;
import org.cloudfoundry.multiapps.common.ConflictException;
import org.cloudfoundry.multiapps.common.NotFoundException;
import org.cloudfoundry.multiapps.controller.persistence.Messages;
import org.cloudfoundry.multiapps.controller.persistence.dto.ProgressMessageDto;
import org.cloudfoundry.multiapps.controller.persistence.model.ImmutableProgressMessage;
import org.cloudfoundry.multiapps.controller.persistence.model.ProgressMessage;
import org.cloudfoundry.multiapps.controller.persistence.model.ProgressMessage.ProgressMessageType;
import org.cloudfoundry.multiapps.controller.persistence.query.ProgressMessageQuery;
import org.cloudfoundry.multiapps.controller.persistence.query.impl.ProgressMessageQueryImpl;
import org.springframework.context.annotation.Primary;
import java.util.Date;
@Named
public class ProgressMessageService extends PersistenceService {
@Inject
protected ProgressMessageMapper progressMessageMapper;
@Inject
public ProgressMessageService(EntityManagerFactory entityManagerFactory) {
super(entityManagerFactory);
}
public ProgressMessageQuery createQuery() {
return new ProgressMessageQueryImpl(createEntityManager(), progressMessageMapper);
}
@Override
protected ProgressMessageDto merge(ProgressMessageDto existingProgressMessage, ProgressMessageDto newProgressMessage) {
super.merge(existingProgressMessage, newProgressMessage);
String processId = ObjectUtils.firstNonNull(newProgressMessage.getProcessId(), existingProgressMessage.getProcessId());
String taskId = ObjectUtils.firstNonNull(newProgressMessage.getTaskId(), existingProgressMessage.getTaskId());
String type = ObjectUtils.firstNonNull(newProgressMessage.getType(), existingProgressMessage.getType());
String text = ObjectUtils.firstNonNull(newProgressMessage.getText(), existingProgressMessage.getText());
Date timestamp = ObjectUtils.firstNonNull(newProgressMessage.getTimestamp(), existingProgressMessage.getTimestamp());
return getProgressMessageDto(newProgressMessage.getPrimaryKey(), processId, taskId, type, text, timestamp);
}
protected ProgressMessageDto getProgressMessageDto(long id, String processId, String taskId, String type, String text, Date timestamp) {
return new ProgressMessageDto(id, processId, taskId, type, text, timestamp);
}
@Override
protected PersistenceObjectMapper getPersistenceObjectMapper() {
return progressMessageMapper;
}
@Override
protected void onEntityConflict(ProgressMessageDto progressMessage, Throwable t) {
throw new ConflictException(t, Messages.PROGRESS_MESSAGE_ALREADY_EXISTS, progressMessage.getProcessId(),
progressMessage.getPrimaryKey());
}
@Override
protected void onEntityNotFound(Long id) {
throw new NotFoundException(Messages.PROGRESS_MESSAGE_NOT_FOUND, id);
}
@Primary
@Named
public static class ProgressMessageMapper implements PersistenceObjectMapper {
@Override
public ProgressMessage fromDto(ProgressMessageDto dto) {
return ImmutableProgressMessage.builder()
.id(dto.getPrimaryKey())
.processId(dto.getProcessId())
.taskId(dto.getTaskId())
.type(getParsedType(dto.getType()))
.text(dto.getText())
.timestamp(dto.getTimestamp())
.build();
}
private ProgressMessageType getParsedType(String type) {
return type == null ? null : ProgressMessageType.valueOf(type);
}
@Override
public ProgressMessageDto toDto(ProgressMessage progressMessage) {
long id = progressMessage.getId();
String processId = progressMessage.getProcessId();
String taskId = progressMessage.getTaskId();
String type = progressMessage.getType() != null ? progressMessage.getType()
.name() : null;
String text = progressMessage.getText();
Date timestamp = progressMessage.getTimestamp();
return new ProgressMessageDto(id, processId, taskId, type, text, timestamp);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy