Merge remote-tracking branch 'origin/master' into RED-9140
This commit is contained in:
commit
e09d2d86a9
@ -0,0 +1,40 @@
|
|||||||
|
package com.iqser.red.service.persistence.management.v1.processor.entity.download;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import jakarta.persistence.Column;
|
||||||
|
import jakarta.persistence.Embeddable;
|
||||||
|
import jakarta.persistence.EmbeddedId;
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.Table;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Table(name = "download_status_reports")
|
||||||
|
public class DownloadStatusReportEntity {
|
||||||
|
|
||||||
|
@EmbeddedId
|
||||||
|
private DownloadStatusReportId downloadStatusReportId;
|
||||||
|
|
||||||
|
@Embeddable
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class DownloadStatusReportId implements Serializable {
|
||||||
|
|
||||||
|
@Column(name = "download_status_entity_storage_id")
|
||||||
|
private String downloadStatusEntityStorageId;
|
||||||
|
|
||||||
|
@Column(name = "reports_template_id")
|
||||||
|
private String reportsTemplateId;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -11,15 +11,15 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
@Setter
|
@Setter
|
||||||
@Service
|
@Service
|
||||||
public class StorageToMongoMigration17 extends Migration {
|
public class StorageToMongoMigration18 extends Migration {
|
||||||
|
|
||||||
private final StorageToMongoCopyService storageToMongoCopyService;
|
private final StorageToMongoCopyService storageToMongoCopyService;
|
||||||
|
|
||||||
private static final String NAME = "Migration for entity log storage from s3 to mongodb";
|
private static final String NAME = "Migration for entity log storage from s3 to mongodb";
|
||||||
private static final long VERSION = 17;
|
private static final long VERSION = 18;
|
||||||
|
|
||||||
|
|
||||||
public StorageToMongoMigration17(StorageToMongoCopyService storageToMongoCopyService) {
|
public StorageToMongoMigration18(StorageToMongoCopyService storageToMongoCopyService) {
|
||||||
|
|
||||||
super(NAME, VERSION);
|
super(NAME, VERSION);
|
||||||
this.storageToMongoCopyService = storageToMongoCopyService;
|
this.storageToMongoCopyService = storageToMongoCopyService;
|
||||||
@ -4,16 +4,16 @@ import java.time.OffsetDateTime;
|
|||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import jakarta.transaction.Transactional;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
|
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadStatusReportRepository;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.ReportTemplateUpdateRequest;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.ReportTemplateUpdateRequest;
|
||||||
|
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -22,6 +22,7 @@ public class ReportTemplatePersistenceService {
|
|||||||
|
|
||||||
private final ReportTemplateRepository reportTemplateRepository;
|
private final ReportTemplateRepository reportTemplateRepository;
|
||||||
private final DossierTemplateRepository dossierTemplateRepository;
|
private final DossierTemplateRepository dossierTemplateRepository;
|
||||||
|
private final DownloadStatusReportRepository downloadStatusReportRepository;
|
||||||
|
|
||||||
|
|
||||||
public void insert(String dossierTemplateId, String templateId, String storageId, String templateName, boolean activeByDefault, boolean multiFileReport) {
|
public void insert(String dossierTemplateId, String templateId, String storageId, String templateName, boolean activeByDefault, boolean multiFileReport) {
|
||||||
@ -43,6 +44,7 @@ public class ReportTemplatePersistenceService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void delete(String templateId) {
|
public void delete(String templateId) {
|
||||||
|
|
||||||
|
downloadStatusReportRepository.deleteByReportsTemplateId(templateId);
|
||||||
reportTemplateRepository.deleteById(templateId);
|
reportTemplateRepository.deleteById(templateId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Modifying;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
|
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusReportEntity;
|
||||||
|
|
||||||
|
public interface DownloadStatusReportRepository extends JpaRepository<DownloadStatusReportEntity, String> {
|
||||||
|
|
||||||
|
@Modifying(flushAutomatically = true, clearAutomatically = true)
|
||||||
|
@Query("DELETE FROM DownloadStatusReportEntity d WHERE d.downloadStatusReportId.downloadStatusEntityStorageId = :downloadStatusEntityStorageId")
|
||||||
|
void deleteByDownloadStatusReportId(@Param("downloadStatusEntityStorageId") String downloadStatusEntityStorageId);
|
||||||
|
|
||||||
|
|
||||||
|
@Modifying(flushAutomatically = true, clearAutomatically = true)
|
||||||
|
@Query("DELETE FROM DownloadStatusReportEntity d WHERE d.downloadStatusReportId.reportsTemplateId = :reportsTemplateId")
|
||||||
|
void deleteByReportsTemplateId(@Param("reportsTemplateId") String reportsTemplateId);
|
||||||
|
|
||||||
|
|
||||||
|
@Query("SELECT d FROM DownloadStatusReportEntity d WHERE d.downloadStatusReportId.reportsTemplateId = :reportsTemplateId")
|
||||||
|
List<DownloadStatusReportEntity> findByReportsTemplateId(@Param("reportsTemplateId") String reportsTemplateId);
|
||||||
|
|
||||||
|
}
|
||||||
@ -210,4 +210,6 @@ databaseChangeLog:
|
|||||||
- include:
|
- include:
|
||||||
file: db/changelog/tenant/126-add-uuid-to-download-status.yaml
|
file: db/changelog/tenant/126-add-uuid-to-download-status.yaml
|
||||||
- include:
|
- include:
|
||||||
file: db/changelog/tenant/129-add-component-table.yaml
|
file: db/changelog/tenant/129-add-component-table.yaml
|
||||||
|
- include:
|
||||||
|
file: db/changelog/tenant/130-add-primary-key-constraint-download-status-reports.yaml
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
databaseChangeLog:
|
||||||
|
- changeSet:
|
||||||
|
id: add-primary-key-constraint-download-status-reports
|
||||||
|
author: ali
|
||||||
|
changes:
|
||||||
|
- addPrimaryKey:
|
||||||
|
columnNames: download_status_entity_storage_id,reports_template_id
|
||||||
|
constraintName: download_status_reports_pkey
|
||||||
|
tableName: download_status_reports
|
||||||
@ -4,15 +4,24 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient;
|
||||||
|
import com.iqser.red.service.peristence.v1.server.integration.client.FileClient;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
|
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
||||||
|
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
|
||||||
|
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.service.ReportTemplateProvider;
|
import com.iqser.red.service.peristence.v1.server.integration.service.ReportTemplateProvider;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.PrepareDownloadWithOptionRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.ReportTemplateUpdateRequest;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.ReportTemplateUpdateRequest;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType;
|
||||||
|
|
||||||
import feign.FeignException;
|
import feign.FeignException;
|
||||||
|
|
||||||
@ -21,9 +30,21 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider;
|
private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FileTesterAndProvider fileTesterAndProvider;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DossierTesterAndProvider dossierTesterAndProvider;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ReportTemplateClient reportTemplateClient;
|
private ReportTemplateClient reportTemplateClient;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DownloadClient downloadClient;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FileClient fileClient;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ReportTemplateProvider reportTemplateProvider;
|
private ReportTemplateProvider reportTemplateProvider;
|
||||||
|
|
||||||
@ -344,4 +365,40 @@ public class ReportTemplateTest extends AbstractPersistenceServerServiceTest {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDownloadDossierAndDeleteReportTemplate() {
|
||||||
|
// Arrange
|
||||||
|
String fileName = "report.xlsx";
|
||||||
|
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||||
|
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||||
|
|
||||||
|
fileTesterAndProvider.markFileAsProcessed(dossier.getId(), file.getFileId());
|
||||||
|
fileClient.setStatusApproved(dossier.getId(), file.getId());
|
||||||
|
|
||||||
|
// Act & Assert
|
||||||
|
var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossier.getDossierTemplateId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
|
||||||
|
reportTemplateProvider.provideReportTemplate(dossier.getDossierTemplateId(), fileName);
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossier.getDossierTemplateId());
|
||||||
|
assertThat(availableTemplates).isNotEmpty();
|
||||||
|
|
||||||
|
var firstTemplate = reportTemplateClient.getAvailableReportTemplates(dossier.getDossierTemplateId())
|
||||||
|
.iterator().next();
|
||||||
|
assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate);
|
||||||
|
assertThat(firstTemplate.getFileName()).isEqualTo(fileName);
|
||||||
|
|
||||||
|
downloadClient.prepareDownload(PrepareDownloadWithOptionRequest.builder()
|
||||||
|
.reportTemplateIds(List.of(firstTemplate.getTemplateId()))
|
||||||
|
.dossierId(dossier.getId())
|
||||||
|
.fileIds(List.of(file.getId()))
|
||||||
|
.build());
|
||||||
|
|
||||||
|
reportTemplateClient.deleteTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId());
|
||||||
|
|
||||||
|
availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossier.getDossierTemplateId());
|
||||||
|
assertThat(availableTemplates).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user