//
// ERD2WQueryStringOperator.java: Class file for WO Component 'ERD2WQueryStringOperator'
// Project ERDirectToWeb
//
// Created by bposokho on Mon May 19 2003
//
package er.directtoweb.components.strings;
import com.webobjects.appserver.WOContext;
import com.webobjects.directtoweb.D2WQueryStringOperator;
import com.webobjects.eocontrol.EOQualifier;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSMutableArray;
import er.extensions.foundation.ERXKeyValuePair;
import er.extensions.localization.ERXLocalizer;
/**
* <div class="en">
* </div>
*
* <div class="ja">
* このプロパティ・レベル・コンポーネントは string のクエリをビルドします。
* 例:("starts with" 又は "contains")
* </div>
*
* @d2wKey name <div class="en"></div>
* <div class="ja">テキストフィールドの name タグ</div>
* @d2wKey qualifierOperators <div class="en"></div>
* <div class="ja">指定 qualifier (NSArray<String>)</div>
*/
public class ERD2WQueryStringOperator extends D2WQueryStringOperator {
/**
* 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 ERXKeyValuePair<String, String> currentElement;
public ERD2WQueryStringOperator(WOContext context) {
super(context);
}
public NSArray<ERXKeyValuePair<String, String>> allQualifierOperators(){
NSArray<String> operators = qualifierOperatorsOverrideFromRules() != null ? qualifierOperatorsOverrideFromRules() : _allQualifierOperators;
int count = operators.count();
NSMutableArray<ERXKeyValuePair<String, String>> result = new NSMutableArray<ERXKeyValuePair<String, String>>( count );
for( int i = 0; i < count; i++ ) {
String currentOperatorString = operators.objectAtIndex(i);
String value = (String)ERXLocalizer.currentLocalizer().valueForKey(currentOperatorString);
if(value == null) {
value = currentOperatorString;
}
result.addObject(new ERXKeyValuePair<>(currentOperatorString, value));
}
return result;
}
private static NSArray<String> _stringQualifierOperators;
private static NSArray<String> _allQualifierOperators;
/**
* <span class="ja">
* _allQualifierOperators をオーバライドできます。
*
* @return qualifier NSArray
* </span>
*/
public NSArray<String> qualifierOperatorsOverrideFromRules(){
return (NSArray<String>)d2wContext().valueForKey("qualifierOperators");
}
public ERXKeyValuePair<String, String> selectedElement() {
String value = anOperator();
String choice = (String) ERXLocalizer.currentLocalizer().valueForKey(value);
if(choice == null) {
choice = value;
}
return new ERXKeyValuePair<>(value, choice);
}
public void setSelectedElement(ERXKeyValuePair<String, String> newSelection) {
setAnOperator(newSelection != null ? newSelection.key() : null );
}
@Override
public void reset() {
super.reset();
currentElement = null;
}
static {
_stringQualifierOperators = new NSArray<>(new String[]{"starts with", "contains", "ends with", "is", "like"});
_allQualifierOperators = _stringQualifierOperators.arrayByAddingObjectsFromArray(EOQualifier.relationalQualifierOperators());
}
}