org.apache.tapestry.components
Class ForBean

java.lang.Object
  extended byorg.apache.hivemind.impl.BaseLocatable
      extended byorg.apache.tapestry.AbstractComponent
          extended byorg.apache.tapestry.form.AbstractFormComponent
              extended byorg.apache.tapestry.components.ForBean
All Implemented Interfaces:
IComponent, IFormComponent, IRender, org.apache.hivemind.Locatable, org.apache.hivemind.LocationHolder

public abstract class ForBean
extends AbstractFormComponent

Since:
4.0
Author:
mb
See Also:
IPrimaryKeyConverter, DefaultPrimaryKeyConverter

Nested Class Summary
protected  class ForBean.CompleteRepSource
          An implementation of RepSource that provides the string representation of the given value using all methods.
protected  class ForBean.KeyExpressionRepSource
          An implementation of RepSource that provides the string representation of the given value using just the 'keyExpression' parameter.
protected static interface ForBean.RepSource
          An interface that provides the string representation of a given value
 
Constructor Summary
ForBean()
           
 
Method Summary
protected  java.util.Iterator evaluateFullSourceIterator()
          Returns a new iterator of the values in 'fullSource'.
protected  java.util.Iterator evaluateSourceIterator()
          Returns a new iterator of the values in 'source'.
protected  java.lang.Object findValueWithStringRep(java.util.Iterator sourceIterator, java.util.Iterator fullSourceIterator, java.util.Map repToValueMap, java.lang.String rep, ForBean.RepSource repSource)
          Attempt to find a value in 'source' or 'fullSource' that generates the provided string representation.
protected  java.lang.Object findValueWithStringRepInIterator(java.util.Iterator it, java.util.Map repToValueMap, java.lang.String rep, ForBean.RepSource repSource)
          Attempt to find a value in the provided collection that generates the required string representation.
protected  boolean getCanTakeFocus()
          For component can not take focus.
 java.lang.String getClientId()
          Returns the component's client-side element id.
abstract  IPrimaryKeyConverter getConverter()
           
protected  java.lang.Object getConverterFromValue(java.lang.Object value)
          Uses the 'converter' parameter to determine the primary key of the given value
abstract  DataSqueezer getDataSqueezer()
           
abstract  java.lang.Object getDefaultValue()
           
 java.lang.String getDisplayName()
          May be implemented to return a user-presentable, localized name for the component, which is used in labels or error messages.
abstract  java.lang.String getElement()
           
abstract  ExpressionEvaluator getExpressionEvaluator()
           
 int getIndex()
          The index number, within the source, of the the current value.
abstract  java.lang.String getKeyExpression()
           
protected  java.lang.Object getKeyExpressionFromValue(java.lang.Object value)
          Uses the 'keyExpression' parameter to determine the primary key of the given value
abstract  boolean getMatch()
           
protected  java.lang.Object getPrimaryKeyFromValue(java.lang.Object value)
          Returns the primary key of the given value.
protected  java.util.Iterator getStoredData(IRequestCycle cycle, java.lang.String name)
          Returns a list of the values stored as Hidden fields in the form.
protected  java.lang.String getStringRepFromValue(java.lang.Object value)
          Returns the string representation of the value.
 java.lang.Object getValue()
          Returns the most recent value extracted from the source parameter.
abstract  ValueConverter getValueConverter()
           
protected  java.lang.Object getValueFromStringRep(java.util.Iterator sourceIterator, java.util.Iterator fullSourceIterator, java.util.Map repToValueMap, java.lang.String rep)
          Determines the value that corresponds to the given string representation.
abstract  boolean getVolatile()
           
 boolean isDisabled()
          Returns true if the component is disabled.
protected  void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
          Gets the source binding and iterates through its values.
protected  void renderFormComponent(IMarkupWriter writer, IRequestCycle cycle)
           
protected  void rewindFormComponent(IMarkupWriter writer, IRequestCycle cycle)
           
protected  java.util.Iterator storeSourceData(IForm form, java.lang.String name)
          Stores the provided data in the form and then returns the data as an iterator.
protected  void updateOutputParameters()
          Updates the index and value output parameters if bound.
protected  void updatePrimaryKeysParameter(java.lang.String[] stringReps)
          Updates the primaryKeys parameter if bound.
 
Methods inherited from class org.apache.tapestry.form.AbstractFormComponent
getAlwaysRenderBodyOnRewind, getForm, getIdParameter, getName, isRequired, renderDelegateAttributes, renderDelegatePrefix, renderDelegateSuffix, renderIdAttribute, setClientId, setForm, setName, setName
 
Methods inherited from class org.apache.tapestry.AbstractComponent
addAsset, addBody, addComponent, checkActiveLock, cleanupAfterRender, enterActiveState, finishLoad, finishLoad, format, format, format, format, getAsset, getAssets, getBeans, getBinding, getBindingNames, getBindings, getBody, getBodyCount, getComponent, getComponents, getContainedComponent, getContainer, getExtendedId, getId, getIdPath, getListeners, getMessage, getMessages, getNamespace, getPage, getProperty, getSpecification, isInActiveState, isParameterBound, isRendering, pageEndRender, prepareForRender, render, renderBody, renderInformalParameters, setBinding, setContainedComponent, setContainer, setId, setNamespace, setPage, setProperty, toString
 
Methods inherited from class org.apache.hivemind.impl.BaseLocatable
getLocation, setLocation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.apache.tapestry.IComponent
addAsset, addBody, addComponent, enterActiveState, finishLoad, getAsset, getAssets, getBeans, getBinding, getBindingNames, getBindings, getComponent, getComponents, getContainedComponent, getContainer, getExtendedId, getId, getIdPath, getListeners, getMessage, getMessages, getNamespace, getPage, getProperty, getSpecification, isRendering, renderBody, setBinding, setContainedComponent, setContainer, setId, setNamespace, setPage, setProperty
 
Methods inherited from interface org.apache.tapestry.IRender
render
 
Methods inherited from interface org.apache.hivemind.LocationHolder
setLocation
 
Methods inherited from interface org.apache.hivemind.Locatable
getLocation
 

Constructor Detail

ForBean

public ForBean()
Method Detail

getElement

public abstract java.lang.String getElement()

getKeyExpression

public abstract java.lang.String getKeyExpression()

getConverter

public abstract IPrimaryKeyConverter getConverter()

getDefaultValue

public abstract java.lang.Object getDefaultValue()

getMatch

public abstract boolean getMatch()

getVolatile

public abstract boolean getVolatile()

getDataSqueezer

public abstract DataSqueezer getDataSqueezer()

getValueConverter

public abstract ValueConverter getValueConverter()

getExpressionEvaluator

public abstract ExpressionEvaluator getExpressionEvaluator()

renderComponent

protected void renderComponent(IMarkupWriter writer,
                               IRequestCycle cycle)
Gets the source binding and iterates through its values. For each, it updates the value binding and render's its wrapped elements.

Overrides:
renderComponent in class AbstractFormComponent
See Also:
AbstractComponent.renderComponent(org.apache.tapestry.IMarkupWriter, org.apache.tapestry.IRequestCycle)

getValue

public final java.lang.Object getValue()
Returns the most recent value extracted from the source parameter.

Throws:
org.apache.tapestry.ApplicationRuntimeException - if the For is not currently rendering.

getIndex

public int getIndex()
The index number, within the source, of the the current value.

Throws:
org.apache.tapestry.ApplicationRuntimeException - if the For is not currently rendering.

isDisabled

public boolean isDisabled()
Description copied from interface: IFormComponent
Returns true if the component is disabled. This is important when the containing form is submitted, since disabled parameters do not update their bindings.


updateOutputParameters

protected void updateOutputParameters()
Updates the index and value output parameters if bound.


updatePrimaryKeysParameter

protected void updatePrimaryKeysParameter(java.lang.String[] stringReps)
Updates the primaryKeys parameter if bound.


renderFormComponent

protected void renderFormComponent(IMarkupWriter writer,
                                   IRequestCycle cycle)
Specified by:
renderFormComponent in class AbstractFormComponent

rewindFormComponent

protected void rewindFormComponent(IMarkupWriter writer,
                                   IRequestCycle cycle)
Specified by:
rewindFormComponent in class AbstractFormComponent

getStoredData

protected java.util.Iterator getStoredData(IRequestCycle cycle,
                                           java.lang.String name)
Returns a list of the values stored as Hidden fields in the form. A conversion is performed if the primary key of the value is stored.

Parameters:
cycle - The current request cycle
name - The name of the HTTP parameter whether the values
Returns:
an iterator with the values stored in the provided Hidden fields

storeSourceData

