org.kuali.rice.krad.uif.view
Class ViewIndex

java.lang.Object
  extended by org.kuali.rice.krad.uif.view.ViewIndex
All Implemented Interfaces:
Serializable

public class ViewIndex
extends Object
implements Serializable

Holds field indexes of a View instance for retrieval

Author:
Kuali Rice Team (rice.collab@kuali.org)
See Also:
Serialized Form

Constructor Summary
ViewIndex()
          Constructs new instance
 
Method Summary
 void addInitialComponentStateIfNeeded(Component component)
          Adds a copy of the given component instance to the map of initial component states keyed
 void addSequenceValueToSnapshot(String componentId, int sequenceVal)
           
 void clearIndexesAfterRender()
          Invoked after the view lifecycle or component refresh has run to clear indexes that are not needed for the post
 CollectionGroup getCollectionGroupByPath(String collectionPath)
          Retrieves a CollectionGroup instance from the index
 Map<String,CollectionGroup> getCollectionsIndex()
          Gets the Map that contains collection indexing information.
 Component getComponentById(String id)
          Retrieves a Component from the view index by Id
 DataField getDataFieldByPath(String propertyPath)
          Retrieves a DataField instance from the index
 DataField getDataFieldByPropertyName(String propertyName)
          Retrieves a DataField instance that has the given property name specified (note this is not the full binding path and first match is returned)
 Map<String,DataField> getDataFieldIndex()
          Gets the Map that contains attribute field indexing information.
 Map<String,PropertyEditor> getFieldPropertyEditors()
          Maintains configuration of properties that have been configured for the view (if render was set to true) and there corresponding PropertyEdtior (if configured)
 Map<String,Integer> getIdSequenceSnapshot()
           
 Map<String,Component> getInitialComponentStates()
          Preserves initial state of components needed for doing component refreshes
 Map<String,PropertyEditor> getSecureFieldPropertyEditors()
          Maintains configuration of secure properties that have been configured for the view (if render was set to true) and there corresponding PropertyEdtior (if configured)
protected  void index(View view)
          Walks through the View tree and indexes all components found.
 void indexComponent(Component component)
          Adds an entry to the main index for the given component.
 void setFieldPropertyEditors(Map<String,PropertyEditor> fieldPropertyEditors)
          Setter for the Map that holds view property paths to configured Property Editors (non secure fields only)
 void setIdSequenceSnapshot(Map<String,Integer> idSequenceSnapshot)
           
 void setInitialComponentStates(Map<String,Component> initialComponentStates)
          Setter for the map holding initial component states
 void setSecureFieldPropertyEditors(Map<String,PropertyEditor> secureFieldPropertyEditors)
          Setter for the Map that holds view property paths to configured Property Editors (secure fields only)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ViewIndex

public ViewIndex()
Constructs new instance

Method Detail

index

protected void index(View view)
Walks through the View tree and indexes all components found. All components are indexed by their IDs with the special indexing done for certain components

DataField instances are indexed by the attribute path. This is useful for retrieving the InputField based on the incoming request parameter

CollectionGroup instances are indexed by the collection path. This is useful for retrieving the CollectionGroup based on the incoming request parameter


indexComponent

public void indexComponent(Component component)
Adds an entry to the main index for the given component. If the component is of type DataField or CollectionGroup an entry is created in the corresponding indexes for those types as well. Then the #indexComponent method is called for each of the component's children

If the component is already contained in the indexes, it will be replaced

Special processing is done for DataField instances to register their property editor which will be used for form binding

Parameters:
component - - component instance to index

clearIndexesAfterRender

public void clearIndexesAfterRender()
Invoked after the view lifecycle or component refresh has run to clear indexes that are not needed for the post


getComponentById

public Component getComponentById(String id)
Retrieves a Component from the view index by Id

Parameters:
id - - id for the component to retrieve
Returns:
Component instance found in index, or null if no such component exists

getDataFieldByPath

public DataField getDataFieldByPath(String propertyPath)
Retrieves a DataField instance from the index

