KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > directory > ldapstudio > browser > ui > editors > searchresult > SearchResultEditorFilter


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  *
19  */

20
21 package org.apache.directory.ldapstudio.browser.ui.editors.searchresult;
22
23
24 import java.util.ArrayList JavaDoc;
25
26 import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
27 import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
28 import org.apache.directory.ldapstudio.browser.core.model.ISearch;
29 import org.apache.directory.ldapstudio.browser.core.model.ISearchResult;
30 import org.apache.directory.ldapstudio.browser.core.model.IValue;
31
32 import org.eclipse.jface.viewers.Viewer;
33 import org.eclipse.jface.viewers.ViewerFilter;
34
35
36 public class SearchResultEditorFilter extends ViewerFilter
37 {
38
39     protected SearchResultEditorContentProvider contentProvider;
40
41     protected String JavaDoc quickFilterValue;
42
43     private boolean showDn;
44
45
46     public SearchResultEditorFilter()
47     {
48         this.quickFilterValue = "";
49     }
50
51
52     public void connect( SearchResultEditorContentProvider contentProvider )
53     {
54         this.contentProvider = contentProvider;
55     }
56
57
58     public void inputChanged( ISearch newSearch, boolean showDn )
59     {
60         this.showDn = showDn;
61     }
62
63
64     public boolean isFiltered()
65     {
66         return this.quickFilterValue != null && !"".equals( quickFilterValue );
67     }
68
69
70     public Object JavaDoc[] filter( Viewer viewer, Object JavaDoc parent, Object JavaDoc[] elements )
71     {
72
73         if ( isFiltered() )
74         {
75             int size = elements.length;
76             ArrayList JavaDoc out = new ArrayList JavaDoc( size );
77             for ( int i = 0; i < size; ++i )
78             {
79                 Object JavaDoc element = elements[i];
80                 if ( select( viewer, parent, element ) )
81                     out.add( element );
82             }
83
84             return out.toArray();
85         }
86         else
87         {
88             return elements;
89         }
90
91     }
92
93
94     public boolean select( Viewer viewer, Object JavaDoc parentElement, Object JavaDoc element )
95     {
96
97         if ( element instanceof ISearchResult )
98         {
99             ISearchResult searchResult = ( ISearchResult ) element;
100
101             String JavaDoc[] returningAttributes = searchResult.getSearch().getReturningAttributes();
102             for ( int r = 0; r < returningAttributes.length; r++ )
103             {
104                 String JavaDoc ra = returningAttributes[r];
105                 AttributeHierarchy ah = searchResult.getAttributeWithSubtypes( ra );
106                 if ( ah != null )
107                 {
108                     IAttribute[] attributes = ah.getAttributes();
109                     for ( int i = 0; i < attributes.length; i++ )
110                     {
111                         IValue[] values = attributes[i].getValues();
112                         for ( int k = 0; k < values.length; k++ )
113                         {
114                             if ( this.goesThroughQuickFilter( values[k] ) )
115                             {
116                                 return true;
117                             }
118                         }
119                     }
120                 }
121             }
122
123             // IAttribute[] attributes = searchResult.getAttributes();
124
// for (int i = 0; i < attributes.length; i++) {
125
// IValue[] values = attributes[i].getValues();
126
// for (int k = 0; k < values.length; k++) {
127
// if (this.goesThroughQuickFilter(values[k])) {
128
// return true;
129
// }
130
// }
131
// }
132
if ( this.showDn
133                 && searchResult.getDn().toString().toUpperCase().indexOf( this.quickFilterValue.toUpperCase() ) > -1 )
134             {
135                 return true;
136             }
137
138             return false;
139         }
140         else
141         {
142             return true;
143         }
144     }
145
146
147     private boolean goesThroughQuickFilter( IValue value )
148     {
149
150         // fitler value
151
// if(this.quickFilterValue != null &&
152
// !"".equals(this.quickFilterValue)) {
153
if ( value.isString()
154             && value.getStringValue().toUpperCase().indexOf( this.quickFilterValue.toUpperCase() ) == -1 )
155         {
156             return false;
157         }
158         else if ( value.isBinary() )
159         {
160             return false;
161         }
162         // }
163

164         return true;
165     }
166
167
168     public void dispose()
169     {
170         this.contentProvider = null;
171     }
172
173
174     public String JavaDoc getQuickFilterValue()
175     {
176         return quickFilterValue;
177     }
178
179
180     public void setQuickFilterValue( String JavaDoc quickFilterValue )
181     {
182         if ( !this.quickFilterValue.equals( quickFilterValue ) )
183         {
184             this.quickFilterValue = quickFilterValue;
185             if ( this.contentProvider != null )
186                 this.contentProvider.refresh();
187         }
188     }
189
190 }
191
Popular Tags