Added SignalServerException; Update ExceptionUtils and GlobalExceptionHandler; Used ExceptionUtils in SignalFacade instead of throwing SignalErrorException
This commit is contained in:
parent
fb8da59b1b
commit
43897c6cbb
8 changed files with 101 additions and 117 deletions
|
|
@ -1,39 +1,25 @@
|
||||||
package ru.nbch.credit_tracker.config.rest;
|
package ru.nbch.credit_tracker.config.rest;
|
||||||
|
|
||||||
import java.nio.charset.Charset;
|
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||||
import ru.nbch.credit_tracker.entities.response.errors.CommonError;
|
import ru.nbch.credit_tracker.entities.response.errors.*;
|
||||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringActivePackagesError;
|
|
||||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringDownloadError;
|
|
||||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringError;
|
|
||||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringPackageDeleteError;
|
|
||||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringReportListError;
|
|
||||||
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
||||||
import ru.nbch.credit_tracker.exceptions.SignalErrorException;
|
import ru.nbch.credit_tracker.exceptions.SignalException;
|
||||||
import ru.nbch.credit_tracker.utils.error.SimpleMessageResolver;
|
import ru.nbch.credit_tracker.utils.error.SimpleMessageResolver;
|
||||||
|
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
@RestControllerAdvice
|
@RestControllerAdvice
|
||||||
public class GlobalExceptionHandler {
|
public class GlobalExceptionHandler {
|
||||||
|
|
||||||
private final SimpleMessageResolver messageResolver = new SimpleMessageResolver();
|
private final SimpleMessageResolver messageResolver = new SimpleMessageResolver();
|
||||||
@ExceptionHandler(value = SignalErrorException.class, produces = MediaType.APPLICATION_XML_VALUE)
|
|
||||||
public ResponseEntity<CommonError> handleInvalidUser(SignalErrorException ex) {
|
|
||||||
HttpHeaders headers = new HttpHeaders();
|
|
||||||
headers.setContentType(new MediaType("application", "xml", Charset.forName("windows-1251")));
|
|
||||||
if (ex.isUserError()) {
|
|
||||||
return new ResponseEntity<>(ex.getError(), headers, HttpStatus.BAD_REQUEST);
|
|
||||||
} else {
|
|
||||||
return new ResponseEntity<>(ex.getError(), headers, HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ExceptionHandler(value = SignalClientException.class, produces = MediaType.APPLICATION_XML_VALUE)
|
@ExceptionHandler(value = SignalException.class, produces = MediaType.APPLICATION_XML_VALUE)
|
||||||
public ResponseEntity<CommonError> handleClientException(SignalClientException ex) {
|
public ResponseEntity<CommonError> handleClientException(SignalException ex) {
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(new MediaType("application", "xml", Charset.forName("windows-1251")));
|
headers.setContentType(new MediaType("application", "xml", Charset.forName("windows-1251")));
|
||||||
CommonError commonError = getCommonError(ex);
|
CommonError commonError = getCommonError(ex);
|
||||||
|
|
@ -41,10 +27,14 @@ public class GlobalExceptionHandler {
|
||||||
commonError.setErrorCode(ex.getErrorMessage().getSubject().getErrorCode());
|
commonError.setErrorCode(ex.getErrorMessage().getSubject().getErrorCode());
|
||||||
commonError.setErrorText(messageResolver.resolve(ex.getErrorMessage()));
|
commonError.setErrorText(messageResolver.resolve(ex.getErrorMessage()));
|
||||||
|
|
||||||
|
if (ex instanceof SignalClientException) {
|
||||||
return new ResponseEntity<>(commonError, headers, HttpStatus.BAD_REQUEST);
|
return new ResponseEntity<>(commonError, headers, HttpStatus.BAD_REQUEST);
|
||||||
|
} else {
|
||||||
|
return new ResponseEntity<>(commonError, headers, HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static CommonError getCommonError(SignalClientException ex) {
|
private static CommonError getCommonError(SignalException ex) {
|
||||||
CommonError commonError;
|
CommonError commonError;
|
||||||
switch (ex.getErrorFormat()) {
|
switch (ex.getErrorFormat()) {
|
||||||
case MonitoringError -> commonError = new MonitoringError();
|
case MonitoringError -> commonError = new MonitoringError();
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,9 @@ import ru.nbch.credit_tracker.enums.EnumKeyMessage;
|
||||||
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class SignalClientException extends RuntimeException {
|
public class SignalClientException extends SignalException {
|
||||||
|
|
||||||
private final EnumKeyMessage errorMessage;
|
public SignalClientException(EnumKeyMessage errorMessage, XmlErrorFormat errorFormat) {
|
||||||
private final XmlErrorFormat errorFormat;
|
super(errorMessage, errorFormat);
|
||||||
|
|
||||||
public SignalClientException(EnumKeyMessage errorMessage,
|
|
||||||
XmlErrorFormat errorFormat) {
|
|
||||||
this.errorMessage = errorMessage;
|
|
||||||
this.errorFormat = errorFormat;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
package ru.nbch.credit_tracker.exceptions;
|
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import ru.nbch.credit_tracker.entities.response.errors.CommonError;
|
|
||||||
import ru.nbch.credit_tracker.enums.SignalError;
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
public class SignalErrorException extends RuntimeException {
|
|
||||||
|
|
||||||
private final boolean isUserError;
|
|
||||||
private final CommonError error;
|
|
||||||
|
|
||||||
public SignalErrorException(SignalError signalError, String tag, CommonError error, boolean isUserError) {
|
|
||||||
this.isUserError = isUserError;
|
|
||||||
this.error = createErrorMessage(error, signalError, tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
private CommonError createErrorMessage(CommonError errorMessage, SignalError error, String tag) {
|
|
||||||
errorMessage.setStatus("error");
|
|
||||||
errorMessage.setErrorCode(error.getCode());
|
|
||||||
if (tag != null) {
|
|
||||||
errorMessage.setErrorText(error.getKey() + " " + tag);
|
|
||||||
} else {
|
|
||||||
errorMessage.setErrorText(error.getKey());
|
|
||||||
}
|
|
||||||
return errorMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
package ru.nbch.credit_tracker.exceptions;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import ru.nbch.credit_tracker.enums.EnumKeyMessage;
|
||||||
|
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class SignalException extends RuntimeException {
|
||||||
|
private final EnumKeyMessage errorMessage;
|
||||||
|
private final XmlErrorFormat errorFormat;
|
||||||
|
|
||||||
|
public SignalException(EnumKeyMessage errorMessage,
|
||||||
|
XmlErrorFormat errorFormat) {
|
||||||
|
this.errorMessage = errorMessage;
|
||||||
|
this.errorFormat = errorFormat;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
package ru.nbch.credit_tracker.exceptions;
|
||||||
|
|
||||||
|
import ru.nbch.credit_tracker.enums.EnumKeyMessage;
|
||||||
|
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
||||||
|
|
||||||
|
public class SignalServerException extends SignalException {
|
||||||
|
|
||||||
|
public SignalServerException(EnumKeyMessage errorMessage, XmlErrorFormat errorFormat) {
|
||||||
|
super(errorMessage, errorFormat);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -12,7 +12,6 @@ import ru.nbch.credit_tracker.entities.request.active_packages.MonitoringActiveP
|
||||||
import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest;
|
import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest;
|
||||||
import ru.nbch.credit_tracker.entities.request.monitoring_request.Subject;
|
import ru.nbch.credit_tracker.entities.request.monitoring_request.Subject;
|
||||||
import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse;
|
import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse;
|
||||||
import ru.nbch.credit_tracker.entities.response.errors.*;
|
|
||||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringPackageDeleteResponse;
|
import ru.nbch.credit_tracker.entities.response.success.MonitoringPackageDeleteResponse;
|
||||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringReportListResponse;
|
import ru.nbch.credit_tracker.entities.response.success.MonitoringReportListResponse;
|
||||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse;
|
import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse;
|
||||||
|
|
@ -21,7 +20,6 @@ import ru.nbch.credit_tracker.enums.SignalError;
|
||||||
import ru.nbch.credit_tracker.enums.Status;
|
import ru.nbch.credit_tracker.enums.Status;
|
||||||
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
||||||
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
||||||
import ru.nbch.credit_tracker.exceptions.SignalErrorException;
|
|
||||||
import ru.nbch.credit_tracker.service.SignalService;
|
import ru.nbch.credit_tracker.service.SignalService;
|
||||||
import ru.nbch.credit_tracker.service.indic.PhoneService;
|
import ru.nbch.credit_tracker.service.indic.PhoneService;
|
||||||
import ru.nbch.credit_tracker.service.scoring.AuthorizationService;
|
import ru.nbch.credit_tracker.service.scoring.AuthorizationService;
|
||||||
|
|
@ -42,7 +40,8 @@ import java.util.concurrent.ExecutorService;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipInputStream;
|
import java.util.zip.ZipInputStream;
|
||||||
|
|
||||||
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.excp;
|
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.clientExcp;
|
||||||
|
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.serverExcp;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -74,12 +73,8 @@ public class SignalFacade {
|
||||||
|
|
||||||
public ResponseEntity<MonitoringResponse> setupMonitoring(MultipartFile file) {
|
public ResponseEntity<MonitoringResponse> setupMonitoring(MultipartFile file) {
|
||||||
// первичные валидации
|
// первичные валидации
|
||||||
if (file.isEmpty()) {
|
if (file.isEmpty() || !isZipFile(file)) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_001, null, new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_001, XmlErrorFormat.MonitoringError);
|
||||||
}
|
|
||||||
|
|
||||||
if (!isZipFile(file)) {
|
|
||||||
throw new SignalErrorException(SignalError.ERROR_001, null, new MonitoringError(), true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Валидация Архива на количетсво файлов, размер и расширение
|
// Валидация Архива на количетсво файлов, размер и расширение
|
||||||
|
|
@ -90,10 +85,10 @@ public class SignalFacade {
|
||||||
zipInputStream = new ZipInputStream(file.getInputStream());
|
zipInputStream = new ZipInputStream(file.getInputStream());
|
||||||
Optional<ZipEntry> xmlFileEntry = ZipUtils.extractValidEntry(zipInputStream);
|
Optional<ZipEntry> xmlFileEntry = ZipUtils.extractValidEntry(zipInputStream);
|
||||||
if (xmlFileEntry.isEmpty()) {
|
if (xmlFileEntry.isEmpty()) {
|
||||||
throw excp(SignalError.ERROR_001, XmlErrorFormat.MonitoringError);
|
throw clientExcp(SignalError.ERROR_001, XmlErrorFormat.MonitoringError);
|
||||||
}
|
}
|
||||||
if (xmlFileEntry.get().getSize() > MAX_XML_FILE_SIZE) {
|
if (xmlFileEntry.get().getSize() > MAX_XML_FILE_SIZE) {
|
||||||
throw excp(SignalError.ERROR_009, XmlErrorFormat.MonitoringError);
|
throw clientExcp(SignalError.ERROR_009, XmlErrorFormat.MonitoringError);
|
||||||
}
|
}
|
||||||
|
|
||||||
zipInputStream.close();
|
zipInputStream.close();
|
||||||
|
|
@ -108,7 +103,7 @@ public class SignalFacade {
|
||||||
}
|
}
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
//todo throw new SignalServerException(e);
|
//todo throw new SignalServerException(e);
|
||||||
throw excp(SignalError.ERROR_100, XmlErrorFormat.MonitoringError);
|
throw clientExcp(SignalError.ERROR_100, XmlErrorFormat.MonitoringError);
|
||||||
} finally {
|
} finally {
|
||||||
if (zipInputStream != null) {
|
if (zipInputStream != null) {
|
||||||
try {
|
try {
|
||||||
|
|
@ -124,7 +119,7 @@ public class SignalFacade {
|
||||||
// валидация xml
|
// валидация xml
|
||||||
try {
|
try {
|
||||||
validateMonitoringRequest(monitoringRequest);
|
validateMonitoringRequest(monitoringRequest);
|
||||||
} catch (SignalErrorException e) {
|
} catch (SignalClientException e) {
|
||||||
signalService.rejectPackage(monitoringRequest);
|
signalService.rejectPackage(monitoringRequest);
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
@ -134,22 +129,22 @@ public class SignalFacade {
|
||||||
AuthorizationService.AuthResult authResult = authorizationService.findAuthInfo(monitoringRequest.getUserId(), monitoringRequest.getPassword());
|
AuthorizationService.AuthResult authResult = authorizationService.findAuthInfo(monitoringRequest.getUserId(), monitoringRequest.getPassword());
|
||||||
if (!authResult.isSuccess()) {
|
if (!authResult.isSuccess()) {
|
||||||
signalService.rejectPackage(monitoringRequest);
|
signalService.rejectPackage(monitoringRequest);
|
||||||
throw new SignalErrorException(authResult.getError(), null, new MonitoringError(), true);
|
throw clientExcp(authResult.getError(), XmlErrorFormat.MonitoringError);
|
||||||
}
|
}
|
||||||
|
|
||||||
// проверка на уникальность пакета
|
// проверка на уникальность пакета
|
||||||
if (signalService.isPackageNotUnique(monitoringRequest)) {
|
if (signalService.isPackageNotUnique(monitoringRequest)) {
|
||||||
signalService.rejectPackage(monitoringRequest);
|
signalService.rejectPackage(monitoringRequest);
|
||||||
throw new SignalErrorException(SignalError.ERROR_007, null, new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_007, XmlErrorFormat.MonitoringError);
|
||||||
}
|
}
|
||||||
|
|
||||||
packageId = signalService.registerPackage(monitoringRequest);
|
packageId = signalService.registerPackage(monitoringRequest);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (e instanceof SignalErrorException) {
|
if (e instanceof SignalClientException) {
|
||||||
throw (SignalErrorException) e;
|
throw (SignalClientException) e;
|
||||||
}
|
}
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
throw new SignalErrorException(SignalError.ERROR_100, null, new MonitoringError(), false);
|
throw serverExcp(SignalError.ERROR_100, XmlErrorFormat.MonitoringError);
|
||||||
}
|
}
|
||||||
|
|
||||||
// в отдельном потоке запускаем поиск фидов и расчет флагов просрочек
|
// в отдельном потоке запускаем поиск фидов и расчет флагов просрочек
|
||||||
|
|
@ -158,9 +153,9 @@ public class SignalFacade {
|
||||||
return ResponseEntity.ok().body(new MonitoringResponse());
|
return ResponseEntity.ok().body(new MonitoringResponse());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateMonitoringRequest(MonitoringRequest request) throws SignalErrorException {
|
private void validateMonitoringRequest(MonitoringRequest request) throws SignalClientException {
|
||||||
if (request == null) {
|
if (request == null) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_011, null, new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_011, XmlErrorFormat.MonitoringError);
|
||||||
}
|
}
|
||||||
|
|
||||||
validateReruqredTags(request);
|
validateReruqredTags(request);
|
||||||
|
|
@ -168,44 +163,44 @@ public class SignalFacade {
|
||||||
validateTagsTypes(request);
|
validateTagsTypes(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateReruqredTags(MonitoringRequest request) throws SignalErrorException {
|
private void validateReruqredTags(MonitoringRequest request) throws SignalClientException {
|
||||||
if (request.getUserId() == null) {
|
if (request.getUserId() == null) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_002, "UserId", new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_002, XmlErrorFormat.MonitoringError, "UserId");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.getPackageName() == null) {
|
if (request.getPackageName() == null) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_002, "PackageName", new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_002, XmlErrorFormat.MonitoringError, "PackageName");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.getPassword() == null) {
|
if (request.getPassword() == null) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_002, "Password", new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_002, XmlErrorFormat.MonitoringError, "Password");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.getSubjects() == null) {
|
if (request.getSubjects() == null) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_002, "Subjects", new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_002, XmlErrorFormat.MonitoringError, "Subjects");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.getSubjects().getSubject().isEmpty()) {
|
if (request.getSubjects().getSubject().isEmpty()) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_002, "Subject", new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_002, XmlErrorFormat.MonitoringError, "Subject");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateTagsTypes(MonitoringRequest request) throws SignalErrorException {
|
private void validateTagsTypes(MonitoringRequest request) throws SignalClientException {
|
||||||
if (!ValidationUtil.validatePackageName(request.getPackageName())) {
|
if (!ValidationUtil.validatePackageName(request.getPackageName())) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_008, null, new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_008, XmlErrorFormat.MonitoringError, "Subject");
|
||||||
}
|
}
|
||||||
|
|
||||||
Set<String> uniqueIds = new HashSet<>();
|
Set<String> uniqueIds = new HashSet<>();
|
||||||
for (Subject subject : request.getSubjects().getSubject()) {
|
for (Subject subject : request.getSubjects().getSubject()) {
|
||||||
if (!ValidationUtil.validatePhone(subject.getClientId())) {
|
if (!ValidationUtil.validatePhone(subject.getClientId())) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_003, null, new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_003, XmlErrorFormat.MonitoringError);
|
||||||
}
|
}
|
||||||
if (!ValidationUtil.validateNPId(subject.getId())) {
|
if (!ValidationUtil.validateNPId(subject.getId())) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_010, null, new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_010, XmlErrorFormat.MonitoringError);
|
||||||
}
|
}
|
||||||
// проверка на уникальность Id внутри одного пакета
|
// проверка на уникальность Id внутри одного пакета
|
||||||
if (!uniqueIds.add(subject.getId())) {
|
if (!uniqueIds.add(subject.getId())) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_004, subject.getId(), new MonitoringError(), true);
|
throw clientExcp(SignalError.ERROR_004, XmlErrorFormat.MonitoringError, subject.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -242,27 +237,27 @@ public class SignalFacade {
|
||||||
try {
|
try {
|
||||||
AuthorizationService.AuthResult authResult = authorizationService.findAuthInfo(activePackagesRequest.getUserId(), activePackagesRequest.getPassword());
|
AuthorizationService.AuthResult authResult = authorizationService.findAuthInfo(activePackagesRequest.getUserId(), activePackagesRequest.getPassword());
|
||||||
if (!authResult.isSuccess()) {
|
if (!authResult.isSuccess()) {
|
||||||
throw new SignalErrorException(authResult.getError(), null, new MonitoringActivePackagesError(), true);
|
throw clientExcp(authResult.getError(), XmlErrorFormat.MonitoringActivePackagesError);
|
||||||
}
|
}
|
||||||
MonitoringActivePackagesResponse response = signalService.findActivePackages(activePackagesRequest.getUserId());
|
MonitoringActivePackagesResponse response = signalService.findActivePackages(activePackagesRequest.getUserId());
|
||||||
if (response != null) {
|
if (response != null) {
|
||||||
return ResponseEntity.ok(response);
|
return ResponseEntity.ok(response);
|
||||||
} else {
|
} else {
|
||||||
throw new SignalErrorException(SignalError.ERROR_015, null, new MonitoringActivePackagesError(), true);
|
throw clientExcp(SignalError.ERROR_015, XmlErrorFormat.MonitoringActivePackagesError);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (e instanceof SignalErrorException) {
|
if (e instanceof SignalClientException) {
|
||||||
throw (SignalErrorException) e;
|
throw (SignalClientException) e;
|
||||||
}
|
}
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
throw new SignalErrorException(SignalError.ERROR_013, null, new MonitoringActivePackagesError(), false);
|
throw serverExcp(SignalError.ERROR_013, XmlErrorFormat.MonitoringActivePackagesError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseEntity<MonitoringPackageDeleteResponse> deletePackage(String username, String packageName) {
|
public ResponseEntity<MonitoringPackageDeleteResponse> deletePackage(String username, String packageName) {
|
||||||
try {
|
try {
|
||||||
if (!signalService.isPackageExists(username, packageName)) {
|
if (!signalService.isPackageExists(username, packageName)) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_016, packageName, new MonitoringPackageDeleteError(), true);
|
throw clientExcp(SignalError.ERROR_016, XmlErrorFormat.MonitoringPackageDeleteError, packageName);
|
||||||
}
|
}
|
||||||
MonitoringPackageDeleteResponse response = signalService.deletePackage(username, packageName);
|
MonitoringPackageDeleteResponse response = signalService.deletePackage(username, packageName);
|
||||||
|
|
||||||
|
|
@ -270,18 +265,18 @@ public class SignalFacade {
|
||||||
log.info("Package {} deleted", packageName);
|
log.info("Package {} deleted", packageName);
|
||||||
return ResponseEntity.ok(response);
|
return ResponseEntity.ok(response);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (e instanceof SignalErrorException) {
|
if (e instanceof SignalClientException) {
|
||||||
throw (SignalErrorException) e;
|
throw (SignalClientException) e;
|
||||||
}
|
}
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
throw new SignalErrorException(SignalError.ERROR_017, null, new MonitoringPackageDeleteError(), false);
|
throw serverExcp(SignalError.ERROR_017, XmlErrorFormat.MonitoringPackageDeleteError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResponseEntity<MonitoringReportListResponse> getReportList(String username, String packageName) {
|
public ResponseEntity<MonitoringReportListResponse> getReportList(String username, String packageName) {
|
||||||
try {
|
try {
|
||||||
if (!signalService.isPackageExists(username, packageName)) {
|
if (!signalService.isPackageExists(username, packageName)) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_016, packageName, new MonitoringReportListError(), true);
|
throw clientExcp(SignalError.ERROR_016, XmlErrorFormat.MonitoringReportListError, packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
String memberCode = username.substring(0, 6);
|
String memberCode = username.substring(0, 6);
|
||||||
|
|
@ -293,7 +288,7 @@ public class SignalFacade {
|
||||||
MonitoringReportListResponse.Reports reports = new MonitoringReportListResponse.Reports();
|
MonitoringReportListResponse.Reports reports = new MonitoringReportListResponse.Reports();
|
||||||
File[] files = folder.listFiles();
|
File[] files = folder.listFiles();
|
||||||
if (files == null) {
|
if (files == null) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_012, packageName, new MonitoringReportListError(), true);
|
throw clientExcp(SignalError.ERROR_012, XmlErrorFormat.MonitoringReportListError, packageName);
|
||||||
}
|
}
|
||||||
for (File file : files) {
|
for (File file : files) {
|
||||||
if (file.isFile() && file.getName().startsWith(filePrefix)) {
|
if (file.isFile() && file.getName().startsWith(filePrefix)) {
|
||||||
|
|
@ -302,7 +297,7 @@ public class SignalFacade {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reports.getReports().isEmpty()) {
|
if (reports.getReports().isEmpty()) {
|
||||||
throw new SignalErrorException(SignalError.ERROR_012, packageName, new MonitoringReportListError(), true);
|
throw clientExcp(SignalError.ERROR_012, XmlErrorFormat.MonitoringReportListError, packageName);
|
||||||
} else {
|
} else {
|
||||||
MonitoringReportListResponse response = new MonitoringReportListResponse();
|
MonitoringReportListResponse response = new MonitoringReportListResponse();
|
||||||
response.setPackageName(packageName);
|
response.setPackageName(packageName);
|
||||||
|
|
@ -311,14 +306,14 @@ public class SignalFacade {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.error("Пакет {} был найден в бд для memberCode {}, но ни одного архива не было найдено в папке {}", packageName, username, dirPath);
|
log.error("Пакет {} был найден в бд для memberCode {}, но ни одного архива не было найдено в папке {}", packageName, username, dirPath);
|
||||||
throw new SignalErrorException(SignalError.ERROR_013, packageName, new MonitoringReportListError(), true);
|
throw clientExcp(SignalError.ERROR_013, XmlErrorFormat.MonitoringReportListError, packageName);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (e instanceof SignalErrorException) {
|
if (e instanceof SignalClientException) {
|
||||||
throw (SignalErrorException) e;
|
throw (SignalClientException) e;
|
||||||
}
|
}
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
throw new SignalErrorException(SignalError.ERROR_013, null, new MonitoringReportListError(), false);
|
throw serverExcp(SignalError.ERROR_013, XmlErrorFormat.MonitoringReportListError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -334,15 +329,15 @@ public class SignalFacade {
|
||||||
return ResponseEntity.ok().body(new FileUrlResource(file.getPath()));
|
return ResponseEntity.ok().body(new FileUrlResource(file.getPath()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new SignalErrorException(SignalError.ERROR_014, null, new MonitoringDownloadError(), true);
|
throw clientExcp(SignalError.ERROR_014, XmlErrorFormat.MonitoringDownloadError);
|
||||||
}
|
}
|
||||||
throw new SignalErrorException(SignalError.ERROR_014, null, new MonitoringDownloadError(), true);
|
throw clientExcp(SignalError.ERROR_014, XmlErrorFormat.MonitoringDownloadError);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (e instanceof SignalErrorException) {
|
if (e instanceof SignalClientException) {
|
||||||
throw (SignalErrorException) e;
|
throw (SignalClientException) e;
|
||||||
}
|
}
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
throw new SignalErrorException(SignalError.ERROR_013, null, new MonitoringDownloadError(), false);
|
throw serverExcp(SignalError.ERROR_013, XmlErrorFormat.MonitoringDownloadError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,15 @@ import ru.nbch.credit_tracker.enums.EnumKeyMessage;
|
||||||
import ru.nbch.credit_tracker.enums.IEnumKeyCode;
|
import ru.nbch.credit_tracker.enums.IEnumKeyCode;
|
||||||
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
||||||
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
||||||
|
import ru.nbch.credit_tracker.exceptions.SignalServerException;
|
||||||
|
|
||||||
public class ExceptionUtils {
|
public class ExceptionUtils {
|
||||||
// public static SignalClientException excp(IEnumKeyCode enumKeyCode, XmlErrorFormat xmlErrorFormat) {
|
|
||||||
// return new SignalClientException(new EnumKeyMessage(enumKeyCode), xmlErrorFormat);
|
public static SignalClientException clientExcp(IEnumKeyCode enumKeyCode, XmlErrorFormat xmlErrorFormat, Object... args) {
|
||||||
// }
|
|
||||||
public static SignalClientException excp(IEnumKeyCode enumKeyCode, XmlErrorFormat xmlErrorFormat, Object... args) {
|
|
||||||
return new SignalClientException(new EnumKeyMessage(enumKeyCode, args), xmlErrorFormat);
|
return new SignalClientException(new EnumKeyMessage(enumKeyCode, args), xmlErrorFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SignalServerException serverExcp(IEnumKeyCode enumKeyCode, XmlErrorFormat xmlErrorFormat, Object... args) {
|
||||||
|
return new SignalServerException(new EnumKeyMessage(enumKeyCode, args), xmlErrorFormat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
package ru.nbch.credit_tracker.utils.error;
|
package ru.nbch.credit_tracker.utils.error;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import ru.nbch.credit_tracker.enums.EnumKeyMessage;
|
import ru.nbch.credit_tracker.enums.EnumKeyMessage;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
|
||||||
public class SimpleMessageResolver {
|
public class SimpleMessageResolver {
|
||||||
public String resolve(EnumKeyMessage errorMessage) {
|
public String resolve(EnumKeyMessage errorMessage) {
|
||||||
if (errorMessage == null) return "null";
|
if (errorMessage == null) return "null";
|
||||||
return String.format("(%s) args %s", errorMessage.getSubject().getKey(), Arrays.toString(errorMessage.getArgs()));
|
return String.format("%s %s", errorMessage.getSubject().getKey(), Arrays.toString(errorMessage.getArgs()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue