You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by de...@apache.org on 2019/07/16 10:40:21 UTC

[empire-db] branch master updated: EMPIREDB-296 (page-specific idParams)

This is an automated email from the ASF dual-hosted git repository.

derjan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new b786a41  EMPIREDB-296 (page-specific idParams)
b786a41 is described below

commit b786a419568a0fce81fbd476294155f8dff07bb7
Author: Jan Glaubitz <ja...@glaubitz.org>
AuthorDate: Tue Jul 16 12:37:41 2019 +0200

    EMPIREDB-296 (page-specific idParams)
---
 .../jsf2/pageelements/RecordPageElement.java       | 12 +++++++++++
 .../java/org/apache/empire/jsf2/pages/Page.java    |  6 ++++++
 .../org/apache/empire/jsf2/utils/ParameterMap.java | 25 ++++++++++++++++++++++
 3 files changed, 43 insertions(+)

diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/RecordPageElement.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/RecordPageElement.java
index e0f0ba3..bfce3f3 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/RecordPageElement.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/RecordPageElement.java
@@ -30,6 +30,7 @@ import org.apache.empire.exceptions.InvalidArgumentException;
 import org.apache.empire.exceptions.ObjectNotValidException;
 import org.apache.empire.jsf2.app.FacesUtils;
 import org.apache.empire.jsf2.pages.Page;
+import org.apache.empire.jsf2.pages.PageDefinition;
 import org.apache.empire.jsf2.pages.PageElement;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -164,6 +165,17 @@ public class RecordPageElement<T extends DBRecord> extends PageElement
     }
     
     /**
+     * loads an existing record the the specified page
+     * 
+     * @param page
+     * @param idParam
+     */
+    public void loadRecord(PageDefinition page, String idParam) {
+        Object[] key = FacesUtils.getParameterMap().get(page, rowset, idParam);
+        loadRecord(key);
+    }
+    
+    /**
      * creates a new record
      */
     public void createRecord()
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java
index d9d86ea..d7b523a 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pages/Page.java
@@ -405,6 +405,12 @@ public abstract class Page implements Serializable
         return FacesUtils.getParameterMap(fc).put(rowset, key);
     }
 
+    public String getIdParamForKey(PageDefinition page, DBRowSet rowset, Object[] key)
+    {
+        FacesContext fc = FacesUtils.getContext();
+        return FacesUtils.getParameterMap(fc).put(page, rowset, key);
+    }
+    
     public void addJavascriptCall(String function)
     {
         // Add Call
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ParameterMap.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ParameterMap.java
index e4de9dd..88b4024 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ParameterMap.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ParameterMap.java
@@ -31,6 +31,7 @@ import org.apache.empire.db.DBRowSet;
 import org.apache.empire.exceptions.InternalException;
 import org.apache.empire.exceptions.InvalidArgumentException;
 import org.apache.empire.exceptions.UnexpectedReturnValueException;
+import org.apache.empire.jsf2.pages.PageDefinition;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -160,6 +161,23 @@ public class ParameterMap implements Serializable
         putValue(type, id, key);
         return id;
     }
+    
+    /**
+     * Generates an idParam which is only valid for the given page.
+     * 
+     * @param targetPage
+     * @param rowset
+     * @param key
+     * @return
+     */
+    public String put(PageDefinition targetPage, DBRowSet rowset, Object[] key) {
+        // Generate id and put in map
+        String ref = targetPage.getPageBeanName() + "/" + StringUtils.valueOf(key);
+        String idParam = encodeString(ref);
+        String type = targetPage.getPageBeanName() + "$" + rowset.getClass().getSimpleName();
+        putValue(type, idParam, key);
+        return idParam;
+    }
 
     public Object get(String type, String id)
     {
@@ -180,6 +198,13 @@ public class ParameterMap implements Serializable
         Hashtable<String, Object> map = typeMap.get(type);
         return (map!=null ? ((Object[])map.get(id)) : null);
     }
+    
+    public Object[] get(PageDefinition page, DBRowSet rowset, String id)
+    {
+    	String type = page.getPageBeanName() + "$" + rowset.getClass().getSimpleName();
+        Hashtable<String, Object> map = typeMap.get(type);
+        return (map!=null ? ((Object[])map.get(id)) : null);
+    }
 
     public void clear(Class<? extends Object> c)
     {