1 20 21 package org.apache.directory.ldapstudio.browser.ui.editors.searchresult; 22 23 24 import java.util.ArrayList ; 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 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 [] filter( Viewer viewer, Object parent, Object [] elements ) 71 { 72 73 if ( isFiltered() ) 74 { 75 int size = elements.length; 76 ArrayList out = new ArrayList ( size ); 77 for ( int i = 0; i < size; ++i ) 78 { 79 Object 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 parentElement, Object element ) 95 { 96 97 if ( element instanceof ISearchResult ) 98 { 99 ISearchResult searchResult = ( ISearchResult ) element; 100 101 String [] returningAttributes = searchResult.getSearch().getReturningAttributes(); 102 for ( int r = 0; r < returningAttributes.length; r++ ) 103 { 104 String 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 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 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 164 return true; 165 } 166 167 168 public void dispose() 169 { 170 this.contentProvider = null; 171 } 172 173 174 public String getQuickFilterValue() 175 { 176 return quickFilterValue; 177 } 178 179 180 public void setQuickFilterValue( String 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 |