Project Wonder 5.0

er.directtoweb.components.relationships
Class ERD2WDisplayRelationshipFlag

java.lang.Object
  extended by com.webobjects.appserver.WOElement
      extended by com.webobjects.appserver.WOComponent
          extended by com.webobjects.directtoweb.D2WComponent
              extended by com.webobjects.directtoweb.D2WStatelessComponent
                  extended by com.webobjects.directtoweb.D2WDisplayBoolean
                      extended by er.directtoweb.components.relationships.ERD2WDisplayRelationshipFlag
All Implemented Interfaces:
com.webobjects.appserver.WOActionResults, com.webobjects.directtoweb.generation.DTWGeneration, com.webobjects.foundation.NSKeyValueCoding, com.webobjects.foundation.NSKeyValueCoding.ErrorHandling, com.webobjects.foundation.NSKeyValueCodingAdditions, com.webobjects.foundation.NSValidation, java.io.Serializable, java.lang.Cloneable

public class ERD2WDisplayRelationshipFlag
extends com.webobjects.directtoweb.D2WDisplayBoolean

Allows for a flag if an object has a given related object. Given a "User" with a "groups" relationship to a "Group" entity, you can have a list page for your users and tabular display if a user is in a group or not. You need some rules like:

 100 : (task = 'list') and (entity.name = "User") => displayPropertyKeys = (name, "groups.@Admin", "groups.@Accounting")
 100 : (task = 'list') and (entity.name = "User") and (propertyKey like 'groups.*') => componentName = "ERD2WDisplayRelationshipFlag"
 100 : (entity.name = 'Group') => keyWhenRelationship = "name"
 100 : (propertyKey = 'groups.@Admin') => displayNameForProperty = "Admin"
 100 : (propertyKey = 'groups.@Accounting') => displayNameForProperty = "Accounting"
 
However, this might be too much work, as you need to change the rules anytime you add or remove from the Group entity. To automatically display possible values from the Group entity, use the ERDDelayedRelationshipFlagAssignment:
 100 : (task = 'list') and (entity.name = "User") => displayPropertyKeys = (name, "@groups") [er.directtoweb.ERDDelayedRelationshipFlagAssignment]
 100 : (task = 'list') and (entity.name = "User") and (propertyKey like 'groups.*') => componentName = "ERD2WDisplayRelationshipFlag"
 100 : (entity.name = 'Group') => keyWhenRelationship = "name"
 100 : (propertyKey like 'groups.@*') => displayNameForProperty = '<computed>' [er.directtoweb.ERDDelayedRelationshipFlagAssignment]
 100 : (propertyKey like 'groups.@*') => restrictedChoiceKey = "session.possibleGroups"
 
The "@" in the displayPropertyKeys rule is the flag that tells the assignment which relationship to expand. Together with a method that returns the candidates for the Group entity in the Session class, you now have an automatic display of boolean flags:
 Name   |  Admin   | Accounting | Marketing
 ------------------------------------------
 Fred   |   [x]    |    [ ]     |   [ ]    
 Carl   |   [ ]    |    [x]     |   [x]    
 Suzi   |   [x]    |    [ ]     |   [ ]    
 
Note that the ERDDelayedRelationshipFlagAssignment gets called up pretty often, so you might need to make your candidate method in the session cache the keys.

See Also:
Serialized Form
Author:
ak
D2W Keys
keyWhenRelationshipkeyWhenRelationship
           

Nested Class Summary
 
Nested classes/interfaces inherited from class com.webobjects.appserver.WOComponent
com.webobjects.appserver.WOComponent._EventLoggingEnabler, com.webobjects.appserver.WOComponent.Event
 
Nested classes/interfaces inherited from interface com.webobjects.foundation.NSKeyValueCodingAdditions
com.webobjects.foundation.NSKeyValueCodingAdditions.DefaultImplementation, com.webobjects.foundation.NSKeyValueCodingAdditions.Utility
 
Nested classes/interfaces inherited from interface com.webobjects.foundation.NSKeyValueCoding
com.webobjects.foundation.NSKeyValueCoding._BooleanFieldBinding, com.webobjects.foundation.NSKeyValueCoding._BooleanMethodBinding, com.webobjects.foundation.NSKeyValueCoding._FieldBinding, com.webobjects.foundation.NSKeyValueCoding._ForwardingBinding, com.webobjects.foundation.NSKeyValueCoding._KeyBinding, com.webobjects.foundation.NSKeyValueCoding._KeyBindingCreation, com.webobjects.foundation.NSKeyValueCoding._MethodBinding, com.webobjects.foundation.NSKeyValueCoding._NumberFieldBinding, com.webobjects.foundation.NSKeyValueCoding._NumberMethodBinding, com.webobjects.foundation.NSKeyValueCoding._ReflectionKeyBindingCreation, com.webobjects.foundation.NSKeyValueCoding.ErrorHandling, com.webobjects.foundation.NSKeyValueCoding.Null, com.webobjects.foundation.NSKeyValueCoding.UnknownKeyException, com.webobjects.foundation.NSKeyValueCoding.ValueAccessor
 
