RED-9958:Several problems after technical_name refactoring

changed a lot of filtering from name to technical name
This commit is contained in:
yhampe 2024-08-29 13:31:22 +02:00
parent 0cc48f8dfd
commit 3f9afa49e8
3 changed files with 16 additions and 13 deletions

View File

@ -5,22 +5,21 @@ import static com.iqser.red.service.persistence.management.v1.processor.roles.Ac
import java.util.List;
import jakarta.transaction.Transactional;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService;
import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter;
import com.iqser.red.service.persistence.service.v1.api.external.resource.LegalBasisMappingResource;
import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory;
import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.AuditRequest;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.legalbasis.LegalBasis;
import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter;
import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
@RestController
@ -33,9 +32,9 @@ public class LegalBasisMappingController implements LegalBasisMappingResource {
@Override
@PreAuthorize("hasAuthority('" + WRITE_LEGAL_BASIS + "')")
public void deleteLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List<String> legalBasisNames) {
public void deleteLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List<String> legalBasisTechnicalNames) {
legalBasisMappingPersistenceService.deleteLegalBasis(dossierTemplateId, legalBasisNames);
legalBasisMappingPersistenceService.deleteLegalBasis(dossierTemplateId, legalBasisTechnicalNames);
auditPersistenceService.audit(AuditRequest.builder()
.userId(KeycloakSecurity.getUserId())
.objectId(dossierTemplateId)

View File

@ -28,15 +28,15 @@ public interface LegalBasisMappingResource {
@ResponseStatus(HttpStatus.NO_CONTENT)
@PostMapping(value = LEGAL_BASIS_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE + DELETE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "delete some legal basis by their names.", description = "None")
@Operation(summary = "delete some legal basis by their technical names.", description = "None")
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK")})
void deleteLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List<String> legalBasisNames);
void deleteLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List<String> legalBasisTechnicalNames);
@ResponseStatus(HttpStatus.NO_CONTENT)
@PutMapping(value = LEGAL_BASIS_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Add or update one legalBasis.", description = "None")
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK")})
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "400", description = "Missing required parameter")})
void addOrUpdateLegalBasis(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody LegalBasis legalBasis);

View File

@ -29,12 +29,12 @@ public class LegalBasisMappingPersistenceService {
@Transactional
public void deleteLegalBasis(String dossierTemplateId, List<String> legalBasisNames) {
public void deleteLegalBasis(String dossierTemplateId, List<String> legalBasisTechnicalNames) {
var mapping = getLegalBasisMappingOrCreate(dossierTemplateId);
var filteredLegalBasis = mapping.getLegalBasis()
.stream()
.filter(l -> !legalBasisNames.contains(l.getName()))
.filter(l -> !legalBasisTechnicalNames.contains(l.getTechnicalName()))
.collect(Collectors.toList());
mapping.setLegalBasis(filteredLegalBasis);
@ -77,11 +77,11 @@ public class LegalBasisMappingPersistenceService {
mapping.getLegalBasis()
.stream()
.filter(l -> l.getName().equals(legalBasis.getName()))
.filter(l -> l.getTechnicalName().equals(legalBasis.getTechnicalName()))
.findAny().ifPresentOrElse(existingBasis -> {
existingBasis.setReason(legalBasis.getReason());
existingBasis.setDescription(legalBasis.getDescription());
existingBasis.setTechnicalName(legalBasis.getTechnicalName());
existingBasis.setName(legalBasis.getName());
},
() -> mapping.getLegalBasis()
.add(LegalBasisEntity.builder()
@ -99,6 +99,10 @@ public class LegalBasisMappingPersistenceService {
private void validateLegalBasis(LegalBasis legalBasis) {
if (legalBasis.getTechnicalName() == null || legalBasis.getTechnicalName().isEmpty()) {
throw new BadRequestException("The technical name cannot be empty!");
}
if (legalBasis.getName().length() > MAX_NAME_LENGTH) {
throw new BadRequestException(String.format("The name is too long (%s), max length %s", legalBasis.getName().length(), MAX_NAME_LENGTH));
}