diff options
Diffstat (limited to 'eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractGUIFormBuilderConfiguration.java')
-rw-r--r-- | eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractGUIFormBuilderConfiguration.java | 83 |
1 files changed, 63 insertions, 20 deletions
diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractGUIFormBuilderConfiguration.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractGUIFormBuilderConfiguration.java index 9cee031d..51b4e0b4 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractGUIFormBuilderConfiguration.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/gui/AbstractGUIFormBuilderConfiguration.java @@ -30,6 +30,8 @@ import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import at.gv.egiz.eaaf.core.api.gui.IGUIBuilderConfiguration; @@ -38,7 +40,16 @@ import at.gv.egiz.eaaf.core.api.gui.IGUIBuilderConfiguration; * */ public abstract class AbstractGUIFormBuilderConfiguration implements IGUIBuilderConfiguration { - + private static final Logger log = LoggerFactory.getLogger(AbstractGUIFormBuilderConfiguration.class); + + public static final String PARAM_GROUP_FORM = "form"; + public static final String PARAM_GROUP_ACTIONS = "actions"; + public static final String PARAM_GROUP_PARAMS = "params"; + public static final String PARAM_GROUP_UIOPTIONS = "uiOptions"; + public static final String PARAM_GROUP_MSG = "msg"; + + + public static final String PARAM_VIEWNAME = "viewName"; public static final String PARAM_AUTHCONTEXT = "contextPath"; public static final String PARAM_FORMSUBMITENDPOINT = "submitEndpoint"; @Deprecated public static final String PARAM_PENDINGREQUESTID_DEPRECATED = "pendingReqID"; @@ -48,6 +59,8 @@ public abstract class AbstractGUIFormBuilderConfiguration implements IGUIBuilder private String viewName = null; private String formSubmitEndpoint = null; + private final Map<String, Object> params = new HashMap<String, Object>(); + /** * @param authURL IDP PublicURL-Prefix which should be used, but never null * @param viewName Name of the template (with suffix) but never null @@ -73,16 +86,7 @@ public abstract class AbstractGUIFormBuilderConfiguration implements IGUIBuilder this.formSubmitEndpoint = "/" + formSubmitEndpoint; } } - - - /** - * Define the parameters, which should be evaluated in the template <br> - * <b>IMPORTANT:</b> external HTML escapetion is required, because it is NOT done internally during the building process - * - * @return Map of parameters, which should be added to template - */ - abstract protected Map<String, Object> getSpecificViewParameters(); - + /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.frontend.builder.IGUIBuilderConfiguration#getViewName() */ @@ -97,19 +101,58 @@ public abstract class AbstractGUIFormBuilderConfiguration implements IGUIBuilder * @see at.gv.egovernment.moa.id.auth.frontend.builder.IGUIBuilderConfiguration#getViewParameters() */ @Override - public final Map<String, Object> getViewParameters() { + public final Map<String, Object> getViewParameters() { + //set generic parameters + setViewParameter(PARAM_GROUP_FORM, PARAM_AUTHCONTEXT, this.authURL); + setViewParameter(PARAM_GROUP_FORM, PARAM_FORMSUBMITENDPOINT, this.formSubmitEndpoint); + setViewParameter(PARAM_GROUP_FORM, PARAM_VIEWNAME, this.viewName); + //get parameters from detail implementation - Map<String, Object> specParams = getSpecificViewParameters(); - if (specParams == null) - specParams = new HashMap<String, Object>(); + putSpecificViewParameters(); + + try { + log.trace("Full view parameters: {}", StringUtils.join(params, ",")); + } catch (final Exception e) { + log.info("Can NOT trace view parameters. Reason: {}", e.getMessage() ); + } - //add generic parameters - specParams.put(PARAM_AUTHCONTEXT, this.authURL); - if (this.formSubmitEndpoint != null) - specParams.put(PARAM_FORMSUBMITENDPOINT, this.formSubmitEndpoint); + return params; - return specParams; + } + + /** + * Define the parameters, which should be evaluated in the template <br> + * <b>IMPORTANT:</b> external HTML escapetion is required, because it is NOT done internally during the building process + * + */ + abstract protected void putSpecificViewParameters(); + + @SuppressWarnings("unchecked") + protected void setViewParameter(String group, String key, Object value) { + if (StringUtils.isNotEmpty(group)) { + log.trace("Adding group object ... "); + Object groupMap = params.get(group); + if (groupMap == null) { + groupMap = new HashMap<String, Object>();; + log.trace("Build new group element"); + + } + + if (groupMap instanceof Map<?,?>) { + ((Map<String, Object>) groupMap).put(key, value); + params.put(group, groupMap); + + } else + log.warn("Can NOT add element: {} to group: {}, because group is of type: {}", + key, group, groupMap.getClass().getName()); + + } else { + log.trace("Add root object ... "); + params.put(key, value); + + } + } } |