import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HeaderMetadataPaginator {
private final List<HeaderMetadata> headerMetadataList;
private final int pageSize;
public HeaderMetadataPaginator(List<HeaderMetadata> headerMetadataList, int pageSize) {
this.headerMetadataList = headerMetadataList;
this.pageSize = pageSize;
}
public List<HeaderMetadata> getPage(int pageNumber) {
// Calculate the starting index for the current page.
int startIndex = (pageNumber - 1) * pageSize;
// Ensure the starting index is within the bounds of the list.
if (startIndex >= headerMetadataList.size()) {
return new ArrayList<>(); // Return an empty list if the page is out of bounds.
}
// Create a sublist representing the current page.
List<HeaderMetadata> page = headerMetadataList.subList(startIndex, Math.min(startIndex + pageSize, headerMetadataList.size()));
return page;
}
public int getTotalPages() {
// Calculate the total number of pages.
return (int) Math.ceil((double) headerMetadataList.size() / pageSize);
}
// Inner class to represent header metadata.
public static class HeaderMetadata {
private String headerName;
private String headerValue;
public HeaderMetadata(String headerName, String headerValue) {
this.headerName = headerName;
this.headerValue = headerValue;
}
public String getHeaderName() {
return headerName;
}
public String getHeaderValue() {
return headerValue;
}
}
public static void main(String[] args) {
// Example Usage
List<HeaderMetadata> allMetadata = new ArrayList<>();
allMetadata.add(new HeaderMetadata("timestamp", "2024-01-01T10:00:00Z"));
allMetadata.add(new HeaderMetadata("task_id", "12345"));
allMetadata.add(new HeaderMetadata("status", "completed"));
allMetadata.add(new HeaderMetadata("user_id", "user123"));
allMetadata.add(new HeaderMetadata("data", "{\"key\": \"value\"}"));
allMetadata.add(new HeaderMetadata("priority", "high"));
allMetadata.add(new HeaderMetadata("environment", "production"));
allMetadata.add(new HeaderMetadata("version", "1.0"));
allMetadata.add(new HeaderMetadata("log_level", "INFO"));
allMetadata.add(new HeaderMetadata("memory_usage", "1024MB"));
HeaderMetadataPaginator paginator = new HeaderMetadataPaginator(allMetadata, 3);
// Get the first page.
List<HeaderMetadata> page1 = paginator.getPage(1);
System.out.println("Page 1:");
for (HeaderMetadata metadata : page1) {
System.out.println(" " + metadata.getHeaderName() + ": " + metadata.getHeaderValue());
}
// Get the second page.
List<HeaderMetadata> page2 = paginator.getPage(2);
System.out.println("\nPage 2:");
for (HeaderMetadata metadata : page2) {
System.out.println(" " + metadata.getHeaderName() + ": " + metadata.getHeaderValue());
}
//Get the last page
List<HeaderMetadata> page3 = paginator.getPage(3);
System.out.println("\nPage 3:");
for (HeaderMetadata metadata : page3) {
System.out.println(" " + metadata.getHeaderName() + ": " + metadata.getHeaderValue());
}
//Get the total number of pages
System.out.println("\nTotal pages: " + paginator.getTotalPages());
}
}
Add your comment