Parameters:
propertyPath - - full path of the data field (from the form)
Returns:
DataField instance for the path or Null if not found

getDataFieldByPropertyName

public DataField getDataFieldByPropertyName(String propertyName)
Retrieves a DataField instance that has the given property name specified (note this is not the full binding path and first match is returned)

Parameters:
propertyName - - property name for field to retrieve
Returns:
DataField instance found or null if not found

getDataFieldIndex

public Map<String,DataField> getDataFieldIndex()
Gets the Map that contains attribute field indexing information. The Map key points to an attribute binding path, and the Map value is the DataField instance

Returns:
Map data fields index map

getCollectionsIndex

public Map<String,CollectionGroup> getCollectionsIndex()
Gets the Map that contains collection indexing information. The Map key gives the binding path to the collection, and the Map value givens the CollectionGroup instance

Returns:
Map collection index map

getCollectionGroupByPath

public CollectionGroup getCollectionGroupByPath(String collectionPath)
Retrieves a CollectionGroup instance from the index

Parameters:
collectionPath - - full path of the collection (from the form)
Returns:
CollectionGroup instance for the collection path or Null if not found

getInitialComponentStates

public Map<String,Component> getInitialComponentStates()
Preserves initial state of components needed for doing component refreshes

Some components, such as those that are nested or created in code cannot be requested from the spring factory to get new instances. For these a copy of the component in its initial state is set in this map which will be used when doing component refreshes (which requires running just that component's lifecycle)

Map entries are added during the perform initialize phase from ViewHelperService

Returns:
Map - map with key giving the factory id for the component and the value the component instance

addInitialComponentStateIfNeeded

public void addInitialComponentStateIfNeeded(Component component)
Adds a copy of the given component instance to the map of initial component states keyed

Component is only added if its factory id is not set yet (which would happen if it had a spring bean id and we can get the state from Spring). Once added the factory id will be set to the component id

Parameters:
component - - component instance to add

setInitialComponentStates

public void setInitialComponentStates(Map<String,Component> initialComponentStates)
Setter for the map holding initial component states

Parameters:
initialComponentStates -

getFieldPropertyEditors

public Map<String,PropertyEditor> getFieldPropertyEditors()
Maintains configuration of properties that have been configured for the view (if render was set to true) and there corresponding PropertyEdtior (if configured)

Information is pulled out of the View during the lifecycle so it can be used when a form post is done from the View. Note if a field is secure, it will be placed in the getSecureFieldPropertyEditors() map instead

Returns:
Map map of property path (full) to PropertyEditor

setFieldPropertyEditors

public void setFieldPropertyEditors(Map<String,PropertyEditor> fieldPropertyEditors)
Setter for the Map that holds view property paths to configured Property Editors (non secure fields only)

Parameters:
fieldPropertyEditors -

getSecureFieldPropertyEditors

public Map<String,PropertyEditor> getSecureFieldPropertyEditors()
Maintains configuration of secure properties that have been configured for the view (if render was set to true) and there corresponding PropertyEdtior (if configured)

Information is pulled out of the View during the lifecycle so it can be used when a form post is done from the View. Note if a field is non-secure, it will be placed in the getFieldPropertyEditors() map instead

Returns:
Map map of property path (full) to PropertyEditor

setSecureFieldPropertyEditors

public void setSecureFieldPropertyEditors(Map<String,PropertyEditor> secureFieldPropertyEditors)
Setter for the Map that holds view property paths to configured Property Editors (secure fields only)

Parameters:
secureFieldPropertyEditors -

getIdSequenceSnapshot

public Map<String,Integer> getIdSequenceSnapshot()

setIdSequenceSnapshot

public void setIdSequenceSnapshot(Map<String,Integer> idSequenceSnapshot)

addSequenceValueToSnapshot

public void addSequenceValueToSnapshot(String componentId,
                                       int sequenceVal)


Copyright © 2005-2012 The Kuali Foundation. All Rights Reserved.