your messages table with update, delete buttons
This commit is contained in:
@@ -13,10 +13,9 @@ public class KlausApplication {
|
||||
|
||||
}
|
||||
//TODO
|
||||
//TODO history logs; for log indexing - create custom log appender for Redis - in case etrack would be too slow
|
||||
//TODO JedisPool jedisPool = new JedisPool(jedisPoolConfig, redisHost, redisPort, timeout, redisPassword)
|
||||
//TODO JedisPool optimalization https://partners-intl.aliyun.com/help/doc-detail/98726.htm
|
||||
// logging, security, account creation
|
||||
// tracking clients activity, admin panel
|
||||
// use a centralized logging collection tool like logstash for admin panel
|
||||
//TODO split into separate microservices
|
||||
//TODO swagger
|
||||
@@ -2,12 +2,12 @@ package com.release11.klaus.controller;
|
||||
|
||||
|
||||
import com.release11.klaus.model.MockedMessageDto;
|
||||
import com.release11.klaus.service.KlausService;
|
||||
import com.release11.klaus.utilis.BusinessKey;
|
||||
import com.release11.klaus.utilis.TrackingClient;
|
||||
import com.release11.klaus.model.MockedMessage;
|
||||
import com.release11.klaus.service.KlausService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.RequestEntity;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
@Controller("/")
|
||||
@@ -28,6 +29,15 @@ public class KlausController {
|
||||
|
||||
private final KlausService klausService;
|
||||
|
||||
@RequestMapping(value = "klaus/v1/delete/{clientUUID}/{mockedResponseId}")
|
||||
public ResponseEntity<String> deleteMockedResponse(@PathVariable UUID clientUUID,
|
||||
@PathVariable int mockedResponseId){
|
||||
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "deleteMockedResponse",
|
||||
BusinessKey.CLIENT_UUID, String.valueOf(clientUUID),
|
||||
BusinessKey.MESSAGE_ID, String.valueOf(mockedResponseId)));
|
||||
klausService.deleteMockedResponse(clientUUID, mockedResponseId);
|
||||
return new ResponseEntity<>("message has been deleted", HttpStatus.OK);
|
||||
}
|
||||
@RequestMapping(value = "klaus/v1/getAll/{clientUUID}")
|
||||
public ResponseEntity<String> getAllMockedResponses(@PathVariable UUID clientUUID){
|
||||
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse",
|
||||
@@ -43,18 +53,22 @@ public class KlausController {
|
||||
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "getMockedResponse",
|
||||
BusinessKey.CLIENT_UUID, String.valueOf(clientUUID),
|
||||
BusinessKey.MESSAGE_ID, String.valueOf(mockedResponseId)));
|
||||
|
||||
return klausService.getMockedResponse(clientUUID, mockedResponseId);
|
||||
MockedMessageDto mockedMessageDto = klausService.getMockedResponse(clientUUID, mockedResponseId);
|
||||
HttpHeaders httpHeaders = new HttpHeaders();
|
||||
if (mockedMessageDto.getHttpHeaders() != null) mockedMessageDto.getHttpHeaders().forEach(httpHeaders::set);
|
||||
return new ResponseEntity<>(mockedMessageDto.getMessageBody(), httpHeaders,
|
||||
Objects.requireNonNull(HttpStatus.valueOf(mockedMessageDto.getHttpStatus())));
|
||||
}
|
||||
|
||||
@PostMapping(value = "klaus/v1/set/{clientUUID}/{mockedResponseId}")
|
||||
public ResponseEntity<String> setMockedResponse(@PathVariable UUID clientUUID,
|
||||
@PathVariable int mockedResponseId,
|
||||
@RequestParam(required = false) int httpStatus,
|
||||
@RequestParam(required = false) Integer httpStatus,
|
||||
RequestEntity<String> requestEntity){
|
||||
TrackingClient.setBusinessKeys(Map.of(BusinessKey.INTERFACE_NAME, "setMockedResponse",
|
||||
BusinessKey.CLIENT_UUID, String.valueOf(clientUUID),
|
||||
BusinessKey.MESSAGE_ID, String.valueOf(mockedResponseId)));
|
||||
if (httpStatus == null) httpStatus = 200;
|
||||
|
||||
MockedMessageDto mockedMessageDto = new MockedMessageDto(clientUUID, mockedResponseId,
|
||||
requestEntity.getHeaders().getContentType().toString(), requestEntity.getBody(),
|
||||
|
||||
@@ -27,20 +27,21 @@ import java.util.*;
|
||||
@AllArgsConstructor
|
||||
public class KlausMvcController {
|
||||
private final KlausService klausService;
|
||||
|
||||
private final Set<MockedMessageDto> globalMockedMessageDtoList = new HashSet<>();
|
||||
|
||||
@GetMapping("/login")
|
||||
public String login() {
|
||||
return "login";
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@GetMapping({"/home", "/home/{uuid}"})
|
||||
public String showHome(final MockedMessageDto mockedMessageDto, Model model,
|
||||
public String showHome(final MockedMessageDto mockedMessageDto, final Model model,
|
||||
@RequestParam(required = false) UUID clientUUID,
|
||||
@PathVariable(required = false) UUID uuid) {
|
||||
if (uuid != null) clientUUID = uuid;
|
||||
if (clientUUID != null) mockedMessageDto.setClientUUID(clientUUID);
|
||||
model.addAttribute("mockedMessageDtoList", klausService.getAllMockedResponses(clientUUID));
|
||||
populateModelWithLists(model, mockedMessageDto,true);
|
||||
return "index";
|
||||
}
|
||||
|
||||
@@ -51,7 +52,7 @@ public class KlausMvcController {
|
||||
BusinessKey.CLIENT_UUID, String.valueOf(mockedMessageDto.getClientUUID()),
|
||||
BusinessKey.MESSAGE_ID, String.valueOf(mockedMessageDto.getMockedResponseId())));
|
||||
klausService.setMockedResponse(mockedMessageDto);
|
||||
model.addAttribute("mockedMessageDtoList", klausService.getAllMockedResponses(mockedMessageDto.getClientUUID()));
|
||||
populateModelWithLists(model, mockedMessageDto,true);
|
||||
model.addAttribute("mockSaved", "true");
|
||||
return "index";
|
||||
}
|
||||
@@ -66,20 +67,36 @@ public class KlausMvcController {
|
||||
mockedMessageDto.getMockedResponseId()).toString();
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/home/{clientUUID}", params = {"addHeader"})
|
||||
public String addRow(final MockedMessageDto mockedMessageDto, @RequestParam String headerKey,
|
||||
@RequestParam String headerValue) {
|
||||
@RequestMapping(value = "/home/{clientUUID}", params = {"addHeader"} )
|
||||
public String addHeader(final MockedMessageDto mockedMessageDto, @RequestParam String headerKey,
|
||||
@RequestParam String headerValue, final Model model) {
|
||||
populateModelWithLists(model, mockedMessageDto,false);
|
||||
mockedMessageDto.getHttpHeaders().put(headerKey, headerValue);
|
||||
return "index";
|
||||
}
|
||||
|
||||
@RequestMapping(value="/home/{clientUUID}", params={"removeHeader"})
|
||||
public String removeHeader(final MockedMessageDto mockedMessageDto, final HttpServletRequest req) {
|
||||
public String removeHeader(final MockedMessageDto mockedMessageDto, final HttpServletRequest req, final Model model) {
|
||||
populateModelWithLists(model, mockedMessageDto,false);
|
||||
mockedMessageDto.getHttpHeaders().remove(req.getParameter("removeHeader"));
|
||||
System.out.println(mockedMessageDto);
|
||||
return "index";
|
||||
}
|
||||
|
||||
@RequestMapping(value="/home/{clientUUID}", params={"updateMessage"})
|
||||
public String updateMessage(final HttpServletRequest req, final MockedMessageDto mockedMessageDto, final Model model) {
|
||||
model.addAttribute("mockedMessageDto", klausService.getMockedResponse(mockedMessageDto.getClientUUID(),
|
||||
Integer.parseInt(req.getParameter("updateMessage"))));
|
||||
populateModelWithLists(model, mockedMessageDto, false);
|
||||
return "index";
|
||||
}
|
||||
|
||||
@RequestMapping(value="/home/{clientUUID}", params={"removeMessage"})
|
||||
public String removeMessage(final MockedMessageDto mockedMessageDto, final HttpServletRequest req, final Model model) {
|
||||
klausService.deleteMockedResponse(mockedMessageDto.getClientUUID(),
|
||||
Integer.parseInt(req.getParameter("removeMessage")));
|
||||
populateModelWithLists(model, mockedMessageDto, true);
|
||||
return "index";
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@ModelAttribute("localhost")
|
||||
@@ -98,12 +115,21 @@ public class KlausMvcController {
|
||||
"application/xml", "body", new LinkedHashMap<>(), 200);
|
||||
}
|
||||
|
||||
@ModelAttribute("eventsDto")
|
||||
public EventRequestDto eventsDto() {
|
||||
@ModelAttribute("eventRequestDto")
|
||||
public EventRequestDto eventRequestDto() {
|
||||
return EventRequestDto.builder()
|
||||
.mockedResponseId(1)
|
||||
.localDateTimeFrom(LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
|
||||
.localDateTimeTo(LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIDNIGHT))
|
||||
.build();
|
||||
}
|
||||
|
||||
private void populateModelWithLists(Model model, MockedMessageDto mockedMessageDto, boolean updateList){
|
||||
if (updateList){
|
||||
globalMockedMessageDtoList.clear();
|
||||
globalMockedMessageDtoList.addAll(klausService.getAllMockedResponses(mockedMessageDto.getClientUUID()));
|
||||
}
|
||||
model.addAttribute("mockedMessageDtoList", globalMockedMessageDtoList);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,6 +20,6 @@ public class EventRequestDto {
|
||||
private LocalDateTime localDateTimeFrom;
|
||||
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
|
||||
private LocalDateTime localDateTimeTo;
|
||||
private int mockedResponseId;
|
||||
private Integer mockedResponseId;
|
||||
|
||||
}
|
||||
|
||||
@@ -29,25 +29,6 @@ public class MockedMessage implements Serializable {
|
||||
@HttpCode
|
||||
private Integer httpStatus;
|
||||
|
||||
public MockedMessage(MockedMessage mockedMessage) {
|
||||
this.compositePrimaryKey = mockedMessage.getClientUUID().toString() + "_" + mockedMessage.getMockedResponseId();
|
||||
this.clientUUID = mockedMessage.getClientUUID();
|
||||
this.mockedResponseId = mockedMessage.getMockedResponseId();
|
||||
this.mediaType = mockedMessage.getMediaType();
|
||||
this.messageBody = mockedMessage.getMessageBody();
|
||||
this.httpHeaders = mockedMessage.getHttpHeaders();
|
||||
this.httpStatus = mockedMessage.getHttpStatus();
|
||||
}
|
||||
public MockedMessage(UUID clientUUID, int mockedResponseId, String mediaType,
|
||||
String messageBody, Map<String, String> httpHeaders, Integer httpStatus) {
|
||||
this.compositePrimaryKey = clientUUID.toString() + "_" + mockedResponseId;
|
||||
this.clientUUID = clientUUID;
|
||||
this.mockedResponseId = mockedResponseId;
|
||||
this.mediaType = mediaType;
|
||||
this.messageBody = messageBody;
|
||||
this.httpHeaders = httpHeaders;
|
||||
this.httpStatus = httpStatus;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -5,8 +5,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.release11.klaus.model.Event;
|
||||
import com.release11.klaus.utilis.BusinessKey;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.boot.configurationprocessor.json.JSONException;
|
||||
import org.springframework.boot.configurationprocessor.json.JSONObject;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
@@ -14,7 +12,10 @@ import redis.clients.jedis.JedisPool;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Repository
|
||||
@@ -52,6 +53,8 @@ public class EventRepositoryImpl implements EventRepository {
|
||||
List<String> resultList = new ArrayList<>();
|
||||
for (Map.Entry<BusinessKey, String> entry : businessKeys.entrySet()) {
|
||||
String stringPattern = "\"" + entry.getKey() + ":" + entry.getValue() + "\"";
|
||||
String u;
|
||||
u = "das";
|
||||
resultList = events.stream().filter(s -> s.contains(stringPattern)).collect(Collectors.toList());
|
||||
}
|
||||
return resultList;
|
||||
|
||||
@@ -12,4 +12,5 @@ import java.util.UUID;
|
||||
@Transactional
|
||||
public interface MockedResponseRepository extends CrudRepository<MockedMessage, String> {
|
||||
List<MockedMessage> findAllByClientUUID(UUID clientUUID);
|
||||
MockedMessage getByCompositePrimaryKey(String compositePrimaryKey);
|
||||
}
|
||||
|
||||
@@ -23,6 +23,9 @@ public class EtrackServiceImpl implements EtrackService {
|
||||
public List<Event> getEventsByDateTimeAndBusinessKeys(EventRequestDto eventsDto) {
|
||||
Map<BusinessKey, String> businessKeys = new HashMap<>();
|
||||
businessKeys.put(BusinessKey.CLIENT_UUID, eventsDto.getClientUUID().toString());
|
||||
if (eventsDto.getMockedResponseId() != null){
|
||||
businessKeys.put(BusinessKey.MESSAGE_ID, String.valueOf(eventsDto.getMockedResponseId()));
|
||||
}
|
||||
return eventRepository.findEvents(eventsDto.getLocalDateTimeFrom(), eventsDto.getLocalDateTimeTo(),
|
||||
businessKeys);
|
||||
}
|
||||
|
||||
@@ -11,6 +11,6 @@ import java.util.UUID;
|
||||
public interface KlausService {
|
||||
void deleteMockedResponse(UUID clientUUID, int mockedResponseId);
|
||||
List<MockedMessageDto> getAllMockedResponses(UUID clientUUID);
|
||||
ResponseEntity<String> getMockedResponse(UUID clientUUID, int mockedResponseId);
|
||||
MockedMessageDto getMockedResponse(UUID clientUUID, int mockedResponseId);
|
||||
ResponseEntity<String> setMockedResponse(MockedMessageDto mockedMessageDto);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.release11.klaus.service;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.release11.klaus.mappers.MockedMessageMapper;
|
||||
import com.release11.klaus.model.MockedMessage;
|
||||
import com.release11.klaus.model.MockedMessageDto;
|
||||
@@ -13,7 +12,7 @@ import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -22,13 +21,13 @@ import java.util.stream.Collectors;
|
||||
@AllArgsConstructor
|
||||
public class KlausServiceImpl implements KlausService {
|
||||
|
||||
private final ObjectMapper objectMapper;
|
||||
private final MockedMessageMapper mockedMessageMapper;
|
||||
private final MockedResponseRepository mockedResponseRepository;
|
||||
|
||||
@Override
|
||||
public void deleteMockedResponse(UUID clientUUID, int mockedResponseId) {
|
||||
|
||||
String key = clientUUID.toString() + "_" + mockedResponseId;
|
||||
mockedResponseRepository.deleteById(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -39,15 +38,15 @@ public class KlausServiceImpl implements KlausService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResponseEntity<String> getMockedResponse(UUID clientUUID, int mockedResponseId) {
|
||||
public MockedMessageDto getMockedResponse(UUID clientUUID, int mockedResponseId) {
|
||||
log.info("KlausServiceImpl, operation getMockedResponse, clientId {}, mockedResponseId {} ",
|
||||
clientUUID, mockedResponseId);
|
||||
String key = clientUUID.toString() + "_" + mockedResponseId;
|
||||
MockedMessage mockedMessage = mockedResponseRepository.findById(key).get();
|
||||
HttpHeaders httpHeaders = new HttpHeaders();
|
||||
if(mockedMessage.getHttpHeaders() !=null)mockedMessage.getHttpHeaders().forEach(httpHeaders::set);
|
||||
return new ResponseEntity<>(mockedMessage.getMessageBody(), httpHeaders,
|
||||
Objects.requireNonNull(HttpStatus.valueOf(mockedMessage.getHttpStatus())));
|
||||
Optional<MockedMessage> optionalMockedMessage = mockedResponseRepository.findById(key);
|
||||
if (optionalMockedMessage.isPresent()) {
|
||||
return mockedMessageMapper.mockedMessageToMockedMessageDto(optionalMockedMessage.get());
|
||||
}
|
||||
return new MockedMessageDto();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user