package org.lognavigator.util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.UnsupportedCharsetException; import java.util.ArrayList; import java.util.List; import static org.lognavigator.util.Constants.*; import org.lognavigator.bean.Breadcrumb; /** * Static methods usefull to create a list of Breadcrumbs */ public class BreadcrumbFactory { /** * Create a list of Breadcrumb with one element : link to logs list root * @param logAccessConfigId breadcrumb label * @return list of Breadcrumb with one element */ public static List<Breadcrumb> createBreadCrumbs(String logAccessConfigId) { List<Breadcrumb> breadcrumbs = new ArrayList<Breadcrumb>(); breadcrumbs.add(new Breadcrumb(logAccessConfigId, LOGS_LIST_URL)); return breadcrumbs; } /** * Split 'path' into path-elements and add each one to breadcrumbs list * @param breadcrumbs * @param path * @param lastElementIsLink */ public static void addSubPath(List<Breadcrumb> breadcrumbs, String path, boolean lastElementIsLink) { path = path.replace("//", "/"); String[] pathElements = path.split("/"); int currentSlashIndex = 0; for (int i=0; i<pathElements.length; i++) { String label = pathElements[i]; if (label.isEmpty()) { continue; } if (!label.equals("*") && (lastElementIsLink || i < pathElements.length - 1)) { try { currentSlashIndex = path.indexOf('/', currentSlashIndex + 1); String linkParam = (currentSlashIndex != -1) ? path.substring(0, currentSlashIndex) : path; String link = FOLDER_VIEW_URL_PREFIX + URLEncoder.encode(linkParam, URL_ENCODING); breadcrumbs.add(new Breadcrumb(label, link)); } catch (UnsupportedEncodingException e) { throw new UnsupportedCharsetException(URL_ENCODING); } } else { breadcrumbs.add(new Breadcrumb(label)); } } } }