ERDDelayedExtraQualifierAssignment Class Reference

Inherits er::directtoweb::assignments::delayed::ERDDelayedAssignment.

Collaboration diagram for ERDDelayedExtraQualifierAssignment:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 ERDDelayedExtraQualifierAssignment (String key, Object value)
 ERDDelayedExtraQualifierAssignment (EOKeyValueUnarchiver u)
Object fireNow (D2WContext c)

Static Public Member Functions

static Object decodeWithKeyValueUnarchiver (EOKeyValueUnarchiver eokeyvalueunarchiver)

Static Public Attributes

static final Logger log = Logger.getLogger(ERDDelayedExtraQualifierAssignment.class)

Protected Member Functions

EOQualifier extraQualifier (D2WContext c, NSDictionary dict)
EOQualifier qualifierForArray (String key, NSArray objects)
EOQualifier qualifierForObject (String key, Object object)


Detailed Description

Very useful when you want to restrict the things a user can see during searches or in list pages.
set it up via a rule like:
  entity.name = "Movie" and session.user.role <> "admin"
   =>
  extraRestrictingQualifier = {
      "studio" = "session.user.studios";
  } [er.directtoweb.ERDDelayedExtraQualifierAssignment]
then in your query page use sth like:
 public EODataSource queryDataSource() {
    EODataSource ds = super.queryDataSource();
    if (ds != null && (ds instanceof EODatabaseDataSource)) {
        EOFetchSpecification fs = ((EODatabaseDataSource)ds).fetchSpecification();
        EOQualifier q = fs.qualifier();
        EOQualifier extraQualifier = (EOQualifier)d2wContext().valueForKey("extraRestrictingQualifier");
        if(q != null && extraQualifier != null) {
            q = new EOAndQualifier(new NSArray(new Object[] {q, extraQualifier}));
        } else if(extraQualifier != null) {
            q = extraQualifier;
        }
        fs.setQualifier(q);
    }
    return ds;
 }

This should guarantee that the user can only see the Movies that are made by studios contained in his studio relationship. If the value is null, then this qualifier will not be added. To search for NULL, return NSKeyValueCoding.NullValue.

Author:
ak

Constructor & Destructor Documentation

ERDDelayedExtraQualifierAssignment ( EOKeyValueUnarchiver  u  ) 

Public constructor

Parameters:
u key-value unarchiver used when unarchiving from rule files.

ERDDelayedExtraQualifierAssignment ( String  key,
Object  value 
)

Public constructor

Parameters:
key context key
value of the assignment


Member Function Documentation

static Object decodeWithKeyValueUnarchiver ( EOKeyValueUnarchiver  eokeyvalueunarchiver  )  [static]

Static constructor required by the EOKeyValueUnarchiver interface. If this isn't implemented then the default behavior is to construct the first super class that does implement this method. Very lame.

Parameters:
eokeyvalueunarchiver to be unarchived
Returns:
decoded assignment of this class

EOQualifier extraQualifier ( D2WContext  c,
NSDictionary  dict 
) [protected]

Object fireNow ( D2WContext  c  )  [virtual]

Implemented by subclasses.

Implements ERDDelayedAssignment.

EOQualifier qualifierForArray ( String  key,
NSArray  objects 
) [protected]

EOQualifier qualifierForObject ( String  key,
Object  object 
) [protected]


Member Data Documentation

final Logger log = Logger.getLogger(ERDDelayedExtraQualifierAssignment.class) [static]

logging support


The documentation for this class was generated from the following file:

Generated on Sat May 26 06:42:50 2012 for Project Wonder by  doxygen 1.5.8