find packages method; global exceptions
This commit is contained in:
parent
e7d5ff82f4
commit
999ac42f48
4 changed files with 136 additions and 27 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
package ru.nbch.credit_tracker.config.rest;
|
package ru.nbch.credit_tracker.config.rest;
|
||||||
|
|
||||||
|
import java.nio.charset.Charset;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
|
|
@ -9,15 +10,19 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||||
import org.springframework.web.multipart.MaxUploadSizeExceededException;
|
import org.springframework.web.multipart.MaxUploadSizeExceededException;
|
||||||
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
||||||
import ru.nbch.credit_tracker.entities.user_response.errors.*;
|
import ru.nbch.credit_tracker.entities.user_response.errors.CommonError;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.errors.MonitoringActivePackagesError;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.errors.MonitoringAllPackagesError;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.errors.MonitoringDownloadError;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.errors.MonitoringError;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.errors.MonitoringPackageDeleteError;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.errors.MonitoringReportListError;
|
||||||
import ru.nbch.credit_tracker.enums.SignalError;
|
import ru.nbch.credit_tracker.enums.SignalError;
|
||||||
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
||||||
import ru.nbch.credit_tracker.exceptions.SignalException;
|
import ru.nbch.credit_tracker.exceptions.SignalException;
|
||||||
import ru.nbch.credit_tracker.exceptions.SignalServerException;
|
import ru.nbch.credit_tracker.exceptions.SignalServerException;
|
||||||
import ru.nbch.credit_tracker.utils.error.SimpleMessageResolver;
|
import ru.nbch.credit_tracker.utils.error.SimpleMessageResolver;
|
||||||
|
|
||||||
import java.nio.charset.Charset;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestControllerAdvice
|
@RestControllerAdvice
|
||||||
public class GlobalExceptionHandler {
|
public class GlobalExceptionHandler {
|
||||||
|
|
@ -42,34 +47,33 @@ public class GlobalExceptionHandler {
|
||||||
return new ResponseEntity<>(error, headers, HttpStatus.BAD_REQUEST);
|
return new ResponseEntity<>(error, headers, HttpStatus.BAD_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(value = SignalException.class, produces = MediaType.APPLICATION_XML_VALUE)
|
@ExceptionHandler(value = SignalClientException.class, produces = MediaType.APPLICATION_XML_VALUE)
|
||||||
public ResponseEntity<CommonError> handleClientException(SignalException ex) {
|
public ResponseEntity<CommonError> handleClientException(SignalClientException ex) {
|
||||||
|
CommonError err = getCommonError(ex);
|
||||||
|
String packageName = ex.getPackageName();
|
||||||
|
if(packageName != null ) {
|
||||||
|
log.warn("Response error: {}. PackageName: {}", err.getErrorText(), packageName);
|
||||||
|
} else {
|
||||||
|
log.warn("Response error: {}", err.getErrorText());
|
||||||
|
}
|
||||||
|
return new ResponseEntity<>(err, xmlHeaders(), HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExceptionHandler(value = SignalServerException.class, produces = MediaType.APPLICATION_XML_VALUE)
|
||||||
|
public ResponseEntity<CommonError> handleServerException(SignalServerException ex) {
|
||||||
|
CommonError commonError = getCommonError(ex);
|
||||||
|
Exception cause = ex.getCause();
|
||||||
|
log.error(cause.getMessage(), cause);
|
||||||
|
return new ResponseEntity<>(commonError, xmlHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
private HttpHeaders xmlHeaders() {
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(new MediaType("application", "xml", Charset.forName(encoding)));
|
headers.setContentType(new MediaType("application", "xml", Charset.forName(encoding)));
|
||||||
|
return headers;
|
||||||
String errorText = messageResolver.resolve(ex.getErrorMessage());
|
|
||||||
|
|
||||||
CommonError commonError = getCommonError(ex);
|
|
||||||
commonError.setStatus("error");
|
|
||||||
commonError.setErrorCode(ex.getErrorMessage().getSubject().getCode());
|
|
||||||
commonError.setErrorText(errorText);
|
|
||||||
|
|
||||||
if (ex instanceof SignalClientException) {
|
|
||||||
String packageName = ((SignalClientException) ex).getPackageName();
|
|
||||||
if(packageName != null ) {
|
|
||||||
log.warn("Response error: {}. PackageName: {}", errorText, packageName);
|
|
||||||
} else {
|
|
||||||
log.warn("Response error: {}", errorText);
|
|
||||||
}
|
|
||||||
return new ResponseEntity<>(commonError, headers, HttpStatus.BAD_REQUEST);
|
|
||||||
} else {
|
|
||||||
Exception cause = ((SignalServerException) ex).getCause();
|
|
||||||
log.error(cause.getMessage(), cause);
|
|
||||||
return new ResponseEntity<>(commonError, headers, HttpStatus.INTERNAL_SERVER_ERROR);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static CommonError getCommonError(SignalException ex) {
|
private CommonError getCommonError(SignalException ex) {
|
||||||
CommonError commonError;
|
CommonError commonError;
|
||||||
switch (ex.getErrorFormat()) {
|
switch (ex.getErrorFormat()) {
|
||||||
case MonitoringError -> commonError = new MonitoringError();
|
case MonitoringError -> commonError = new MonitoringError();
|
||||||
|
|
@ -80,6 +84,10 @@ public class GlobalExceptionHandler {
|
||||||
case MonitoringPackageDeleteError -> commonError = new MonitoringPackageDeleteError();
|
case MonitoringPackageDeleteError -> commonError = new MonitoringPackageDeleteError();
|
||||||
default -> throw new IllegalStateException("Unsupported error format: " + ex.getErrorFormat());
|
default -> throw new IllegalStateException("Unsupported error format: " + ex.getErrorFormat());
|
||||||
}
|
}
|
||||||
|
commonError.setStatus("error");
|
||||||
|
commonError.setErrorCode(ex.getErrorMessage().getSubject().getCode());
|
||||||
|
String errorText = messageResolver.resolve(ex.getErrorMessage());
|
||||||
|
commonError.setErrorText(errorText);
|
||||||
return commonError;
|
return commonError;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,21 @@ package ru.nbch.credit_tracker.controller;
|
||||||
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.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_request.active_packages.MonitoringActivePackagesRequest;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_request.all_packages.MonitoringAllPackagesRequest;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.active_packages.MonitoringActivePackagesResponse;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.all_packages.MonitoringAllPackagesResponse;
|
||||||
import ru.nbch.credit_tracker.entities.user_response.success.MonitoringSetupResponse;
|
import ru.nbch.credit_tracker.entities.user_response.success.MonitoringSetupResponse;
|
||||||
|
import ru.nbch.credit_tracker.enums.SignalError;
|
||||||
|
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
||||||
|
import ru.nbch.credit_tracker.exceptions.SignalException;
|
||||||
import ru.nbch.credit_tracker.facade.SignalFacadeV2;
|
import ru.nbch.credit_tracker.facade.SignalFacadeV2;
|
||||||
|
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.serverExcp;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/v2/signal")
|
@RequestMapping("/api/v2/signal")
|
||||||
|
|
@ -26,5 +35,31 @@ public class SignalControllerV2 {
|
||||||
return ResponseEntity.ok().body(new MonitoringSetupResponse());
|
return ResponseEntity.ok().body(new MonitoringSetupResponse());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping(value = "/active_packages", consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
|
||||||
|
public ResponseEntity<MonitoringActivePackagesResponse> findActivePackages(@RequestBody MonitoringActivePackagesRequest activePackagesRequest) {
|
||||||
|
try {
|
||||||
|
return signalFacadeV2.findActivePackages(activePackagesRequest);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throwOrWrap(SignalError.ERROR_013, XmlErrorFormat.MonitoringActivePackagesError, e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping(value = "/all_packages", consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
|
||||||
|
public ResponseEntity<MonitoringAllPackagesResponse> findAllPackages(@RequestBody MonitoringAllPackagesRequest allPackagesRequest) {
|
||||||
|
try {
|
||||||
|
return signalFacadeV2.findAllPackages(allPackagesRequest);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throwOrWrap(SignalError.ERROR_013, XmlErrorFormat.MonitoringAllPackagesError, e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void throwOrWrap(SignalError error, XmlErrorFormat specific, Exception ex) {
|
||||||
|
if (ex instanceof SignalException) {
|
||||||
|
throw (SignalException) ex;
|
||||||
|
}
|
||||||
|
throw serverExcp(error, specific, ex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,4 +4,5 @@ public interface CommonError {
|
||||||
void setStatus(String status);
|
void setStatus(String status);
|
||||||
void setErrorCode(String errorCode);
|
void setErrorCode(String errorCode);
|
||||||
void setErrorText(String errorText);
|
void setErrorText(String errorText);
|
||||||
|
String getErrorText();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,24 @@ package ru.nbch.credit_tracker.facade;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
import javax.xml.stream.XMLStreamException;
|
import javax.xml.stream.XMLStreamException;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import ru.nbch.credit_tracker.component.MonitoringRequestValidator;
|
import ru.nbch.credit_tracker.component.MonitoringRequestValidator;
|
||||||
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
||||||
|
import ru.nbch.credit_tracker.entities.dto.UserPackage;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_request.active_packages.MonitoringActivePackagesRequest;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_request.all_packages.MonitoringAllPackagesRequest;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.active_packages.MonitoringActivePackagesResponse;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.active_packages.Package;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.active_packages.Packages;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.all_packages.MonitoringAllPackagesResponse;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.all_packages.PackageAll;
|
||||||
|
import ru.nbch.credit_tracker.entities.user_response.all_packages.PackagesAll;
|
||||||
import ru.nbch.credit_tracker.enums.SignalError;
|
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;
|
||||||
|
|
@ -100,4 +111,58 @@ public class SignalFacadeV2 {
|
||||||
throw serverExcp(SignalError.ERROR_013, XmlErrorFormat.MonitoringError, e);
|
throw serverExcp(SignalError.ERROR_013, XmlErrorFormat.MonitoringError, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ResponseEntity<MonitoringActivePackagesResponse> findActivePackages(MonitoringActivePackagesRequest activePackagesRequest) throws Exception {
|
||||||
|
AuthorizationService.AuthResult authResult = authorizationService.findAuthInfo(activePackagesRequest.getUserId(), activePackagesRequest.getPassword());
|
||||||
|
if (!authResult.isSuccess()) {
|
||||||
|
throw clientExcp(authResult.getError(), XmlErrorFormat.MonitoringActivePackagesError);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<UserPackage> activePackages = signalService.findActivePackages(activePackagesRequest.getUserId());
|
||||||
|
if (activePackages.isEmpty()) {
|
||||||
|
throw clientExcp(SignalError.ERROR_015, XmlErrorFormat.MonitoringActivePackagesError);
|
||||||
|
}
|
||||||
|
|
||||||
|
MonitoringActivePackagesResponse response = new MonitoringActivePackagesResponse();
|
||||||
|
response.setStatus("OK");
|
||||||
|
response.setMembercode(activePackagesRequest.getUserId().substring(0, 6));
|
||||||
|
Packages packages = new Packages();
|
||||||
|
activePackages.forEach(data -> {
|
||||||
|
Package pack = new Package();
|
||||||
|
pack.setPackageName(data.getPackageName());
|
||||||
|
pack.setCreatedAt(data.getCreatedAt() != null ? data.getCreatedAt().toString() : null);
|
||||||
|
packages.getPackages().add(pack);
|
||||||
|
});
|
||||||
|
response.setPackages(packages);
|
||||||
|
return ResponseEntity.ok(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResponseEntity<MonitoringAllPackagesResponse> findAllPackages(MonitoringAllPackagesRequest allPackagesRequest) throws Exception {
|
||||||
|
AuthorizationService.AuthResult authResult = authorizationService.findAuthInfo(allPackagesRequest.getUserId(), allPackagesRequest.getPassword());
|
||||||
|
if (!authResult.isSuccess()) {
|
||||||
|
throw clientExcp(authResult.getError(), XmlErrorFormat.MonitoringAllPackagesError);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<UserPackage> activePackages = signalService.findAllPackages(allPackagesRequest.getUserId());
|
||||||
|
if (activePackages.isEmpty()) {
|
||||||
|
throw clientExcp(SignalError.ERROR_019, XmlErrorFormat.MonitoringAllPackagesError);
|
||||||
|
}
|
||||||
|
|
||||||
|
MonitoringAllPackagesResponse response = new MonitoringAllPackagesResponse();
|
||||||
|
response.setStatus("OK");
|
||||||
|
response.setMembercode(allPackagesRequest.getUserId().substring(0, 6));
|
||||||
|
PackagesAll packages = new PackagesAll();
|
||||||
|
activePackages.forEach(data -> {
|
||||||
|
PackageAll pack = new PackageAll();
|
||||||
|
pack.setPackageName(data.getPackageName());
|
||||||
|
pack.setCreatedAt(data.getCreatedAt() != null ? data.getCreatedAt().toString() : null);
|
||||||
|
pack.setStatus(data.getStatus());
|
||||||
|
if (data.getStatus().equals(Status.DELETED.name())) {
|
||||||
|
pack.setDeactivatedAt(data.getDeactivatedAt() != null ? data.getDeactivatedAt().toString() : null);
|
||||||
|
}
|
||||||
|
packages.getPackages().add(pack);
|
||||||
|
});
|
||||||
|
response.setPackages(packages);
|
||||||
|
return ResponseEntity.ok(response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue