Simplified navigation.
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / network / navigation / Navigation.java
index e6ed8ef..2c23e1d 100755 (executable)
@@ -9,80 +9,54 @@
 
 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;
-
-public class Navigation<NI extends NavigationItem> {
 
-    protected final LocaleConfiguration localeConfiguration;
-    private NI rootNavigationItem;
-    private NI defaultNavigationItem;
+public class Navigation {
 
-    public Navigation(final LocaleConfiguration localeConfiguration) {
-        this.localeConfiguration = localeConfiguration;
-    }
+    private NavigationItem root = new NavigationItem(null, null, null);
 
-    public NI getDefaultNavigationItem() {
-        return defaultNavigationItem;
+    public NavigationItem getRoot(){
+        return root;
     }
 
-    private String getGetNotNullString(final String string) {
-        if (string != null)
-            return string;
-
-        return "";
-    }
-
-    public LocaleConfiguration getLocaleConfiguration() {
-        return localeConfiguration;
-    }
-
-    public NI getRootNavigationItem() {
-        return rootNavigationItem;
-    }
-
-    public NI getSelectedItem(final HttpServletRequest request) {
+    public NavigationItem getSelectedItem(final HttpServletRequest request) {
         final String requestUrl = request.getRequestURL().toString();
 
+        final String requestPath;
         try {
-            final String requestPath = new URL(requestUrl).getPath();
+            requestPath = new URL(requestUrl).getPath();
+        } catch (MalformedURLException e) {
+            throw new IllegalArgumentException("Illegal request URL provided." , e);
+        }
 
-            @SuppressWarnings("unchecked") final NI match = (NI) rootNavigationItem.getMatchingNavigationItem(requestPath);
+        @SuppressWarnings("unchecked") final NavigationItem match = root.getMatch(requestPath);
 
-            if (match != null)
-                return match;
-        } catch (final MalformedURLException e) {
-            System.out.println("Cannot handle URL: " + requestUrl);
-            e.printStackTrace();
-        }
+        if (match != null)
+            return match;
 
-        return getDefaultNavigationItem();
+        return root.getDefaultNavigationItem();
     }
 
     @SuppressWarnings("unchecked")
     public String getTopMenu(final HttpServletRequest request) {
 
-        final String currentLocale = localeConfiguration.detectCurrentLocale(request);
-
-        final NI selectedItem = getSelectedItem(request);
+        final NavigationItem selectedItem = getSelectedItem(request);
         final StringBuilder result = new StringBuilder();
 
-        result.append("<div class=\"" + getGetNotNullString(rootNavigationItem.getCssPrefix()) + "navigationMenu\">");
+        result.append("<div class=\"navigationMenu\">");
 
-        for (final NI item : (List<NI>) getRootNavigationItem().getSubElements()) {
+        for (final NavigationItem item : root.getChildren()) {
 
             if (item == selectedItem)
-                result.append("<a class=\"" + getGetNotNullString(item.getCssPrefix()) + "menuItemSelected\" href=\""
-                        + item.getLinkUrl() + "\">");
+                result.append("<a class=\"menuItemSelected\" href=\""
+                        + item.getUrl() + "\">");
             else
-                result.append("<a class=\"" + getGetNotNullString(item.getCssPrefix()) + "menuItem\" href=\""
-                        + item.getLinkUrl() + "\">");
+                result.append("<a class=\"menuItem\" href=\""
+                        + item.getUrl() + "\">");
 
-            result.append("<div>" + item.getTitle(currentLocale) + "</div>");
+            result.append("<div>" + item.getTitle() + "</div>");
             result.append("</a>");
         }
 
@@ -91,14 +65,4 @@ public class Navigation<NI extends NavigationItem> {
         return result.toString();
     }
 
-    public NI setDefaultNavigationItem(final NI defaultNavigationItem) {
-        this.defaultNavigationItem = defaultNavigationItem;
-        return defaultNavigationItem;
-    }
-
-    public NI setRootNavigationItem(final NI rootNavigationItem) {
-        this.rootNavigationItem = rootNavigationItem;
-        return rootNavigationItem;
-    }
-
 }