Nested classes/interfaces inherited from interface com.webobjects.foundation.NSValidation
com.webobjects.foundation.NSValidation._MethodBinding, com.webobjects.foundation.NSValidation._ValidationBinding, com.webobjects.foundation.NSValidation.DefaultImplementation, com.webobjects.foundation.NSValidation.Utility, com.webobjects.foundation.NSValidation.ValidationException
 
Field Summary
 
Fields inherited from class com.webobjects.directtoweb.D2WComponent
_eo, _localContext, currentObjectKey
 
Fields inherited from class com.webobjects.appserver.WOComponent
_Extension, _IsEventLoggingEnabled, _keyAssociations
 
Fields inherited from interface com.webobjects.foundation.NSKeyValueCoding.ErrorHandling
_CLASS
 
Fields inherited from interface com.webobjects.foundation.NSKeyValueCodingAdditions
_CLASS, _KeyPathSeparatorChar, KeyPathSeparator
 
Fields inherited from interface com.webobjects.foundation.NSKeyValueCoding
NullValue
 
Fields inherited from interface com.webobjects.foundation.NSValidation
_CLASS
 
Constructor Summary
ERD2WDisplayRelationshipFlag(com.webobjects.appserver.WOContext context)
           
 
Method Summary
 java.lang.Object objectPropertyValue()
           
 
Methods inherited from class com.webobjects.directtoweb.D2WStatelessComponent
d2wContext, isStateless, localContext, object, reset
 
Methods inherited from class com.webobjects.directtoweb.D2WComponent
allEntities, allowCollapsing, applicationPort, assistantPort, attribute, backgroundColorForHeaderRow, backgroundColorForPage, backgroundColorForTable, backgroundColorForTableDark, backgroundColorForTableLight, color, currentSettings, currentUrl, d2wContextVisibleEntityNamesCountPlus1, defaultRowspan, displayNameForKeyWhenRelationship, displayNameForProperty, displayPropertyKeys, dynamicPages, entity, entityName, formatter, generationReplacementFor, generationReplacementForCurrentObject, hasCustomKey, hasEntity, hasNoColor, homeClicked, homeHref, isEditing, isEntityReadOnly, isEntityReadOnly, isLiveAssistantEnabled, isNotBoldAsBoolean, isNotItalicAsBoolean, isPropertyAnAttribute, isWebAssistantActive, isWebAssistantConnected, isWebAssistantEnabled, keyForGenerationReplacementForVariableNamed, keyWhenRelationship, lastUrl, length, logout, objectPropertyValueIsNonNull, pageTitle, property, propertyKey, propertyValueClassName, relationship, replacementAssociationForAssociation, resourcePathURL, sessionID, setCurrentSettings, setDynamicPages, setEntities, setEntity, setEntityName, setLocalContext, setObject, setPropertyKey, setResourcePathURL, setTask, setTasks, showBanner, showWebAssistant, submitActionName, target, task, tasks, visibleEntityNames
 
Methods inherited from class com.webobjects.appserver.WOComponent
_associationWithName, _awakeInContext, _childTemplate, _componentDefinition, _componentUnroll, _isPage, _setContext, _setIsPage, _setParent, _setSubcomponent, _sleepInContext, _subcomponentForElementWithID, _templateNameForClass, _unroll, appendToResponse, application, awake, baseURL, bindingKeys, canAccessFieldsDirectly, canGetValueForBinding, canSetValueForBinding, clone, context, debugString, descriptionForResponse, ensureAwakeInContext, frameworkName, generateResponse, handleQueryWithUnboundKey, handleTakeValueForUnboundKey, hasBinding, hasSession, invokeAction, isCachingEnabled, isEventLoggingEnabled, logString, name, pageWithName, parent, path, pathURL, performParentAction, pullValuesFromParent, pushValuesToParent, session, set_componentUnroll, set_unroll, setCachingEnabled, setValueForBinding, sleep, synchronizesVariablesWithBindings, takeValueForKey, takeValueForKeyPath, takeValuesFromRequest, template, templateWithHTMLString, templateWithName, toString, unableToSetNullForKey, validateTakeValueForKeyPath, validateValueForKey, validationFailedWithException, valueForBinding, valueForKey, valueForKeyPath
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ERD2WDisplayRelationshipFlag

public ERD2WDisplayRelationshipFlag(com.webobjects.appserver.WOContext context)
Method Detail

objectPropertyValue

public java.lang.Object objectPropertyValue()
Overrides:
objectPropertyValue in class com.webobjects.directtoweb.D2WComponent

Last updated: Tue, Feb 21, 2017 • 05:45 PM CET

Copyright © 2002 – 2007 Project Wonder.