Added getting list of packages
This commit is contained in:
parent
c48f2dbf55
commit
4a9c59b0e3
5 changed files with 124 additions and 1 deletions
|
|
@ -8,6 +8,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||
import ru.nbch.credit_tracker.entities.request.active_packages.MonitoringActivePackagesRequest;
|
||||
import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse;
|
||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringPackageDeleteResponse;
|
||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringReportListResponse;
|
||||
import ru.nbch.credit_tracker.facade.SignalFacade;
|
||||
|
||||
@RestController
|
||||
|
|
@ -35,5 +36,10 @@ public class SignalController {
|
|||
return signalFacade.deletePackage(username, packageName);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/report_list", params = {"username", "packageName"}, produces = MediaType.APPLICATION_XML_VALUE)
|
||||
public ResponseEntity<MonitoringReportListResponse> getReportList(@RequestParam("username") String username, @RequestParam("packageName") String packageName) {
|
||||
return signalFacade.getReportList(username, packageName);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
package ru.nbch.credit_tracker.entities.response.errors;
|
||||
|
||||
import jakarta.xml.bind.annotation.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "MonitoringReportListResponse", propOrder = {
|
||||
"status",
|
||||
"errorCode",
|
||||
"errorText"
|
||||
})
|
||||
@XmlRootElement(name = "MonitoringReportListResponse")
|
||||
public class MonitoringReportListError implements CommonError {
|
||||
|
||||
@XmlElement(name = "Status", required = true)
|
||||
protected String status;
|
||||
@XmlElement(name = "ErrorCode",required = true)
|
||||
protected String errorCode;
|
||||
@XmlElement(name = "ErrorText",required = true)
|
||||
protected String errorText;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
package ru.nbch.credit_tracker.entities.response.success;
|
||||
|
||||
import jakarta.xml.bind.annotation.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "MonitoringPackageDeleteResponse", propOrder = {
|
||||
"packageName",
|
||||
"reports"
|
||||
})
|
||||
@XmlRootElement(name = "MonitoringReportListResponse")
|
||||
public class MonitoringReportListResponse {
|
||||
|
||||
@XmlElement(name = "PackageName", required = true)
|
||||
protected String packageName;
|
||||
|
||||
@XmlElement(name = "Reports", required = true)
|
||||
protected Reports reports;
|
||||
|
||||
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "", propOrder = {
|
||||
"reports"
|
||||
})
|
||||
public static class Reports {
|
||||
|
||||
@XmlElement(name = "Report", required = true)
|
||||
protected List<String> reports;
|
||||
|
||||
public List<String> getReports() {
|
||||
if (reports == null) {
|
||||
reports = new ArrayList<>();
|
||||
}
|
||||
return this.reports;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -15,7 +15,7 @@ public enum SignalError {
|
|||
ERROR_009("009", "Превышен допустимый размер пакета"),
|
||||
ERROR_010("010", "Идентификатор субъекта (Id) не соответствует допустимому формату"),
|
||||
ERROR_011("011", "Получен невалидный XML"),
|
||||
|
||||
ERROR_012("012", "Пакет не найден"),
|
||||
ERROR_013("013", "На стороне сервиса произошла ошибка, попробуйте повторить запрос позже или сообщите в техническую поддержку"),
|
||||
ERROR_015("015", "Клиент с указанным membercode не найден"),
|
||||
ERROR_016("016", "Нет активного пакета с именем "),
|
||||
|
|
|
|||
|
|
@ -13,7 +13,9 @@ 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.errors.MonitoringActivePackagesError;
|
||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringPackageDeleteError;
|
||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringReportListError;
|
||||
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.MonitoringResponse;
|
||||
import ru.nbch.credit_tracker.entities.signal_package.Signals;
|
||||
import ru.nbch.credit_tracker.enums.SignalError;
|
||||
|
|
@ -29,6 +31,7 @@ import ru.nbch.credit_tracker.service.xml.jaxb.IXmlProcessor;
|
|||
import ru.nbch.credit_tracker.service.xml.jaxb.XmlUtilService;
|
||||
import ru.nbch.credit_tracker.utils.ValidationUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
|
@ -300,4 +303,48 @@ public class SignalFacade {
|
|||
throw new SignalErrorException(SignalError.ERROR_017, null, new MonitoringPackageDeleteError(), false);
|
||||
}
|
||||
}
|
||||
|
||||
public ResponseEntity<MonitoringReportListResponse> getReportList(String username, String packageName) {
|
||||
try {
|
||||
if (!signalService.isPackageExists(username, packageName)) {
|
||||
throw new SignalErrorException(SignalError.ERROR_016, packageName, new MonitoringReportListError(), true);
|
||||
}
|
||||
|
||||
String memberCode = username.substring(0, 6);
|
||||
String filePrefix = (memberCode + "_" + packageName).toUpperCase();
|
||||
String dirPath = config.getLoadDir() + File.separator + memberCode;
|
||||
File folder = new File(dirPath);
|
||||
|
||||
if (folder.exists() && folder.isDirectory()) {
|
||||
MonitoringReportListResponse.Reports reports = new MonitoringReportListResponse.Reports();
|
||||
File[] files = folder.listFiles();
|
||||
if (files == null) {
|
||||
throw new SignalErrorException(SignalError.ERROR_012, packageName, new MonitoringReportListError(), true);
|
||||
}
|
||||
for (File file : files) {
|
||||
if (file.isFile() && file.getName().startsWith(filePrefix)) {
|
||||
reports.getReports().add(file.getName());
|
||||
}
|
||||
}
|
||||
|
||||
if (reports.getReports().isEmpty()) {
|
||||
throw new SignalErrorException(SignalError.ERROR_012, packageName, new MonitoringReportListError(), true);
|
||||
} else {
|
||||
MonitoringReportListResponse response = new MonitoringReportListResponse();
|
||||
response.setPackageName(packageName);
|
||||
response.setReports(reports);
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
} else {
|
||||
log.error("Пакет {} был найден в бд для memberCode {}, но ни одного архива не было найдено в папке {}", packageName, username, dirPath);
|
||||
throw new SignalErrorException(SignalError.ERROR_013, packageName, new MonitoringReportListError(), true);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
if (e instanceof SignalErrorException) {
|
||||
throw (SignalErrorException) e;
|
||||
}
|
||||
log.error(e.getMessage(), e);
|
||||
throw new SignalErrorException(SignalError.ERROR_013, null, new MonitoringReportListError(), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue