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 do...@apache.org on 2012/08/21 18:48:59 UTC
svn commit: r1375658 - in
/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2:
app/FacesApplication.java components/ControlTag.java components/InputTag.java
Author: doebele
Date: Tue Aug 21 16:48:59 2012
New Revision: 1375658
URL: http://svn.apache.org/viewvc?rev=1375658&view=rev
Log:
EMPIREDB-162
Allows partial submit (ignore Input controls that have been manually set to "not required")
Modified:
empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesApplication.java
empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesApplication.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesApplication.java?rev=1375658&r1=1375657&r2=1375658&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesApplication.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesApplication.java Tue Aug 21 16:48:59 2012
@@ -35,6 +35,7 @@ import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.sql.DataSource;
+import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.DataType;
import org.apache.empire.db.DBDatabase;
@@ -151,6 +152,28 @@ public abstract class FacesApplication e
}
return false;
}
+
+ /**
+ * returns true if a form input element has been partially submitted
+ * @param fc the Faces Context
+ * @return the componentId or null if no partial submit was been performed
+ */
+ public boolean isPartialSubmit(final FacesContext fc)
+ {
+ Map<String,String> parameterMap = fc.getExternalContext().getRequestParameterMap();
+ return ObjectUtils.getBoolean(parameterMap.get("ice.submit.partial"));
+ }
+
+ /**
+ * returns the componentId for which a partial submit has been performed.
+ * @param fc the Faces Context
+ * @return the componentId or null if no partial submit was been performed
+ */
+ public String getPartialSubmitComponentId(final FacesContext fc)
+ {
+ Map<String,String> parameterMap = fc.getExternalContext().getRequestParameterMap();
+ return parameterMap.get("ice.event.captured");
+ }
/**
* finds a component from with a given id from a given start component
Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java?rev=1375658&r1=1375657&r2=1375658&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java Tue Aug 21 16:48:59 2012
@@ -205,6 +205,7 @@ public class ControlTag extends UIInput
protected InputControl control = null;
protected InputControl.InputInfo inpInfo = null;
+ protected boolean hasRequiredFlagSet = false;
public ControlTag()
{
@@ -330,6 +331,14 @@ public class ControlTag extends UIInput
{
super.encodeEnd(context);
}
+
+ @Override
+ public void setRequired(boolean required)
+ {
+ super.setRequired(required);
+ // flag has been set
+ hasRequiredFlagSet = true;
+ }
private boolean isCustomInput()
{
@@ -376,8 +385,12 @@ public class ControlTag extends UIInput
else
{
inpInfo = helper.getInputInfo(context);
+ // set required
+ if (hasRequiredFlagSet==false)
+ super.setRequired(helper.isValueRequired());
// render input
control.renderInput(parent, inpInfo, context, false);
+
}
// render components
parent.encodeAll(context);
@@ -410,8 +423,14 @@ public class ControlTag extends UIInput
@Override
public void validateValue(FacesContext context, Object value)
{ // Check state
- if (inpInfo==null)
+ if (inpInfo==null || !isValid())
return;
+ // Skip Null values if not required
+ if (hasRequiredFlagSet && !isRequired() && isEmpty(value)) // && helper.isValueRequired()
+ { // Value is null, but not required
+ log.debug("Skipping validation for {} due to Null value.", inpInfo.getColumn().getName());
+ return;
+ }
// Validate value
inpInfo.validate(value);
setValid(true);
@@ -453,9 +472,17 @@ public class ControlTag extends UIInput
// No Action
if (!isValid() || !isLocalValueSet())
return;
+ // check required?
+ Object value = getLocalValue();
+ // check required
+ if (hasRequiredFlagSet && !isRequired() && isEmpty(value) && helper.isValueRequired())
+ { // Value is null, but not required
+ log.debug("Skipping model update for {} due to Null value.", inpInfo.getColumn().getName());
+ return;
+ }
// super.updateModel(context);
log.debug("Updating model input for {}.", inpInfo.getColumn().getName());
- inpInfo.setValue(getLocalValue());
+ inpInfo.setValue(value);
setValue(null);
setLocalValueSet(false);
// Post update
Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java?rev=1375658&r1=1375657&r2=1375658&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java Tue Aug 21 16:48:59 2012
@@ -45,6 +45,7 @@ public class InputTag extends UIInput im
private InputControl control = null;
private InputControl.InputInfo inpInfo = null;
+ protected boolean hasRequiredFlagSet = false;
private static int itemIdSeq = 0;
private final int itemId;
@@ -113,6 +114,9 @@ public class InputTag extends UIInput im
else
{
inpInfo = helper.getInputInfo(context);
+ // set required
+ if (hasRequiredFlagSet==false)
+ super.setRequired(helper.isValueRequired());
// render input
control.renderInput(this, inpInfo, context, true);
}
@@ -120,6 +124,14 @@ public class InputTag extends UIInput im
}
@Override
+ public void setRequired(boolean required)
+ {
+ super.setRequired(required);
+ // flag has been set
+ hasRequiredFlagSet = true;
+ }
+
+ @Override
public Object getValue()
{
// check for record
@@ -144,6 +156,12 @@ public class InputTag extends UIInput im
{ // Check state
if (inpInfo==null)
return;
+ // Skip Null values if not required
+ if (hasRequiredFlagSet && !isRequired() && isEmpty(value)) // && helper.isValueRequired()
+ { // Value is null, but not required
+ log.debug("Skipping validation for {} due to Null value.", inpInfo.getColumn().getName());
+ return;
+ }
// Validate value
inpInfo.validate(value);
setValid(true);
@@ -186,9 +204,16 @@ public class InputTag extends UIInput im
// No Action
if (!isValid() || !isLocalValueSet())
return;
+ // check required
+ Object value = getLocalValue();
+ if (hasRequiredFlagSet && !isRequired() && isEmpty(value) && helper.isValueRequired())
+ { // Value is null, but not required
+ log.debug("Skipping model update for {} due to Null value.", inpInfo.getColumn().getName());
+ return;
+ }
// super.updateModel(context);
log.debug("Updating model input for {}.", inpInfo.getColumn().getName());
- inpInfo.setValue(getLocalValue());
+ inpInfo.setValue(value);
setValue(null);
setLocalValueSet(false);
// Post update