package ru.sape; import java.util.*; public class SapePageLinks { private boolean showCode; public SapePageLinks(SapeConnection sapeConnection, String sapeUser, String requestUri, String sapeCookie) { this(sapeConnection, sapeUser, requestUri, sapeCookie, false); } @SuppressWarnings("unchecked") public SapePageLinks(SapeConnection sapeConnection, String sapeUser, String requestUri, String sapeCookie, boolean showCode) { if (sapeUser.equals(sapeCookie)) { showCode = true; } Map data = sapeConnection.getData(); if (data.containsKey("__sape_delimiter__")) { linkDelimiter = (String) data.get("__sape_delimiter__"); } if (data.containsKey(requestUri)) { pageLinks = new ArrayList<>(((Map) data.get(requestUri)).values()); } if (data.containsKey("__sape_new_url__")) { if (showCode) { Object newUrl = data.get("__sape_new_url__"); if (newUrl instanceof Map) { pageLinks = new ArrayList<>(((Map) newUrl).values()); } else { pageLinks = new ArrayList<>(Collections.singletonList((String) newUrl)); } } } this.showCode = showCode; } private String linkDelimiter = "."; private List pageLinks = new ArrayList<>(); public String render() { return render(-1); } public String render(int count) { StringBuilder s = new StringBuilder(); if (count < 0) { count = pageLinks.size(); } for (Iterator i = pageLinks.iterator(); i.hasNext() && count > 0; count--) { if (s.length() > 0) { s.append(linkDelimiter); } String l = i.next(); s.append(l); i.remove(); } if (showCode) { s.insert(0, ""); s.append(""); } return s.toString(); } }