diff --git a/Backend/mocked-services/pom.xml b/Backend/mocked-services/pom.xml
index 0a6ceb7..96e6d0e 100644
--- a/Backend/mocked-services/pom.xml
+++ b/Backend/mocked-services/pom.xml
@@ -7,7 +7,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.3.1.RELEASE
+ 2.7.11
@@ -18,9 +18,10 @@
3.3.0
1.1.6
3.16.1
- 1.3.1.Final
+ 1.5.5.Final
Release11
${project.artifactId}
+ 1.18.26
@@ -57,21 +58,6 @@
org.springframework.boot
spring-boot-starter-data-redis
-
- com.cwbase
- logback-redis-appender
- ${logback-redis-appender.version}
-
-
- redis.clients
- jedis
- ${jedis.version}
-
-
- org.codehaus.jettison
- jettison
- 1.4.1
-
@@ -101,6 +87,11 @@
lombok
${lombok.version}
+
+ org.projectlombok
+ lombok-mapstruct-binding
+ 0.2.0
+
-Amapstruct.defaultComponentModel=spring
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/config/RedisConfig.java b/Backend/mocked-services/src/main/java/com/r11/tools/config/RedisConfig.java
deleted file mode 100644
index c3438d2..0000000
--- a/Backend/mocked-services/src/main/java/com/r11/tools/config/RedisConfig.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.r11.tools.config;
-
-import java.util.Objects;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.core.env.Environment;
-import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
-import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
-import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
-import redis.clients.jedis.JedisPool;
-
-/**
- * Class containing configuration for Redis db client
- * @author Rafał Żukowicz
- */
-@Configuration
-@EnableRedisRepositories
-@PropertySource("classpath:data-access.properties")
-public class RedisConfig {
-
- @Autowired
- private Environment environment;
-
- /**
- * Bean of JedisPool - the Redis client. It stores requests in "the pool" and then fires them at Redis.
- * It's considered super lightweight and fast client variant
- * @return lightweight client of the Redis - the JedisPool
- */
- @Bean
- JedisPool jedisPool(){
- final JedisPool pool = new JedisPool(environment.getProperty("redis.host"),
- Integer.parseInt(environment.getProperty("redis.port")));
- return pool;
- }
-
- /**
- * Bean of a factory for connenction object.
- * It's initialized with Redis db url property and is fed to other methods.
- * @return the factory for RedisTemplates
- */
- @Bean
- JedisConnectionFactory jedisConnectionFactory() {
- RedisStandaloneConfiguration redisStandaloneConfiguration =
- new RedisStandaloneConfiguration(Objects.requireNonNull(environment.getProperty("redis.host")),
- Integer.parseInt(Objects.requireNonNull(environment.getProperty("redis.port"))));
- return new JedisConnectionFactory(redisStandaloneConfiguration);
- }
-
- /**
- * RedisTemplate is the tool to store and retrieve given type (object) of hash from the database.
- * It's like you could store your Java object by just naming it inside database. You might thing about it
- * as of DAO.
- * @return RedisTemplate the redis dao.
- */
- @Bean
- public RedisTemplate redisTemplate() {
- RedisTemplate redisTemplate = new RedisTemplate<>();
- redisTemplate.setConnectionFactory(jedisConnectionFactory());
- redisTemplate.setExposeConnection(true);
- redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
- return redisTemplate;
- }
-
-}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/configuration/WebConfig.java b/Backend/mocked-services/src/main/java/com/r11/tools/configuration/WebConfig.java
new file mode 100644
index 0000000..5364bce
--- /dev/null
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/configuration/WebConfig.java
@@ -0,0 +1,22 @@
+package com.r11.tools.configuration;
+
+import com.r11.tools.interceptor.IncomingMockRequestInterceptor;
+import lombok.AllArgsConstructor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+@AllArgsConstructor
+public class WebConfig implements WebMvcConfigurer{
+
+ private final IncomingMockRequestInterceptor requestInterceptor;
+
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor( requestInterceptor )
+ .addPathPatterns("/api/mock/r/**");
+ }
+
+}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/controller/EventController.java b/Backend/mocked-services/src/main/java/com/r11/tools/controller/EventController.java
deleted file mode 100644
index 81ff153..0000000
--- a/Backend/mocked-services/src/main/java/com/r11/tools/controller/EventController.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.r11.tools.controller;
-
-import com.r11.tools.model.EventRequestDto;
-import com.r11.tools.service.EtrackService;
-import lombok.AllArgsConstructor;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import java.time.LocalDateTime;
-import java.util.UUID;
-
-/**
- * It's the REST api for {@link com.r11.tools.model.Event}
- * @author Gabriel Modzelewski
- */
-@RestController
-@RequestMapping(path = "/api/event")
-@AllArgsConstructor
-public class EventController {
- private final EtrackService service;
-
- /**
- * Returns the list of Events in given time bracket.
- * The list of objects is received via {@link EventRequestDto}, which contains time brackets,
- * as well as the key - uuid.
- * @param event EventRequestDto object that contains data needed to query the database
- * @return list of {@link com.r11.tools.model.Event}
- */
- @PostMapping
- public ResponseEntity filterHistory(@RequestBody EventRequestDto event){
- return new ResponseEntity(service.getEventsByDateTimeAndBusinessKeys(event), HttpStatus.OK);
- }
-
- /**
- * Returns the list of Events of last 24h from given date.
- * @param uuid unique id of message list
- * @param messageId unique id of message in message list
- * @return list of {@link com.r11.tools.model.Event}
- */
- @GetMapping(path = "/{uuid}/{messageId}")
- public ResponseEntity getLastDay(@PathVariable UUID uuid,
- @PathVariable Integer messageId){
- LocalDateTime requestTime = LocalDateTime.now();
- LocalDateTime dayBeforeRequest = requestTime.minusDays(1L);
- EventRequestDto eventRequestDto = EventRequestDto.builder()
- .clientUUID(uuid)
- .mockedResponseId(messageId)
- .localDateTimeFrom(dayBeforeRequest)
- .localDateTimeTo(requestTime)
- .build();
- return new ResponseEntity(service.getEventsByDateTimeAndBusinessKeys(eventRequestDto), HttpStatus.OK);
- }
-
-
-}
-
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java
index 38d0bc3..184f5e7 100644
--- a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java
@@ -3,13 +3,14 @@ package com.r11.tools.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.r11.tools.model.MockedMessageDto;
import com.r11.tools.service.KlausService;
-import com.r11.tools.utilis.BusinessKey;
-import com.r11.tools.utilis.TrackingClient;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.springframework.http.*;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
@@ -18,6 +19,7 @@ import java.util.*;
/**
* Returns the homepage and provides the api for javascript async requests.
* @author Gabriel Modzelewski
+ * @author Mikołaj Widła
*/
@RestController
@RequestMapping(path = "/api/mock")
@@ -28,7 +30,7 @@ public class MockController {
@ExceptionHandler(Exception.class)
public void errorHandler(Exception ex){
- log.error(ex.getStackTrace());
+ log.error(Arrays.toString(ex.getStackTrace()));
}
/**
@@ -175,22 +177,14 @@ public class MockController {
/**
* It's one of the most important features - the bread and butter of the Mocked Service. It's link that allows
* to receive mocked response from the server and use it to mock!
- * @param requestEntity Logs the data of request
* @param clientUUID the key-uuid of given set of messages
* @param mockedResponseId unique id of given message
* @return
*/
@GetMapping(value = "/r/{clientUUID}/{mockedResponseId}")
- public ResponseEntity getMockedResponse(RequestEntity requestEntity,
+ public ResponseEntity getMockedResponse(
@PathVariable UUID clientUUID,
@PathVariable int mockedResponseId) {
- TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse - request",
- BusinessKey.CLIENT_UUID, String.valueOf(clientUUID),
- BusinessKey.MESSAGE_ID, String.valueOf(mockedResponseId)));
- // log.info(requestEntity.toString().replaceAll("\"", "\\\\\"").substring(1).replaceAll("\n",""));
- TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse - response",
- BusinessKey.CLIENT_UUID, String.valueOf(clientUUID),
- BusinessKey.MESSAGE_ID, String.valueOf(mockedResponseId)));
MockedMessageDto mockedMessageDto = klausService.getMockedResponse(clientUUID, mockedResponseId);
HttpHeaders httpHeaders = new HttpHeaders();
if (mockedMessageDto.getHttpHeaders() != null) mockedMessageDto.getHttpHeaders().forEach(httpHeaders::set);
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/controller/RequestHistoryController.java b/Backend/mocked-services/src/main/java/com/r11/tools/controller/RequestHistoryController.java
new file mode 100644
index 0000000..8ce8581
--- /dev/null
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/controller/RequestHistoryController.java
@@ -0,0 +1,70 @@
+package com.r11.tools.controller;
+
+import com.r11.tools.mappers.RequestHistoryMapper;
+import com.r11.tools.model.HistoryRequestModel;
+import com.r11.tools.model.RequestHistory;
+import com.r11.tools.model.RequestHistoryDTO;
+import com.r11.tools.service.RequestHistoryService;
+import lombok.AllArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+/**
+ * It's the REST api for {@link RequestHistory}
+ * @author Gabriel Modzelewski
+ * @author Mikołaj Widła
+ */
+@RestController
+@RequestMapping(path = "/api/event")
+@AllArgsConstructor
+public class RequestHistoryController {
+ private final RequestHistoryService service;
+ private final RequestHistoryMapper mapper;
+
+ /**
+ * Returns the list of Events in given time bracket.
+ * The list of objects is received via {@link RequestHistoryDTO}, which contains time brackets,
+ * as well as the key - uuid.
+ * @param historyRequestModel EventRequestDto object that contains data needed to query the database
+ * @return list of {@link RequestHistory}
+ */
+ @PostMapping
+ public ResponseEntity> filterHistory(@RequestBody HistoryRequestModel historyRequestModel){
+ return ResponseEntity.ok(
+ service.getHistoryRecordsBetweenDatesAndByUUIDAndMessageId(historyRequestModel)
+ .stream()
+ .map(mapper::requestHistoryToRequestHistoryDTO)
+ .collect(Collectors.toList())
+ );
+ }
+
+ /**
+ * Returns the list of Events of last 24h from given date.
+ * @param uuid unique id of message list
+ * @param messageId unique id of message in message list
+ * @return list of {@link RequestHistory}
+ */
+ @GetMapping(path = "/{uuid}/{messageId}")
+ public ResponseEntity> getLastDay(@PathVariable UUID uuid,
+ @PathVariable Integer messageId){
+ LocalDateTime requestTime = LocalDateTime.now();
+ LocalDateTime dayBeforeRequest = requestTime.minusDays(1L);
+ List requestHistory = service.getHistoryRecordsBetweenDatesAndByUUIDAndMessageId(
+ HistoryRequestModel.builder()
+ .localDateTimeFrom(dayBeforeRequest)
+ .localDateTimeTo(requestTime)
+ .clientUUID(uuid)
+ .mockedResponseId(messageId)
+ .build()
+ ).stream()
+ .map(mapper::requestHistoryToRequestHistoryDTO)
+ .collect(Collectors.toList());
+ return ResponseEntity.ok(requestHistory);
+ }
+}
+
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/interceptor/IncomingMockRequestInterceptor.java b/Backend/mocked-services/src/main/java/com/r11/tools/interceptor/IncomingMockRequestInterceptor.java
new file mode 100644
index 0000000..ed6fdc4
--- /dev/null
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/interceptor/IncomingMockRequestInterceptor.java
@@ -0,0 +1,60 @@
+package com.r11.tools.interceptor;
+
+import com.r11.tools.model.RequestHistoryDTO;
+import com.r11.tools.service.RequestHistoryService;
+import lombok.AllArgsConstructor;
+import org.springframework.http.HttpMethod;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.HandlerMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
+
+@Component
+@AllArgsConstructor
+public class IncomingMockRequestInterceptor implements HandlerInterceptor {
+
+ private final RequestHistoryService historyService;
+
+ @Override
+ public boolean preHandle(HttpServletRequest httpRequest, HttpServletResponse response, Object handler){
+ Map headers = getHeadersFromHttpRequest(httpRequest);
+ Map pathVariable = getPathVariablesFromHttpRequest(httpRequest);
+
+ RequestHistoryDTO historyDTO = RequestHistoryDTO.builder()
+ .httpMethod(HttpMethod.valueOf(httpRequest.getMethod()))
+ .headers( headers )
+ .messageID(Integer.valueOf(pathVariable.get("mockedResponseId")))
+ .clientUUID(UUID.fromString(pathVariable.get("clientUUID")))
+ .dateTimeStamp(LocalDateTime.now())
+ .build();
+ historyService.saveRequest(historyDTO);
+ return true;
+ }
+
+ private Map getHeadersFromHttpRequest( HttpServletRequest httpRequest ){
+ Set headersName = StreamSupport.stream(
+ Spliterators.spliteratorUnknownSize(
+ httpRequest.getHeaderNames().asIterator(),
+ Spliterator.ORDERED
+ ), false
+ ).collect(Collectors.toSet());
+
+ return headersName.stream()
+ .collect(Collectors.toMap(
+ value -> value,
+ httpRequest::getHeader
+ ));
+ }
+
+ private Map getPathVariablesFromHttpRequest( HttpServletRequest httpRequest ){
+ return (Map) httpRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
+ }
+
+
+}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/mappers/RequestHistoryMapper.java b/Backend/mocked-services/src/main/java/com/r11/tools/mappers/RequestHistoryMapper.java
new file mode 100644
index 0000000..5bef839
--- /dev/null
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/mappers/RequestHistoryMapper.java
@@ -0,0 +1,12 @@
+package com.r11.tools.mappers;
+
+import com.r11.tools.model.RequestHistory;
+import com.r11.tools.model.RequestHistoryDTO;
+import org.mapstruct.Mapper;
+
+@Mapper
+public interface RequestHistoryMapper {
+ RequestHistory requestHistoryDTOToRequestHistory(RequestHistoryDTO requestHistoryDTO);
+ RequestHistoryDTO requestHistoryToRequestHistoryDTO(RequestHistory requestHistory);
+
+}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/model/Event.java b/Backend/mocked-services/src/main/java/com/r11/tools/model/Event.java
deleted file mode 100644
index 4bd0b4e..0000000
--- a/Backend/mocked-services/src/main/java/com/r11/tools/model/Event.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.r11.tools.model;
-
-import java.time.LocalDateTime;
-import lombok.*;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.springframework.lang.Nullable;
-
-/**
- * Pojo class for Event entity
- * @author Rafał Żukowicz
- */
-@Data
-@Builder
-@ToString
-@NoArgsConstructor
-@AllArgsConstructor
-public class Event implements Comparable{
-
- @DateTimeFormat(pattern = "yyyy-MM-ddTHH:mm:ss")
- private LocalDateTime dateTimeStamp;
- @Nullable
- private String interfaceName;
- @Nullable
- private String clientUUID;
- @Nullable
- private Integer messageId;
- private String thread;
- private String level;
- @Nullable
- private String message;
-
- @Override
- public int compareTo(Event o) {
- return this.getDateTimeStamp().compareTo(o.getDateTimeStamp()) * -1;
- }
-}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/model/EventRequestDto.java b/Backend/mocked-services/src/main/java/com/r11/tools/model/HistoryRequestModel.java
similarity index 78%
rename from Backend/mocked-services/src/main/java/com/r11/tools/model/EventRequestDto.java
rename to Backend/mocked-services/src/main/java/com/r11/tools/model/HistoryRequestModel.java
index ecfc03f..356ca4c 100644
--- a/Backend/mocked-services/src/main/java/com/r11/tools/model/EventRequestDto.java
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/model/HistoryRequestModel.java
@@ -1,22 +1,19 @@
package com.r11.tools.model;
-import java.time.LocalDateTime;
-import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
-/**
- * Pojo for history query request. Contains information necessary to obtain {@link Event} list
- * @author Rafał Żukowicz
- */
+import java.time.LocalDateTime;
+import java.util.UUID;
+
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
-public class EventRequestDto {
+public class HistoryRequestModel {
private UUID clientUUID;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistory.java b/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistory.java
new file mode 100644
index 0000000..5008be8
--- /dev/null
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistory.java
@@ -0,0 +1,44 @@
+package com.r11.tools.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.redis.core.RedisHash;
+import org.springframework.data.redis.core.index.Indexed;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.http.HttpMethod;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Map;
+
+/**
+ * Pojo class for Event entity
+ * @author Rafał Żukowicz
+ * @author Mikołaj Widła
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@RedisHash("mockHistory")
+public class RequestHistory implements Comparable, Serializable {
+
+ @Id
+ private String id;
+ @DateTimeFormat(pattern = "yyyy-MM-ddTHH:mm:ss")
+ private LocalDateTime dateTimeStamp;
+ @Indexed
+ private String clientUUID;
+ @Indexed
+ private Integer messageID;
+ private Map headers;
+ private HttpMethod httpMethod;
+
+ @Override
+ public int compareTo(RequestHistory o) {
+ return this.getDateTimeStamp().compareTo(o.getDateTimeStamp()) * -1;
+ }
+}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistoryDTO.java b/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistoryDTO.java
new file mode 100644
index 0000000..5f23ea2
--- /dev/null
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/model/RequestHistoryDTO.java
@@ -0,0 +1,32 @@
+package com.r11.tools.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.http.HttpMethod;
+
+import java.time.LocalDateTime;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * Pojo for history query request. Contains information necessary to obtain {@link RequestHistory} list
+ * @author Rafał Żukowicz
+ * @author Mikołaj Widła
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class RequestHistoryDTO {
+
+ private UUID clientUUID;
+ @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
+ private LocalDateTime dateTimeStamp;
+ private Integer messageID;
+ private Map headers;
+ private HttpMethod httpMethod;
+
+}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/repository/EventRepository.java b/Backend/mocked-services/src/main/java/com/r11/tools/repository/EventRepository.java
deleted file mode 100644
index c634732..0000000
--- a/Backend/mocked-services/src/main/java/com/r11/tools/repository/EventRepository.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.r11.tools.repository;
-
-import com.r11.tools.model.Event;
-import com.r11.tools.utilis.BusinessKey;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Map;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * Event entity dao interface
- * @author Rafał Żukowicz
- */
-@Repository
-@Transactional
-public interface EventRepository {
- List findEvents(LocalDateTime localDateTimeFrom, LocalDateTime localDateTimeTo,
- Map businessKeys);
-}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/repository/EventRepositoryImpl.java b/Backend/mocked-services/src/main/java/com/r11/tools/repository/EventRepositoryImpl.java
deleted file mode 100644
index 3de0e2a..0000000
--- a/Backend/mocked-services/src/main/java/com/r11/tools/repository/EventRepositoryImpl.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.r11.tools.repository;
-
-import static com.r11.tools.utilis.RedisAppender.LOG_PREFIX;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.r11.tools.model.Event;
-import com.r11.tools.utilis.BusinessKey;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Repository;
-import redis.clients.jedis.Jedis;
-import redis.clients.jedis.JedisPool;
-
-/**
- * Builds Event list based on logs created via {@link com.r11.tools.utilis.TrackingClient} and {@link com.r11.tools.utilis.RedisAppender}
- * @author Rafał Żukowicz
- */
-@Repository
-@AllArgsConstructor
-public class EventRepositoryImpl implements EventRepository {
- private final JedisPool jedisPool;
- private final ObjectMapper objectMapper;
-
- /**
- * Creates list of {@link Event} based on {@link com.r11.tools.model.EventRequestDto} data via searching logs
- * @param localDateTimeFrom date from which logs are retrieved
- * @param localDateTimeTo date to which logs are retrieved
- * @param businessKeys set keys for redis values
- * @return
- */
- @Override
- public List findEvents(LocalDateTime localDateTimeFrom, LocalDateTime localDateTimeTo,
- Map businessKeys) {
- List eventStrings = findEventsBetweenDates(localDateTimeFrom.toLocalDate(), localDateTimeTo.toLocalDate());
- if (businessKeys.size() > 0) {
- eventStrings = businessKeysFilter(eventStrings, businessKeys);
- }
- List events = parseEvents(eventStrings);
- if (localDateTimeFrom.toLocalTime() != LocalTime.MIN) {
- events = events.stream().filter(event -> event.getDateTimeStamp().compareTo(localDateTimeFrom) >= 0)
- .collect(Collectors.toList());
- }
- return events.stream().filter(event -> event.getDateTimeStamp().compareTo(localDateTimeTo) <= 0)
- .collect(Collectors.toList());
- }
-
- /**
- * Returns logs between given dates
- * @param localDateFrom date from which logs are retrieved
- * @param localDateTo date to which logs are retrieved
- * @return
- */
- private List findEventsBetweenDates(LocalDate localDateFrom, LocalDate localDateTo) {
- try (Jedis jedis = jedisPool.getResource()) {
- return localDateFrom.datesUntil(localDateTo.plusDays(1)).map(day -> LOG_PREFIX + day.toString())
- .map(key -> jedis.lrange(key, 0, -1)).flatMap(Collection::stream).collect(Collectors.toList());
- }
- }
-
- /**
- * Filters keys so only the ones queried are retirned
- * @param events list of logs
- * @param businessKeys set keys for redis values
- * @return filtered list of logs
- */
- private List businessKeysFilter(List events, Map businessKeys) {
- for (Map.Entry entry : businessKeys.entrySet()) {
- String stringPattern = entry.getKey().getReasonPhrase()+ "\"" + ":" + "\"" + entry.getValue() + "\"";
- events = events.stream().filter(s -> s.contains(stringPattern)).collect(Collectors.toList());
- }
- return events;
- }
-
- /**
- * Parses list of logs into list of {@link Event}
- * @param eventStrings list of logs
- * @return list of {@link Event}
- */
- private List parseEvents(List eventStrings) {
- List events = new ArrayList<>();
- for (String eventString : eventStrings) {
- eventString = eventString.replaceAll("\\R", "");
- try {
- events.add(objectMapper.readValue(eventString, Event.class));
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- }
- return events;
- }
-}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/repository/RequestHistoryRepository.java b/Backend/mocked-services/src/main/java/com/r11/tools/repository/RequestHistoryRepository.java
new file mode 100644
index 0000000..8f7973a
--- /dev/null
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/repository/RequestHistoryRepository.java
@@ -0,0 +1,20 @@
+package com.r11.tools.repository;
+
+import com.r11.tools.model.RequestHistory;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * Event entity dao interface
+ * @author Rafał Żukowicz
+ */
+@Repository
+@Transactional
+public interface RequestHistoryRepository extends CrudRepository {
+ List findAllByClientUUIDAndMessageID(
+ String clientUUID,
+ Integer messageID);
+}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/service/EtrackService.java b/Backend/mocked-services/src/main/java/com/r11/tools/service/EtrackService.java
deleted file mode 100644
index 98c6658..0000000
--- a/Backend/mocked-services/src/main/java/com/r11/tools/service/EtrackService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.r11.tools.service;
-
-import com.r11.tools.model.Event;
-import com.r11.tools.model.EventRequestDto;
-import java.util.List;
-import org.springframework.stereotype.Service;
-
-/**
- * Spring service interface for {@link com.r11.tools.controller.EventController}
- * @author Rafał Żukowicz
- */
-@Service
-public interface EtrackService {
- /**
- * Searches for {@link Event} objects between date brackets
- * @param eventsDto object containing required data for request
- * @return list of {@link Event}
- */
- List getEventsByDateTimeAndBusinessKeys(EventRequestDto eventsDto);
-}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/service/EtrackServiceImpl.java b/Backend/mocked-services/src/main/java/com/r11/tools/service/EtrackServiceImpl.java
deleted file mode 100644
index ea49c17..0000000
--- a/Backend/mocked-services/src/main/java/com/r11/tools/service/EtrackServiceImpl.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.r11.tools.service;
-
-import com.r11.tools.model.Event;
-import com.r11.tools.model.EventRequestDto;
-import com.r11.tools.repository.EventRepository;
-import com.r11.tools.utilis.BusinessKey;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Spring Service for {@link com.r11.tools.controller.EventController}. Contains logic required for quering
- * the database for {@link Event} objects
- * @author Rafał Żukowicz
- */
-@Service
-@AllArgsConstructor
-public class EtrackServiceImpl implements EtrackService {
-
- private final EventRepository eventRepository;
-
- /**
- * Adds {@link BusinessKey} to {@link EventRequestDto}
- * in order to create query via{@link com.r11.tools.repository.EventRepositoryImpl}
- * @param eventsDto object containing required data for request
- * @return list of {@link Event}
- */
- @Override
- public List getEventsByDateTimeAndBusinessKeys(EventRequestDto eventsDto) {
- Map businessKeys = new HashMap<>();
- businessKeys.put(BusinessKey.CLIENT_UUID, eventsDto.getClientUUID().toString());
- if (eventsDto.getMockedResponseId() != null){
- businessKeys.put(BusinessKey.MESSAGE_ID, String.valueOf(eventsDto.getMockedResponseId()));
- }
- List events = eventRepository.findEvents(eventsDto.getLocalDateTimeFrom(), eventsDto.getLocalDateTimeTo(),
- businessKeys);
- Collections.sort(events);
- return events;
- }
-}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/service/RequestHistoryService.java b/Backend/mocked-services/src/main/java/com/r11/tools/service/RequestHistoryService.java
new file mode 100644
index 0000000..1f8042a
--- /dev/null
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/service/RequestHistoryService.java
@@ -0,0 +1,23 @@
+package com.r11.tools.service;
+
+import com.r11.tools.controller.RequestHistoryController;
+import com.r11.tools.model.HistoryRequestModel;
+import com.r11.tools.model.RequestHistory;
+import com.r11.tools.model.RequestHistoryDTO;
+import java.util.List;
+import org.springframework.stereotype.Service;
+
+/**
+ * Spring service interface for {@link RequestHistoryController}
+ * @author Rafał Żukowicz
+ */
+@Service
+public interface RequestHistoryService {
+ /**
+ * Searches for {@link RequestHistory} objects between date brackets
+ * @param historyRequestModel object containing required data for request
+ * @return list of {@link RequestHistory}
+ */
+ List getHistoryRecordsBetweenDatesAndByUUIDAndMessageId(HistoryRequestModel historyRequestModel);
+ void saveRequest(RequestHistoryDTO requestDTO);
+}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/service/RequestHistoryServiceImpl.java b/Backend/mocked-services/src/main/java/com/r11/tools/service/RequestHistoryServiceImpl.java
new file mode 100644
index 0000000..68afbd4
--- /dev/null
+++ b/Backend/mocked-services/src/main/java/com/r11/tools/service/RequestHistoryServiceImpl.java
@@ -0,0 +1,59 @@
+package com.r11.tools.service;
+
+import com.r11.tools.controller.RequestHistoryController;
+import com.r11.tools.mappers.RequestHistoryMapper;
+import com.r11.tools.model.HistoryRequestModel;
+import com.r11.tools.model.RequestHistory;
+import com.r11.tools.model.RequestHistoryDTO;
+import com.r11.tools.repository.RequestHistoryRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * Spring Service for {@link RequestHistoryController}. Contains logic required for quering
+ * the database for {@link RequestHistory} objects
+ * @author Rafał Żukowicz
+ * @author Mikołaj Widła
+ */
+@Service
+@AllArgsConstructor
+public class RequestHistoryServiceImpl implements RequestHistoryService {
+
+ private final RequestHistoryRepository repository;
+ private final RequestHistoryMapper requestMapper;
+
+ /**
+ * f
+ * in order to create query via{@link com.r11.tools.repository.RequestHistoryRepository}
+ * @param historyRequestModel object containing required data for request
+ * @return list of {@link RequestHistory}
+ */
+ @Override
+ public List getHistoryRecordsBetweenDatesAndByUUIDAndMessageId(HistoryRequestModel historyRequestModel) {
+ List history = repository.findAllByClientUUIDAndMessageID(
+ historyRequestModel.getClientUUID().toString(),
+ historyRequestModel.getMockedResponseId()
+ );
+ Collections.sort(history);
+
+ return history.stream()
+ .filter( historyRecord -> historyRecord
+ .getDateTimeStamp()
+ .isAfter(historyRequestModel.getLocalDateTimeFrom())
+ ).filter(
+ historyRecord-> historyRecord
+ .getDateTimeStamp()
+ .isBefore(historyRequestModel.getLocalDateTimeTo())
+ )
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public void saveRequest(RequestHistoryDTO requestDTO) {
+ repository.save(requestMapper.requestHistoryDTOToRequestHistory(requestDTO));
+ }
+}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/utilis/BusinessKey.java b/Backend/mocked-services/src/main/java/com/r11/tools/utilis/BusinessKey.java
deleted file mode 100644
index fc90cdd..0000000
--- a/Backend/mocked-services/src/main/java/com/r11/tools/utilis/BusinessKey.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.r11.tools.utilis;
-
-import lombok.AllArgsConstructor;
-
-/**
- * Enum of keys for redis database.
- * @author Rafał Żukowicz
- */
-@AllArgsConstructor
-public enum BusinessKey {
- INTERFACE_NAME("interfaceName"),
- CLIENT_UUID("clientUUID"),
- MESSAGE_ID("messageId");
-
- private final String phrase;
-
- /**
- * Returns string value of given enum variant
- * @return string value of enum
- */
- public String getReasonPhrase() {
- return this.phrase;
- }
-}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/utilis/RedisAppender.java b/Backend/mocked-services/src/main/java/com/r11/tools/utilis/RedisAppender.java
deleted file mode 100644
index 0626848..0000000
--- a/Backend/mocked-services/src/main/java/com/r11/tools/utilis/RedisAppender.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package com.r11.tools.utilis;
-
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.core.Layout;
-import ch.qos.logback.core.UnsynchronizedAppenderBase;
-import com.cwbase.logback.AdditionalField;
-import com.cwbase.logback.JSONEventLayout;
-import java.time.LocalDate;
-import java.util.Arrays;
-import java.util.Iterator;
-import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
-import redis.clients.jedis.Jedis;
-import redis.clients.jedis.JedisPool;
-import redis.clients.jedis.Protocol;
-
-/**
- * Class is used to insert logs directly to Redis. {@link com.release11.klaus.repository.EventRepositoryImpl} is using those logs.
- * @author Rafał Żukowicz
- * @author Gabriel Modzelewski
- */
-public class RedisAppender extends UnsynchronizedAppenderBase {
-
- JedisPool pool;
- JSONEventLayout jsonlayout;
- Layout layout;
- String host = "localhost";
- int port = Protocol.DEFAULT_PORT;
- String key = null;
- int timeout = Protocol.DEFAULT_TIMEOUT;
- String password = null;
- int database = Protocol.DEFAULT_DATABASE;
-
- public static final String LOG_PREFIX = "logstash_";
-
-
- public RedisAppender() {
- jsonlayout = new JSONEventLayout();
- }
-
- /**
- * Appends JedisPool by another log
- * @param event object containing log info
- */
- @Override
- protected void append(ILoggingEvent event) {
- Jedis client = pool.getResource();
- try {
- String json = layout == null ? jsonlayout.doLayout(event) : layout.doLayout(event);
- key = LOG_PREFIX + LocalDate.now();
- client.rpush(key, json);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (client != null) {
- client.close();
- }
- }
- }
-
- @Deprecated
- public String getSource() {
- return jsonlayout.getSource();
- }
-
- @Deprecated
- public void setSource(String source) {
- jsonlayout.setSource(source);
- }
-
- @Deprecated
- public String getSourceHost() {
- return jsonlayout.getSourceHost();
- }
-
- @Deprecated
- public void setSourceHost(String sourceHost) {
- jsonlayout.setSourceHost(sourceHost);
- }
-
- @Deprecated
- public String getSourcePath() {
- return jsonlayout.getSourcePath();
- }
-
- @Deprecated
- public void setSourcePath(String sourcePath) {
- jsonlayout.setSourcePath(sourcePath);
- }
-
- @Deprecated
- public String getTags() {
- if (jsonlayout.getTags() != null) {
- Iterator i = jsonlayout.getTags().iterator();
- StringBuilder sb = new StringBuilder();
- while (i.hasNext()) {
- sb.append(i.next());
- if (i.hasNext()) {
- sb.append(',');
- }
- }
- return sb.toString();
- }
- return null;
- }
-
- @Deprecated
- public void setTags(String tags) {
- if (tags != null) {
- String[] atags = tags.split(",");
- jsonlayout.setTags(Arrays.asList(atags));
- }
- }
-
- @Deprecated
- public String getType() {
- return jsonlayout.getType();
- }
-
- @Deprecated
- public void setType(String type) {
- jsonlayout.setType(type);
- }
-
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public int getPort() {
- return port;
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public String getKey() {
- return key;
- }
-
- public void setKey(String key) {
- this.key = key;
- }
-
- public int getTimeout() {
- return timeout;
- }
-
- public void setTimeout(int timeout) {
- this.timeout = timeout;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public int getDatabase() {
- return database;
- }
-
- public void setDatabase(int database) {
- this.database = database;
- }
-
- @Deprecated
- public void setMdc(boolean flag) {
- jsonlayout.setProperties(flag);
- }
-
- @Deprecated
- public boolean getMdc() {
- return jsonlayout.getProperties();
- }
-
- @Deprecated
- public void setLocation(boolean flag) {
- jsonlayout.setLocationInfo(flag);
- }
-
- @Deprecated
- public boolean getLocation() {
- return jsonlayout.getLocationInfo();
- }
-
- @Deprecated
- public void setCallerStackIndex(int index) {
- jsonlayout.setCallerStackIdx(index);
- }
-
- @Deprecated
- public int getCallerStackIndex() {
- return jsonlayout.getCallerStackIdx();
- }
-
- @Deprecated
- public void addAdditionalField(AdditionalField p) {
- jsonlayout.addAdditionalField(p);
- }
-
- public Layout getLayout() {
- return layout;
- }
-
- public void setLayout(Layout layout) {
- this.layout = layout;
- }
-
- /**
- * Starts new instance of JedisPool
- */
- @Override
- public void start() {
- super.start();
- GenericObjectPoolConfig config = new GenericObjectPoolConfig();
- config.setTestOnBorrow(true);
- pool = new JedisPool(config, host, port, timeout, password, database);
- }
-
- /**
- * Stops and destroys JedisPool object
- */
- @Override
- public void stop() {
- super.stop();
- pool.destroy();
- }
-
-}
diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/utilis/TrackingClient.java b/Backend/mocked-services/src/main/java/com/r11/tools/utilis/TrackingClient.java
deleted file mode 100644
index 3f49400..0000000
--- a/Backend/mocked-services/src/main/java/com/r11/tools/utilis/TrackingClient.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.r11.tools.utilis;
-
-import java.util.Map;
-import org.slf4j.MDC;
-
-/**
- * This static class has one purpose and one purpose only. It logs data about incomming requests.
- * The data from logs is received via {@link com.release11.klaus.repository.EventRepositoryImpl}
- * @author Rafał Żukowski
- */
-public final class TrackingClient {
-
- /**
- * Logs data inside the given map
- * @param businessKeysMap map containing all the information about incomming request
- */
- public static void setBusinessKeys(Map businessKeysMap){
- for (Map.Entry entry : businessKeysMap.entrySet()) {
- MDC.put(entry.getKey().getReasonPhrase(), entry.getValue());
- }
- }
-
-
-}
diff --git a/Backend/mocked-services/src/main/resources/application.properties b/Backend/mocked-services/src/main/resources/application.properties
index bd52dd8..698b023 100644
--- a/Backend/mocked-services/src/main/resources/application.properties
+++ b/Backend/mocked-services/src/main/resources/application.properties
@@ -1,5 +1,7 @@
#environment:
server.port = 8097
+spring.redis.host=redis
+spring.redis.port=6379
spring.application.name = klaus
spring.mvc.view.suffix=.html
logging.level.root=INFO
diff --git a/Backend/mocked-services/src/main/resources/data-access.properties b/Backend/mocked-services/src/main/resources/data-access.properties
deleted file mode 100644
index 27196b6..0000000
--- a/Backend/mocked-services/src/main/resources/data-access.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-redis.host = redis
-redis.port = 6379
\ No newline at end of file
diff --git a/Backend/mocked-services/src/main/resources/logback.xml b/Backend/mocked-services/src/main/resources/logback.xml
index 16733a7..1827e28 100644
--- a/Backend/mocked-services/src/main/resources/logback.xml
+++ b/Backend/mocked-services/src/main/resources/logback.xml
@@ -2,25 +2,8 @@
-
-
- redis
- 6379
- logstash
-
-
-
- {"dateTimeStamp" : "%d{yyyy-MM-dd}T%d{HH:mm:ss}", "eventId":"%X{eventId}", "interfaceName":"%X{interfaceName}", "clientUUID":"%X{clientUUID}", "messageId":"%X{messageId}", "thread":"%t","level":"%-5level", "message":"%msg"}%n
-
-
-
-
-
-
-
${HOME_LOG}
-
logs/mockServices.%d{yyyy-MM-dd}.%i.log
10MB
@@ -34,7 +17,6 @@
-