Pull request #292: rank for 3.3.x
Merge in RED/persistence-service from rank to master * commit '1b20e4e38799cc967bb6d68df78dbee52563f8b5': rank for 3.3.x
This commit is contained in:
commit
552125aeaa
@ -19,5 +19,7 @@ public class CreateOrUpdateDossierStatusRequest {
|
|||||||
|
|
||||||
private String color;
|
private String color;
|
||||||
|
|
||||||
|
private int rank;
|
||||||
|
|
||||||
private String dossierTemplateId;
|
private String dossierTemplateId;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,7 @@ public class DossierStatusInfo {
|
|||||||
private String description;
|
private String description;
|
||||||
private String color;
|
private String color;
|
||||||
private String dossierTemplateId;
|
private String dossierTemplateId;
|
||||||
|
private int rank;
|
||||||
private Long dossierCount;
|
private Long dossierCount;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,6 +32,9 @@ public class DossierStatusEntity {
|
|||||||
@Column
|
@Column
|
||||||
private String color;
|
private String color;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
private int rank;
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "dossier_template_id")
|
@JoinColumn(name = "dossier_template_id")
|
||||||
private DossierTemplateEntity dossierTemplate;
|
private DossierTemplateEntity dossierTemplate;
|
||||||
|
|||||||
@ -38,6 +38,13 @@ public class DossierStatusPersistenceService {
|
|||||||
if (dossierStatus.isPresent()) {
|
if (dossierStatus.isPresent()) {
|
||||||
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(),
|
validateDossierTemplateNameIsUnique(createOrUpdateDossierStatusRequest.getName(), createOrUpdateDossierStatusRequest.getDossierTemplateId(),
|
||||||
createOrUpdateDossierStatusRequest.getDossierStatusId());
|
createOrUpdateDossierStatusRequest.getDossierStatusId());
|
||||||
|
if (createOrUpdateDossierStatusRequest.getRank() != dossierStatus.get().getRank()
|
||||||
|
&& dossierStatusRepository.getDuplicateRanks(dossierStatus.get().getDossierTemplateId(),
|
||||||
|
createOrUpdateDossierStatusRequest.getRank()) > 0) {
|
||||||
|
// in case of duplicate ranks, increase the ranks
|
||||||
|
dossierStatusRepository.adjustRanksForDossierTemplate(dossierStatus.get().getDossierTemplateId(),
|
||||||
|
createOrUpdateDossierStatusRequest.getRank());
|
||||||
|
}
|
||||||
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus.get());
|
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus.get());
|
||||||
return dossierStatus.get();
|
return dossierStatus.get();
|
||||||
} else {
|
} else {
|
||||||
@ -49,6 +56,12 @@ public class DossierStatusPersistenceService {
|
|||||||
dossierStatus.setId(UUID.randomUUID().toString());
|
dossierStatus.setId(UUID.randomUUID().toString());
|
||||||
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus);
|
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus);
|
||||||
var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(createOrUpdateDossierStatusRequest.getDossierTemplateId());
|
var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(createOrUpdateDossierStatusRequest.getDossierTemplateId());
|
||||||
|
// in case of duplicate ranks, increase the ranks
|
||||||
|
if (dossierStatusRepository.getDuplicateRanks(createOrUpdateDossierStatusRequest.getDossierTemplateId(),
|
||||||
|
createOrUpdateDossierStatusRequest.getRank()) > 0) {
|
||||||
|
dossierStatusRepository.adjustRanksForDossierTemplate(createOrUpdateDossierStatusRequest.getDossierTemplateId(),
|
||||||
|
createOrUpdateDossierStatusRequest.getRank());
|
||||||
|
}
|
||||||
var loadedDossierStatus = dossierStatusRepository.save(dossierStatus);
|
var loadedDossierStatus = dossierStatusRepository.save(dossierStatus);
|
||||||
loadedDossierStatus.setDossierTemplate(dossierTemplate);
|
loadedDossierStatus.setDossierTemplate(dossierTemplate);
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
|||||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity;
|
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
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.jpa.repository.Query;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -11,10 +12,22 @@ import java.util.Optional;
|
|||||||
public interface DossierStatusRepository extends JpaRepository<DossierStatusEntity, String> {
|
public interface DossierStatusRepository extends JpaRepository<DossierStatusEntity, String> {
|
||||||
|
|
||||||
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
|
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
|
||||||
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.dossierTemplateId in ( :dossierTemplateIds ) group by s")
|
"s.description, s.color, s.dossierTemplateId, s.rank, count(d)) from DossierStatusEntity s " +
|
||||||
|
"left outer join s.dossiers d where s.dossierTemplateId in (:dossierTemplateIds) group by s order by s.rank ASC")
|
||||||
List<DossierStatusInfo> getAllDossierStatusForDossierTemplate(List<String> dossierTemplateIds);
|
List<DossierStatusInfo> getAllDossierStatusForDossierTemplate(List<String> dossierTemplateIds);
|
||||||
|
|
||||||
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
|
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
|
||||||
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.id = :dossierStatusId group by s")
|
"s.description, s.color, s.dossierTemplateId, s.rank, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.id = :dossierStatusId group by s")
|
||||||
Optional<DossierStatusInfo> findProjectionById(String dossierStatusId);
|
Optional<DossierStatusInfo> findProjectionById(String dossierStatusId);
|
||||||
|
|
||||||
|
@Modifying
|
||||||
|
@Query("update DossierStatusEntity d set d.rank = :newRank where d.id = :dossierStatusId")
|
||||||
|
void updateRank(String dossierStatusId, int newRank);
|
||||||
|
|
||||||
|
@Modifying
|
||||||
|
@Query("update DossierStatusEntity d set d.rank = d.rank + 1 where d.dossierTemplateId = :dossierTemplateId and d.rank >= :rank")
|
||||||
|
void adjustRanksForDossierTemplate(String dossierTemplateId, int rank);
|
||||||
|
|
||||||
|
@Query("select count(d) from DossierStatusEntity d where d.dossierTemplateId = :dossierTemplateId and d.rank = :rankToCheck")
|
||||||
|
int getDuplicateRanks(String dossierTemplateId, int rankToCheck);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,12 @@
|
|||||||
|
databaseChangeLog:
|
||||||
|
- changeSet:
|
||||||
|
id: added-rank-dossier-status.changelog
|
||||||
|
author: corina
|
||||||
|
changes:
|
||||||
|
- addColumn:
|
||||||
|
columns:
|
||||||
|
- column:
|
||||||
|
name: rank
|
||||||
|
type: INTEGER
|
||||||
|
defaultValue: 0
|
||||||
|
tableName: dossier_status
|
||||||
@ -27,6 +27,8 @@ databaseChangeLog:
|
|||||||
file: db/changelog/11-added-dictionary_false_positive_tables.changelog.yaml
|
file: db/changelog/11-added-dictionary_false_positive_tables.changelog.yaml
|
||||||
- include:
|
- include:
|
||||||
file: db/changelog/12-dossier-visibility.changelog.yaml
|
file: db/changelog/12-dossier-visibility.changelog.yaml
|
||||||
|
- include:
|
||||||
|
file: db/changelog/12-added-rank-dossier-status.changelog.yaml
|
||||||
- include:
|
- include:
|
||||||
file: db/changelog/13-file-manual-change-date.changelog.yaml
|
file: db/changelog/13-file-manual-change-date.changelog.yaml
|
||||||
- include:
|
- include:
|
||||||
|
|||||||
@ -38,7 +38,7 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
|
|||||||
|
|
||||||
assertThat(allDossierStatus.size()).isZero();
|
assertThat(allDossierStatus.size()).isZero();
|
||||||
|
|
||||||
// Create
|
// Create first state
|
||||||
CreateOrUpdateDossierStatusRequest crudsr = new CreateOrUpdateDossierStatusRequest();
|
CreateOrUpdateDossierStatusRequest crudsr = new CreateOrUpdateDossierStatusRequest();
|
||||||
crudsr.setName("name1");
|
crudsr.setName("name1");
|
||||||
crudsr.setDescription("description1");
|
crudsr.setDescription("description1");
|
||||||
@ -47,13 +47,16 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
|
|||||||
var loadedDossierStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
|
var loadedDossierStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
|
||||||
assertThat(loadedDossierStatus).isNotNull();
|
assertThat(loadedDossierStatus).isNotNull();
|
||||||
assertThat(loadedDossierStatus.getDossierCount()).isNull();
|
assertThat(loadedDossierStatus.getDossierCount()).isNull();
|
||||||
|
assertThat(loadedDossierStatus.getRank()).isEqualTo(crudsr.getRank());
|
||||||
|
|
||||||
// update
|
// update first state
|
||||||
crudsr.setDossierStatusId(loadedDossierStatus.getId());
|
crudsr.setDossierStatusId(loadedDossierStatus.getId());
|
||||||
crudsr.setDescription("New Description");
|
crudsr.setDescription("New Description");
|
||||||
|
crudsr.setRank(1);
|
||||||
var updatedStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
|
var updatedStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
|
||||||
assertThat(updatedStatus.getDescription()).isEqualTo(crudsr.getDescription());
|
assertThat(updatedStatus.getDescription()).isEqualTo(crudsr.getDescription());
|
||||||
assertThat(updatedStatus.getDossierCount()).isNull();
|
assertThat(updatedStatus.getDossierCount()).isNull();
|
||||||
|
assertThat(updatedStatus.getRank()).isEqualTo(crudsr.getRank());
|
||||||
|
|
||||||
// get all for template id
|
// get all for template id
|
||||||
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
|
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
|
||||||
@ -85,13 +88,17 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
|
|||||||
|
|
||||||
// Create
|
// Create
|
||||||
CreateOrUpdateDossierStatusRequest crudsr2 = new CreateOrUpdateDossierStatusRequest();
|
CreateOrUpdateDossierStatusRequest crudsr2 = new CreateOrUpdateDossierStatusRequest();
|
||||||
crudsr2.setName("name2");
|
crudsr2.setName("name3");
|
||||||
crudsr2.setDescription("description2");
|
crudsr2.setDescription("description3");
|
||||||
|
crudsr2.setRank(1);
|
||||||
crudsr2.setDossierTemplateId(dossierTemplate.getId());
|
crudsr2.setDossierTemplateId(dossierTemplate.getId());
|
||||||
|
|
||||||
// create second dossier status
|
// create second dossier status
|
||||||
var loadedDossierStatus2 = dossierStatusClient.createOrUpdateDossierStatus(crudsr2);
|
var loadedDossierStatus2 = dossierStatusClient.createOrUpdateDossierStatus(crudsr2);
|
||||||
assertThat(loadedDossierStatus2).isNotNull();
|
assertThat(loadedDossierStatus2).isNotNull();
|
||||||
|
assertThat(loadedDossierStatus2.getRank()).isEqualTo(crudsr2.getRank());
|
||||||
|
loadedDossierStatus = dossierStatusClient.getDossierStatus(loadedDossierStatus.getId());
|
||||||
|
assertThat(loadedDossierStatus.getRank()).isEqualTo(crudsr.getRank() + 1);
|
||||||
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
|
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
|
||||||
assertThat(allDossierStatus.size()).isEqualTo(2);
|
assertThat(allDossierStatus.size()).isEqualTo(2);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user