All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.cloudfoundry.multiapps.controller.persistence.services.AsyncUploadJobService Maven / Gradle / Ivy

package org.cloudfoundry.multiapps.controller.persistence.services;

import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.persistence.EntityManagerFactory;

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.AsyncUploadJobDto;
import org.cloudfoundry.multiapps.controller.persistence.model.AsyncUploadJobEntry;
import org.cloudfoundry.multiapps.controller.persistence.model.ImmutableAsyncUploadJobEntry;
import org.cloudfoundry.multiapps.controller.persistence.query.AsyncUploadJobsQuery;
import org.cloudfoundry.multiapps.controller.persistence.query.impl.AsyncUploadJobsQueryImpl;

@Named
public class AsyncUploadJobService extends PersistenceService {

    @Inject
    public AsyncUploadJobService(EntityManagerFactory entityManagerFactory) {
        super(entityManagerFactory);
    }

    public AsyncUploadJobsQuery createQuery() {
        return new AsyncUploadJobsQueryImpl(createEntityManager());
    }

    @Override
    protected PersistenceObjectMapper getPersistenceObjectMapper() {
        return new AsyncUploadJobMapper();
    }

    @Override
    protected void onEntityConflict(AsyncUploadJobDto dto, Throwable t) {
        throw new ConflictException(t, Messages.ASYNC_UPLOAD_JOB_ALREADY_EXISTS, dto.getPrimaryKey());
    }

    @Override
    protected void onEntityNotFound(String primaryKey) {
        throw new NotFoundException(Messages.ASYNC_UPLOAD_JOB_NOT_FOUND, primaryKey);
    }

    public static class AsyncUploadJobMapper implements PersistenceObjectMapper {

        @Override
        public AsyncUploadJobEntry fromDto(AsyncUploadJobDto dto) {
            return ImmutableAsyncUploadJobEntry.builder()
                                               .id(dto.getPrimaryKey())
                                               .user(dto.getMtaUser())
                                               .state(AsyncUploadJobEntry.State.valueOf(dto.getState()))
                                               .addedAt(dto.getAddedAt())
                                               .startedAt(dto.getStartedAt())
                                               .finishedAt(dto.getFinishedAt())
                                               .namespace(dto.getNamespace())
                                               .spaceGuid(dto.getSpaceGuid())
                                               .url(dto.getUrl())
                                               .mtaId(dto.getMtaId())
                                               .fileId(dto.getFileId())
                                               .error(dto.getError())
                                               .instanceIndex(dto.getInstanceIndex())
                                               .build();
        }

        @Override
        public AsyncUploadJobDto toDto(AsyncUploadJobEntry entry) {
            return new AsyncUploadJobDto(entry.getId(),
                                         entry.getUser(),
                                         entry.getState()
                                              .toString(),
                                         entry.getUrl(),
                                         entry.getAddedAt(),
                                         entry.getStartedAt(),
                                         entry.getFinishedAt(),
                                         entry.getNamespace(),
                                         entry.getSpaceGuid(),
                                         entry.getMtaId(),
                                         entry.getFileId(),
                                         entry.getError(),
                                         entry.getInstanceIndex());
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy