/*
* 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.misc;
import com.webobjects.appserver.WOContext;
import com.webobjects.directtoweb.QueryComponent;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSKeyValueCoding;
import er.extensions.localization.ERXLocalizer;
/**
* Query component for null or non-null.
*
* @d2wKey choicesNames
*/
public class ERD2WQueryNonNull extends QueryComponent {
/**
* 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 ERD2WQueryNonNull(WOContext context) { super(context); }
public Object item;
public int index;
private final static Object YES_VALUE=new Object();
private final static Object NO_VALUE=new Object();
private final static Object DONT_CARE_VALUE=new Object();
private final static Object[] _queryNumbers={ DONT_CARE_VALUE, YES_VALUE, NO_VALUE };
protected final static NSArray _queryNumbersArray=new NSArray(_queryNumbers);
public NSArray choicesNames() {
return (NSArray) d2wContext().valueForKey("choicesNames");
}
public NSArray queryNumbers() { return _queryNumbersArray; }
public String displayString() {
String label = (String)choicesNames().objectAtIndex(index);
if(ERXLocalizer.isLocalizationEnabled()) {
return ERXLocalizer.currentLocalizer().localizedStringForKeyWithDefault(label);
}
return label;
}
@Override
public Object value() {
Object value = displayGroup().queryMatch().valueForKey(propertyKey());
Object operator = displayGroup().queryOperator().valueForKey(propertyKey());
if(value == null || operator == null) {
return DONT_CARE_VALUE;
} else {
if("<>".equals(operator)) {
return YES_VALUE;
}
return NO_VALUE;
}
}
@Override
public void setValue(Object newValue) {
if (newValue==DONT_CARE_VALUE) {
displayGroup().queryMatch().takeValueForKey(null, propertyKey());
displayGroup().queryOperator().takeValueForKey(null, propertyKey());
} else {
displayGroup().queryMatch().takeValueForKey(NSKeyValueCoding.NullValue, propertyKey());
displayGroup().queryOperator().takeValueForKey(newValue==YES_VALUE ? "<>" : "=", propertyKey());
}
}
}