Exemplo n.º 1
0
        internal override IEnumerable <T> GetObjectsInOrganization <T>(string identityString, ADObjectId rootId, IDirectorySession session, OptionalIdentityData optionalData)
        {
            IEnumerable <T> objectsInOrganization = base.GetObjectsInOrganization <T>(identityString, rootId, session, optionalData);

            if (typeof(T) != typeof(TransportRule))
            {
                return(objectsInOrganization);
            }
            ClassificationIdentityMatcher <Tuple <TransportRule, XDocument> > nameMatcher = this.CreateNameMatchFilter(identityString);

            if (nameMatcher == null)
            {
                return(objectsInOrganization);
            }
            List <T>    list        = objectsInOrganization.ToList <T>();
            QueryFilter queryFilter = ClassificationRuleCollectionIdParameter.CreateExcludeFilter <T>(list);

            if (optionalData != null && optionalData.AdditionalFilter != null)
            {
                queryFilter = ((queryFilter == null) ? optionalData.AdditionalFilter : QueryFilter.AndTogether(new QueryFilter[]
                {
                    queryFilter,
                    optionalData.AdditionalFilter
                }));
            }
            IEnumerable <Tuple <TransportRule, XDocument> > source = DlpUtils.AggregateOobAndCustomClassificationDefinitions(session.SessionSettings.CurrentOrganizationId, session as IConfigurationSession, null, queryFilter, new ClassificationDefinitionsDataReader(false), null);

            return(list.Concat(from rulePackDataObject in source
                               where nameMatcher.Match(rulePackDataObject)
                               select(T)((object)rulePackDataObject.Item1)));
        }
        protected virtual bool MatchObjectPropertyValue(string objectPropertyValue, CultureInfo cultureInfo, CompareOptions compareOption)
        {
            bool flag = this.matchOperator(objectPropertyValue, this.searchName, cultureInfo, compareOption);

            if (!flag && this.matchOperator != new Func <string, string, CultureInfo, CompareOptions, bool>(ClassificationIdentityMatcher <TObjectWithIdentity> .ExactMatch) && !string.IsNullOrEmpty(this.rawSearchName) && !this.areSearchNameAndRawSearchNameEqual)
            {
                flag = ClassificationIdentityMatcher <TObjectWithIdentity> .ExactMatch(objectPropertyValue, this.rawSearchName, cultureInfo, compareOption);
            }
            return(flag);
        }