X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fnetwork%2Fnavigation%2FNavigation.java;h=eca13a647de3da7a7b490bd3e68429009b3a7f82;hb=b91077678c2a0af17a2f852c0b3901813837117a;hp=3a07bbd0f0e546d1df58309c48884b44e9d62065;hpb=353dd52db19c34c96af42cb1b3fd01055d66d4cc;p=svjatoslav_commons.git diff --git a/src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java b/src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java index 3a07bbd..eca13a6 100755 --- a/src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java +++ b/src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java @@ -1,70 +1,63 @@ +/* + * Svjatoslav Commons - shared library of common functionality. Author: Svjatoslav Agejenko. + * This project is released under Creative Commons Zero (CC0) license. + */ package eu.svjatoslav.commons.network.navigation; +import javax.servlet.http.HttpServletRequest; import java.net.MalformedURLException; import java.net.URL; public class Navigation { - private NavigationItem rootNavigationItem; + private NavigationItem root = new NavigationItem(null, null, null); - private NavigationItem defaultNavigationItem; + public NavigationItem getRoot(){ + return root; + } - public NavigationItem getDefaultNavigationItem() { - return defaultNavigationItem; - } + public NavigationItem getSelectedItem(final HttpServletRequest request) { + final String requestUrl = request.getRequestURL().toString(); - public NavigationItem getRootNavigationItem() { - return rootNavigationItem; - } + final String requestPath; + try { + requestPath = new URL(requestUrl).getPath(); + } catch (MalformedURLException e) { + throw new IllegalArgumentException("Illegal request URL provided." , e); + } - public NavigationItem getSelectedItem(final String requestUrl) { + @SuppressWarnings("unchecked") final NavigationItem match = root.getMatch(requestPath); - try { - final String requestPath = new URL(requestUrl).getPath(); + if (match != null) + return match; - for (final NavigationItem item : rootNavigationItem.subElements) - if (item.matchesUrl(requestPath)) - return item; - } catch (final MalformedURLException e) { - System.out.println("Cannot handle URL: " + requestUrl); - e.printStackTrace(); - } + return root.getDefaultNavigationItem(); + } - return getDefaultNavigationItem(); - } + @SuppressWarnings("unchecked") + public String getTopMenu(final HttpServletRequest request) { - public String getTopMenu(final String requestUrl) { + final NavigationItem selectedItem = getSelectedItem(request); + final StringBuilder result = new StringBuilder(); - final NavigationItem selectedItem = getSelectedItem(requestUrl); - final StringBuffer result = new StringBuffer(); + result.append("
"); - result.append("
"); + for (final NavigationItem item : root.getChildren()) { - for (final NavigationItem item : rootNavigationItem.getSubElements()) { + if (item == selectedItem) + result.append(""); + else + result.append(""); - if (item == selectedItem) - result.append(""); - else - result.append(""); + result.append("
" + item.getTitle() + "
"); + result.append("
"); + } - result.append(item.getTitle()); - result.append(""); - } + result.append("
"); - result.append("
"); - - return result.toString(); - } - - public void setDefaultNavigationItem( - final NavigationItem defaultNavigationItem) { - this.defaultNavigationItem = defaultNavigationItem; - } - - public void setRootNavigationItem(final NavigationItem rootNavigationItem) { - this.rootNavigationItem = rootNavigationItem; - } + return result.toString(); + } }