/*
* Copyright (C) NetStruxr, Inc. All rights reserved.
*
* This software is published under the terms of the NetStruxr
* Public Software License version 0.5, a copy of which has been
* included with this distribution in the LICENSE.NPL file. */
package er.directtoweb.components.relationships;
import com.webobjects.appserver.WOContext;
import com.webobjects.eoaccess.EOUtilities;
import com.webobjects.eocontrol.EOEnterpriseObject;
import com.webobjects.eocontrol.EOSharedEditingContext;
import com.webobjects.foundation.NSArray;
import er.directtoweb.components.ERDCustomQueryComponent;
/**
* Custom query component that let's the user select from an arbitrary list.
*/
public class ERD2WPickFromList extends ERDCustomQueryComponent {
/**
* Do I need to update serialVersionUID?
* See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the
* <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a>
*/
private static final long serialVersionUID = 1L;
public ERD2WPickFromList(WOContext context) { super(context); }
// lets you pick from either an arbitrary list or a pool of shared EOs
public Object item;
// can't be stateless!
@Override
public boolean isStateless() { return false; }
@Override
public boolean synchronizesVariablesWithBindings() { return false; }
private String _sharedEOsEntityName;
public String sharedEOsEntityName() {
if (_sharedEOsEntityName==null)
_sharedEOsEntityName=(String)valueForBinding("sharedEOsEntityName");
return _sharedEOsEntityName;
}
private String _keyWhenRelationship;
public String keyWhenRelationship () {
if (_keyWhenRelationship ==null)
_keyWhenRelationship =(String)valueForBinding("keyWhenRelationship");
return _keyWhenRelationship;
}
public NSArray list() {
NSArray result=null;
if (sharedEOsEntityName()!=null) {
result=EOUtilities.objectsForEntityNamed(EOSharedEditingContext.defaultSharedEditingContext(),
sharedEOsEntityName());
} else {
result=(NSArray)valueForBinding("list");
}
return result;
}
public String displayString() {
String result=null;
if (item!=null) {
if (item instanceof String) result=(String)item;
else if (item instanceof EOEnterpriseObject)
result=((EOEnterpriseObject)item).valueForKeyPath(keyWhenRelationship()).toString();
else result=item.toString();
}
return result;
}
}