Commit 81f16056 authored by Dmitry Ermakov's avatar Dmitry Ermakov

Merge branch 'master' into 'issue-28'

# Conflicts:
#   src/main/resources/application.yml
parents 3531f256 e04aad89
Pipeline #365 failed with stage
...@@ -4,6 +4,7 @@ build/ ...@@ -4,6 +4,7 @@ build/
!gradle/wrapper/gradle-wrapper.jar !gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/ !**/src/main/**/build/
!**/src/test/**/build/ !**/src/test/**/build/
*.log
### STS ### ### STS ###
.apt_generated .apt_generated
......
...@@ -3,9 +3,14 @@ package kz.project.printedFormsService.controller; ...@@ -3,9 +3,14 @@ package kz.project.printedFormsService.controller;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import kz.project.printedFormsService.data.dto.DTemplateTypeDto; import kz.project.printedFormsService.data.dto.DTemplateTypeDto;
import kz.project.printedFormsService.logging.ProcessLogger;
import kz.project.printedFormsService.service.DTemplateTypeService; import kz.project.printedFormsService.service.DTemplateTypeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -16,18 +21,31 @@ import static kz.project.printedFormsService.controller.DTemplateTypeController. ...@@ -16,18 +21,31 @@ import static kz.project.printedFormsService.controller.DTemplateTypeController.
@RestController @RestController
@RequestMapping(BASE_PATH) @RequestMapping(BASE_PATH)
@RequiredArgsConstructor
@Slf4j @Slf4j
@Tag(name = "DTemplate Controller", description = "API TemplateService") @Tag(name = "DTemplate Controller", description = "API TemplateService")
public class DTemplateTypeController { public class DTemplateTypeController {
private static final Logger LOGGER = LoggerFactory.getLogger(DTemplateTypeController.class);
public final static String BASE_PATH = "/api/dict"; public final static String BASE_PATH = "/api/dict";
public final static String GET_ALL = "/get/all"; public final static String GET_ALL = "/get/all";
private final DTemplateTypeService service; private final DTemplateTypeService service;
private ProcessLogger processLogger;
@GetMapping("get/all") public DTemplateTypeController(DTemplateTypeService service, ProcessLogger processLogger) {
this.service = service;
this.processLogger = processLogger;
}
@GetMapping("get/all")
@Operation(description = "Метод для получения шаблона по идентификатору") @Operation(description = "Метод для получения шаблона по идентификатору")
public List<DTemplateTypeDto> getDict() { public ResponseEntity getDict() {
return service.getAllTemplateType(); try {
List<DTemplateTypeDto> dtoList = service.getAllTemplateType();
return ResponseEntity.ok(dtoList);
} catch (Exception e){
LOGGER.error(e.getMessage(), e);
processLogger.error(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение типов шаблонов");
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
} }
} }
...@@ -10,10 +10,15 @@ import kz.project.printedFormsService.config.SecurityContextUtils; ...@@ -10,10 +10,15 @@ import kz.project.printedFormsService.config.SecurityContextUtils;
import kz.project.printedFormsService.data.dto.DocumentByDateDto; import kz.project.printedFormsService.data.dto.DocumentByDateDto;
import kz.project.printedFormsService.data.dto.DocumentByTemplateDto; import kz.project.printedFormsService.data.dto.DocumentByTemplateDto;
import kz.project.printedFormsService.exception.ValidationException; import kz.project.printedFormsService.exception.ValidationException;
import kz.project.printedFormsService.logging.ProcessLogger;
import kz.project.printedFormsService.service.DocumentsService; import kz.project.printedFormsService.service.DocumentsService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.aspectj.apache.bcel.generic.LocalVariableGen;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
...@@ -24,16 +29,22 @@ import java.util.List; ...@@ -24,16 +29,22 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@RestController @RestController
@RequiredArgsConstructor
@Slf4j @Slf4j
@Tag(name = "Documents Controller", description = "API DocumentsService") @Tag(name = "Documents Controller", description = "API DocumentsService")
public class DocumentsController { public class DocumentsController {
private static final Logger LOGGER = LoggerFactory.getLogger(DocumentsController.class);
private final DocumentsService documentsService; private final DocumentsService documentsService;
public static final String BASE_PATH = "/api/documents"; public static final String BASE_PATH = "/api/documents";
public static final String BY_DAY = BASE_PATH + "/by-day"; public static final String BY_DAY = BASE_PATH + "/by-day";
public static final String BY_TEMPLATE = BASE_PATH + "/by-template"; public static final String BY_TEMPLATE = BASE_PATH + "/by-template";
private ProcessLogger processLogger;
public DocumentsController(DocumentsService documentsService,
ProcessLogger processLogger) {
this.documentsService = documentsService;
this.processLogger = processLogger;
}
@GetMapping(BY_DAY) @GetMapping(BY_DAY)
@Operation(description = "Метод для получения данных по общему количеству генерации по всем доступным пользователю шаблонам") @Operation(description = "Метод для получения данных по общему количеству генерации по всем доступным пользователю шаблонам")
...@@ -60,18 +71,24 @@ public class DocumentsController { ...@@ -60,18 +71,24 @@ public class DocumentsController {
}) })
}) })
public ResponseEntity<DocumentByDateDto> getDocumentsCountByDay( public ResponseEntity getDocumentsCountByDay(
@RequestParam("startDate") @RequestParam("startDate")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate, @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate,
@RequestParam("endDate") @RequestParam("endDate")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate) { @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate) {
Map<String, List<String>> projectRoleMap = SecurityContextUtils.getProjectRoleMap(); try {
DocumentByDateDto documentsByDate = documentsService.getDocumentCountsByDate(startDate, endDate, projectRoleMap.keySet()); processLogger.start(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение данных генераций всех отчётов за диапазон времени");
return ResponseEntity.ok(documentsByDate); Map<String, List<String>> projectRoleMap = SecurityContextUtils.getProjectRoleMap();
DocumentByDateDto documentsByDate = documentsService.getDocumentCountsByDate(startDate, endDate, projectRoleMap.keySet());
processLogger.finish(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение данных генераций всех отчётов за диапазон времени");
return ResponseEntity.ok(documentsByDate);
} catch (Exception e){
LOGGER.error(e.getMessage(), e);
processLogger.start(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение данных генераций всех отчётов за диапазон времени");
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
} }
@GetMapping(BY_TEMPLATE) @GetMapping(BY_TEMPLATE)
@Operation(description = "Метод для получения данных по общему количеству генерации по каждому доступному пользователю шаблонам") @Operation(description = "Метод для получения данных по общему количеству генерации по каждому доступному пользователю шаблонам")
@ApiResponses(value = { @ApiResponses(value = {
...@@ -84,8 +101,6 @@ public class DocumentsController { ...@@ -84,8 +101,6 @@ public class DocumentsController {
schema = @Schema(implementation = DocumentByTemplateDto.class)) schema = @Schema(implementation = DocumentByTemplateDto.class))
}), }),
@ApiResponse( @ApiResponse(
responseCode = "400", responseCode = "400",
description = "Ошибка валидации параметров запроса", description = "Ошибка валидации параметров запроса",
...@@ -97,13 +112,21 @@ public class DocumentsController { ...@@ -97,13 +112,21 @@ public class DocumentsController {
}) })
}) })
public ResponseEntity<DocumentByTemplateDto> getDocumentsCountByTemplate( public ResponseEntity getDocumentsCountByTemplate(
@RequestParam("startDate") @RequestParam("startDate")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate, @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate,
@RequestParam("endDate") @RequestParam("endDate")
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate) { @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate) {
Map<String, List<String>> projectRoleMap = SecurityContextUtils.getProjectRoleMap(); try {
DocumentByTemplateDto documentCountsByTemplate = documentsService.getDocumentCountsByTemplate(startDate, endDate, projectRoleMap.keySet()); processLogger.start(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение данных генераций по шаблону за диапазон времени");
return ResponseEntity.ok(documentCountsByTemplate); Map<String, List<String>> projectRoleMap = SecurityContextUtils.getProjectRoleMap();
DocumentByTemplateDto documentCountsByTemplate = documentsService.getDocumentCountsByTemplate(startDate, endDate, projectRoleMap.keySet());
processLogger.start(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение данных генераций по шаблону за диапазон времени");
return ResponseEntity.ok(documentCountsByTemplate);
} catch (Exception e){
LOGGER.error(e.getMessage(), e);
processLogger.start(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение данных генераций по шаблону за диапазон времени");
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
} }
} }
...@@ -3,6 +3,10 @@ package kz.project.printedFormsService.converter; ...@@ -3,6 +3,10 @@ package kz.project.printedFormsService.converter;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.JsonPath;
import com.nimbusds.jwt.JWT;
import com.nimbusds.jwt.JWTParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.convert.converter.Converter; import org.springframework.core.convert.converter.Converter;
import org.springframework.security.authentication.AbstractAuthenticationToken; import org.springframework.security.authentication.AbstractAuthenticationToken;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
...@@ -11,10 +15,22 @@ import org.springframework.security.oauth2.jwt.Jwt; ...@@ -11,10 +15,22 @@ import org.springframework.security.oauth2.jwt.Jwt;
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken; import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Component @Component
public class JwtAuthConverter implements Converter<Jwt, AbstractAuthenticationToken> { public class JwtAuthConverter implements Converter<Jwt, AbstractAuthenticationToken> {
public static Map<String, Object> getTokenClaims(String token) throws ParseException {
JWT parsedJwt = JWTParser.parse(token);
return parsedJwt.getJWTClaimsSet().getClaims();
}
public static String getUsername(String token) throws ParseException {
Map<String, Object> claims = getTokenClaims(token);
if (claims == null) return null;
return (String) claims.get("preferred_username");
}
@Override @Override
public AbstractAuthenticationToken convert(Jwt jwt) { public AbstractAuthenticationToken convert(Jwt jwt) {
......
package kz.project.printedFormsService.logging;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.datetime.DateFormatter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.ZoneId;
import java.util.Locale;
@Configuration
public class LoggingConfig {
private static final String DEFAULT_LOCALE = "ru_RU";
private static final String DEFAULT_DATE_FORMAT = "dd:MM:yyyy hh:mm:ss";
@Value("${process-logger.date-format}")
private String dateFormatString;
@Value("${process-logger.locale}")
private String localeString;
@Bean
public DateFormatter dateFormatter(){
return new DateFormatter(dateFormatString != null ? dateFormatString : DEFAULT_DATE_FORMAT);
}
@Bean
public Locale locale(){
return parseLocale(localeString != null ? localeString : DEFAULT_LOCALE);
}
@Bean
public ZoneId zoneId(){
return ZoneId.systemDefault();
}
private Locale parseLocale(String localeString){
String[] localeParts = localeString.split("_");
if (localeParts.length == 1) localeParts[1] = "";
return new Locale(localeParts[0], localeParts[1]);
}
}
package kz.project.printedFormsService.logging;
import jakarta.servlet.http.HttpServletRequest;
import kz.project.printedFormsService.converter.JwtAuthConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.io.File;
import java.io.FileWriter;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.Locale;
/* Класс для логгирования старта и завершения процессов в формате SIEM и на естественном языке */
@Component
public class ProcessLogger {
private static final Logger LOGGER = LoggerFactory.getLogger(ProcessLogger.class);
private static final String DEFAULT_FILENAME = "siem-processes.log";
private static final String DEFAULT_DELIMITER = " ";
@Value("${process-logger.file-name}")
private String logFileName;
@Value("${process-logger.delimiter}")
private String delimiter;
@Value("${spring.application.name}")
private String serviceName;
@Value("${process-logger.start-prefix}")
private String startPrefix;
@Value("${process-logger.finish-prefix}")
private String finishPrefix;
@Value("${process-logger.error-prefix}")
private String errorPrefix;
private DateFormatter dateFormatter;
private Locale locale;
private ZoneId zoneId;
public ProcessLogger(DateFormatter dateFormatter, Locale locale, ZoneId zoneId) {
this.dateFormatter = dateFormatter;
this.locale = locale;
this.zoneId = zoneId;
}
public void start(Class javaClass, String processName, String description){
write(javaClass, processName, startPrefix, description);
}
public void finish(Class javaClass, String processName, String description){
write(javaClass, processName, finishPrefix, description);
}
public void error(Class javaClass, String processName, String description){
write(javaClass, processName, errorPrefix, description);
}
public void write(Class javaClass, String processName, String descriptionPrefix, String description){
try {
HttpServletRequest request = getRequest();
String delimiter = this.delimiter != null ? this.delimiter : DEFAULT_DELIMITER;
String fileName = this.logFileName != null ? this.logFileName : DEFAULT_FILENAME;
String ip = request.getRemoteAddr();
String userName = null;
String authHeader = request.getHeader(HttpHeaders.AUTHORIZATION);
if (authHeader != null){
userName = JwtAuthConverter.getUsername(authHeader.substring(7));
} else {
authHeader = request.getHeader("X-API-Key");
if (authHeader != null) userName = authHeader.substring(9);
}
String logRow = String.format(
"%s%s%s.%s%s%s%s%s%s%s%s%s%s",
serviceName,
delimiter,
javaClass.getSimpleName(),
processName,
delimiter,
getTodayDateTimeString(),
delimiter,
userName != null ? userName : "system-request",
delimiter,
ip,
delimiter,
descriptionPrefix,
description
);
File file = new File(fileName);
boolean isCreated = file.createNewFile();
FileWriter writer = new FileWriter(fileName, true);
writer.append(logRow).append(System.lineSeparator());
writer.close();
} catch (Exception e){
LOGGER.error(e.getMessage(), e);
}
}
private String getTodayDateTimeString(){
Instant instant = new Date().toInstant();
ZonedDateTime zonedDateTime = instant.atZone(this.zoneId);
Date today = Date.from(zonedDateTime.toInstant());
return dateFormatter.print(today, locale);
}
private HttpServletRequest getRequest(){
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
}
}
package kz.project.printedFormsService.service.impl; package kz.project.printedFormsService.service.impl;
import kz.project.printedFormsService.controller.TemplateController;
import kz.project.printedFormsService.data.dto.DTemplateTypeDto; import kz.project.printedFormsService.data.dto.DTemplateTypeDto;
import kz.project.printedFormsService.data.entity.dict.DTemplateType; import kz.project.printedFormsService.data.entity.dict.DTemplateType;
import kz.project.printedFormsService.data.repository.DTemplateTypeRepository; import kz.project.printedFormsService.data.repository.DTemplateTypeRepository;
import kz.project.printedFormsService.logging.ProcessLogger;
import kz.project.printedFormsService.service.DTemplateTypeService; import kz.project.printedFormsService.service.DTemplateTypeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -10,12 +12,19 @@ import org.springframework.stereotype.Service; ...@@ -10,12 +12,19 @@ import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@Service @Service
@RequiredArgsConstructor
public class DTemplateTypeServiceImpl implements DTemplateTypeService { public class DTemplateTypeServiceImpl implements DTemplateTypeService {
private final DTemplateTypeRepository repository; private final DTemplateTypeRepository repository;
private ProcessLogger processLogger;
public DTemplateTypeServiceImpl(DTemplateTypeRepository repository, ProcessLogger processLogger) {
this.repository = repository;
this.processLogger = processLogger;
}
public List<DTemplateTypeDto> getAllTemplateType(){ public List<DTemplateTypeDto> getAllTemplateType(){
processLogger.start(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение типов шаблонов");
List<DTemplateType> all = repository.findAll(); List<DTemplateType> all = repository.findAll();
processLogger.finish(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение типов шаблонов");
return DTemplateTypeDto.toDtoList(all); return DTemplateTypeDto.toDtoList(all);
} }
} }
package kz.project.printedFormsService.service.impl; package kz.project.printedFormsService.service.impl;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import kz.project.printedFormsService.controller.TemplateController;
import kz.project.printedFormsService.data.dto.TemplateDataForReportDto; import kz.project.printedFormsService.data.dto.TemplateDataForReportDto;
import kz.project.printedFormsService.data.dto.TemplateDto; import kz.project.printedFormsService.data.dto.TemplateDto;
import kz.project.printedFormsService.data.dto.TemplateResponseDto; import kz.project.printedFormsService.data.dto.TemplateResponseDto;
...@@ -10,6 +11,7 @@ import kz.project.printedFormsService.data.entity.TemplateEntityVersion; ...@@ -10,6 +11,7 @@ import kz.project.printedFormsService.data.entity.TemplateEntityVersion;
import kz.project.printedFormsService.data.entity.TemplateFileInfoEntity; import kz.project.printedFormsService.data.entity.TemplateFileInfoEntity;
import kz.project.printedFormsService.data.repository.*; import kz.project.printedFormsService.data.repository.*;
import kz.project.printedFormsService.exception.ValidationException; import kz.project.printedFormsService.exception.ValidationException;
import kz.project.printedFormsService.logging.ProcessLogger;
import kz.project.printedFormsService.service.TemplateService; import kz.project.printedFormsService.service.TemplateService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
...@@ -26,7 +28,6 @@ import java.util.List; ...@@ -26,7 +28,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Service @Service
@RequiredArgsConstructor
public class TemplateServiceImpl implements TemplateService { public class TemplateServiceImpl implements TemplateService {
private final TemplateRepository repository; private final TemplateRepository repository;
private final TemplateVersionRepository versionRepository; private final TemplateVersionRepository versionRepository;
...@@ -34,6 +35,21 @@ public class TemplateServiceImpl implements TemplateService { ...@@ -34,6 +35,21 @@ public class TemplateServiceImpl implements TemplateService {
private final TemplateFileInfoRepository fileInfoRepository; private final TemplateFileInfoRepository fileInfoRepository;
private final DocumentRepository documentRepository; private final DocumentRepository documentRepository;
private ProcessLogger processLogger;
public TemplateServiceImpl(TemplateRepository repository,
TemplateVersionRepository versionRepository,
DTemplateTypeRepository dTemplateTypeRepository,
TemplateFileInfoRepository fileInfoRepository,
DocumentRepository documentRepository,
ProcessLogger processLogger) {
this.repository = repository;
this.versionRepository = versionRepository;
this.dTemplateTypeRepository = dTemplateTypeRepository;
this.fileInfoRepository = fileInfoRepository;
this.documentRepository = documentRepository;
this.processLogger = processLogger;
}
@Override @Override
public Map<String, byte[]> getTemplate(Long id) throws ValidationException, JsonProcessingException { public Map<String, byte[]> getTemplate(Long id) throws ValidationException, JsonProcessingException {
...@@ -45,6 +61,7 @@ public class TemplateServiceImpl implements TemplateService { ...@@ -45,6 +61,7 @@ public class TemplateServiceImpl implements TemplateService {
params.put("body", templ.getBody()); params.put("body", templ.getBody());
params.put("header", templ.getHeader()); params.put("header", templ.getHeader());
processLogger.finish(this.getClass(), new Throwable().getStackTrace()[0].getMethodName(), "Получение шаблона по идентификатору");
return params; return params;
} }
...@@ -52,6 +69,8 @@ public class TemplateServiceImpl implements TemplateService { ...@@ -52,6 +69,8 @@ public class TemplateServiceImpl implements TemplateService {
@Override @Override
@Transactional @Transactional
public TemplateDto save(TemplateDto dto, List<MultipartFile> files) throws IOException, ValidationException { public TemplateDto save(TemplateDto dto, List<MultipartFile> files) throws IOException, ValidationException {
processLogger.start(this.getClass(), new Throwable().getStackTrace()[0].getMethodName(), "Сохранение шаблона");
String fieldName = validateData(dto); String fieldName = validateData(dto);
if (fieldName != null) { if (fieldName != null) {
throw new ValidationException("Не переданы обязательные поля: " + fieldName, 13); throw new ValidationException("Не переданы обязательные поля: " + fieldName, 13);
...@@ -62,6 +81,9 @@ public class TemplateServiceImpl implements TemplateService { ...@@ -62,6 +81,9 @@ public class TemplateServiceImpl implements TemplateService {
} }
TemplateEntity templateEntity = createTemplateEntity(dto, files); TemplateEntity templateEntity = createTemplateEntity(dto, files);
TemplateEntity save = repository.save(templateEntity); TemplateEntity save = repository.save(templateEntity);
processLogger.finish(this.getClass(), new Throwable().getStackTrace()[0].getMethodName(), "Сохранение шаблона");
return TemplateDto.toDto(save); return TemplateDto.toDto(save);
} }
...@@ -69,6 +91,8 @@ public class TemplateServiceImpl implements TemplateService { ...@@ -69,6 +91,8 @@ public class TemplateServiceImpl implements TemplateService {
@Override @Override
@Transactional @Transactional
public TemplateResponseDto edit(TemplateDto dto, List<MultipartFile> files) throws IOException, ValidationException { public TemplateResponseDto edit(TemplateDto dto, List<MultipartFile> files) throws IOException, ValidationException {
processLogger.start(this.getClass(), new Throwable().getStackTrace()[0].getMethodName(), "Редактирование шаблона");
String fieldName = validateData(dto); String fieldName = validateData(dto);
if (fieldName != null) { if (fieldName != null) {
throw new ValidationException("Не переданы обязательные поля: " + fieldName, 13); throw new ValidationException("Не переданы обязательные поля: " + fieldName, 13);
...@@ -86,6 +110,8 @@ public class TemplateServiceImpl implements TemplateService { ...@@ -86,6 +110,8 @@ public class TemplateServiceImpl implements TemplateService {
versionRepository.save(new TemplateEntityVersion(existingEntity)); versionRepository.save(new TemplateEntityVersion(existingEntity));
} }
processLogger.finish(this.getClass(), new Throwable().getStackTrace()[0].getMethodName(), "Редактирование шаблона");
return TemplateResponseDto.toDto(repository.save(receivedEntity)); return TemplateResponseDto.toDto(repository.save(receivedEntity));
} }
...@@ -97,7 +123,7 @@ public class TemplateServiceImpl implements TemplateService { ...@@ -97,7 +123,7 @@ public class TemplateServiceImpl implements TemplateService {
throw new ValidationException("Не найден шаблон с таким кодом", 13); throw new ValidationException("Не найден шаблон с таким кодом", 13);
} }
repository.delete(template); repository.delete(template);
processLogger.finish(this.getClass(), new Throwable().getStackTrace()[0].getMethodName(), "Удаление шаблона");
} }
@Override @Override
...@@ -106,7 +132,6 @@ public class TemplateServiceImpl implements TemplateService { ...@@ -106,7 +132,6 @@ public class TemplateServiceImpl implements TemplateService {
else if (isActive) else if (isActive)
return TemplateShortDto.toDtoList(repository.findAllByStatusTrue(pageable)); return TemplateShortDto.toDtoList(repository.findAllByStatusTrue(pageable));
else return TemplateShortDto.toDtoList(repository.findAllByStatusFalse(pageable)); else return TemplateShortDto.toDtoList(repository.findAllByStatusFalse(pageable));
} }
@Override @Override
...@@ -117,10 +142,14 @@ public class TemplateServiceImpl implements TemplateService { ...@@ -117,10 +142,14 @@ public class TemplateServiceImpl implements TemplateService {
@Override @Override
public Page<TemplateDto> getAllTemplateByCode(String code, Pageable pageable) throws ValidationException { public Page<TemplateDto> getAllTemplateByCode(String code, Pageable pageable) throws ValidationException {
processLogger.start(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение всех шаблонов по коду");
if (code != null) { if (code != null) {
Page<TemplateEntity> allByCode = repository.findAllByCode(pageable, code); Page<TemplateEntity> allByCode = repository.findAllByCode(pageable, code);
Page<TemplateEntityVersion> allVersionsByCode = versionRepository.findAllByCode(pageable, code); Page<TemplateEntityVersion> allVersionsByCode = versionRepository.findAllByCode(pageable, code);
processLogger.finish(TemplateController.class, new Throwable().getStackTrace()[0].getMethodName(), "Получение всех шаблонов по коду");
if (allByCode != null && allVersionsByCode != null) if (allByCode != null && allVersionsByCode != null)
return TemplateDto.toDtoList(allByCode, allVersionsByCode); return TemplateDto.toDtoList(allByCode, allVersionsByCode);
......
...@@ -73,6 +73,16 @@ management: ...@@ -73,6 +73,16 @@ management:
beans: beans:
enabled: false enabled: false
process-logger:
file-name: templateService.log
delimiter: " "
date-format: "dd.MM.yyyy HH:mm:ss"
locale: kk_KZ
start-prefix: "Начало процесса: "
finish-prefix: "Конец процесса: "
error-prefix: "Неуспешный процесс: "
gitlab: gitlab:
base-url: ${GITLAB_BASE_PATH:http://gitlab.lan.arta.kz} base-url: ${GITLAB_BASE_PATH:http://gitlab.lan.arta.kz}
token: ${GITLAB_TOKEN:zif-LhgdzuLtpNW7uxYs} token: ${GITLAB_TOKEN:zif-LhgdzuLtpNW7uxYs}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment