public static TADWrapperObject FindAdObjectWithQueryStatic(IADToplogyConfigurationSession adSession, QueryFilter queryFilter)
        {
            TADWrapperObject answer = default(TADWrapperObject);
            Exception ex = ADUtils.RunADOperation(delegate()
            {
                TADWrapperObject[] array = adSession.Find <TADWrapperObject>(null, QueryScope.SubTree, queryFilter, null, 2);
                if (array.Length > 1)
                {
                    SimpleAdObjectLookup <TADWrapperObject> .Tracer.TraceError <QueryFilter, TADWrapperObject, TADWrapperObject>(0L, "FindAdObjectWithQueryStatic found multiple objects with query '{0}'! The first two are '{1}' and '{2}'.", queryFilter, array[0], array[1]);
                    answer = array[(Environment.TickCount & int.MaxValue) % 2];
                    return;
                }
                if (array.Length == 0)
                {
                    SimpleAdObjectLookup <TADWrapperObject> .Tracer.TraceError <QueryFilter>(0L, "FindAdObjectWithQueryStatic found no objects with query '{0}'!", queryFilter);
                    return;
                }
                answer = array[0];
            }, 2);

            if (ex != null)
            {
                SimpleAdObjectLookup <TADWrapperObject> .Tracer.TraceError <Exception>(0L, "FindAdObjectWithQueryStatic got an exception: {0}", ex);
            }
            return(answer);
        }
        public static IADDatabase[] GetAllDatabases(IADToplogyConfigurationSession adSession, IFindAdObject <IADDatabase> databaseLookup, MiniServer miniServer, out Exception exception)
        {
            IADDatabaseCopy[] copies       = null;
            QueryFilter       serverFilter = new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Name, miniServer.Name);

            exception = ADUtils.RunADOperation(delegate()
            {
                copies = adSession.Find <IADDatabaseCopy>(null, QueryScope.SubTree, serverFilter, null, 0);
            }, 2);
            if (exception != null)
            {
                return(null);
            }
            List <IADDatabase> list = new List <IADDatabase>(20);

            foreach (IADDatabaseCopy iaddatabaseCopy in copies)
            {
                ADObjectId  parent      = iaddatabaseCopy.Id.Parent;
                IADDatabase iaddatabase = databaseLookup.ReadAdObjectByObjectIdEx(parent, out exception);
                if (exception != null)
                {
                    return(null);
                }
                if (iaddatabase != null)
                {
                    list.Add(iaddatabase);
                }
            }
            return((list.Count > 0) ? list.ToArray() : null);
        }
        public static TADWrapperObject FindAdObjectTypeByGuidStatic(IADToplogyConfigurationSession adSession, Guid objectGuid, IPerformanceDataLogger perfLogger)
        {
            if (objectGuid == Guid.Empty)
            {
                throw new ArgumentException("objectGuid cannot be Empty.");
            }
            TADWrapperObject adObject = default(TADWrapperObject);
            Exception ex = ADUtils.RunADOperation(delegate()
            {
                QueryFilter filter       = new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Guid, objectGuid);
                TADWrapperObject[] array = adSession.Find <TADWrapperObject>(null, QueryScope.SubTree, filter, null, 1);
                adObject = ((array != null && array.Length > 0) ? array[0] : default(TADWrapperObject));
            }, perfLogger, 2);

            if (ex != null)
            {
                SimpleAdObjectLookup <TADWrapperObject> .Tracer.TraceError <Exception>(0L, "FindAdObjectTypeByGuidStatic got an exception: {0}", ex);
            }
            return(adObject);
        }
        public static TADWrapperObject FindAdObjectByServerNameStatic(IADToplogyConfigurationSession adSession, string serverName, out Exception exception)
        {
            if (string.IsNullOrEmpty(serverName))
            {
                throw new ArgumentNullException("serverName");
            }
            exception = null;
            TADWrapperObject adObject = default(TADWrapperObject);
            Exception ex = ADUtils.RunADOperation(delegate()
            {
                QueryFilter filter       = new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Name, serverName);
                TADWrapperObject[] array = adSession.Find <TADWrapperObject>(null, QueryScope.SubTree, filter, null, 1);
                adObject = ((array != null && array.Length > 0) ? array[0] : default(TADWrapperObject));
            }, 2);

            if (ex != null)
            {
                exception = ex;
                SimpleAdObjectLookup <TADWrapperObject> .Tracer.TraceError <Exception>(0L, "FindAdObjectByServerNameStatic got exception: {0}", ex);
            }
            return(adObject);
        }