/*
* Svjatoslav Commons - shared library of common functionality.
- * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ * Copyright ©2012-2017, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 3 of the GNU Lesser General Public License
package eu.svjatoslav.commons.network.navigation;
+import eu.svjatoslav.commons.network.LocaleConfiguration;
+
+import javax.servlet.http.HttpServletRequest;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-
-import eu.svjatoslav.commons.network.LocaleConfiguration;
-
public class Navigation<NI extends NavigationItem> {
- private NI rootNavigationItem;
-
- private NI defaultNavigationItem;
-
- protected final LocaleConfiguration localeConfiguration;
+ protected final LocaleConfiguration localeConfiguration;
+ private NI rootNavigationItem;
+ private NI defaultNavigationItem;
- public Navigation(final LocaleConfiguration localeConfiguration) {
- this.localeConfiguration = localeConfiguration;
- }
+ public Navigation(final LocaleConfiguration localeConfiguration) {
+ this.localeConfiguration = localeConfiguration;
+ }
- public NI getDefaultNavigationItem() {
- return defaultNavigationItem;
- }
+ public NI getDefaultNavigationItem() {
+ return defaultNavigationItem;
+ }
- private String getGetNotNullString(final String string) {
- if (string != null)
- return string;
+ private String getGetNotNullString(final String string) {
+ if (string != null)
+ return string;
- return "";
- }
+ return "";
+ }
- public LocaleConfiguration getLocaleConfiguration() {
- return localeConfiguration;
- }
+ public LocaleConfiguration getLocaleConfiguration() {
+ return localeConfiguration;
+ }
- public NI getRootNavigationItem() {
- return rootNavigationItem;
- }
+ public NI getRootNavigationItem() {
+ return rootNavigationItem;
+ }
- public NI getSelectedItem(final HttpServletRequest request) {
- final String requestUrl = request.getRequestURL().toString();
+ public NI getSelectedItem(final HttpServletRequest request) {
+ final String requestUrl = request.getRequestURL().toString();
- try {
- final String requestPath = new URL(requestUrl).getPath();
+ try {
+ final String requestPath = new URL(requestUrl).getPath();
- @SuppressWarnings("unchecked")
- final NI match = (NI) rootNavigationItem.getMatchingNavigationItem(requestPath);
+ @SuppressWarnings("unchecked")
+ final NI match = (NI) rootNavigationItem.getMatchingNavigationItem(requestPath);
- if (match != null)
- return match;
- } catch (final MalformedURLException e) {
- System.out.println("Cannot handle URL: " + requestUrl);
- e.printStackTrace();
- }
+ if (match != null)
+ return match;
+ } catch (final MalformedURLException e) {
+ System.out.println("Cannot handle URL: " + requestUrl);
+ e.printStackTrace();
+ }
- return getDefaultNavigationItem();
- }
+ return getDefaultNavigationItem();
+ }
- @SuppressWarnings("unchecked")
- public String getTopMenu(final HttpServletRequest request) {
+ @SuppressWarnings("unchecked")
+ public String getTopMenu(final HttpServletRequest request) {
- final String currentLocale = localeConfiguration.detectCurrentLocale(request);
+ final String currentLocale = localeConfiguration.detectCurrentLocale(request);
- final NI selectedItem = getSelectedItem(request);
- final StringBuffer result = new StringBuffer();
+ final NI selectedItem = getSelectedItem(request);
+ final StringBuilder result = new StringBuilder();
- result.append("<div class=\"" + getGetNotNullString(rootNavigationItem.getCssPrefix()) + "navigationMenu\">");
+ result.append("<div class=\"" + getGetNotNullString(rootNavigationItem.getCssPrefix()) + "navigationMenu\">");
- for (final NI item : (List<NI>) getRootNavigationItem().getSubElements()) {
+ for (final NI item : (List<NI>) getRootNavigationItem().getSubElements()) {
- if (item == selectedItem)
- result.append("<a class=\"" + getGetNotNullString(item.getCssPrefix()) + "menuItemSelected\" href=\""
- + item.getLinkUrl() + "\">");
- else
- result.append("<a class=\"" + getGetNotNullString(item.getCssPrefix()) + "menuItem\" href=\""
- + item.getLinkUrl() + "\">");
+ if (item == selectedItem)
+ result.append("<a class=\"" + getGetNotNullString(item.getCssPrefix()) + "menuItemSelected\" href=\""
+ + item.getLinkUrl() + "\">");
+ else
+ result.append("<a class=\"" + getGetNotNullString(item.getCssPrefix()) + "menuItem\" href=\""
+ + item.getLinkUrl() + "\">");
- result.append("<div>" + item.getTitle(currentLocale) + "</div>");
- result.append("</a>");
- }
+ result.append("<div>" + item.getTitle(currentLocale) + "</div>");
+ result.append("</a>");
+ }
- result.append("</div>");
+ result.append("</div>");
- return result.toString();
- }
+ return result.toString();
+ }
- public NI setDefaultNavigationItem(final NI defaultNavigationItem) {
- this.defaultNavigationItem = defaultNavigationItem;
- return defaultNavigationItem;
- }
+ public NI setDefaultNavigationItem(final NI defaultNavigationItem) {
+ this.defaultNavigationItem = defaultNavigationItem;
+ return defaultNavigationItem;
+ }
- public NI setRootNavigationItem(final NI rootNavigationItem) {
- this.rootNavigationItem = rootNavigationItem;
- return rootNavigationItem;
- }
+ public NI setRootNavigationItem(final NI rootNavigationItem) {
+ this.rootNavigationItem = rootNavigationItem;
+ return rootNavigationItem;
+ }
}