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)
{