1 6 package com.nightlabs.ipanema.person.util; 7 8 import java.util.Map ; 9 import java.util.Set ; 10 11 import com.nightlabs.ipanema.person.TextPersonDataField; 12 import com.nightlabs.ipanema.person.id.PersonStructFieldID; 13 14 17 public class TextPersonSearchFilterItem extends PersonSearchFilterItem { 18 19 23 public TextPersonSearchFilterItem(PersonStructFieldID personStructFieldID, int matchType, String needle) { 24 super(personStructFieldID, matchType, needle); 25 } 26 27 33 public TextPersonSearchFilterItem(PersonStructFieldID[] personStructFieldIDs, int matchType, String needle) { 34 super(personStructFieldIDs, matchType, needle); 35 } 36 37 38 39 42 public boolean isConstraint() { 43 return !this.needle.equals(""); 44 } 45 46 private boolean addedParams = false; 47 50 public void appendSubQuery(int itemIndex, int itemSubIndex, Set imports, StringBuffer vars, 51 StringBuffer filter, StringBuffer params, Map paramMap) { 52 53 String needleLowerCase = "needle"+itemIndex+".toLowerCase()"; 54 if (!addedParams) { 55 params.append(", "); 56 params.append(String .class.getName()+" needle"+itemIndex); 57 paramMap.put("needle"+itemIndex, getNeedle()); 58 addedParams = true; 59 } 60 61 filter.append(QUERY_DATAFIELD_VARNAME+itemSubIndex+".text.toLowerCase()"); 62 switch (matchType) { 63 case MATCHTYPE_BEGINSWITH: 64 filter.append(".startsWith("+needleLowerCase+")"); 65 break; 66 case MATCHTYPE_ENDSWITH: 67 filter.append(".endsWith("+needleLowerCase+")"); 68 break; 69 case MATCHTYPE_CONTAINS: 70 filter.append(".indexOf("+needleLowerCase+") >= 0"); 71 break; 72 case MATCHTYPE_NOTCONTAINS: 73 filter.append(".indexOf("+needleLowerCase+") < 0"); 74 break; 75 case MATCHTYPE_EQUALS: 76 filter.append(" == "+needleLowerCase); 77 break; 78 case MATCHTYPE_NOTEQUALS: 79 filter.append(" != "+needleLowerCase); 80 break; 81 default: 82 filter.append(" == "+needleLowerCase); 83 84 } 85 86 } 87 88 91 public Class getItemTargetClass() { 92 return TextPersonDataField.class; 93 } 94 95 } 96 | Popular Tags |