diff --git a/.idea/libraries/Maven__junit_junit_4_13.xml b/.idea/libraries/Maven__junit_junit_4_13.xml
new file mode 100644
index 0000000..59fc5c4
--- /dev/null
+++ b/.idea/libraries/Maven__junit_junit_4_13.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_5.xml b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_5.xml
new file mode 100644
index 0000000..1a387a4
--- /dev/null
+++ b/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_5.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_6_2.xml b/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_6_2.xml
new file mode 100644
index 0000000..697c91f
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_vintage_junit_vintage_engine_5_6_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_mapstruct_mapstruct_1_3_1_Final.xml b/.idea/libraries/Maven__org_mapstruct_mapstruct_1_3_1_Final.xml
new file mode 100644
index 0000000..7ee5fee
--- /dev/null
+++ b/.idea/libraries/Maven__org_mapstruct_mapstruct_1_3_1_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_3_1_RELEASE.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_3_1_RELEASE.xml
new file mode 100644
index 0000000..615346b
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_aop_2_3_1_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_3_1_RELEASE.xml b/.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_3_1_RELEASE.xml
new file mode 100644
index 0000000..39707b6
--- /dev/null
+++ b/.idea/libraries/Maven__org_springframework_data_spring_data_redis_2_3_1_RELEASE.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/static/img/icons8-cancel-64.png b/src/main/resources/static/img/icons8-cancel-64.png
new file mode 100644
index 0000000..da75c0b
Binary files /dev/null and b/src/main/resources/static/img/icons8-cancel-64.png differ
diff --git a/src/main/resources/static/img/icons8-plus-48.png b/src/main/resources/static/img/icons8-plus-48.png
new file mode 100644
index 0000000..a4ffd9a
Binary files /dev/null and b/src/main/resources/static/img/icons8-plus-48.png differ
diff --git a/src/main/resources/static/js/paggination.js b/src/main/resources/static/js/paggination.js
new file mode 100644
index 0000000..dd98afa
--- /dev/null
+++ b/src/main/resources/static/js/paggination.js
@@ -0,0 +1,101 @@
+var state = {
+ 'querySet': ["dupa1", "sra", "na", "leb"],
+
+ 'page': 1,
+ 'rows': 10,
+ 'window': 5,
+}
+
+state.querySet = mockedMessageDtoList;
+buildTable();
+
+function pagination(querySet, page, rows) {
+ var trimStart = (page - 1) * rows
+ var trimEnd = trimStart + rows
+ var trimmedData = querySet.slice(trimStart, trimEnd)
+ var pages = Math.ceil(querySet.length / rows);
+
+ return {
+ 'querySet': trimmedData,
+ 'pages': pages,
+ }
+}
+
+
+function pageButtons(pages) {
+ var wrapper = document.getElementById('pagination-wrapper');
+
+ wrapper.innerHTML = ``;
+ var maxLeft = (state.page - Math.floor(state.window / 2))
+ var maxRight = (state.page + Math.ceil(state.window / 2))
+ if (maxLeft < 1) {
+ maxLeft = 1
+ maxRight = state.window
+ }
+
+ if (maxRight > pages) {
+ maxLeft = pages - (state.window - 1)
+
+ if (maxLeft < 1) {
+ maxLeft = 1
+ }
+ maxRight = pages
+ }
+
+ for (var page = maxLeft; page <= maxRight; page++) {
+ if(page === state.page){
+ wrapper.innerHTML += ``
+ }
+ else{
+ wrapper.innerHTML += ``
+ }
+ }
+
+ if (state.page != 1) {
+ wrapper.innerHTML = `` + wrapper.innerHTML
+ }
+
+ if (state.page != pages) {
+ wrapper.innerHTML += ``
+ }
+
+ $('.page').on('click', function() {
+ $('#table-body').empty()
+
+ state.page = Number($(this).val())
+
+ buildTable()
+ })
+
+}
+
+
+function buildTable() {
+ var table = $('#table-body')
+
+ var data = pagination(state.querySet, state.page, state.rows)
+ var myList = data.querySet
+
+ for(var i = 1; i<=myList.length; i++){
+ var j = i + (state.page-1) * 10;
+ if(i%2 === 0){
+ var row = `
+ | ` + j + ` |
+ ${myList[i-1].mockedResponseId} |
+ ${myList[i-1].mediaType} |
+ ${myList[i-1].httpStatus} |
+ `
+ }else{
+ var row = `
+ | ` + j + ` |
+ ${myList[i-1].mockedResponseId} |
+ ${myList[i-1].mediaType} |
+ ${myList[i-1].httpStatus} |
+ `
+ }
+
+ table.append(row)
+ }
+
+ pageButtons(data.pages)
+}
diff --git a/target/classes/com/release11/klaus/mappers/MockedMessageMapper.class b/target/classes/com/release11/klaus/mappers/MockedMessageMapper.class
new file mode 100644
index 0000000..5937451
Binary files /dev/null and b/target/classes/com/release11/klaus/mappers/MockedMessageMapper.class differ
diff --git a/target/classes/com/release11/klaus/mappers/MockedMessageMapperImpl.class b/target/classes/com/release11/klaus/mappers/MockedMessageMapperImpl.class
new file mode 100644
index 0000000..ab2ad8d
Binary files /dev/null and b/target/classes/com/release11/klaus/mappers/MockedMessageMapperImpl.class differ
diff --git a/target/classes/com/release11/klaus/model/MockedMessage.class b/target/classes/com/release11/klaus/model/MockedMessage.class
new file mode 100644
index 0000000..9a93c29
Binary files /dev/null and b/target/classes/com/release11/klaus/model/MockedMessage.class differ
diff --git a/target/classes/com/release11/klaus/model/MockedMessageDto$MockedMessageDtoBuilder.class b/target/classes/com/release11/klaus/model/MockedMessageDto$MockedMessageDtoBuilder.class
new file mode 100644
index 0000000..5d4554a
Binary files /dev/null and b/target/classes/com/release11/klaus/model/MockedMessageDto$MockedMessageDtoBuilder.class differ
diff --git a/target/classes/com/release11/klaus/model/MockedMessageDto.class b/target/classes/com/release11/klaus/model/MockedMessageDto.class
new file mode 100644
index 0000000..e0a97d3
Binary files /dev/null and b/target/classes/com/release11/klaus/model/MockedMessageDto.class differ
diff --git a/target/classes/static/img/icons8-cancel-64.png b/target/classes/static/img/icons8-cancel-64.png
new file mode 100644
index 0000000..da75c0b
Binary files /dev/null and b/target/classes/static/img/icons8-cancel-64.png differ
diff --git a/target/classes/static/img/icons8-plus-48.png b/target/classes/static/img/icons8-plus-48.png
new file mode 100644
index 0000000..a4ffd9a
Binary files /dev/null and b/target/classes/static/img/icons8-plus-48.png differ
diff --git a/target/classes/static/js/paggination.js b/target/classes/static/js/paggination.js
new file mode 100644
index 0000000..dd98afa
--- /dev/null
+++ b/target/classes/static/js/paggination.js
@@ -0,0 +1,101 @@
+var state = {
+ 'querySet': ["dupa1", "sra", "na", "leb"],
+
+ 'page': 1,
+ 'rows': 10,
+ 'window': 5,
+}
+
+state.querySet = mockedMessageDtoList;
+buildTable();
+
+function pagination(querySet, page, rows) {
+ var trimStart = (page - 1) * rows
+ var trimEnd = trimStart + rows
+ var trimmedData = querySet.slice(trimStart, trimEnd)
+ var pages = Math.ceil(querySet.length / rows);
+
+ return {
+ 'querySet': trimmedData,
+ 'pages': pages,
+ }
+}
+
+
+function pageButtons(pages) {
+ var wrapper = document.getElementById('pagination-wrapper');
+
+ wrapper.innerHTML = ``;
+ var maxLeft = (state.page - Math.floor(state.window / 2))
+ var maxRight = (state.page + Math.ceil(state.window / 2))
+ if (maxLeft < 1) {
+ maxLeft = 1
+ maxRight = state.window
+ }
+
+ if (maxRight > pages) {
+ maxLeft = pages - (state.window - 1)
+
+ if (maxLeft < 1) {
+ maxLeft = 1
+ }
+ maxRight = pages
+ }
+
+ for (var page = maxLeft; page <= maxRight; page++) {
+ if(page === state.page){
+ wrapper.innerHTML += ``
+ }
+ else{
+ wrapper.innerHTML += ``
+ }
+ }
+
+ if (state.page != 1) {
+ wrapper.innerHTML = `` + wrapper.innerHTML
+ }
+
+ if (state.page != pages) {
+ wrapper.innerHTML += ``
+ }
+
+ $('.page').on('click', function() {
+ $('#table-body').empty()
+
+ state.page = Number($(this).val())
+
+ buildTable()
+ })
+
+}
+
+
+function buildTable() {
+ var table = $('#table-body')
+
+ var data = pagination(state.querySet, state.page, state.rows)
+ var myList = data.querySet
+
+ for(var i = 1; i<=myList.length; i++){
+ var j = i + (state.page-1) * 10;
+ if(i%2 === 0){
+ var row = `
+ | ` + j + ` |
+ ${myList[i-1].mockedResponseId} |
+ ${myList[i-1].mediaType} |
+ ${myList[i-1].httpStatus} |
+ `
+ }else{
+ var row = `
+ | ` + j + ` |
+ ${myList[i-1].mockedResponseId} |
+ ${myList[i-1].mediaType} |
+ ${myList[i-1].httpStatus} |
+ `
+ }
+
+ table.append(row)
+ }
+
+ pageButtons(data.pages)
+}
diff --git a/target/generated-sources/annotations/com/release11/klaus/mappers/MockedMessageMapperImpl.java b/target/generated-sources/annotations/com/release11/klaus/mappers/MockedMessageMapperImpl.java
new file mode 100644
index 0000000..a6a8098
--- /dev/null
+++ b/target/generated-sources/annotations/com/release11/klaus/mappers/MockedMessageMapperImpl.java
@@ -0,0 +1,62 @@
+package com.release11.klaus.mappers;
+
+import com.release11.klaus.model.MockedMessage;
+import com.release11.klaus.model.MockedMessageDto;
+import com.release11.klaus.model.MockedMessageDto.MockedMessageDtoBuilder;
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import org.springframework.stereotype.Component;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2020-09-09T10:30:58+0200",
+ comments = "version: 1.3.1.Final, compiler: javac, environment: Java 14.0.1 (Oracle Corporation)"
+)
+@Component
+public class MockedMessageMapperImpl implements MockedMessageMapper {
+
+ @Override
+ public MockedMessage mockedMessageDtoToMockedMessage(MockedMessageDto mockedMessageDto) {
+ if ( mockedMessageDto == null ) {
+ return null;
+ }
+
+ MockedMessage mockedMessage = new MockedMessage();
+
+ mockedMessage.setClientUUID( mockedMessageDto.getClientUUID() );
+ mockedMessage.setMockedResponseId( mockedMessageDto.getMockedResponseId() );
+ mockedMessage.setMediaType( mockedMessageDto.getMediaType() );
+ mockedMessage.setMessageBody( mockedMessageDto.getMessageBody() );
+ Map map = mockedMessageDto.getHttpHeaders();
+ if ( map != null ) {
+ mockedMessage.setHttpHeaders( new HashMap( map ) );
+ }
+ mockedMessage.setHttpStatus( mockedMessageDto.getHttpStatus() );
+
+ mockedMessage.setCompositePrimaryKey( mockedMessageDto.getClientUUID() + "_" + mockedMessageDto.getMockedResponseId() );
+
+ return mockedMessage;
+ }
+
+ @Override
+ public MockedMessageDto mockedMessageToMockedMessageDto(MockedMessage mockedMessage) {
+ if ( mockedMessage == null ) {
+ return null;
+ }
+
+ MockedMessageDtoBuilder mockedMessageDto = MockedMessageDto.builder();
+
+ mockedMessageDto.clientUUID( mockedMessage.getClientUUID() );
+ mockedMessageDto.mockedResponseId( mockedMessage.getMockedResponseId() );
+ mockedMessageDto.mediaType( mockedMessage.getMediaType() );
+ mockedMessageDto.messageBody( mockedMessage.getMessageBody() );
+ Map map = mockedMessage.getHttpHeaders();
+ if ( map != null ) {
+ mockedMessageDto.httpHeaders( new HashMap( map ) );
+ }
+ mockedMessageDto.httpStatus( mockedMessage.getHttpStatus() );
+
+ return mockedMessageDto.build();
+ }
+}