private static IADOPathNode BuildGPLinkFilter(string extendedAttribute, string directoryAttribute, IADOPathNode filterClause) { BinaryADOPathNode binaryADOPathNode = filterClause as BinaryADOPathNode; if (binaryADOPathNode != null) { IDataNode rightNode = binaryADOPathNode.RightNode as IDataNode; if (rightNode != null) { string dataObject = rightNode.DataObject as string; if (dataObject != null) { ADOperator @operator = binaryADOPathNode.Operator; if (@operator == ADOperator.Eq || @operator == ADOperator.Ne || @operator == ADOperator.Like || @operator == ADOperator.NotLike) { if (@operator != ADOperator.Eq) { if (@operator == ADOperator.Ne) { dataObject = ADOPathUtil.LdapSearchEncodeString(dataObject, true); @operator = ADOperator.NotLike; } } else { dataObject = ADOPathUtil.LdapSearchEncodeString(dataObject, true); @operator = ADOperator.Like; } dataObject = string.Concat(GPLinkUtil.GpLinkFilterPrefix, dataObject, GPLinkUtil.GpLinkFilterSuffix); return(ADOPathUtil.CreateFilterClause(@operator, directoryAttribute, dataObject)); } else { object[] str = new object[2]; ADOperator[] aDOperatorArray = new ADOperator[4]; aDOperatorArray[1] = ADOperator.Ne; aDOperatorArray[2] = ADOperator.Like; aDOperatorArray[3] = ADOperator.NotLike; str[0] = SearchConverters.ConvertOperatorListToString(aDOperatorArray); str[1] = extendedAttribute; throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterSupportedOperatorListErrorMessage, str)); } } else { object[] type = new object[2]; type[0] = rightNode.DataObject.GetType(); type[1] = extendedAttribute; throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterRHSInvalidType, type)); } } else { throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode); } } else { throw new ArgumentException(StringResources.SearchConverterNotBinaryNode); } }