You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by tk...@apache.org on 2013/05/16 12:31:37 UTC

[07/14] git commit: MARMOTTA-233: extends module configuration, a first running version

MARMOTTA-233: extends module configuration,
a first running version


Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/81503abb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/81503abb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/81503abb

Branch: refs/heads/MARMOTTA-228
Commit: 81503abb7f12f9c967a568950e0a086e1d28cb06
Parents: 1a351ed
Author: tkurz <tk...@apache.org>
Authored: Fri May 10 18:52:24 2013 +0200
Committer: tkurz <tk...@apache.org>
Committed: Fri May 10 18:52:24 2013 +0200

----------------------------------------------------------------------
 .../core/api/templating/AdminInterfaceService.java |    3 +-
 .../platform/core/model/template/MenuItem.java     |   73 ++++++++-------
 .../core/services/modules/ModuleServiceImpl.java   |    4 +-
 .../templating/AdminTemplatingServiceImpl.java     |   22 +++--
 .../src/main/resources/config-defaults.properties  |    2 +-
 .../src/main/resources/templates/admin.ftl         |   38 +++-----
 6 files changed, 72 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/81503abb/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/api/templating/AdminInterfaceService.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/api/templating/AdminInterfaceService.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/api/templating/AdminInterfaceService.java
index 5ec3a6c..cf4e7ff 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/api/templating/AdminInterfaceService.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/api/templating/AdminInterfaceService.java
@@ -29,7 +29,8 @@ import javax.servlet.ServletContext;
 public interface AdminInterfaceService {
     
     public final static String PATH = "/templates/";
-    public final static String DEFAULT_REST_PATH = "doc/rest/";
+    public final static String DEFAULT_REST_PATH = "/doc/rest/";
+    public final static String DEFAULT_REST_FILE = "overview-index.html";
     public final static String DEFAULT_MENU_ICON = "icon-asterisk";
     public final static String DEFAULT_WEBSERVICE_TITLE = "Webservice";
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/81503abb/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/model/template/MenuItem.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/model/template/MenuItem.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/model/template/MenuItem.java
index fd8dfe9..ee5b204 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/model/template/MenuItem.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/model/template/MenuItem.java
@@ -36,68 +36,75 @@ import static org.apache.marmotta.platform.core.model.template.MenuItemType.*;
  */
 public class MenuItem {
 
-    private boolean active;
-    private String label;
-    private String path;
-    private MenuItemType type;
+    private boolean initialized = false;
+
+    private HashMap<String,Object> properties;
     private List<MenuItem> items;
-    private String icon;
+    private MenuItemType type;
 
     public MenuItem(String label, MenuItemType type) {
+        this.properties = new HashMap<String, Object>();
         this.type = type;
-        this.label = label;
         this.items = new ArrayList<MenuItem>();
-        this.active = false;
-        this.icon = AdminInterfaceService.DEFAULT_MENU_ICON;
-    }
-
-    public String getIcon() {
-        return icon;
-    }
 
-    public void setIcon(String icon) {
-        this.icon = icon;
+        properties.put("items",items);
+        properties.put("label",label);
+        properties.put("isActive",false);
+        properties.put("icon",AdminInterfaceService.DEFAULT_MENU_ICON);
     }
 
-    public String getLabel() {
-        return label;
-    }
-
-    public String getPath() {
-        return path;
+    public HashMap<String,Object> getProperties() {
+        if(properties.get("items") != null) {
+            List<Object> os = new ArrayList<Object>();
+            for(MenuItem item : items) {
+                os.add(item.getProperties());
+            }
+            properties.put("items",os);
+        }
+        return properties;
     }
 
-    public void setPath(String path) {
-        this.path = path;
+    public void set(String name, Object value) {
+        properties.put(name,value);
     }
 
-    public List<MenuItem> getItems() {
-        return this.items;
+    public Object get(String name) {
+        return properties.get(name);
     }
 
     public void addItem(MenuItem item) {
-        this.addItem(item);
+        items.add(item);
     }
 
     public boolean setActive(String path) {
+        boolean isActive = false;
         switch(type) {
             case ROOT:
             case CONTAINER:
             case MODULE:
                 for(MenuItem item : items) {
                     if(item.setActive(path)) {
-                        active = true;
-                    } else {
-                        active = false;
+                        isActive = true;
                     }
                 }
-                return active;
+                break;
             case PAGE:
-                return active = this.path.equals(path);
+                isActive  = get("path").equals(path);
+                break;
             case WEBSERVICE:
-                return active = path.contains(AdminInterfaceService.DEFAULT_REST_PATH);
+                String s = (String)properties.get("path");
+                isActive = (
+                        path.startsWith(s.substring(0,s.lastIndexOf("/"))) &&
+                        path.contains(AdminInterfaceService.DEFAULT_REST_PATH));
+                break;
             default:
-                return false;
+                isActive = false;
         }
+        set("isActive",isActive);
+        return isActive;
+    }
+
+    public boolean isEmpty() {
+        return items.isEmpty();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/81503abb/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/modules/ModuleServiceImpl.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/modules/ModuleServiceImpl.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/modules/ModuleServiceImpl.java
index 4864fe1..8e4c9ab 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/modules/ModuleServiceImpl.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/modules/ModuleServiceImpl.java
@@ -389,7 +389,7 @@ public class ModuleServiceImpl implements ModuleService {
         Configuration config = getModuleConfiguration(moduleName).getConfiguration();
         if(config != null) {
             ArrayList<HashMap<String,String>> l = new ArrayList<HashMap<String,String>>();
-            if(!config.subset("adminpage.").isEmpty()) {
+            if(!config.subset("adminpage").isEmpty()) {
                 while(config.getString("adminpage."+l.size()+".link") != null) {
                     HashMap<String,String> map = new HashMap<String, String>();
                     map.put("link",config.getString("baseurl")+config.getString("adminpage."+l.size()+".link"));
@@ -400,7 +400,7 @@ public class ModuleServiceImpl implements ModuleService {
                 for(String path : config.getStringArray("adminpages")) {
                     HashMap<String,String> map = new HashMap<String, String>();
                     map.put("link",config.getString("baseurl")+path);
-                    map.put("title",path.substring(path.lastIndexOf("/"),path.lastIndexOf(".")).replaceAll("_"," "));
+                    map.put("title",path.substring(path.lastIndexOf("/")+1,path.lastIndexOf(".")).replaceAll("_"," "));
                     l.add(map);
                 }
             }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/81503abb/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/templating/AdminTemplatingServiceImpl.java
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/templating/AdminTemplatingServiceImpl.java b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/templating/AdminTemplatingServiceImpl.java
index 247a0b4..7cc816e 100644
--- a/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/templating/AdminTemplatingServiceImpl.java
+++ b/platform/marmotta-core/src/main/java/org/apache/marmotta/platform/core/services/templating/AdminTemplatingServiceImpl.java
@@ -71,7 +71,7 @@ public class AdminTemplatingServiceImpl implements AdminInterfaceService {
      */
     @Override
     public void init(ServletContext context) throws TemplatingException {
-    	buildMenu();
+    	menu = buildMenu();
         this.context = context;
         try {
         	 //try-run to check it from the very beginning
@@ -92,9 +92,11 @@ public class AdminTemplatingServiceImpl implements AdminInterfaceService {
 
         if(!configurationService.getBooleanConfiguration("templating.cache.enabled",true) && context!=null) {
             init(context);
-            menu.setActive(path);
         }
 
+        //set active
+        menu.setActive(path);
+
         //fill data model
         Map<String, Object> datamodel = new HashMap<String,Object>();
     	for(Properties p : Properties.values()) {
@@ -105,7 +107,7 @@ public class AdminTemplatingServiceImpl implements AdminInterfaceService {
         //end hack!!!
 
         //add menu
-        datamodel.put("MENU",menu);
+        datamodel.put("MENU",menu.getProperties());
         try {
             String s = new String(bytes);
             Matcher m = PATTERN.matcher(s);
@@ -147,24 +149,26 @@ public class AdminTemplatingServiceImpl implements AdminInterfaceService {
             //add modules
             for(String module_string : moduleService.listSortedModules(container_string)) {
                 MenuItem module = new MenuItem(module_string, MenuItemType.MODULE);
-                module.setPath(moduleService.getModuleWeb(module_string));
-                module.setIcon(moduleService.getIcon(module_string));
+                module.set("path",moduleService.getModuleWeb(module_string));
+                if(moduleService.getIcon(module_string) != null)
+                    module.set("icon",moduleService.getIcon(module_string));
 
                 //add pages
                 for(HashMap<String,String> page_object : moduleService.getAdminPageObjects(module_string)) {
                     MenuItem page = new MenuItem(page_object.get("title"), MenuItemType.PAGE);
-                    page.setPath(page_object.get("path"));
+                    page.set("path",page_object.get("link"));
                     module.addItem(page);
                 }
 
                 //add webservice
                 if(!moduleService.getWebservices(module_string).isEmpty()) {
-                    MenuItem page = new MenuItem(DEFAULT_WEBSERVICE_TITLE, MenuItemType.MODULE);
-                    page.setPath(module.getPath()+DEFAULT_REST_PATH);
+                    MenuItem page = new MenuItem(DEFAULT_WEBSERVICE_TITLE, MenuItemType.WEBSERVICE);
+                    page.set("path",module.get("path")+DEFAULT_REST_PATH+DEFAULT_REST_FILE);
+                    module.addItem(page);
                 }
 
                 //add if there are pages to display
-                if(!module.getItems().isEmpty()) container.addItem(module);
+                if(!module.isEmpty()) container.addItem(module);
             }
             menu.addItem(container);
         }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/81503abb/platform/marmotta-core/src/main/resources/config-defaults.properties
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/resources/config-defaults.properties b/platform/marmotta-core/src/main/resources/config-defaults.properties
index 8d70256..4520300 100644
--- a/platform/marmotta-core/src/main/resources/config-defaults.properties
+++ b/platform/marmotta-core/src/main/resources/config-defaults.properties
@@ -93,7 +93,7 @@ linkeddata.mime.rel.default = meta
 templating.sort_by_weight = true
 
 # recache templating file every time
-templating.cache.enabled = true
+templating.cache.enabled = false
 
 
 ###############################################################################

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/81503abb/platform/marmotta-core/src/main/resources/templates/admin.ftl
----------------------------------------------------------------------
diff --git a/platform/marmotta-core/src/main/resources/templates/admin.ftl b/platform/marmotta-core/src/main/resources/templates/admin.ftl
index fa0e2ed..e524a05 100644
--- a/platform/marmotta-core/src/main/resources/templates/admin.ftl
+++ b/platform/marmotta-core/src/main/resources/templates/admin.ftl
@@ -64,19 +64,17 @@
 
 <div class="well sidebar-nav square-corners menu-level-2 span3 full-height">
     <ul class="nav nav-list">
-        <#list MENU as menu>
-        <li class="nav-header">${menu["label"]}</li>
-        <#list menu.modules as submenu>
+        <#list MENU["items"] as menu>
+        <li class="nav-header">${menu.label}</li>
+        <#list menu["items"] as submenu>
             <li
-                <#if submenu["active"]> class="active" </#if>
+                <#if submenu["isActive"]> class="active" </#if>
                     >
-                <a href="${SERVER_URL}${submenu["path"]}
-                <#if submenu["pages"]??>
-                    ${submenu["pages"][0]["link"]}"
+                <#if submenu["items"]?has_content>
+                        <a href="${SERVER_URL}${submenu["items"][0]["path"]?substring(1)}">
                 <#else>
-                        doc/rest/index.html"
+                        <a href="${SERVER_URL}doc/rest/index.html">
                 </#if>
-                >
                     <i class="${submenu["icon"]}"></i>  <!-- TODO icon -->
                     <span>${submenu["label"]}</span>
                 </a>
@@ -90,25 +88,17 @@
     <div class="offset3 span9">
 
         <ul class="nav nav-tabs square-corners">
-        <#list MENU as menu>
-            <#if menu["active"]>
-                <#list menu["modules"] as submenu>
-                    <#if submenu["active"]>
-                        <#list submenu["pages"] as pages>
+        <#list MENU["items"] as menu>
+            <#if menu["isActive"]>
+                <#list menu["items"] as submenu>
+                    <#if submenu["isActive"]>
+                        <#list submenu["items"] as pages>
                                 <li
-                                <#if pages["active"]> class="active" </#if>
+                                <#if pages["isActive"]> class="active" </#if>
                                 >
-                                    <a href="${SERVER_URL}${submenu["path"]}${pages["link"]}">${pages["label"]}</a>
+                                    <a href="${SERVER_URL}${pages["path"]?substring(1)}">${pages["label"]}</a>
                                 </li>
                         </#list>
-                        <#if submenu["webservice"]>
-                            <li
-                            <#if submenu["webservice_active"]> class="active" </#if>
-                            >
-                                <a href="${SERVER_URL}${submenu["path"]}doc/rest/index.html">webservice</a>
-                            </li>
-
-                        </#if>
                     </#if>
                 </#list>
             </#if>