1 20 21 package org.apache.directory.ldapstudio.browser.core.utils; 22 23 24 import org.apache.directory.ldapstudio.browser.core.model.IValue; 25 26 27 33 public class LdapFilterUtils 34 { 35 36 43 public static String getFilter( IValue value ) 44 { 45 if ( value.isString() ) 46 { 47 return "(" + value.getAttribute().getDescription() + "=" + getEncodedValue( value.getStringValue() ) + ")"; 48 } 49 else 50 { 51 StringBuffer filter = new StringBuffer (); 52 filter.append( "(" ); 53 filter.append( value.getAttribute().getDescription() ); 54 filter.append( "=" ); 55 56 byte[] bytes = value.getBinaryValue(); 57 for ( int i = 0; i < bytes.length; i++ ) 58 { 59 int b = ( int ) bytes[i]; 60 if ( b < 0 ) 61 { 62 b = 256 + b; 63 } 64 String s = Integer.toHexString( b ); 65 filter.append( "\\" ); 66 if ( s.length() == 1 ) 67 { 68 filter.append( "0" ); 69 } 70 filter.append( s ); 71 } 72 73 filter.append( ")" ); 74 return filter.toString(); 75 } 76 } 77 78 79 101 public static String getEncodedValue( String value ) 102 { 103 value = value.replaceAll( "\\\\", "\\\\5c" ); 104 value = value.replaceAll( "" + '\u0000', "\\\\00" ); 105 value = value.replaceAll( "\\*", "\\\\2a" ); 106 value = value.replaceAll( "\\(", "\\\\28" ); 107 value = value.replaceAll( "\\)", "\\\\29" ); 108 return value; 109 } 110 111 } 112 | Popular Tags |