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); } }
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(); } }
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); }
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); } }
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; })); }