1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. public class HeaderMetadataPaginator {
  6. private final List<HeaderMetadata> headerMetadataList;
  7. private final int pageSize;
  8. public HeaderMetadataPaginator(List<HeaderMetadata> headerMetadataList, int pageSize) {
  9. this.headerMetadataList = headerMetadataList;
  10. this.pageSize = pageSize;
  11. }
  12. public List<HeaderMetadata> getPage(int pageNumber) {
  13. // Calculate the starting index for the current page.
  14. int startIndex = (pageNumber - 1) * pageSize;
  15. // Ensure the starting index is within the bounds of the list.
  16. if (startIndex >= headerMetadataList.size()) {
  17. return new ArrayList<>(); // Return an empty list if the page is out of bounds.
  18. }
  19. // Create a sublist representing the current page.
  20. List<HeaderMetadata> page = headerMetadataList.subList(startIndex, Math.min(startIndex + pageSize, headerMetadataList.size()));
  21. return page;
  22. }
  23. public int getTotalPages() {
  24. // Calculate the total number of pages.
  25. return (int) Math.ceil((double) headerMetadataList.size() / pageSize);
  26. }
  27. // Inner class to represent header metadata.
  28. public static class HeaderMetadata {
  29. private String headerName;
  30. private String headerValue;
  31. public HeaderMetadata(String headerName, String headerValue) {
  32. this.headerName = headerName;
  33. this.headerValue = headerValue;
  34. }
  35. public String getHeaderName() {
  36. return headerName;
  37. }
  38. public String getHeaderValue() {
  39. return headerValue;
  40. }
  41. }
  42. public static void main(String[] args) {
  43. // Example Usage
  44. List<HeaderMetadata> allMetadata = new ArrayList<>();
  45. allMetadata.add(new HeaderMetadata("timestamp", "2024-01-01T10:00:00Z"));
  46. allMetadata.add(new HeaderMetadata("task_id", "12345"));
  47. allMetadata.add(new HeaderMetadata("status", "completed"));
  48. allMetadata.add(new HeaderMetadata("user_id", "user123"));
  49. allMetadata.add(new HeaderMetadata("data", "{\"key\": \"value\"}"));
  50. allMetadata.add(new HeaderMetadata("priority", "high"));
  51. allMetadata.add(new HeaderMetadata("environment", "production"));
  52. allMetadata.add(new HeaderMetadata("version", "1.0"));
  53. allMetadata.add(new HeaderMetadata("log_level", "INFO"));
  54. allMetadata.add(new HeaderMetadata("memory_usage", "1024MB"));
  55. HeaderMetadataPaginator paginator = new HeaderMetadataPaginator(allMetadata, 3);
  56. // Get the first page.
  57. List<HeaderMetadata> page1 = paginator.getPage(1);
  58. System.out.println("Page 1:");
  59. for (HeaderMetadata metadata : page1) {
  60. System.out.println(" " + metadata.getHeaderName() + ": " + metadata.getHeaderValue());
  61. }
  62. // Get the second page.
  63. List<HeaderMetadata> page2 = paginator.getPage(2);
  64. System.out.println("\nPage 2:");
  65. for (HeaderMetadata metadata : page2) {
  66. System.out.println(" " + metadata.getHeaderName() + ": " + metadata.getHeaderValue());
  67. }
  68. //Get the last page
  69. List<HeaderMetadata> page3 = paginator.getPage(3);
  70. System.out.println("\nPage 3:");
  71. for (HeaderMetadata metadata : page3) {
  72. System.out.println(" " + metadata.getHeaderName() + ": " + metadata.getHeaderValue());
  73. }
  74. //Get the total number of pages
  75. System.out.println("\nTotal pages: " + paginator.getTotalPages());
  76. }
  77. }

Add your comment