KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > person > util > TextPersonSearchFilterItem


1 /*
2  * Created on Dec 14, 2004
3  * by alex
4  *
5  */

6 package com.nightlabs.ipanema.person.util;
7
8 import java.util.Map JavaDoc;
9 import java.util.Set JavaDoc;
10
11 import com.nightlabs.ipanema.person.TextPersonDataField;
12 import com.nightlabs.ipanema.person.id.PersonStructFieldID;
13
14 /**
15  * @author Alexander Bieber <alex[AT]nightlabs[DOT]de>
16  */

17 public class TextPersonSearchFilterItem extends PersonSearchFilterItem {
18
19     /**
20      * @param matchType
21      * @param needle
22      */

23     public TextPersonSearchFilterItem(PersonStructFieldID personStructFieldID, int matchType, String JavaDoc needle) {
24         super(personStructFieldID, matchType, needle);
25     }
26     
27     /**
28      * @param personStructFieldIDs
29      * @param structFieldGroupType
30      * @param matchType
31      * @param needle
32      */

33     public TextPersonSearchFilterItem(PersonStructFieldID[] personStructFieldIDs, int matchType, String JavaDoc needle) {
34         super(personStructFieldIDs, matchType, needle);
35     }
36
37
38
39     /**
40      * @see com.nightlabs.ipanema.person.util.SearchFilterItem#isConstraint()
41      */

42     public boolean isConstraint() {
43         return !this.needle.equals("");
44     }
45     
46     private boolean addedParams = false;
47     /**
48      * @see com.nightlabs.ipanema.person.util.SearchFilterItem#appendSubQuery(int, java.util.Set, java.lang.StringBuffer, java.lang.StringBuffer, java.lang.StringBuffer, java.util.Map)
49      */

50     public void appendSubQuery(int itemIndex, int itemSubIndex, Set JavaDoc imports, StringBuffer JavaDoc vars,
51             StringBuffer JavaDoc filter, StringBuffer JavaDoc params, Map JavaDoc paramMap) {
52         
53         String JavaDoc needleLowerCase = "needle"+itemIndex+".toLowerCase()";
54         if (!addedParams) {
55             params.append(", ");
56             params.append(String JavaDoc.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     /**
89      * @see com.nightlabs.ipanema.person.util.SearchFilterItem#getItemTargetClass()
90      */

91     public Class JavaDoc getItemTargetClass() {
92         return TextPersonDataField.class;
93     }
94
95 }
96
Popular Tags