Esempio n. 1
0
        protected static void ConvertProperties(IOguObject srcObject, DirectoryEntry entry, SetterContext setterContext)
        {
            SchemaMappingInfo mappingInfo = PermissionCenterToADSynchronizeSettings.GetConfig().SchemaMappings.GetSchemaMappingInfo(srcObject.ObjectType.ToString());

            foreach (SetterPropertyMappingConfigurationElement element in mappingInfo.ModifiedProperties)
            {
                element.Setter.SetValue(srcObject, element.Name, entry, element.TargetPropertyName, element.Context, setterContext);
            }
        }
Esempio n. 2
0
        protected static void DoAfterObjectUpdatedOP(IOguObject srcObject, DirectoryEntry entry, SetterContext setterContext)
        {
            SchemaMappingInfo mappingInfo = PermissionCenterToADSynchronizeSettings.GetConfig().SchemaMappings.GetSchemaMappingInfo(srcObject.ObjectType.ToString());

            foreach (SetterPropertyMappingConfigurationElement element in mappingInfo.ModifiedProperties)
            {
                element.Setter.AfterObjectUpdated(srcObject, element.Name, entry, element.TargetPropertyName, element.Context, setterContext);
            }

            if (setterContext.PropertyChanged)
            {
                entry.CommitChanges();
            }
        }
Esempio n. 3
0
        private static OguAndADObjectComparerBase GetComparer(IOguObject oguObject)
        {
            string schemaTypeName = oguObject.ObjectType.ToString();

            string cacheKey = "OguAndADObjectComparerBase" + "-" + schemaTypeName;

            return((OguAndADObjectComparerBase)ObjectContextCache.Instance.GetOrAddNewValue(cacheKey, (cache, key) =>
            {
                SchemaMappingInfo mappingInfo = PermissionCenterToADSynchronizeSettings.GetConfig().SchemaMappings.GetSchemaMappingInfo(schemaTypeName);

                OguAndADObjectComparerBase comparer = (OguAndADObjectComparerBase)PropertyComparersSettings.GetConfig().ObjectComparers[mappingInfo.ComparerName].CreateInstance();

                cache.Add(cacheKey, comparer);

                return comparer;
            }));
        }
        protected ObjectModifyType CompareProperties(IOguObject srcObject, ADObjectWrapper targetObject)
        {
            SchemaMappingInfo mappingInfo = PermissionCenterToADSynchronizeSettings.GetConfig().SchemaMappings.GetSchemaMappingInfo(srcObject.ObjectType.ToString());

            ObjectModifyType result = ObjectModifyType.None;

            foreach (ComparerPropertyMappingConfigurationElement propertyComparerElement in mappingInfo.ComparedProperties)
            {
                if (propertyComparerElement.Comparer.Compare(srcObject, propertyComparerElement.Name, targetObject, propertyComparerElement.TargetPropertyName, propertyComparerElement.Context) == false)
                {
                    result = ObjectModifyType.PropertyModified;
                    Trace.Write("(修改的属性Key: " + propertyComparerElement.Name + ")");
                    break;
                }
            }

            return(result);
        }
Esempio n. 5
0
        public static void Convert(ObjectModifyType modifyType, IOguObject srcObject, DirectoryEntry targetObject)
        {
            SchemaType schemaType           = GetOguSchemaType(targetObject);
            OguAndADObjectSetterBase setter = GetSetter(modifyType, schemaType);

            if (setter != null)
            {
                SchemaMappingInfo mappingInfo = PermissionCenterToADSynchronizeSettings.GetConfig().SchemaMappings.GetSchemaMappingInfo(schemaType.ToString());

                string context = string.Empty;

                if (mappingInfo.ModifyOperations.ContainsKey(modifyType.ToString()))
                {
                    SetterObjectMappingConfigurationElement objSetterMappingElement = mappingInfo.ModifyOperations[modifyType.ToString()];
                    context = objSetterMappingElement.Context;
                }

                setter.Convert(modifyType, srcObject, targetObject, context);
            }
        }
Esempio n. 6
0
        private static OguAndADObjectSetterBase GetSetter(ObjectModifyType modifyType, SchemaType schemaType)
        {
            string schemaTypeName = schemaType.ToString();

            string cacheKey = "OguAndADObjectSetterBase" + "-" + modifyType.ToString() + "+" + schemaTypeName;

            return((OguAndADObjectSetterBase)ObjectContextCache.Instance.GetOrAddNewValue(cacheKey, (cache, key) =>
            {
                SchemaMappingInfo mappingInfo = PermissionCenterToADSynchronizeSettings.GetConfig().SchemaMappings.GetSchemaMappingInfo(schemaTypeName);

                OguAndADObjectSetterBase setter = null;

                if (mappingInfo.ModifyOperations.ContainsKey(modifyType.ToString()))
                {
                    SetterObjectMappingConfigurationElement objSetterMappingElement = mappingInfo.ModifyOperations[modifyType.ToString()];
                    setter = (OguAndADObjectSetterBase)PropertySettersSettings.GetConfig().ObjectSetters[objSetterMappingElement.OperationName].CreateInstance();
                }

                cache.Add(cacheKey, setter);

                return setter;
            }));
        }