protected java.util.Iterator storeSourceData(IForm form,
                                             java.lang.String name)
Stores the provided data in the form and then returns the data as an iterator. If the primary key of the value can be determined, then that primary key is saved instead.

Parameters:
form - The form where the data will be stored
name - The name under which the data will be stored
Returns:
an iterator with the bound values stored in the form

getStringRepFromValue

protected java.lang.String getStringRepFromValue(java.lang.Object value)
Returns the string representation of the value. The first letter of the string representation shows whether a value or a primary key is being described.

Parameters:
value -
Returns:

getPrimaryKeyFromValue

protected java.lang.Object getPrimaryKeyFromValue(java.lang.Object value)
Returns the primary key of the given value. Uses the 'keyExpression' or the 'converter' (if either is provided).

Parameters:
value - The value from which the primary key should be extracted
Returns:
The primary key of the value, or null if such cannot be extracted.

getKeyExpressionFromValue

protected java.lang.Object getKeyExpressionFromValue(java.lang.Object value)
Uses the 'keyExpression' parameter to determine the primary key of the given value

Parameters:
value - The value from which the primary key should be extracted
Returns:
The primary key of the value as defined by 'keyExpression', or null if such cannot be extracted.

getConverterFromValue

protected java.lang.Object getConverterFromValue(java.lang.Object value)
Uses the 'converter' parameter to determine the primary key of the given value

Parameters:
value - The value from which the primary key should be extracted
Returns:
The primary key of the value as provided by the converter, or null if such cannot be extracted.

getValueFromStringRep

protected java.lang.Object getValueFromStringRep(java.util.Iterator sourceIterator,
                                                 java.util.Iterator fullSourceIterator,
                                                 java.util.Map repToValueMap,
                                                 java.lang.String rep)
Determines the value that corresponds to the given string representation. If the 'match' parameter is true, attempt to find a value in 'source' or 'fullSource' that generates the same string representation. Otherwise, create a new value from the string representation.

Parameters:
rep - the string representation for which a value should be returned
Returns:
the value that corresponds to the provided string representation

findValueWithStringRep

protected java.lang.Object findValueWithStringRep(java.util.Iterator sourceIterator,
                                                  java.util.Iterator fullSourceIterator,
                                                  java.util.Map repToValueMap,
                                                  java.lang.String rep,
                                                  ForBean.RepSource repSource)
Attempt to find a value in 'source' or 'fullSource' that generates the provided string representation. Use the RepSource interface to determine what the string representation of a particular value is.

Parameters:
rep - the string representation for which a value should be returned
repSource - an interface providing the string representation of a given value
Returns:
the value in 'source' or 'fullSource' that corresponds to the provided string representation

findValueWithStringRepInIterator

protected java.lang.Object findValueWithStringRepInIterator(java.util.Iterator it,
                                                            java.util.Map repToValueMap,
                                                            java.lang.String rep,
                                                            ForBean.RepSource repSource)
Attempt to find a value in the provided collection that generates the required string representation. Use the RepSource interface to determine what the string representation of a particular value is.

Parameters:
rep - the string representation for which a value should be returned
repSource - an interface providing the string representation of a given value
it - the iterator of the collection in which a value should be searched
Returns:
the value in the provided collection that corresponds to the required string representation

evaluateSourceIterator

protected java.util.Iterator evaluateSourceIterator()
Returns a new iterator of the values in 'source'.

Returns:
the 'source' iterator

evaluateFullSourceIterator

protected java.util.Iterator evaluateFullSourceIterator()
Returns a new iterator of the values in 'fullSource'.

Returns:
the 'fullSource' iterator

getCanTakeFocus

protected boolean getCanTakeFocus()
For component can not take focus.

Overrides:
getCanTakeFocus in class AbstractFormComponent

getClientId

public java.lang.String getClientId()
Description copied from interface: IFormComponent
Returns the component's client-side element id. Typically, this is specified using an id parameter on the component and is passed through IRequestCycle.getUniqueId(String) to ensure that it is unique. The component is expected to write an id attribute (if it has a non null id). As with IFormComponent.getName(), if a component renders more than once (such as inside a loop) then on each render it will have a different clientId.

Returns:
the id, or null if the component doesn't support an id.

getDisplayName

public java.lang.String getDisplayName()
Description copied from interface: IFormComponent
May be implemented to return a user-presentable, localized name for the component, which is used in labels or error messages. Most components simply return null.