From b5053b2f4ecf023c392b1f9561c76fdf4fdb602d Mon Sep 17 00:00:00 2001 From: Lars Johansson <lars.johansson@ess.eu> Date: Tue, 3 May 2022 16:20:49 +0200 Subject: [PATCH] Replace http status codes with custom exceptions in validation Handle exceptions in service and controller layers. Translate exceptions to http status codes in global exception handler. --- .../GlobalControllerExceptionHandler.java | 60 ++- .../rest/controller/NamesController.java | 62 +-- .../rest/controller/StructuresController.java | 82 ++-- .../openepics/names/service/NamesService.java | 23 +- .../exception/DataConflictException.java | 44 ++ .../exception/DataDeletedException.java | 44 ++ .../service/exception/DataExistException.java | 44 ++ .../exception/DataNotAvailableException.java | 44 ++ .../exception/DataNotCorrectException.java | 44 ++ .../exception/DataNotFoundException.java | 44 ++ .../exception/DataNotValidException.java | 44 ++ .../exception/InputNotAvailableException.java | 44 ++ .../exception/InputNotCorrectException.java | 44 ++ .../exception/InputNotValidException.java | 44 ++ .../exception/ServiceException.java} | 24 +- .../openepics/names/util/ExceptionUtil.java | 260 +++++++++-- .../org/openepics/names/util/LogUtil.java | 22 +- .../openepics/names/util/ValidateUtil.java | 436 ++++++++---------- .../names/util/ExceptionUtilTest.java | 144 ++++-- .../names/util/ValidateUtilTest.java | 98 ++-- 20 files changed, 1173 insertions(+), 478 deletions(-) create mode 100644 src/main/java/org/openepics/names/service/exception/DataConflictException.java create mode 100644 src/main/java/org/openepics/names/service/exception/DataDeletedException.java create mode 100644 src/main/java/org/openepics/names/service/exception/DataExistException.java create mode 100644 src/main/java/org/openepics/names/service/exception/DataNotAvailableException.java create mode 100644 src/main/java/org/openepics/names/service/exception/DataNotCorrectException.java create mode 100644 src/main/java/org/openepics/names/service/exception/DataNotFoundException.java create mode 100644 src/main/java/org/openepics/names/service/exception/DataNotValidException.java create mode 100644 src/main/java/org/openepics/names/service/exception/InputNotAvailableException.java create mode 100644 src/main/java/org/openepics/names/service/exception/InputNotCorrectException.java create mode 100644 src/main/java/org/openepics/names/service/exception/InputNotValidException.java rename src/main/java/org/openepics/names/{util/ServiceHttpStatusException.java => service/exception/ServiceException.java} (68%) diff --git a/src/main/java/org/openepics/names/rest/controller/GlobalControllerExceptionHandler.java b/src/main/java/org/openepics/names/rest/controller/GlobalControllerExceptionHandler.java index c39844c2..f6790331 100644 --- a/src/main/java/org/openepics/names/rest/controller/GlobalControllerExceptionHandler.java +++ b/src/main/java/org/openepics/names/rest/controller/GlobalControllerExceptionHandler.java @@ -23,8 +23,18 @@ import java.util.logging.Logger; import org.apache.commons.lang3.StringUtils; import org.openepics.names.rest.beans.response.Response; +import org.openepics.names.service.exception.DataConflictException; +import org.openepics.names.service.exception.DataDeletedException; +import org.openepics.names.service.exception.DataExistException; +import org.openepics.names.service.exception.DataNotAvailableException; +import org.openepics.names.service.exception.DataNotCorrectException; +import org.openepics.names.service.exception.DataNotFoundException; +import org.openepics.names.service.exception.DataNotValidException; +import org.openepics.names.service.exception.InputNotAvailableException; +import org.openepics.names.service.exception.InputNotCorrectException; +import org.openepics.names.service.exception.InputNotValidException; +import org.openepics.names.service.exception.ServiceException; import org.openepics.names.util.ExceptionUtil; -import org.openepics.names.util.ServiceHttpStatusException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ExceptionHandler; @@ -34,7 +44,19 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExcep /** * Global exception handler to ensure exceptions are communicated to request origin in a uniform way. - * + * <br/><br/> + * Note + * <ul> + * <li>400 {@link HttpStatus#BAD_REQUEST}</li> + * <li>401 {@link HttpStatus#UNAUTHORIZED}</li> + * <li>403 {@link HttpStatus#FORBIDDEN}</li> + * <li>404 {@link HttpStatus#NOT_FOUND}</li> + * <li>409 {@link HttpStatus#CONFLICT}</li> + * <li>422 {@link HttpStatus#UNPROCESSABLE_ENTITY}</li> + * <li>500 {@link HttpStatus#INTERNAL_SERVER_ERROR}</li> + * <li>501 {@link HttpStatus#NOT_IMPLEMENTED}</li> + * </ul> +* * @author Lars Johansson */ @RestControllerAdvice @@ -54,12 +76,36 @@ public class GlobalControllerExceptionHandler extends ResponseEntityExceptionHan HttpStatus resultStatus = HttpStatus.INTERNAL_SERVER_ERROR; - if (ex instanceof ServiceHttpStatusException) { - ServiceHttpStatusException shse = (ServiceHttpStatusException) ex; + if (ex instanceof ServiceException) { + ServiceException se = (ServiceException) ex; response.setMessage(StringUtils.trimToEmpty(ex.getMessage())); - response.setDetails(StringUtils.trimToEmpty(shse.getDetails())); - response.setField(StringUtils.trimToEmpty(shse.getField())); - resultStatus = shse.getHttpStatus(); + response.setDetails(StringUtils.trimToEmpty(se.getDetails())); + response.setField(StringUtils.trimToEmpty(se.getField())); + + if (ex instanceof InputNotAvailableException || ex instanceof InputNotCorrectException || ex instanceof InputNotValidException) { + // resultStatus = HttpStatus.UNPROCESSABLE_ENTITY; + resultStatus = HttpStatus.BAD_REQUEST; + } + + if (ex instanceof DataNotFoundException) { + // resultStatus = HttpStatus.NOT_FOUND; + resultStatus = HttpStatus.BAD_REQUEST; + } + + if (ex instanceof DataNotAvailableException || ex instanceof DataNotCorrectException || ex instanceof DataNotValidException) { + // resultStatus = HttpStatus.UNPROCESSABLE_ENTITY; + resultStatus = HttpStatus.BAD_REQUEST; + } + + if (ex instanceof DataDeletedException) { + // resultStatus = HttpStatus.UNPROCESSABLE_ENTITY; + resultStatus = HttpStatus.BAD_REQUEST; + } + + if (ex instanceof DataConflictException || ex instanceof DataExistException) { + // resultStatus = HttpStatus.CONFLICT; + resultStatus = HttpStatus.BAD_REQUEST; + } } return new ResponseEntity<>(response, Response.HEADER_JSON, resultStatus); diff --git a/src/main/java/org/openepics/names/rest/controller/NamesController.java b/src/main/java/org/openepics/names/rest/controller/NamesController.java index bd3b4423..5870cb1b 100644 --- a/src/main/java/org/openepics/names/rest/controller/NamesController.java +++ b/src/main/java/org/openepics/names/rest/controller/NamesController.java @@ -31,9 +31,9 @@ import org.openepics.names.rest.beans.response.ResponseBoolean; import org.openepics.names.rest.beans.response.ResponseBooleanList; import org.openepics.names.rest.beans.response.ResponsePageNameElements; import org.openepics.names.service.NamesService; +import org.openepics.names.service.exception.ServiceException; import org.openepics.names.util.ExceptionUtil; import org.openepics.names.util.LogUtil; -import org.openepics.names.util.ServiceHttpStatusException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.http.HttpStatus; @@ -74,8 +74,8 @@ public class NamesController implements INames { try { namesService.validateNamesCreate(nameElements); return new ResponseEntity<>(namesService.createNames(nameElements), Response.HEADER_JSON, HttpStatus.CREATED); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -95,8 +95,8 @@ public class NamesController implements INames { return namesService.readNames( deleted, queryFields, queryValues, orderBy, isAsc, page, pageSize); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -112,8 +112,8 @@ public class NamesController implements INames { FieldName orderBy, Boolean isAsc, Integer page, Integer pageSize) { try { return namesService.readNames(name, orderBy, isAsc, page, pageSize); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -129,8 +129,8 @@ public class NamesController implements INames { FieldName orderBy, Boolean isAsc, Integer page, Integer pageSize) { try { return namesService.readNamesSystemStructure(mnemonicpath, orderBy, isAsc, page, pageSize); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -146,8 +146,8 @@ public class NamesController implements INames { FieldName orderBy, Boolean isAsc, Integer page, Integer pageSize) { try { return namesService.readNamesDeviceStructure(mnemonicpath, orderBy, isAsc, page, pageSize); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -163,8 +163,8 @@ public class NamesController implements INames { FieldName orderBy, Boolean isAsc, Integer page, Integer pageSize) { try { return namesService.readNamesHistory(uuid, orderBy, isAsc, page, pageSize); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -180,8 +180,8 @@ public class NamesController implements INames { public String equivalenceName(String name) { try { return namesService.equivalenceName(name); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -195,8 +195,8 @@ public class NamesController implements INames { public ResponseEntity<ResponseBoolean> existsName(String name) { try { return new ResponseEntity<>(new ResponseBoolean(namesService.existsName(name)), Response.HEADER_JSON, HttpStatus.OK); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()), Response.HEADER_JSON, HttpStatus.OK); } catch (Exception e) { @@ -210,8 +210,8 @@ public class NamesController implements INames { public ResponseEntity<ResponseBoolean> isLegacyName(String name) { try { return new ResponseEntity<>(new ResponseBoolean(namesService.isLegacyName(name)), Response.HEADER_JSON, HttpStatus.OK); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()), Response.HEADER_JSON, HttpStatus.OK); } catch (Exception e) { @@ -225,8 +225,8 @@ public class NamesController implements INames { public ResponseEntity<ResponseBoolean> isValidToCreateName(String name) { try { return new ResponseEntity<>(new ResponseBoolean(namesService.isValidToCreateName(name)), Response.HEADER_JSON, HttpStatus.OK); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()), Response.HEADER_JSON, HttpStatus.OK); } catch (Exception e) { @@ -247,8 +247,8 @@ public class NamesController implements INames { try { namesService.validateNamesCreate(nameElement); responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); if (response) { response = false; @@ -277,8 +277,8 @@ public class NamesController implements INames { try { namesService.validateNamesUpdate(nameElement); responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); if (response) { response = false; @@ -307,8 +307,8 @@ public class NamesController implements INames { try { namesService.validateNamesDelete(nameElement); responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); if (response) { response = false; @@ -340,8 +340,8 @@ public class NamesController implements INames { try { namesService.validateNamesUpdate(nameElements); return namesService.updateNames(nameElements); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -363,8 +363,8 @@ public class NamesController implements INames { try { namesService.validateNamesDelete(nameElements); return namesService.deleteNames(nameElements); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { diff --git a/src/main/java/org/openepics/names/rest/controller/StructuresController.java b/src/main/java/org/openepics/names/rest/controller/StructuresController.java index 98f36330..31eb633b 100644 --- a/src/main/java/org/openepics/names/rest/controller/StructuresController.java +++ b/src/main/java/org/openepics/names/rest/controller/StructuresController.java @@ -33,9 +33,9 @@ import org.openepics.names.rest.beans.response.ResponseBoolean; import org.openepics.names.rest.beans.response.ResponseBooleanList; import org.openepics.names.rest.beans.response.ResponsePageStructureElements; import org.openepics.names.service.StructuresService; +import org.openepics.names.service.exception.ServiceException; import org.openepics.names.util.ExceptionUtil; import org.openepics.names.util.LogUtil; -import org.openepics.names.util.ServiceHttpStatusException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.http.HttpStatus; @@ -83,8 +83,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresCreate(structureElements); return new ResponseEntity<>(structuresService.createStructures(structureElements), Response.HEADER_JSON, HttpStatus.CREATED); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -104,8 +104,8 @@ public class StructuresController implements IStructures { return structuresService.readStructures( type, statuses, deleted, queryFields, queryValues, orderBy, isAsc, page, pageSize); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -123,8 +123,8 @@ public class StructuresController implements IStructures { return structuresService.readStructuresChildren( type, uuid, orderBy, isAsc, page, pageSize); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -140,8 +140,8 @@ public class StructuresController implements IStructures { FieldStructure orderBy, Boolean isAsc, Integer page, Integer pageSize) { try { return structuresService.readStructuresMnemonic(mnemonic, orderBy, isAsc, page, pageSize); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -157,8 +157,8 @@ public class StructuresController implements IStructures { FieldStructure orderBy, Boolean isAsc, Integer page, Integer pageSize) { try { return structuresService.readStructuresMnemonicpath(mnemonicpath, orderBy, isAsc, page, pageSize); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -176,8 +176,8 @@ public class StructuresController implements IStructures { return structuresService.readStructuresHistory( uuid, type, orderBy, isAsc, page, pageSize); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -193,8 +193,8 @@ public class StructuresController implements IStructures { public String equivalenceMnemonic(String mnemonic) { try { return structuresService.equivalenceMnemonic(mnemonic); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -208,8 +208,8 @@ public class StructuresController implements IStructures { public ResponseEntity<ResponseBoolean> existsStructure(Type type, String mnemonicpath) { try { return new ResponseEntity<>(new ResponseBoolean(structuresService.existsStructure(type, mnemonicpath)), Response.HEADER_JSON, HttpStatus.OK); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()), Response.HEADER_JSON, HttpStatus.OK); } catch (Exception e) { @@ -223,8 +223,8 @@ public class StructuresController implements IStructures { public ResponseEntity<ResponseBoolean> isValidToCreateStructure(Type type, String mnemonicpath) { try { return new ResponseEntity<>(new ResponseBoolean(structuresService.isValidToCreateStructure(type, mnemonicpath)), Response.HEADER_JSON, HttpStatus.OK); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()), Response.HEADER_JSON, HttpStatus.OK); } catch (Exception e) { @@ -245,8 +245,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresCreate(structureElement); responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); if (response) { response = false; @@ -275,8 +275,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresUpdate(structureElement); responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); if (response) { response = false; @@ -305,8 +305,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresDelete(structureElement); responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); if (response) { response = false; @@ -335,8 +335,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresApprove(structureElement); responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); if (response) { response = false; @@ -365,8 +365,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresCancel(structureElement); responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); if (response) { response = false; @@ -395,8 +395,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresReject(structureElement); responses.add(new ResponseBoolean(Boolean.TRUE)); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); if (response) { response = false; @@ -423,8 +423,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresUpdate(structureElements); return structuresService.updateStructures(structureElements); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -442,8 +442,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresDelete(structureElements); return structuresService.deleteStructures(structureElements); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -460,8 +460,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresApprove(structureElements); return structuresService.approveStructures(structureElements); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -476,8 +476,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresCancel(structureElements); return structuresService.cancelStructures(structureElements); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { @@ -492,8 +492,8 @@ public class StructuresController implements IStructures { try { structuresService.validateStructuresReject(structureElements); return structuresService.rejectStructures(structureElements); - } catch (ServiceHttpStatusException e) { - LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e); + } catch (ServiceException e) { + LogUtil.logServiceException(LOGGER, Level.SEVERE, e); LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e); throw e; } catch (Exception e) { diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java index bdf2c295..a2e8eea2 100644 --- a/src/main/java/org/openepics/names/service/NamesService.java +++ b/src/main/java/org/openepics/names/service/NamesService.java @@ -47,13 +47,13 @@ import org.openepics.names.rest.beans.element.NameElement; import org.openepics.names.rest.beans.element.NameElementCommand; import org.openepics.names.rest.beans.response.ResponsePageNameElements; import org.openepics.names.util.EssNamingConvention; +import org.openepics.names.util.ExceptionUtil; import org.openepics.names.util.HolderIRepositories; import org.openepics.names.util.HolderSystemDeviceStructure; import org.openepics.names.util.NameElementUtil; import org.openepics.names.util.NameUtil; import org.openepics.names.util.ValidateUtil; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -372,49 +372,49 @@ public class NamesService { // do List<Name> names = nameRepository.readNames(false, FieldName.NAME, name); - ValidateUtil.validateCondition(names != null && names.size() == 1, HttpStatus.BAD_REQUEST, "name not available", name, null); + ExceptionUtil.validateConditionDataNotAvailableException(names != null && names.size() == 1, "name not available", name, null); Name toBeChecked = names.get(0); // system structure if (toBeChecked.getSystemgroupUuid() != null) { SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByUuid(toBeChecked.getSystemgroupUuid().toString()); - ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, "system group not available", name, null); + ExceptionUtil.validateConditionDataNotAvailableException(systemGroup != null, "system group not available", name, null); if (systemGroup.isDeleted()) { return Boolean.TRUE; } } else if (toBeChecked.getSystemUuid() != null) { org.openepics.names.repository.model.System system = holderIRepositories.getSystemRepository().findLatestNotDeletedByUuid(toBeChecked.getSystemUuid().toString()); - ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST, "system not available", name, null); + ExceptionUtil.validateConditionDataNotAvailableException(system != null, "system not available", name, null); if (system.isDeleted()) { return Boolean.TRUE; } SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByUuid(system.getParentUuid().toString()); - ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, "system group not available", name, null); + ExceptionUtil.validateConditionDataNotAvailableException(systemGroup != null, "system group not available", name, null); if (systemGroup.isDeleted()) { return Boolean.TRUE; } } else if (toBeChecked.getSubsystemUuid() != null) { Subsystem subsystem = holderIRepositories.getSubsystemRepository().findLatestNotDeletedByUuid(toBeChecked.getSubsystemUuid().toString()); - ValidateUtil.validateCondition(subsystem != null, HttpStatus.BAD_REQUEST, "subsystem not available", name, null); + ExceptionUtil.validateConditionDataNotAvailableException(subsystem != null, "subsystem not available", name, null); if (subsystem.isDeleted()) { return Boolean.TRUE; } org.openepics.names.repository.model.System system = holderIRepositories.getSystemRepository().findLatestNotDeletedByUuid(subsystem.getParentUuid().toString()); - ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST, "system not available", name, null); + ExceptionUtil.validateConditionDataNotAvailableException(system != null, "system not available", name, null); if (system.isDeleted()) { return Boolean.TRUE; } SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByUuid(system.getParentUuid().toString()); - ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, "system group not available", name, null); + ExceptionUtil.validateConditionDataNotAvailableException(systemGroup != null, "system group not available", name, null); if (systemGroup.isDeleted()) { return Boolean.TRUE; @@ -423,21 +423,21 @@ public class NamesService { // device structure if (toBeChecked.getDevicetypeUuid() != null) { DeviceType deviceType = holderIRepositories.getDeviceTypeRepository().findLatestNotDeletedByUuid(toBeChecked.getDevicetypeUuid().toString()); - ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST, "device type not available", name, null); + ExceptionUtil.validateConditionDataNotAvailableException(deviceType != null, "device type not available", name, null); if (deviceType.isDeleted()) { return Boolean.TRUE; } DeviceGroup deviceGroup = holderIRepositories.getDeviceGroupRepository().findLatestNotDeletedByUuid(deviceType.getParentUuid().toString()); - ValidateUtil.validateCondition(deviceGroup != null, HttpStatus.BAD_REQUEST, "device group not available", name, null); + ExceptionUtil.validateConditionDataNotAvailableException(deviceGroup != null, "device group not available", name, null); if (deviceGroup.isDeleted()) { return Boolean.TRUE; } Discipline discipline = holderIRepositories.getDisciplineRepository().findLatestNotDeletedByUuid(deviceType.getParentUuid().toString()); - ValidateUtil.validateCondition(discipline != null, HttpStatus.BAD_REQUEST, "device group not available", name, null); + ExceptionUtil.validateConditionDataNotAvailableException(discipline != null, "device group not available", name, null); if (discipline.isDeleted()) { return Boolean.TRUE; @@ -752,7 +752,6 @@ public class NamesService { name.setRequested(requested); name.setRequestedBy(requestedBy); name.setRequestedComment(requestedComment); - } } diff --git a/src/main/java/org/openepics/names/service/exception/DataConflictException.java b/src/main/java/org/openepics/names/service/exception/DataConflictException.java new file mode 100644 index 00000000..85ea1ec7 --- /dev/null +++ b/src/main/java/org/openepics/names/service/exception/DataConflictException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.service.exception; + +/** + * Exception class to assist in handling of service layer exceptions. + * + * @author Lars Johansson + */ +public class DataConflictException extends ServiceException { + + /** + * + */ + private static final long serialVersionUID = 717292299575574858L; + + /** + * Public constructor. + * + * @param message message + * @param details details + * @param field field + */ + public DataConflictException(String message, String details, String field) { + super(message, details, field, null); + } + +} diff --git a/src/main/java/org/openepics/names/service/exception/DataDeletedException.java b/src/main/java/org/openepics/names/service/exception/DataDeletedException.java new file mode 100644 index 00000000..f3f04ef4 --- /dev/null +++ b/src/main/java/org/openepics/names/service/exception/DataDeletedException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.service.exception; + +/** + * Exception class to assist in handling of service layer exceptions. + * + * @author Lars Johansson + */ +public class DataDeletedException extends ServiceException { + + /** + * + */ + private static final long serialVersionUID = 8214965988959148282L; + + /** + * Public constructor. + * + * @param message message + * @param details details + * @param field field + */ + public DataDeletedException(String message, String details, String field) { + super(message, details, field, null); + } + +} diff --git a/src/main/java/org/openepics/names/service/exception/DataExistException.java b/src/main/java/org/openepics/names/service/exception/DataExistException.java new file mode 100644 index 00000000..6a33e4dd --- /dev/null +++ b/src/main/java/org/openepics/names/service/exception/DataExistException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.service.exception; + +/** + * Exception class to assist in handling of service layer exceptions. + * + * @author Lars Johansson + */ +public class DataExistException extends ServiceException { + + /** + * + */ + private static final long serialVersionUID = -3192828921283195697L; + + /** + * Public constructor. + * + * @param message message + * @param details details + * @param field field + */ + public DataExistException(String message, String details, String field) { + super(message, details, field, null); + } + +} diff --git a/src/main/java/org/openepics/names/service/exception/DataNotAvailableException.java b/src/main/java/org/openepics/names/service/exception/DataNotAvailableException.java new file mode 100644 index 00000000..0ef14183 --- /dev/null +++ b/src/main/java/org/openepics/names/service/exception/DataNotAvailableException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.service.exception; + +/** + * Exception class to assist in handling of service layer exceptions. + * + * @author Lars Johansson + */ +public class DataNotAvailableException extends ServiceException { + + /** + * + */ + private static final long serialVersionUID = 771292348691428745L; + + /** + * Public constructor. + * + * @param message message + * @param details details + * @param field field + */ + public DataNotAvailableException(String message, String details, String field) { + super(message, details, field, null); + } + +} diff --git a/src/main/java/org/openepics/names/service/exception/DataNotCorrectException.java b/src/main/java/org/openepics/names/service/exception/DataNotCorrectException.java new file mode 100644 index 00000000..43e9fda6 --- /dev/null +++ b/src/main/java/org/openepics/names/service/exception/DataNotCorrectException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.service.exception; + +/** + * Exception class to assist in handling of service layer exceptions. + * + * @author Lars Johansson + */ +public class DataNotCorrectException extends ServiceException { + + /** + * + */ + private static final long serialVersionUID = 3525813299369253195L; + + /** + * Public constructor. + * + * @param message message + * @param details details + * @param field field + */ + public DataNotCorrectException(String message, String details, String field) { + super(message, details, field, null); + } + +} diff --git a/src/main/java/org/openepics/names/service/exception/DataNotFoundException.java b/src/main/java/org/openepics/names/service/exception/DataNotFoundException.java new file mode 100644 index 00000000..966a8abc --- /dev/null +++ b/src/main/java/org/openepics/names/service/exception/DataNotFoundException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.service.exception; + +/** + * Exception class to assist in handling of service layer exceptions. + * + * @author Lars Johansson + */ +public class DataNotFoundException extends ServiceException { + + /** + * + */ + private static final long serialVersionUID = -3908854009422708172L; + + /** + * Public constructor. + * + * @param message message + * @param details details + * @param field field + */ + public DataNotFoundException(String message, String details, String field) { + super(message, details, field, null); + } + +} diff --git a/src/main/java/org/openepics/names/service/exception/DataNotValidException.java b/src/main/java/org/openepics/names/service/exception/DataNotValidException.java new file mode 100644 index 00000000..6a2f78fd --- /dev/null +++ b/src/main/java/org/openepics/names/service/exception/DataNotValidException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.service.exception; + +/** + * Exception class to assist in handling of service layer exceptions. + * + * @author Lars Johansson + */ +public class DataNotValidException extends ServiceException { + + /** + * + */ + private static final long serialVersionUID = -1203854671942406300L; + + /** + * Public constructor. + * + * @param message message + * @param details details + * @param field field + */ + public DataNotValidException(String message, String details, String field) { + super(message, details, field, null); + } + +} diff --git a/src/main/java/org/openepics/names/service/exception/InputNotAvailableException.java b/src/main/java/org/openepics/names/service/exception/InputNotAvailableException.java new file mode 100644 index 00000000..6ae21c1b --- /dev/null +++ b/src/main/java/org/openepics/names/service/exception/InputNotAvailableException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.service.exception; + +/** + * Exception class to assist in handling of service layer exceptions. + * + * @author Lars Johansson + */ +public class InputNotAvailableException extends ServiceException { + + /** + * + */ + private static final long serialVersionUID = 2223786874114860161L; + + /** + * Public constructor. + * + * @param message message + * @param details details + * @param field field + */ + public InputNotAvailableException(String message, String details, String field) { + super(message, details, field, null); + } + +} diff --git a/src/main/java/org/openepics/names/service/exception/InputNotCorrectException.java b/src/main/java/org/openepics/names/service/exception/InputNotCorrectException.java new file mode 100644 index 00000000..e61e92e9 --- /dev/null +++ b/src/main/java/org/openepics/names/service/exception/InputNotCorrectException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.service.exception; + +/** + * Exception class to assist in handling of service layer exceptions. + * + * @author Lars Johansson + */ +public class InputNotCorrectException extends ServiceException { + + /** + * + */ + private static final long serialVersionUID = -1951806640288908108L; + + /** + * Public constructor. + * + * @param message message + * @param details details + * @param field field + */ + public InputNotCorrectException(String message, String details, String field) { + super(message, details, field, null); + } + +} diff --git a/src/main/java/org/openepics/names/service/exception/InputNotValidException.java b/src/main/java/org/openepics/names/service/exception/InputNotValidException.java new file mode 100644 index 00000000..aeb7b592 --- /dev/null +++ b/src/main/java/org/openepics/names/service/exception/InputNotValidException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2022 European Spallation Source ERIC. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package org.openepics.names.service.exception; + +/** + * Exception class to assist in handling of service layer exceptions. + * + * @author Lars Johansson + */ +public class InputNotValidException extends ServiceException { + + /** + * + */ + private static final long serialVersionUID = -2652292043931691939L; + + /** + * Public constructor. + * + * @param message message + * @param details details + * @param field field + */ + public InputNotValidException(String message, String details, String field) { + super(message, details, field, null); + } + +} diff --git a/src/main/java/org/openepics/names/util/ServiceHttpStatusException.java b/src/main/java/org/openepics/names/service/exception/ServiceException.java similarity index 68% rename from src/main/java/org/openepics/names/util/ServiceHttpStatusException.java rename to src/main/java/org/openepics/names/service/exception/ServiceException.java index 7a839db8..60f3ff25 100644 --- a/src/main/java/org/openepics/names/util/ServiceHttpStatusException.java +++ b/src/main/java/org/openepics/names/service/exception/ServiceException.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2021 European Spallation Source ERIC. + * Copyright (C) 2022 European Spallation Source ERIC. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -16,51 +16,37 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -package org.openepics.names.util; - -import org.springframework.http.HttpStatus; +package org.openepics.names.service.exception; /** * Exception class to assist in handling of service layer exceptions. * * @author Lars Johansson */ -public class ServiceHttpStatusException extends RuntimeException { +public class ServiceException extends RuntimeException { /** * */ - private static final long serialVersionUID = 5346696855950320329L; + private static final long serialVersionUID = -5521814109184738596L; - private final HttpStatus httpStatus; private final String details; private final String field; /** * Public constructor. * - * @param httpStatus http status * @param message message * @param details details * @param field field * @param cause cause */ - public ServiceHttpStatusException(HttpStatus httpStatus, String message, String details, String field, Throwable cause) { + public ServiceException(String message, String details, String field, Throwable cause) { super(message, cause); - this.httpStatus = httpStatus; this.details = details; this.field = field; } - /** - * Return http status of exception. - * - * @return http status - */ - public HttpStatus getHttpStatus() { - return httpStatus; - } - /** * Returns details of exception. * diff --git a/src/main/java/org/openepics/names/util/ExceptionUtil.java b/src/main/java/org/openepics/names/util/ExceptionUtil.java index 8ba39c06..e754ff80 100644 --- a/src/main/java/org/openepics/names/util/ExceptionUtil.java +++ b/src/main/java/org/openepics/names/util/ExceptionUtil.java @@ -18,21 +18,19 @@ package org.openepics.names.util; -import org.springframework.http.HttpStatus; +import org.openepics.names.service.exception.DataConflictException; +import org.openepics.names.service.exception.DataDeletedException; +import org.openepics.names.service.exception.DataExistException; +import org.openepics.names.service.exception.DataNotAvailableException; +import org.openepics.names.service.exception.DataNotCorrectException; +import org.openepics.names.service.exception.DataNotFoundException; +import org.openepics.names.service.exception.DataNotValidException; +import org.openepics.names.service.exception.InputNotAvailableException; +import org.openepics.names.service.exception.InputNotCorrectException; +import org.openepics.names.service.exception.InputNotValidException; /** * Utility class to assist in handling of exceptions. - * <br/><br/> - * Note - * <ul> - * <li>400 {@link HttpStatus#BAD_REQUEST}</li> - * <li>401 {@link HttpStatus#UNAUTHORIZED}</li> - * <li>403 {@link HttpStatus#FORBIDDEN}</li> - * <li>404 {@link HttpStatus#NOT_FOUND}</li> - * <li>409 {@link HttpStatus#CONFLICT}</li> - * <li>500 {@link HttpStatus#INTERNAL_SERVER_ERROR}</li> - * <li>501 {@link HttpStatus#NOT_IMPLEMENTED}</li> - * </ul> * * @author Lars Johansson */ @@ -49,105 +47,275 @@ public class ExceptionUtil { } /** - * Create service http status exception. + * Create data conflict exception. * Intended for communication inside server. * - * @param status http status * @param message message * @param details details * @param field field - * @param cause cause - * @return service http status exception + * @return data conflict exception */ - protected static ServiceHttpStatusException createServiceHttpStatusException(HttpStatus status, String message, String details, String field, Throwable cause) { - return new ServiceHttpStatusException(status, message, details, field, cause); + public static DataConflictException createDataConflictException(String message, String details, String field) { + return new DataConflictException(message, details, field); } /** - * Create service http status exception for {@link HttpStatus#BAD_REQUEST}. + * Create data deleted exception. * Intended for communication inside server. * * @param message message * @param details details * @param field field - * @return service http status exception + * @return data deleted exception */ - public static ServiceHttpStatusException createServiceHttpStatusExceptionBadRequest(String message, String details, String field) { - return createServiceHttpStatusException(HttpStatus.BAD_REQUEST, message, details, field, null); + public static DataDeletedException createDataDeletedException(String message, String details, String field) { + return new DataDeletedException(message, details, field); } /** - * Create service http status exception for {@link HttpStatus#UNAUTHORIZED}. + * Create data exist exception. * Intended for communication inside server. * * @param message message * @param details details * @param field field - * @return service http status exception + * @return data exist exception */ - public static ServiceHttpStatusException createServiceHttpStatusExceptionUnauthorized(String message, String details, String field) { - return createServiceHttpStatusException(HttpStatus.UNAUTHORIZED, message, details, field, null); + public static DataExistException createDataExistException(String message, String details, String field) { + return new DataExistException(message, details, field); } /** - * Create service http status exception for {@link HttpStatus#FORBIDDEN}. + * Create data not available exception. * Intended for communication inside server. * * @param message message * @param details details * @param field field - * @return service http status exception + * @return data not available exception */ - public static ServiceHttpStatusException createServiceHttpStatusExceptionForbidden(String message, String details, String field) { - return createServiceHttpStatusException(HttpStatus.FORBIDDEN, message, details, field, null); + public static DataNotAvailableException createDataNotAvailableException(String message, String details, String field) { + return new DataNotAvailableException(message, details, field); } /** - * Create service http status exception for {@link HttpStatus#NOT_FOUND}. + * Create data not correct exception. * Intended for communication inside server. * * @param message message * @param details details * @param field field - * @return service http status exception + * @return data not correct exception */ - public static ServiceHttpStatusException createServiceHttpStatusExceptionNotFound(String message, String details, String field) { - return createServiceHttpStatusException(HttpStatus.NOT_FOUND, message, details, field, null); + public static DataNotCorrectException createDataNotCorrectException(String message, String details, String field) { + return new DataNotCorrectException(message, details, field); } /** - * Create service http status exception for {@link HttpStatus#CONFLICT}. + * Create data not found exception. * Intended for communication inside server. * * @param message message * @param details details * @param field field - * @return service http status exception + * @return data not found exception */ - public static ServiceHttpStatusException createServiceHttpStatusExceptionConflict(String message, String details, String field) { - return createServiceHttpStatusException(HttpStatus.CONFLICT, message, details, field, null); + public static DataNotFoundException createDataNotFoundException(String message, String details, String field) { + return new DataNotFoundException(message, details, field); } /** - * Create service http status exception for {@link HttpStatus#INTERNAL_SERVER_ERROR}. + * Create data not valid exception. * Intended for communication inside server. * * @param message message - * @return service http status exception + * @param details details + * @param field field + * @return data not valid exception + */ + public static DataNotValidException createDataNotValidException(String message, String details, String field) { + return new DataNotValidException(message, details, field); + } + + /** + * Create input not available exception. + * Intended for communication inside server. + * + * @param message message + * @param details details + * @param field field + * @return input not available exception + */ + public static InputNotAvailableException createInputNotAvailableException(String message, String details, String field) { + return new InputNotAvailableException(message, details, field); + } + + /** + * Create input not correct exception. + * Intended for communication inside server. + * + * @param message message + * @param details details + * @param field field + * @return input not correct exception */ - public static ServiceHttpStatusException createServiceHttpStatusExceptionInternalServerError(String message, String details, String field) { - return createServiceHttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR, message, details, field, null); + public static InputNotCorrectException createInputNotCorrectException(String message, String details, String field) { + return new InputNotCorrectException(message, details, field); } /** - * Create service http status exception for {@link HttpStatus#NOT_IMPLEMENTED}. + * Create input not valid exception. * Intended for communication inside server. * * @param message message - * @return service http status exception + * @param details details + * @param field field + * @return input not valid exception + */ + public static InputNotValidException createInputNotValidException(String message, String details, String field) { + return new InputNotValidException(message, details, field); + } + + // ---------------------------------------------------------------------------------------------------- + + /** + * Validate condition and throw data conflict exception if condition not <tt>true</tt>. + * + * @param condition condition + * @param message message + * @param details details + * @param field field + */ + public static void validateConditionDataConflictException(boolean condition, String message, String details, String field) { + if (!condition) { + throw ExceptionUtil.createDataConflictException(message, details, field); + } + } + + /** + * Validate condition and throw data deleted exception if condition not <tt>true</tt>. + * + * @param condition condition + * @param message message + * @param details details + * @param field field + */ + public static void validateConditionDataDeletedException(boolean condition, String message, String details, String field) { + if (!condition) { + throw ExceptionUtil.createDataDeletedException(message, details, field); + } + } + + /** + * Validate condition and throw data exist exception if condition not <tt>true</tt>. + * + * @param condition condition + * @param message message + * @param details details + * @param field field + */ + public static void validateConditionDataExistException(boolean condition, String message, String details, String field) { + if (!condition) { + throw ExceptionUtil.createDataExistException(message, details, field); + } + } + + /** + * Validate condition and throw data not available exception if condition not <tt>true</tt>. + * + * @param condition condition + * @param message message + * @param details details + * @param field field + */ + public static void validateConditionDataNotAvailableException(boolean condition, String message, String details, String field) { + if (!condition) { + throw ExceptionUtil.createDataNotAvailableException(message, details, field); + } + } + + /** + * Validate condition and throw data not correct exception if condition not <tt>true</tt>. + * + * @param condition condition + * @param message message + * @param details details + * @param field field + */ + public static void validateConditionDataNotCorrectException(boolean condition, String message, String details, String field) { + if (!condition) { + throw ExceptionUtil.createDataNotCorrectException(message, details, field); + } + } + + /** + * Validate condition and throw data not found exception if condition not <tt>true</tt>. + * + * @param condition condition + * @param message message + * @param details details + * @param field field + */ + public static void validateConditionDataNotFoundException(boolean condition, String message, String details, String field) { + if (!condition) { + throw ExceptionUtil.createDataNotFoundException(message, details, field); + } + } + + /** + * Validate condition and throw data not valid exception if condition not <tt>true</tt>. + * + * @param condition condition + * @param message message + * @param details details + * @param field field + */ + public static void validateConditionDataNotValidException(boolean condition, String message, String details, String field) { + if (!condition) { + throw ExceptionUtil.createDataNotValidException(message, details, field); + } + } + + /** + * Validate condition and throw input not available exception if condition not <tt>true</tt>. + * + * @param condition condition + * @param message message + * @param details details + * @param field field + */ + public static void validateConditionInputNotAvailableException(boolean condition, String message, String details, String field) { + if (!condition) { + throw ExceptionUtil.createInputNotAvailableException(message, details, field); + } + } + + /** + * Validate condition and throw input not correct exception if condition not <tt>true</tt>. + * + * @param condition condition + * @param message message + * @param details details + * @param field field + */ + public static void validateConditionInputNotCorrectException(boolean condition, String message, String details, String field) { + if (!condition) { + throw ExceptionUtil.createInputNotCorrectException(message, details, field); + } + } + + /** + * Validate condition and throw input not valid exception if condition not <tt>true</tt>. + * + * @param condition condition + * @param message message + * @param details details + * @param field field */ - public static ServiceHttpStatusException createServiceHttpStatusExceptionNotImplemented(String message, String details, String field) { - return createServiceHttpStatusException(HttpStatus.NOT_IMPLEMENTED, message, details, field, null); + public static void validateConditionInputNotValidException(boolean condition, String message, String details, String field) { + if (!condition) { + throw ExceptionUtil.createInputNotValidException(message, details, field); + } } } diff --git a/src/main/java/org/openepics/names/util/LogUtil.java b/src/main/java/org/openepics/names/util/LogUtil.java index a088b95c..f8acc373 100644 --- a/src/main/java/org/openepics/names/util/LogUtil.java +++ b/src/main/java/org/openepics/names/util/LogUtil.java @@ -22,6 +22,7 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.apache.commons.lang3.StringUtils; +import org.openepics.names.service.exception.ServiceException; /** * Utility class to assist in handling of logs. @@ -41,13 +42,13 @@ public class LogUtil { } /** - * Log service http status exception. + * Log service exception. * * @param logger logger * @param level log level - * @param e service https status exception + * @param e service exception */ - public static void logServiceHttpStatusException(Logger logger, Level level, ServiceHttpStatusException e) { + public static void logServiceException(Logger logger, Level level, ServiceException e) { if (logger == null || level == null || e == null) { return; } @@ -58,10 +59,10 @@ public class LogUtil { String details = !StringUtils.isEmpty(e.getDetails()) ? " ### " + e.getDetails() : ""; - String httpStatus = e.getHttpStatus() != null - ? " ### " + e.getHttpStatus().toString() + String field = !StringUtils.isEmpty(e.getField()) + ? " ### " + e.getField() : ""; - msg = msg + details + httpStatus; + msg = msg + details + field; logger.log(level, msg); } @@ -71,9 +72,9 @@ public class LogUtil { * * @param logger logger * @param level log level - * @param e service https status exception + * @param e service exception */ - public static void logStackTraceElements(Logger logger, Level level, ServiceHttpStatusException e) { + public static void logStackTraceElements(Logger logger, Level level, ServiceException e) { logStackTraceElements(logger, Level.SEVERE, e, 10, ORG_OPENEPICS_NAMES, ORG_OPENEPICS_NAMES_UTIL_EXCEPTION_UTIL); } @@ -93,12 +94,12 @@ public class LogUtil { * * @param logger logger * @param level log level - * @param e service https status exception + * @param e service exception * @param maxNumberOfLogs max number of logs * @param filterInclude filter include * @param filterExclude filter exclude */ - public static void logStackTraceElements(Logger logger, Level level, ServiceHttpStatusException e, int maxNumberOfLogs, String filterInclude, String filterExclude) { + public static void logStackTraceElements(Logger logger, Level level, ServiceException e, int maxNumberOfLogs, String filterInclude, String filterExclude) { if (logger == null || level == null || e == null || maxNumberOfLogs <= 0) { return; } @@ -106,6 +107,7 @@ public class LogUtil { logStackTraceElements(logger, level, e.getStackTrace(), maxNumberOfLogs, filterInclude, filterExclude); } + /** * Log stack trace elements. * diff --git a/src/main/java/org/openepics/names/util/ValidateUtil.java b/src/main/java/org/openepics/names/util/ValidateUtil.java index 91ad1ade..be8c91c3 100644 --- a/src/main/java/org/openepics/names/util/ValidateUtil.java +++ b/src/main/java/org/openepics/names/util/ValidateUtil.java @@ -36,7 +36,7 @@ import org.openepics.names.rest.beans.Status; import org.openepics.names.rest.beans.Type; import org.openepics.names.rest.beans.element.NameElementCommand; import org.openepics.names.rest.beans.element.StructureElementCommand; -import org.springframework.http.HttpStatus; +import org.openepics.names.service.exception.DataConflictException; /** * Utility class to assist in handling of validation. @@ -106,8 +106,8 @@ public class ValidateUtil { */ public static void validateInputComment(String comment) { // available - validateCondition(!StringUtils.isEmpty(comment), HttpStatus.BAD_REQUEST, - "comment " + ValidateUtil.IS_NOT_AVAILABLE, comment, "comment"); + ExceptionUtil.validateConditionInputNotAvailableException( + !StringUtils.isEmpty(comment), "comment " + ValidateUtil.IS_NOT_AVAILABLE, comment, "comment"); } /** @@ -117,8 +117,8 @@ public class ValidateUtil { */ public static void validateInputDescription(String description) { // available - validateCondition(!StringUtils.isEmpty(description), HttpStatus.BAD_REQUEST, - "description " + ValidateUtil.IS_NOT_AVAILABLE, description, "description"); + ExceptionUtil.validateConditionInputNotAvailableException( + !StringUtils.isEmpty(description), "description " + ValidateUtil.IS_NOT_AVAILABLE, description, "description"); } /** @@ -128,8 +128,8 @@ public class ValidateUtil { */ public static void validateInputIndex(String index) { // available - validateCondition(!StringUtils.isEmpty(index), HttpStatus.BAD_REQUEST, - "index " + ValidateUtil.IS_NOT_AVAILABLE, index, "index"); + ExceptionUtil.validateConditionInputNotAvailableException( + !StringUtils.isEmpty(index), "index " + ValidateUtil.IS_NOT_AVAILABLE, index, "index"); } /** @@ -139,8 +139,8 @@ public class ValidateUtil { */ public static void validateInputMnemonic(String mnemonic) { // available - validateCondition(!StringUtils.isEmpty(mnemonic), HttpStatus.BAD_REQUEST, - "mnemonic " + ValidateUtil.IS_NOT_AVAILABLE, mnemonic, "mnemonic"); + ExceptionUtil.validateConditionInputNotAvailableException( + !StringUtils.isEmpty(mnemonic), "mnemonic " + ValidateUtil.IS_NOT_AVAILABLE, mnemonic, "mnemonic"); } /** @@ -150,8 +150,8 @@ public class ValidateUtil { */ public static void validateInputMnemonicpath(String mnemonicpath) { // available - validateCondition(!StringUtils.isEmpty(mnemonicpath), HttpStatus.BAD_REQUEST, - "mnemonicpath " + ValidateUtil.IS_NOT_AVAILABLE, mnemonicpath, "mnemonicpath"); + ExceptionUtil.validateConditionInputNotAvailableException( + !StringUtils.isEmpty(mnemonicpath), "mnemonicpath " + ValidateUtil.IS_NOT_AVAILABLE, mnemonicpath, "mnemonicpath"); } /** @@ -161,8 +161,8 @@ public class ValidateUtil { */ public static void validateInputName(String name) { // available - validateCondition(!StringUtils.isEmpty(name), HttpStatus.BAD_REQUEST, - "name " + ValidateUtil.IS_NOT_AVAILABLE, name, "name"); + ExceptionUtil.validateConditionInputNotAvailableException( + !StringUtils.isEmpty(name), "name " + ValidateUtil.IS_NOT_AVAILABLE, name, "name"); } /** @@ -182,12 +182,13 @@ public class ValidateUtil { */ public static void validateInputStatus(Status status, Status expected) { // available - validateCondition(status != null, HttpStatus.BAD_REQUEST, - "status " + ValidateUtil.IS_NOT_AVAILABLE, null, "status"); + ExceptionUtil.validateConditionInputNotAvailableException( + status != null, "status " + ValidateUtil.IS_NOT_AVAILABLE, null, "status"); + // expected status if (expected != null) { - validateCondition(expected.equals(status), HttpStatus.BAD_REQUEST, - "status " + ValidateUtil.IS_NOT_CORRECT, status.toString(), "status"); + ExceptionUtil.validateConditionInputNotCorrectException( + expected.equals(status), "status " + ValidateUtil.IS_NOT_CORRECT, status.toString(), "status"); } } @@ -208,12 +209,13 @@ public class ValidateUtil { */ public static void validateInputType(Type type, Type expected) { // available - validateCondition(type != null, HttpStatus.BAD_REQUEST, - "type " + ValidateUtil.IS_NOT_AVAILABLE, null, "type"); + ExceptionUtil.validateConditionInputNotAvailableException( + type != null, "type " + ValidateUtil.IS_NOT_AVAILABLE, null, "type"); + // expected type if (expected != null) { - validateCondition(expected.equals(type), HttpStatus.BAD_REQUEST, - "type " + ValidateUtil.IS_NOT_CORRECT, type.toString(), "type"); + ExceptionUtil.validateConditionInputNotCorrectException( + expected.equals(type), "type " + ValidateUtil.IS_NOT_CORRECT, type.toString(), "type"); } } @@ -225,13 +227,12 @@ public class ValidateUtil { public static void validateInputUuid(String uuid) { // available // correct - validateCondition(!StringUtils.isEmpty(uuid), HttpStatus.BAD_REQUEST, - "uuid " + ValidateUtil.IS_NOT_AVAILABLE, uuid, "uuid"); + ExceptionUtil.validateConditionInputNotAvailableException( + !StringUtils.isEmpty(uuid), "uuid " + ValidateUtil.IS_NOT_AVAILABLE, uuid, "uuid"); try { UUID.fromString(uuid); } catch (IllegalArgumentException e) { - throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest( - "uuid " + ValidateUtil.IS_NOT_CORRECT, uuid, null); + throw ExceptionUtil.createInputNotCorrectException("uuid " + ValidateUtil.IS_NOT_CORRECT, uuid, null); } } @@ -264,8 +265,8 @@ public class ValidateUtil { boolean condition = ((queryFields == null && queryValues == null) || (queryFields != null && queryValues != null && queryFields.length == queryValues.length && queryFields.length > 0)); - ValidateUtil.validateCondition(condition, HttpStatus.BAD_REQUEST, - "url and parameters " + ValidateUtil.ARE_NOT_CORRECT, "queryFields, queryValues with different lengths or empty", null); + ExceptionUtil.validateConditionInputNotCorrectException( + condition, "url and parameters " + ValidateUtil.ARE_NOT_CORRECT, "queryFields, queryValues with different lengths or empty", null); if (queryFields != null) { for (int i=0; i<queryFields.length; i++) { if (FieldName.UUID.equals(queryFields[i])) { @@ -326,12 +327,18 @@ public class ValidateUtil { } if (!NameChoice.DELETE.equals(nameChoice)) { - ValidateUtil.validateCondition(nameElement.getParentsystemstructure() != null, HttpStatus.BAD_REQUEST, + ExceptionUtil.validateConditionInputNotAvailableException(nameElement.getParentsystemstructure() != null, "parent system structure uuid " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString(), "parentsystemstructure"); - // parentdevicestructure optional + // optional (either none or both) + // parentdevicestructure + // index + if (nameElement.getParentdevicestructure() != null && nameElement.getIndex() == null) { + throw ExceptionUtil.createInputNotValidException("index " + ValidateUtil.IS_NOT_VALID, nameElement.toString(), "index"); + } else if (nameElement.getParentdevicestructure() == null && nameElement.getIndex() != null) { + throw ExceptionUtil.createInputNotValidException("parent device structure uuid " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString(), "parentdevicestructure"); + } - // validateInputIndex(nameElement.getIndex()); optional validateInputDescription(nameElement.getDescription()); } @@ -412,8 +419,7 @@ public class ValidateUtil { // retrieve for uuid and check if (NameChoice.UPDATE.equals(nameChoice) || NameChoice.DELETE.equals(nameChoice)) { List<Name> names = nameRepository.readNames(false, FieldName.UUID, nameElement.getUuid().toString()); - validateCondition(names != null && names.size() == 1, HttpStatus.BAD_REQUEST, - ValidateUtil.NAME + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, nameElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(names != null && names.size() == 1, ValidateUtil.NAME + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, nameElement.toString(), "uuid"); } SystemGroup systemGroup = null; @@ -451,25 +457,25 @@ public class ValidateUtil { if (nameElement.getParentdevicestructure() != null) { countDevicestructureIndex++; deviceType = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(nameElement.getParentdevicestructure().toString()); - ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString(), "parentdevicestructure"); - ValidateUtil.validateCondition(!deviceType.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentdevicestructure"); + ExceptionUtil.validateConditionDataNotAvailableException(deviceType != null, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString(), "parentdevicestructure"); + ExceptionUtil.validateConditionDataDeletedException(!deviceType.isDeleted(), ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentdevicestructure"); } // system structure if (systemGroup != null) { - ValidateUtil.validateCondition(!systemGroup.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentsystemstructure"); + ExceptionUtil.validateConditionDataDeletedException(!systemGroup.isDeleted(), ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentsystemstructure"); derivedName = NameUtil.getName(systemGroup, deviceType, nameElement.getIndex(), holder); } else if (system != null) { - ValidateUtil.validateCondition(!system.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentsystemstructure"); + ExceptionUtil.validateConditionDataDeletedException(!system.isDeleted(), ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentsystemstructure"); derivedName = NameUtil.getName(system, deviceType, nameElement.getIndex(), holder); } else if (subsystem != null) { - ValidateUtil.validateCondition(!subsystem.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentsystemstructure"); + ExceptionUtil.validateConditionDataDeletedException(!subsystem.isDeleted(), ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentsystemstructure"); derivedName = NameUtil.getName(subsystem, deviceType, nameElement.getIndex(), holder); } else { - throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest("system structure uuid " + IS_NOT_CORRECT, nameElement.toString(), null); + throw ExceptionUtil.createDataNotCorrectException("system structure uuid " + IS_NOT_CORRECT, nameElement.toString(), null); } // index @@ -477,11 +483,11 @@ public class ValidateUtil { countDevicestructureIndex++; // TODO overrideRuleset depend on user authority condition = namingConvention.isInstanceIndexValid(derivedName, false); - validateCondition(condition, HttpStatus.BAD_REQUEST, "instance index " + ValidateUtil.IS_NOT_VALID, nameElement.toString(), "index"); + ExceptionUtil.validateConditionDataNotValidException(condition, "instance index " + ValidateUtil.IS_NOT_VALID, nameElement.toString(), "index"); } condition = countDevicestructureIndex == 0 || countDevicestructureIndex == 2; - ValidateUtil.validateCondition(condition, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + "or instance index " + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString(), "parentdevicestructure"); + ExceptionUtil.validateConditionDataNotAvailableException(condition, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + "or instance index " + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString(), "parentdevicestructure"); // name // ok with same name, name equivalence if same uuid @@ -492,7 +498,7 @@ public class ValidateUtil { // NameChoice.UPDATE.equals(nameChoice) condition = names == null || names.isEmpty() || names.size() == 1 && names.get(0).getUuid().equals(nameElement.getUuid()); } - validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name " + ValidateUtil.EXISTS, nameElement.toString(), null); + ExceptionUtil.validateConditionDataExistException(condition, "convention name " + ValidateUtil.EXISTS, nameElement.toString(), null); names = nameRepository.readNames(false, FieldName.NAMEEQUIVALENCE, namingConvention.equivalenceClassRepresentative(derivedName)); if (NameChoice.CREATE.equals(nameChoice)) { @@ -501,7 +507,7 @@ public class ValidateUtil { // NameChoice.UPDATE.equals(nameChoice) condition = names == null || names.isEmpty() || names.size() == 1 && names.get(0).getUuid().equals(nameElement.getUuid()); } - validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name equivalence " + ValidateUtil.EXISTS, nameElement.toString(), null); + ExceptionUtil.validateConditionDataExistException(condition, "convention name equivalence " + ValidateUtil.EXISTS, nameElement.toString(), null); } else if (NameChoice.DELETE.equals(nameChoice)) { // n.a. // uuid - already handled @@ -550,12 +556,10 @@ public class ValidateUtil { count++; } if (count > 2 || count < 1) { - throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest( - "system structure " + ValidateUtil.IS_NOT_CORRECT, name, null); + throw ExceptionUtil.createDataNotCorrectException("system structure " + ValidateUtil.IS_NOT_CORRECT, name, null); } else if ( (!StringUtils.isEmpty(sg) && !StringUtils.isEmpty(sys)) || (!StringUtils.isEmpty(sg) && !StringUtils.isEmpty(sub))) { - throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest( - "system structure " + ValidateUtil.IS_NOT_CORRECT, name, null); + throw ExceptionUtil.createDataNotCorrectException("system structure " + ValidateUtil.IS_NOT_CORRECT, name, null); } SystemGroup systemGroup = null; @@ -583,35 +587,30 @@ public class ValidateUtil { // device structure if (!StringUtils.isEmpty(dt)) { deviceType = holderIRepositories.getDeviceTypeRepository().findLatestNotDeletedByMnemonic(dt); - ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST, - ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); + ExceptionUtil.validateConditionDataNotAvailableException(deviceType != null, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); } // system structure if (!StringUtils.isEmpty(sg)) { systemGroup = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByMnemonic(sg); - ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, - ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); + ExceptionUtil.validateConditionDataNotAvailableException(systemGroup != null, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); derivedName = NameUtil.getName(systemGroup, deviceType, NamingConventionUtil.extractInstanceIndex(name), holder); } else { if (!StringUtils.isEmpty(sys)) { system = holderIRepositories.getSystemRepository().findLatestNotDeletedByMnemonic(sys); - ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST, - ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); + ExceptionUtil.validateConditionDataNotAvailableException(system != null, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); derivedName = NameUtil.getName(system, deviceType, NamingConventionUtil.extractInstanceIndex(name), holder); } else { - throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest( + throw ExceptionUtil.createDataNotAvailableException( ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); } // TODO is this condition correct? - ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST, - ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); + ExceptionUtil.validateConditionDataNotAvailableException(system != null, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); if (!StringUtils.isEmpty(sub)) { subsystem = holderIRepositories.getSubsystemRepository().findLatestNotDeletedByParentAndMnemonic(system.getUuid().toString(), sub); - ValidateUtil.validateCondition(subsystem != null, HttpStatus.BAD_REQUEST, - ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); + ExceptionUtil.validateConditionDataNotAvailableException(subsystem != null, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null); derivedName = NameUtil.getName(subsystem, deviceType, NamingConventionUtil.extractInstanceIndex(name), holder); } @@ -621,8 +620,7 @@ public class ValidateUtil { if (!StringUtils.isEmpty(idx)) { // TODO overrideRuleset depend on user authority condition = namingConvention.isInstanceIndexValid(name, false); - validateCondition(condition, HttpStatus.BAD_REQUEST, - "instance index " + ValidateUtil.IS_NOT_VALID, name, null); + ExceptionUtil.validateConditionDataNotValidException(condition, "instance index " + ValidateUtil.IS_NOT_VALID, name, null); } // name @@ -630,18 +628,15 @@ public class ValidateUtil { // convention name not exists // convention name equivalence not exists condition = StringUtils.equals(name, derivedName); - validateCondition(condition, HttpStatus.BAD_REQUEST, - "convention name " + ValidateUtil.IS_NOT_CORRECT, name, null); + ExceptionUtil.validateConditionDataNotCorrectException(condition, "convention name " + ValidateUtil.IS_NOT_CORRECT, name, null); List<Name> names = nameRepository.readNames(false, FieldName.NAME, name); condition = names == null || names.isEmpty(); - validateCondition(condition, HttpStatus.BAD_REQUEST, - "convention name " + ValidateUtil.EXISTS, name, null); + ExceptionUtil.validateConditionDataExistException(condition, "convention name " + ValidateUtil.EXISTS, name, null); names = nameRepository.readNames(false, FieldName.NAMEEQUIVALENCE, namingConvention.equivalenceClassRepresentative(name)); condition = names == null || names.isEmpty(); - validateCondition(condition, HttpStatus.BAD_REQUEST, - "convention name equivalence " + ValidateUtil.EXISTS, name, null); + ExceptionUtil.validateConditionDataExistException(condition, "convention name equivalence " + ValidateUtil.EXISTS, name, null); } // ---------------------------------------------------------------------------------------------------- @@ -677,7 +672,7 @@ public class ValidateUtil { ValidateUtil.validateInputType(type); boolean condition = ((queryFields == null && queryValues == null) || (queryFields != null && queryValues != null && queryFields.length == queryValues.length && queryFields.length > 0)); - ValidateUtil.validateCondition(condition, HttpStatus.BAD_REQUEST, + ExceptionUtil.validateConditionInputNotCorrectException(condition, "url and parameters " + ValidateUtil.ARE_NOT_CORRECT, "queryFields, queryValues with different lengths or empty", null); if (queryFields != null) { for (int i=0; i<queryFields.length; i++) { @@ -768,18 +763,13 @@ public class ValidateUtil { validateInputType(structureElement.getType()); if (!StructureChoice.DELETE.equals(structureChoice)) { - if (Type.SYSTEM.equals(structureElement.getType())) { - validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString(), "parent"); - ValidateUtil.validateInputUuid(structureElement.getParent().toString()); - } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { - validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString(), "parent"); - ValidateUtil.validateInputUuid(structureElement.getParent().toString()); - } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { - validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString(), "parent"); - ValidateUtil.validateInputUuid(structureElement.getParent().toString()); - } else if (Type.DEVICETYPE.equals(structureElement.getType())) { - validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString(), "parent"); - ValidateUtil.validateInputUuid(structureElement.getParent().toString()); + switch (structureElement.getType()) { + case SYSTEM, SUBSYSTEM, DEVICEGROUP, DEVICETYPE: + ExceptionUtil.validateConditionInputNotAvailableException(structureElement.getParent() != null, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString(), "parent"); + ValidateUtil.validateInputUuid(structureElement.getParent().toString()); + break; + default: + break; } validateInputName(structureElement.getName()); @@ -788,7 +778,7 @@ public class ValidateUtil { // validate mnemonic input (value itself, not in relation to other values) // validateMnemonic takes isMnemonicRequired into account MnemonicValidation mnemonicValidation = namingConvention.validateMnemonic(structureElement.getType(), structureElement.getMnemonic()); - validateCondition(MnemonicValidation.VALID.equals(mnemonicValidation), HttpStatus.BAD_REQUEST, "mnemonic " + ValidateUtil.IS_NOT_VALID, structureElement.toString(), "mnemonic"); + ExceptionUtil.validateConditionInputNotValidException(MnemonicValidation.VALID.equals(mnemonicValidation), "mnemonic " + ValidateUtil.IS_NOT_VALID, structureElement.toString(), "mnemonic"); validateInputDescription(structureElement.getDescription()); } @@ -905,80 +895,80 @@ public class ValidateUtil { // status, uuid // status, not deleted, uuid systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(systemGroups != null && systemGroups.size() == 0, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(systemGroups != null && systemGroups.size() == 1, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } else if (Type.SYSTEM.equals(structureElement.getType())) { List<System> systems = null; // status, uuid // status, not deleted, uuid systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(systems != null && systems.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(systems != null && systems.size() == 0, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(systems != null && systems.size() == 1, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { List<Subsystem> subsystems = null; // status, uuid // status, not deleted, uuid subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(subsystems != null && subsystems.size() == 0, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(subsystems != null && subsystems.size() == 1, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } else if (Type.DISCIPLINE.equals(structureElement.getType())) { List<Discipline> disciplines = null; // status, uuid // status, not deleted, uuid disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(disciplines != null && disciplines.size() == 0, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(disciplines != null && disciplines.size() == 1, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { List<DeviceGroup> deviceGroups = null; // status, uuid // status, not deleted, uuid deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(deviceGroups != null && deviceGroups.size() == 0, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(deviceGroups != null && deviceGroups.size() == 1, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } else if (Type.DEVICETYPE.equals(structureElement.getType())) { List<DeviceType> deviceTypes = null; // status, uuid // status, not deleted, uuid deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(deviceTypes != null && deviceTypes.size() == 0, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(deviceTypes != null && deviceTypes.size() == 1, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } } else if (StructureChoice.APPROVE.equals(structureChoice) || StructureChoice.CANCEL.equals(structureChoice) || StructureChoice.REJECT.equals(structureChoice)) { if (Type.SYSTEMGROUP.equals(structureElement.getType())) { // status, uuid List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(systemGroups != null && systemGroups.size() == 1, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } else if (Type.SYSTEM.equals(structureElement.getType())) { // status, uuid List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(systems != null && systems.size() == 1, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { // status, uuid List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(subsystems != null && subsystems.size() == 1, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } else if (Type.DISCIPLINE.equals(structureElement.getType())) { // status, uuid List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(disciplines != null && disciplines.size() == 1, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { // status, uuid List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(deviceGroups != null && deviceGroups.size() == 1, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } else if (Type.DEVICETYPE.equals(structureElement.getType())) { // status, uuid List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); + ExceptionUtil.validateConditionDataNotCorrectException(deviceTypes != null && deviceTypes.size() == 1, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid"); } } } @@ -1022,19 +1012,19 @@ public class ValidateUtil { // status, mnemonic systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, false, FieldStructure.MNEMONIC, structureElement.getMnemonic()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.MNEMONIC, structureElement.getMnemonic()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); // status, mnemonic equivalence systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, false, FieldStructure.MNEMONICEQUIVALENCE, namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); } } else if (Type.SYSTEM.equals(structureElement.getType())) { List<SystemGroup> systemGroups = null; @@ -1044,24 +1034,24 @@ public class ValidateUtil { // status, parent message = ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getParent().toString()); - ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent"); + ExceptionUtil.validateConditionDataConflictException(systemGroups != null && systemGroups.size() == 1, message, details, "parent"); // status, parent, mnemonic message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; systems = holderRepositories.getSystemRepository().readSystems(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {systemGroups.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); systems = holderRepositories.getSystemRepository().readSystems(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {systemGroups.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); // status, parent, mnemonic equivalence systems = holderRepositories.getSystemRepository().readSystems(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {systemGroups.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); systems = holderRepositories.getSystemRepository().readSystems(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {systemGroups.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { List<System> systems = null; List<Subsystem> subsystems = null; @@ -1070,43 +1060,43 @@ public class ValidateUtil { // status, parent message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.UUID, structureElement.getParent().toString()); - ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent"); + ExceptionUtil.validateConditionDataConflictException(systems != null && systems.size() == 1, message, details, "parent"); // status, parent, mnemonic message = ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; subsystems = holderRepositories.getSubsystemRepository().readSubsystems(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {systems.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); subsystems = holderRepositories.getSubsystemRepository().readSubsystems(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {systems.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); // status. parent, mnemonic equivalence subsystems = holderRepositories.getSubsystemRepository().readSubsystems(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {systems.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); subsystems = holderRepositories.getSubsystemRepository().readSubsystems(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {systems.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); } else if (Type.DISCIPLINE.equals(structureElement.getType())) { List<Discipline> disciplines = null; String message = ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; // status, mnemonic disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, false, FieldStructure.MNEMONIC, structureElement.getMnemonic()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.MNEMONIC, structureElement.getMnemonic()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); // status, mnemonic equivalence disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, false, FieldStructure.MNEMONICEQUIVALENCE, namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { List<Discipline> disciplines = null; String message = null; @@ -1114,13 +1104,13 @@ public class ValidateUtil { // status, parent message = ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.UUID, structureElement.getParent().toString()); - ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent"); + ExceptionUtil.validateConditionDataConflictException(disciplines != null && disciplines.size() == 1, message, details, "parent"); // note rules for mnemonic for device group // mnemonic message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; - ValidateUtil.validateCondition(StringUtils.isEmpty(structureElement.getMnemonic()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + ExceptionUtil.validateConditionDataConflictException(StringUtils.isEmpty(structureElement.getMnemonic()), message, details, "mnemonic"); } else if (Type.DEVICETYPE.equals(structureElement.getType())) { List<DeviceGroup> deviceGroups = null; List<DeviceType> deviceTypes = null; @@ -1129,24 +1119,24 @@ public class ValidateUtil { // status, parent message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getParent().toString()); - ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent"); + ExceptionUtil.validateConditionDataConflictException(deviceGroups != null && deviceGroups.size() == 1, message, details, "parent"); // status, parent, mnemonic message = ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {deviceGroups.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {deviceGroups.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); // status, parent, mnemonic equivalence deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {deviceGroups.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {deviceGroups.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), message, details, "mnemonic"); } } else if (StructureChoice.APPROVE.equals(structureChoice)) { if (Type.SYSTEMGROUP.equals(structureElement.getType())) { @@ -1156,17 +1146,17 @@ public class ValidateUtil { // to be approved - status, uuid toBeApproved = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid"); + ExceptionUtil.validateConditionDataConflictException(toBeApproved != null && toBeApproved.size() == 1, message, details, "uuid"); // status, mnemonic systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.MNEMONIC, toBeApproved.get(0).getMnemonic()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), message, details, "mnemonic"); // status, mnemonic equivalence systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, toBeApproved.get(0).getMnemonicEquivalence()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), message, details, "mnemonic"); } else if (Type.SYSTEM.equals(structureElement.getType())) { List<SystemGroup> systemGroups = null; List<System> toBeApproved = null; @@ -1176,23 +1166,23 @@ public class ValidateUtil { // to be approved - status, uuid message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; toBeApproved = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid"); + ExceptionUtil.validateConditionDataConflictException(toBeApproved != null && toBeApproved.size() == 1, message, details, "uuid"); // status, parent message = ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.UUID, toBeApproved.get(0).getParentUuid().toString()); - ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent"); + ExceptionUtil.validateConditionDataConflictException(systemGroups != null && systemGroups.size() == 1, message, details, "parent"); // status, mnemonic message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.MNEMONIC, toBeApproved.get(0).getMnemonic()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), message, details, "mnemonic"); // status, mnemonic equivalence systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, toBeApproved.get(0).getMnemonicEquivalence()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), message, details, "mnemonic"); } else if (Type.SUBSYSTEM.equals(structureElement.getType())) { List<System> systems = null; List<Subsystem> toBeApproved = null; @@ -1202,23 +1192,23 @@ public class ValidateUtil { // to be approved - status, uuid message = ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; toBeApproved = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid"); + ExceptionUtil.validateConditionDataConflictException(toBeApproved != null && toBeApproved.size() == 1, message, details, "uuid"); // status, parent message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.UUID, toBeApproved.get(0).getParentUuid().toString()); - ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent"); + ExceptionUtil.validateConditionDataConflictException(systems != null && systems.size() == 1, message, details, "parent"); // status, mnemonic message = ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, FieldStructure.MNEMONIC, toBeApproved.get(0).getMnemonic()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), message, details, "mnemonic"); // status, mnemonic equivalence subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, toBeApproved.get(0).getMnemonicEquivalence()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), message, details, "mnemonic"); } else if (Type.DISCIPLINE.equals(structureElement.getType())) { List<Discipline> toBeApproved = null; List<Discipline> disciplines = null; @@ -1226,17 +1216,17 @@ public class ValidateUtil { // to be approved - status, uuid toBeApproved = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid"); + ExceptionUtil.validateConditionDataConflictException(toBeApproved != null && toBeApproved.size() == 1, message, details, "uuid"); // status, mnemonic disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.MNEMONIC, toBeApproved.get(0).getMnemonic()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), message, details, "mnemonic"); // status, mnemonic equivalence disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, toBeApproved.get(0).getMnemonicEquivalence()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), message, details, "mnemonic"); } else if (Type.DEVICEGROUP.equals(structureElement.getType())) { List<Discipline> disciplines = null; List<DeviceGroup> toBeApproved = null; @@ -1245,18 +1235,18 @@ public class ValidateUtil { // to be approved - status, uuid message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; toBeApproved = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid"); + ExceptionUtil.validateConditionDataConflictException(toBeApproved != null && toBeApproved.size() == 1, message, details, "uuid"); // status, parent message = ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.UUID, toBeApproved.get(0).getParentUuid().toString()); - ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent"); + ExceptionUtil.validateConditionDataConflictException(disciplines != null && disciplines.size() == 1, message, details, "parent"); // note rules for mnemonic for device group // mnemonic message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; - ValidateUtil.validateCondition(StringUtils.isEmpty(structureElement.getMnemonic()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + ExceptionUtil.validateConditionDataConflictException(StringUtils.isEmpty(structureElement.getMnemonic()), message, details, "mnemonic"); } else if (Type.DEVICETYPE.equals(structureElement.getType())) { List<DeviceGroup> deviceGroups = null; List<DeviceType> toBeApproved = null; @@ -1266,23 +1256,23 @@ public class ValidateUtil { // to be approved - status, uuid message = ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; toBeApproved = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString()); - ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid"); + ExceptionUtil.validateConditionDataConflictException(toBeApproved != null && toBeApproved.size() == 1, message, details, "uuid"); // status, parent message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, FieldStructure.UUID, toBeApproved.get(0).getParentUuid().toString()); - ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent"); + ExceptionUtil.validateConditionDataConflictException(deviceGroups != null && deviceGroups.size() == 1, message, details, "parent"); // status, mnemonic message = ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT; deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, FieldStructure.MNEMONIC, toBeApproved.get(0).getMnemonic()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), message, details, "mnemonic"); // status, mnemonic equivalence deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, toBeApproved.get(0).getMnemonicEquivalence()); - validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); - validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), message, details, "mnemonic"); + validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), message, details, "mnemonic"); } } } @@ -1305,26 +1295,26 @@ public class ValidateUtil { } String[] path = NamingConventionUtil.string2MnemonicPath(mnemonicpath); - validateCondition(path != null && path.length >= 1 && path.length <= 2, - HttpStatus.BAD_REQUEST, ValidateUtil.STRUCTURE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataNotValidException(path != null && path.length >= 1 && path.length <= 2, + ValidateUtil.STRUCTURE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path + ", " + mnemonicpath, null); String mnemonicpathEquivalence = namingConvention.equivalenceClassRepresentative(mnemonicpath); if (Type.SYSTEMGROUP.equals(type)) { - validateCondition(path.length == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataNotValidException(path.length == 1, ValidateUtil.SYSTEMGROUP + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null); // system group may have empty path but there will be mnemonicpath in this context // mnemonic SystemGroup sg = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByMnemonic(path[0]); - ValidateUtil.validateCondition(sg == null, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + " mnemonic path duplicate", path[0] + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(sg == null, ValidateUtil.SYSTEMGROUP + " mnemonic path duplicate", path[0] + ", " + mnemonicpath, null); // mnemonic equivalence List<SystemGroup> systemGroups = holderIRepositories.getSystemGroupRepository().findLatestNotDeleted(); for (SystemGroup systemGroup : systemGroups) { - validateCondition(!StringUtils.equals(systemGroup.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + " mnemonic path equivalence duplicate", path[0] + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(systemGroup.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), ValidateUtil.SYSTEMGROUP + " mnemonic path equivalence duplicate", path[0] + ", " + mnemonicpath, null); } } else if (Type.SYSTEM.equals(type)) { - validateCondition(path.length == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataNotValidException(path.length == 1, ValidateUtil.SYSTEM + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null); // path with 1 element - system group or system ---> check both individually // check mnemonic, mnemonic equivalence @@ -1332,90 +1322,90 @@ public class ValidateUtil { // mnemonic system group List<String> mnemonicPaths = StructureUtil.getMnemonicPathsSystemGroup(holder, false, namingConvention); for (String existingPath : mnemonicPaths) { - validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(mnemonicpath, existingPath), ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath, null); } // mnemonic path system group mnemonicPaths = StructureUtil.getMnemonicPathsSystemGroup(holder, true, namingConvention); for (String existingPath : mnemonicPaths) { - validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path equivalence duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), ValidateUtil.SYSTEM + " mnemonic path equivalence duplicate", mnemonicpath, null); } // mnemonic mnemonicPaths = StructureUtil.getMnemonicPathsSystem(holder, false, namingConvention); for (String existingPath : mnemonicPaths) { - validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(mnemonicpath, existingPath), ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath, null); } // mnemonic equivalence mnemonicPaths = StructureUtil.getMnemonicPathsSystem(holder, true, namingConvention); for (String existingPath : mnemonicPaths) { - validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path equivalence duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), ValidateUtil.SYSTEM + " mnemonic path equivalence duplicate", mnemonicpath, null); } } else if (Type.SUBSYSTEM.equals(type)) { - validateCondition(path.length == 2, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataNotValidException(path.length == 2, ValidateUtil.SUBSYSTEM + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null); System sys = holderIRepositories.getSystemRepository().findLatestNotDeletedByMnemonic(path[0]); - ValidateUtil.validateCondition(sys != null, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path not available", path[0] + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataNotAvailableException(sys != null, ValidateUtil.SUBSYSTEM + " mnemonic path not available", path[0] + ", " + mnemonicpath, null); SystemGroup sg = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByUuid(sys.getParentUuid().toString()); // mnemonic - validateCondition(!StringUtils.equals(path[0], path[1]), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(path[0], path[1]), ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null); if (!StringUtils.isEmpty(sg.getMnemonic())) { - validateCondition(!StringUtils.equals(sg.getMnemonic(), path[1]), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(sg.getMnemonic(), path[1]), ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null); } List<String> mnemonicPaths = StructureUtil.getMnemonicPathsSubsystem(holder, false, namingConvention); for (String existingPath : mnemonicPaths) { - validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(mnemonicpath, existingPath), ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null); } // mnemonic equivalence - validateCondition(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath, null); if (!StringUtils.isEmpty(sg.getMnemonic())) { - validateCondition(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(sg.getMnemonic()), namingConvention.equivalenceClassRepresentative(path[1])), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(sg.getMnemonic()), namingConvention.equivalenceClassRepresentative(path[1])), ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null); } mnemonicPaths = StructureUtil.getMnemonicPathsSubsystem(holder, true, namingConvention); for (String existingPath : mnemonicPaths) { - validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path equivalence duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), ValidateUtil.SUBSYSTEM + " mnemonic path equivalence duplicate", mnemonicpath, null); } } else if (Type.DISCIPLINE.equals(type)) { - validateCondition(path.length == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path[0] + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataNotValidException(path.length == 1, ValidateUtil.DISCIPLINE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path[0] + ", " + mnemonicpath, null); // mnemonic Discipline di = holderIRepositories.getDisciplineRepository().findLatestNotDeletedByMnemonic(path[0]); - ValidateUtil.validateCondition(di == null, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " mnemonic path duplicate", path[0] + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(di == null, ValidateUtil.DISCIPLINE + " mnemonic path duplicate", path[0] + ", " + mnemonicpath, null); // mnemonic equivalence List<Discipline> disciplines = holderIRepositories.getDisciplineRepository().findLatestNotDeleted(); for (Discipline discipline : disciplines) { - validateCondition(!StringUtils.equals(discipline.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), - HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " mnemonic path equivalence duplicate", path[0] + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(discipline.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), + ValidateUtil.DISCIPLINE + " mnemonic path equivalence duplicate", path[0] + ", " + mnemonicpath, null); } } else if (Type.DEVICEGROUP.equals(type)) { - throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest(ValidateUtil.DEVICEGROUP + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null); + throw ExceptionUtil.createDataNotValidException(ValidateUtil.DEVICEGROUP + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null); } else if (Type.DEVICETYPE.equals(type)) { - validateCondition(path.length == 2, HttpStatus.BAD_REQUEST, ValidateUtil.STRUCTURE + " " + ValidateUtil.DEVICETYPE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataNotValidException(path.length == 2, ValidateUtil.STRUCTURE + " " + ValidateUtil.DEVICETYPE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null); // discipline Discipline discipline = holderIRepositories.getDisciplineRepository().findLatestNotDeletedByMnemonic(path[0]); - ValidateUtil.validateCondition(discipline != null, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " " + ValidateUtil.IS_NOT_VALID, path[0] + ", " + mnemonicpath, null); + ExceptionUtil.validateConditionDataNotValidException(discipline != null, ValidateUtil.DISCIPLINE + " " + ValidateUtil.IS_NOT_VALID, path[0] + ", " + mnemonicpath, null); // mnemonic - validateCondition(!StringUtils.equals(path[0], path[1]), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(path[0], path[1]), ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath, null); List<String> mnemonicPaths = StructureUtil.getMnemonicPathsDeviceType(holder, false, namingConvention); for (String existingPath : mnemonicPaths) { - validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(mnemonicpath, existingPath), ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath, null); } // mnemonic equivalence - validateCondition(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath, null); mnemonicPaths = StructureUtil.getMnemonicPathsDeviceType(holder, true, namingConvention); for (String existingPath : mnemonicPaths) { - validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path equivalence duplicate", mnemonicpath, null); + ExceptionUtil.validateConditionDataConflictException(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), ValidateUtil.DEVICETYPE + " mnemonic path equivalence duplicate", mnemonicpath, null); } // since device group is between discipline and device type and device group has no mnemonic, @@ -1430,62 +1420,36 @@ public class ValidateUtil { // ---------------------------------------------------------------------------------------------------- /** - * Validate condition and throw ServiceHttpStatusException with reason if validation fails. - * - * @param condition condition - * @param status http status - * @param message message - * @param details details - * @param field field - * - * @see ServiceHttpStatusException - */ - public static void validateCondition(boolean condition, HttpStatus status, String message, String details, String field) { - if (!condition) { - switch(status) { - case BAD_REQUEST: - throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest(message, details, field); - default: - throw ExceptionUtil.createServiceHttpStatusExceptionInternalServerError(message, details, field); - } - } - } - - /** - * Validate condition if precondition is fulfilled and throw ServiceHttpStatusException with reason if validation fails. + * Validate condition if precondition is fulfilled and throw data conflict exception with reason if validation fails. * * @param precondition precondition * @param condition condition - * @param status http status * @param message message * @param details details * @param field field * - * @see ServiceHttpStatusException + * @see DataConflictException */ - public static void validateConditionIfPrecondition(boolean precondition, boolean condition, HttpStatus status, String message, String details, String field) { + private static void validateConditionIfPrecondition(boolean precondition, boolean condition, String message, String details, String field) { if (precondition) { - validateCondition(condition, status, message, details, field); + ExceptionUtil.validateConditionDataConflictException(condition, message, details, field); } } /** - * Validate condition if precondition (StructureChoice) is fulfilled and throw ServiceHttpStatusException with reason if validation fails. + * Validate condition if precondition (StructureChoice) is fulfilled and throw data conflict exception with reason if validation fails. * * @param expected expected structure choice * @param actual actual structure choice * @param condition condition - * @param status http status * @param message message * @param details details * @param field field * - * @see ServiceHttpStatusException + * @see DataConflictException */ - public static void validateConditionIfStructureChoice(StructureChoice expected, StructureChoice actual, boolean condition, HttpStatus status, String message, String details, String field) { - validateConditionIfPrecondition(expected != null && expected.equals(actual), condition, status, message, details, field); + private static void validateConditionIfStructureChoice(StructureChoice expected, StructureChoice actual, boolean condition, String message, String details, String field) { + validateConditionIfPrecondition(expected != null && expected.equals(actual), condition, message, details, field); } - - } diff --git a/src/test/java/org/openepics/names/util/ExceptionUtilTest.java b/src/test/java/org/openepics/names/util/ExceptionUtilTest.java index 26bf183f..5b5ec63b 100644 --- a/src/test/java/org/openepics/names/util/ExceptionUtilTest.java +++ b/src/test/java/org/openepics/names/util/ExceptionUtilTest.java @@ -19,10 +19,20 @@ package org.openepics.names.util; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import org.junit.jupiter.api.Test; -import org.springframework.http.HttpStatus; +import org.openepics.names.service.exception.DataConflictException; +import org.openepics.names.service.exception.DataDeletedException; +import org.openepics.names.service.exception.DataExistException; +import org.openepics.names.service.exception.DataNotAvailableException; +import org.openepics.names.service.exception.DataNotCorrectException; +import org.openepics.names.service.exception.DataNotFoundException; +import org.openepics.names.service.exception.DataNotValidException; +import org.openepics.names.service.exception.InputNotAvailableException; +import org.openepics.names.service.exception.InputNotCorrectException; +import org.openepics.names.service.exception.InputNotValidException; /** * Unit tests for ExceptionUtil class. @@ -34,65 +44,133 @@ import org.springframework.http.HttpStatus; public class ExceptionUtilTest { /** - * Test of create service http status exception. + * Test of create data conflict exception. */ @Test - public void createServiceHttpStatusException() { - ServiceHttpStatusException exception = ExceptionUtil.createServiceHttpStatusException(null, null, null, null, null); - assertNull(exception.getHttpStatus()); + public void createDataConflictException() { + DataConflictException exception = ExceptionUtil.createDataConflictException(null, null, null); + assertNotNull(exception); assertNull(exception.getMessage()); assertNull(exception.getDetails()); assertNull(exception.getField()); assertNull(exception.getCause()); + } - exception = ExceptionUtil.createServiceHttpStatusExceptionBadRequest(null, null, null); - assertEquals(HttpStatus.BAD_REQUEST, exception.getHttpStatus()); + /** + * Test of create data deleted exception. + */ + @Test + public void createDataDeletedException() { + DataDeletedException exception = ExceptionUtil.createDataDeletedException(null, null, null); + assertNotNull(exception); assertEquals(null, exception.getMessage()); assertEquals(null, exception.getDetails()); assertEquals(null, exception.getField()); - assertEquals(null, exception.getCause()); + assertNull(exception.getCause()); + } - exception = ExceptionUtil.createServiceHttpStatusExceptionUnauthorized(null, null, null); - assertEquals(HttpStatus.UNAUTHORIZED, exception.getHttpStatus()); - assertEquals(null, exception.getMessage()); - assertEquals(null, exception.getDetails()); + /** + * Test of create data exist exception. + */ + @Test + public void createDataExistException() { + DataExistException exception = ExceptionUtil.createDataExistException("1", "2", "3"); + assertNotNull(exception); + assertEquals("1", exception.getMessage()); + assertEquals("2", exception.getDetails()); + assertEquals("3", exception.getField()); + assertNull(exception.getCause()); + } + + /** + * Test of create data not available exception. + */ + @Test + public void createDataNotAvailableException() { + DataNotAvailableException exception = ExceptionUtil.createDataNotAvailableException("1", "2", null); + assertNotNull(exception); + assertEquals("1", exception.getMessage()); + assertEquals("2", exception.getDetails()); assertEquals(null, exception.getField()); - assertEquals(null, exception.getCause()); + assertNull(exception.getCause()); + } - exception = ExceptionUtil.createServiceHttpStatusExceptionForbidden(null, null, null); - assertEquals(HttpStatus.FORBIDDEN, exception.getHttpStatus()); - assertEquals(null, exception.getMessage()); + /** + * Test of create data not correct exception. + */ + @Test + public void createDataNotCorrectException() { + DataNotCorrectException exception = ExceptionUtil.createDataNotCorrectException("1", null, "3"); + assertNotNull(exception); + assertEquals("1", exception.getMessage()); assertEquals(null, exception.getDetails()); - assertEquals(null, exception.getField()); - assertEquals(null, exception.getCause()); + assertEquals("3", exception.getField()); + assertNull(exception.getCause()); + } - exception = ExceptionUtil.createServiceHttpStatusExceptionNotFound(null, null, null); - assertEquals(HttpStatus.NOT_FOUND, exception.getHttpStatus()); - assertEquals(null, exception.getMessage()); + /** + * Test of create data not found exception. + */ + @Test + public void createDataNotFoundException() { + DataNotFoundException exception = ExceptionUtil.createDataNotFoundException("1", null, null); + assertNotNull(exception); + assertEquals("1", exception.getMessage()); assertEquals(null, exception.getDetails()); assertEquals(null, exception.getField()); - assertEquals(null, exception.getCause()); + assertNull(exception.getCause()); + } - exception = ExceptionUtil.createServiceHttpStatusExceptionConflict(null, null, null); - assertEquals(HttpStatus.CONFLICT, exception.getHttpStatus()); + /** + * Test of create data not valid exception. + */ + @Test + public void createDataNotValidException() { + DataNotValidException exception = ExceptionUtil.createDataNotValidException(null, "2", "3"); + assertNotNull(exception); assertEquals(null, exception.getMessage()); - assertEquals(null, exception.getDetails()); + assertEquals("2", exception.getDetails()); + assertEquals("3", exception.getField()); + assertNull(exception.getCause()); + } + + /** + * Test of create input not available exception. + */ + @Test + public void createInputNotAvailableException() { + InputNotAvailableException exception = ExceptionUtil.createInputNotAvailableException(null, "2", null); + assertNotNull(exception); + assertEquals(null, exception.getMessage()); + assertEquals("2", exception.getDetails()); assertEquals(null, exception.getField()); - assertEquals(null, exception.getCause()); + assertNull(exception.getCause()); + } - exception = ExceptionUtil.createServiceHttpStatusExceptionInternalServerError(null, null, null); - assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, exception.getHttpStatus()); + /** + * Test of create input not correct exception. + */ + @Test + public void createInputNotCorrectException() { + InputNotCorrectException exception = ExceptionUtil.createInputNotCorrectException(null, null, "3"); + assertNotNull(exception); assertEquals(null, exception.getMessage()); assertEquals(null, exception.getDetails()); - assertEquals(null, exception.getField()); - assertEquals(null, exception.getCause()); + assertEquals("3", exception.getField()); + assertNull(exception.getCause()); + } - exception = ExceptionUtil.createServiceHttpStatusExceptionNotImplemented(null, null, null); - assertEquals(HttpStatus.NOT_IMPLEMENTED, exception.getHttpStatus()); + /** + * Test of create input not valid exception. + */ + @Test + public void createInputNotValidException() { + InputNotValidException exception = ExceptionUtil.createInputNotValidException(null, null, null); + assertNotNull(exception); assertEquals(null, exception.getMessage()); assertEquals(null, exception.getDetails()); assertEquals(null, exception.getField()); - assertEquals(null, exception.getCause()); + assertNull(exception.getCause()); } } diff --git a/src/test/java/org/openepics/names/util/ValidateUtilTest.java b/src/test/java/org/openepics/names/util/ValidateUtilTest.java index fb233304..f86a5119 100644 --- a/src/test/java/org/openepics/names/util/ValidateUtilTest.java +++ b/src/test/java/org/openepics/names/util/ValidateUtilTest.java @@ -21,15 +21,11 @@ package org.openepics.names.util; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.fail; -import java.util.List; import java.util.UUID; import org.junit.jupiter.api.Test; -import org.openepics.names.repository.model.Subsystem; import org.openepics.names.rest.beans.Type; -import org.springframework.http.HttpStatus; - -import com.google.common.collect.Lists; +import org.openepics.names.service.exception.InputNotAvailableException; /** * Unit tests for ValidateUtil class. @@ -48,10 +44,13 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputComment(null); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("comment is not available", e.getMessage()); + assertEquals(null, e.getDetails()); + assertEquals("comment", e.getField()); assertEquals(null, e.getCause()); + } catch (Exception e) { + fail(); } } /** @@ -62,10 +61,13 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputComment(""); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("comment is not available", e.getMessage()); + assertEquals("", e.getDetails()); + assertEquals("comment", e.getField()); assertEquals(null, e.getCause()); + } catch (Exception e) { + fail(); } } /** @@ -84,10 +86,13 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputDescription(null); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("description is not available", e.getMessage()); + assertEquals(null, e.getDetails()); + assertEquals("description", e.getField()); assertEquals(null, e.getCause()); + } catch (Exception e) { + fail(); } } /** @@ -98,10 +103,13 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputDescription(""); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("description is not available", e.getMessage()); + assertEquals("", e.getDetails()); + assertEquals("description", e.getField()); assertEquals(null, e.getCause()); + } catch (Exception e) { + fail(); } } /** @@ -120,10 +128,13 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputMnemonic(null); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("mnemonic is not available", e.getMessage()); + assertEquals(null, e.getDetails()); + assertEquals("mnemonic", e.getField()); assertEquals(null, e.getCause()); + } catch (Exception e) { + fail(); } } /** @@ -134,10 +145,13 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputMnemonic(""); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("mnemonic is not available", e.getMessage()); + assertEquals("", e.getDetails()); + assertEquals("mnemonic", e.getField()); assertEquals(null, e.getCause()); + } catch (Exception e) { + fail(); } } /** @@ -156,10 +170,13 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputName(null); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("name is not available", e.getMessage()); + assertEquals(null, e.getDetails()); + assertEquals("name", e.getField()); assertEquals(null, e.getCause()); + } catch (Exception e) { + fail(); } } /** @@ -170,10 +187,13 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputName(""); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("name is not available", e.getMessage()); + assertEquals("", e.getDetails()); + assertEquals("name", e.getField()); assertEquals(null, e.getCause()); + } catch (Exception e) { + fail(); } } /** @@ -192,10 +212,13 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputType(null); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("type is not available", e.getMessage()); + assertEquals(null, e.getDetails()); + assertEquals("type", e.getField()); assertEquals(null, e.getCause()); + } catch (Exception e) { + fail(); } } /** @@ -219,10 +242,13 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputUuid(null); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("uuid is not available", e.getMessage()); + assertEquals(null, e.getDetails()); + assertEquals("uuid", e.getField()); assertEquals(null, e.getCause()); + } catch (Exception e) { + fail(); } } /** @@ -233,9 +259,10 @@ public class ValidateUtilTest { try { ValidateUtil.validateInputUuid(""); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("uuid is not available", e.getMessage()); + assertEquals("", e.getDetails()); + assertEquals("uuid", e.getField()); assertEquals(null, e.getCause()); } } @@ -314,8 +341,7 @@ public class ValidateUtilTest { null, null, null, null); fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.BAD_REQUEST, e.getHttpStatus()); + } catch (InputNotAvailableException e) { assertEquals("type is not available", e.getMessage()); assertEquals(null, e.getCause()); } @@ -390,18 +416,4 @@ public class ValidateUtilTest { ValidateUtil.validateStructureElementDataUpdate(null, null, null, null); } - @Test - public void validateDummy() { - final List<Subsystem> subsystems = Lists.newArrayList(); - try { - ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 1, HttpStatus.INTERNAL_SERVER_ERROR, - ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, null, null); - fail(); - } catch (ServiceHttpStatusException e) { - assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, e.getHttpStatus()); - assertEquals("subsystem is not correct", e.getMessage()); - assertEquals(null, e.getCause()); - } - } - } -- GitLab