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));
}
}
}
}