Author: akarasulu Date: Mon Nov 7 06:12:24 2005 New Revision: 331271 URL: http://svn.apache.org/viewcvs?rev=331271&view=rev Log: added some methods I have yet to use Modified: directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/util/AttributeUtils.java Modified: directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/util/AttributeUtils.java URL: http://svn.apache.org/viewcvs/directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/util/AttributeUtils.java?rev=331271&r1=331270&r2=331271&view=diff ============================================================================== --- directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/util/AttributeUtils.java (original) +++ directory/shared/ldap/trunk/common/src/main/java/org/apache/ldap/common/util/AttributeUtils.java Mon Nov 7 06:12:24 2005 @@ -19,6 +19,8 @@ import org.apache.asn1.codec.util.StringUtils; import org.apache.ldap.common.message.LockableAttributeImpl; +import org.apache.ldap.common.schema.AttributeType; +import org.apache.ldap.common.schema.Normalizer; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; @@ -34,6 +36,75 @@ */ public class AttributeUtils { + public static boolean containsValue( Attribute attr, Object compared, AttributeType type ) throws NamingException + { + Normalizer normalizer = type.getEquality().getNormalizer(); + + if ( type.getSyntax().isHumanReadible() ) + { + String comparedStr = ( String ) normalizer.normalize( compared ); + for ( int ii = attr.size(); ii >= 0; ii-- ) + { + String value = ( String ) attr.get( ii ); + if ( comparedStr.equals( normalizer.normalize( value ) ) ) + { + return true; + } + } + } + else + { + byte[] comparedBytes = ( byte[] ) compared; + for ( int ii = attr.size(); ii >= 0; ii-- ) + { + if ( ArrayUtils.isEquals( comparedBytes, attr.get( ii ) ) ) + { + return true; + } + } + } + + return false; + } + + + public static boolean containsAnyValues( Attribute attr, Object[] compared, AttributeType type ) throws NamingException + { + Normalizer normalizer = type.getEquality().getNormalizer(); + + if ( type.getSyntax().isHumanReadible() ) + { + for ( int jj = 0; jj < compared.length; jj++ ) + { + String comparedStr = ( String ) normalizer.normalize( compared[jj] ); + for ( int ii = attr.size(); ii >= 0; ii-- ) + { + String value = ( String ) attr.get( ii ); + if ( comparedStr.equals( normalizer.normalize( value ) ) ) + { + return true; + } + } + } + } + else + { + for ( int jj = 0; jj < compared.length; jj++ ) + { + byte[] comparedBytes = ( byte[] ) compared[jj]; + for ( int ii = attr.size(); ii >= 0; ii-- ) + { + if ( ArrayUtils.isEquals( comparedBytes, attr.get( ii ) ) ) + { + return true; + } + } + } + } + + return false; + } + /** * Creates a new attribute which contains the values representing the difference * of two attributes. If both attributes are null then we cannot determine the @@ -61,7 +132,7 @@ { return ( Attribute ) attr0.clone(); } - else if ( ! ( ( String ) attr0.getID() ).equalsIgnoreCase( attr1.getID() ) ) + else if ( ! attr0.getID().equalsIgnoreCase( attr1.getID() ) ) { throw new IllegalArgumentException( "Cannot take difference of attributes with different IDs!" ); } @@ -119,7 +190,7 @@ { id = attr0.getID(); } - else if ( ! ( ( String ) attr0.getID() ).equalsIgnoreCase( attr1.getID() ) ) + else if ( ! attr0.getID().equalsIgnoreCase( attr1.getID() ) ) { throw new IllegalArgumentException( "Cannot take union of attributes with different IDs!" ); }