1 20 21 package org.apache.directory.ldapstudio.browser.core.model.filter; 22 23 24 import java.util.ArrayList ; 25 import java.util.Arrays ; 26 import java.util.List ; 27 28 import org.apache.directory.ldapstudio.browser.core.model.filter.parser.LdapFilterToken; 29 30 31 public class LdapFilterItemComponent extends LdapFilterComponent 32 { 33 34 private LdapFilterToken filtertypeToken; 35 36 private LdapFilterToken valueToken; 37 38 39 public LdapFilterItemComponent( LdapFilter parent ) 40 { 41 super( parent ); 42 this.filtertypeToken = null; 43 this.valueToken = null; 44 } 45 46 47 public boolean setStartToken( LdapFilterToken attributeToken ) 48 { 49 if ( attributeToken != null && attributeToken.getType() == LdapFilterToken.ATTRIBUTE ) 50 { 51 super.setStartToken( attributeToken ); 52 return true; 53 } 54 else 55 { 56 return false; 57 } 58 } 59 60 61 public boolean setAttributeToken( LdapFilterToken attributeToken ) 62 { 63 return this.setStartToken( attributeToken ); 64 } 65 66 67 public LdapFilterToken getAttributeToken() 68 { 69 return this.getStartToken(); 70 } 71 72 73 public boolean setFiltertypeToken( LdapFilterToken filtertypeToken ) 74 { 75 if ( this.filtertypeToken == null 76 && filtertypeToken != null 77 && ( filtertypeToken.getType() == LdapFilterToken.EQUAL 78 || filtertypeToken.getType() == LdapFilterToken.GREATER 79 || filtertypeToken.getType() == LdapFilterToken.LESS 80 || filtertypeToken.getType() == LdapFilterToken.APROX || filtertypeToken.getType() == LdapFilterToken.PRESENT ) ) 81 { 82 this.filtertypeToken = filtertypeToken; 83 return true; 84 } 85 else 86 { 87 return false; 88 } 89 } 90 91 92 public LdapFilterToken getFilterToken() 93 { 94 return this.filtertypeToken; 95 } 96 97 98 public boolean setValueToken( LdapFilterToken valueToken ) 99 { 100 if ( this.valueToken == null && valueToken != null && valueToken.getType() == LdapFilterToken.VALUE ) 101 { 102 this.valueToken = valueToken; 103 return true; 104 } 105 else 106 { 107 return false; 108 } 109 } 110 111 112 public LdapFilterToken getValueToken() 113 { 114 return this.valueToken; 115 } 116 117 118 public boolean isValid() 119 { 120 return startToken != null && filtertypeToken != null 121 && ( valueToken != null || filtertypeToken.getType() == LdapFilterToken.PRESENT ); 122 } 123 124 125 public LdapFilterToken[] getTokens() 126 { 127 List tokenList = new ArrayList (); 129 if ( this.startToken != null ) 130 { 131 tokenList.add( this.startToken ); 132 } 133 if ( this.filtertypeToken != null ) 134 { 135 tokenList.add( this.filtertypeToken ); 136 } 137 if ( this.valueToken != null ) 138 { 139 tokenList.add( this.valueToken ); 140 } 141 142 LdapFilterToken[] tokens = ( LdapFilterToken[] ) tokenList.toArray( new LdapFilterToken[tokenList.size()] ); 144 Arrays.sort( tokens ); 145 146 return tokens; 148 } 149 150 151 public String toString() 152 { 153 return ( startToken != null ? startToken.getValue() : "" ) 154 + ( filtertypeToken != null ? filtertypeToken.getValue() : "" ) 155 + ( valueToken != null ? valueToken.getValue() : "" ); 156 } 157 158 159 public boolean addFilter( LdapFilter filter ) 160 { 161 return false; 162 } 163 164 165 public LdapFilter[] getInvalidFilters() 166 { 167 if ( this.isValid() ) 168 { 169 return new LdapFilter[0]; 170 } 171 else 172 { 173 return new LdapFilter[] 174 { parent }; 175 } 176 } 177 178 179 public LdapFilter getFilter( int offset ) 180 { 181 if ( this.startToken != null && this.startToken.getOffset() <= offset 182 && offset < this.startToken.getOffset() + this.startToken.getLength() ) 183 { 184 return this.parent; 185 } 186 else if ( this.filtertypeToken != null && this.filtertypeToken.getOffset() <= offset 187 && offset < this.filtertypeToken.getOffset() + this.filtertypeToken.getLength() ) 188 { 189 return this.parent; 190 } 191 else if ( this.valueToken != null && this.valueToken.getOffset() <= offset 192 && offset < this.valueToken.getOffset() + this.valueToken.getLength() ) 193 { 194 return this.parent; 195 } 196 else 197 { 198 return null; 199 } 200 } 201 202 203 public String getInvalidCause() 204 { 205 if ( this.startToken == null ) 206 { 207 return "Missing attribute name"; 208 } 209 else if ( this.filtertypeToken == null ) 210 { 211 return "Missing filter type, select one of '=', '>=', '<=','~='"; 212 } 213 else if ( this.valueToken == null ) 214 { 215 return "Missing value"; 216 } 217 else 218 { 219 return null; 220 } 221 } 222 223 } 224 | Popular Tags |