private static object EnumEntryItemCallBack(SearchResult sr, ADSearchResultParams asrp, object oParams, ref bool bContinue)
		{
			AD2DBTransferContext context = (AD2DBTransferContext)oParams;

			context.InitialParams.OnBeforeProcessADObject(sr, context.InitialParams, ref bContinue);

			if (bContinue)
			{
				string objName = ADHelper.GetInstance().GetSearchResultPropertyStrValue("name", sr);
				string objClass = AD2DBHelper.TranslateObjectClass(sr.Properties["objectClass"][1].ToString());

				ADHelper helper = ADHelper.GetInstance();

				FillContext(context,
					ADHelper.GetParentRdnSequence(helper.GetSearchResultPropertyStrValue("distinguishedName", sr)));

				try
				{
					switch (objClass)
					{
						case "ORGANIZATIONS":
							InsertOrganizations(sr, context);

							context.OrganizationsConverted++;
							break;
						case "USERS":
							InsertUser(sr, context);
							InsertOUUser(sr, context);
							InsertUsersInfoExtend(sr, context);

							context.UsersConverted++;
							break;
						default:
							break;
					}

					UpdateParentChildrenCounter(context);
				}
				catch (System.Exception ex)
				{
					string strMsg = string.Format("转换对象\"{0}\"出错,{1}", objName, ex.Message + ex.StackTrace);

					context.InitialParams.Log.Write(strMsg);
				}
			}

			return null;
		}
Example #2
0
        public bool InnerExecuteSearchRecursively(DirectoryEntry root, string filter, ADSearchConditions condition, ADSearchRecursivelyDelegate callback, object oParams, object lastResult, string[] properties)
        {
            bool bContinue = true;

            ADSearchConditions newCondition = new ADSearchConditions(condition);

            newCondition.Scope = SearchScope.OneLevel;

            ADSearchResultParams asrp = new ADSearchResultParams(root);

            asrp.LastResult = lastResult;

            List <SearchResult> resultList = ExecuteSearch(root, filter, condition, properties);

            foreach (SearchResult sr in resultList)
            {
                if (bContinue)
                {
                    if (callback != null)
                    {
                        asrp.LastResult = callback(sr, asrp, oParams, ref bContinue);

                        if (bContinue == false)
                        {
                            break;
                        }
                    }

                    string objClass = sr.Properties["objectClass"][1].ToString();

                    if (string.Compare(objClass, "organizationalUnit", true) == 0)
                    {
                        bContinue = InnerExecuteSearchRecursively(sr.GetDirectoryEntry(), filter, condition, callback, oParams, asrp.LastResult, properties);
                    }
                }
            }

            return(bContinue);
        }
Example #3
0
        public bool InnerExecuteSearchRecursively(DirectoryEntry root, string filter, ADSearchConditions condition, ADSearchRecursivelyDelegate callback, object oParams, object lastResult, string[] properties)
        {
            bool bContinue = true;

            ADSearchConditions newCondition = new ADSearchConditions(condition);

            newCondition.Scope = SearchScope.OneLevel;

            ADSearchResultParams asrp = new ADSearchResultParams(root);

            asrp.LastResult = lastResult;

            List<SearchResult> resultList = ExecuteSearch(root, filter, condition, properties);

            foreach (SearchResult sr in resultList)
            {
                if (bContinue)
                {
                    if (callback != null)
                    {
                        asrp.LastResult = callback(sr, asrp, oParams, ref bContinue);

                        if (bContinue == false)
                            break;
                    }

                    string objClass = sr.Properties["objectClass"][1].ToString();

                    if (string.Compare(objClass, "organizationalUnit", true) == 0)
                    {
                        bContinue = InnerExecuteSearchRecursively(sr.GetDirectoryEntry(), filter, condition, callback, oParams, asrp.LastResult, properties);
                    }
                }
            }

            return bContinue;
        }