Beispiel #1
0
        public JObject ToJson()
        {
            var json = new JObject
            {
                { EVENT_ID_KEY, _eventId },
                { START_TIME_KEY, _startTime },
                { END_TIME_KEY, _endTime },
                { NAME_KEY, _name },
                { ATTRIBUTES_KEY, _attributes },
                { SESSION_ID_KEY, _sessionId },
                { SEQUENCE_ID_KEY, _sequenceId },
                { SENDER_ID_KEY, _senderId },
                { SENDER_CONTEXT_KEY, _senderContext },
                { SCHEMA_TYPE_KEY, _schemaType.ToString() },
                { EVENT_TYPE_KEY, _eventType.ToString() },
                { ERROR_TYPE_KEY, _errorType.ToString() },
                { CONNECTION_TYPE_KEY, _connectionType },
                { DEVICE_APP_ATTRIBUTES_KEY, _deviceAppAttributes.ToJson() },
                { SENDER_PARENT_ID_KEY, _senderParentId },
                { SESSION_START_TIME_KEY, _sessionStartTime },
                { PAGE_KEY, _page },
                { PREVIOUS_PAGE_KEY, _previousPage },
                { MARKS_KEY, _marks }
            };

            return(json);
        }
Beispiel #2
0
 public override void AddRecoveryData(Dictionary <string, string> rec)
 {
     //call base
     base.AddRecoveryData(rec);
     rec[C.TYPE_ID_KEY] = nameof(SyncList);             //override with this class' name
     rec.Add(nameof(schemaType), schemaType.ToString());
     rec.Add(nameof(schemaParams), Utils.EncodeSequence(schemaParams));
 }
 /// <summary>
 /// A generic method to serialize primitive Baiji types.
 /// </summary>
 /// <typeparam name="S">Type of the C# type to be serialized</typeparam>
 /// <param name="value">The value to be serialized</param>
 /// <param name="tag">The schema type tag</param>
 /// <param name="writer">The writer which should be used to write the given type.</param>
 protected void Write <S>(object value, SchemaType tag, Action <S> writer)
 {
     if (!(value is S))
     {
         throw TypeMismatch(value, tag.ToString(), typeof(S).ToString());
     }
     writer((S)value);
 }
Beispiel #4
0
        // IDataAdapter.FillSchema
        internal static ArgumentOutOfRangeException InvalidSchemaType(SchemaType value)
        {
#if DEBUG
            switch (value)
            {
            case SchemaType.Source:
            case SchemaType.Mapped:
                Debug.Assert(false, "valid SchemaType " + value.ToString());
                break;
            }
#endif
            return(InvalidEnumerationValue(typeof(SchemaType), (int)value));
        }
Beispiel #5
0
        private static string SchemaTypeToString(SchemaType objType)
        {
            string result = string.Empty;

            if (((objType & SchemaType.Users) == SchemaType.Unspecified) ||
                ((objType & SchemaType.Organizations) == SchemaType.Unspecified) ||
                ((objType & SchemaType.Groups) == SchemaType.Unspecified))
            {
                result = objType.ToString().ToUpper();
            }

            return(result);
        }
Beispiel #6
0
        internal static string SchemaTypeToPrefix(this SchemaType schemaType)
        {
            string cacheKey = "OguAndADObjectComparerBasePrefix" + "-" + schemaType.ToString();

            return((string)ObjectContextCache.Instance.GetOrAddNewValue(cacheKey, (cache, key) =>
            {
                string prefix = PermissionCenterToADSynchronizeSettings.GetConfig().SchemaMappings.GetSchemaMappingInfo(schemaType.ToString()).Prefix;

                cache.Add(cacheKey, prefix);

                return prefix;
            }));
        }
Beispiel #7
0
        public async Task <SchemaVersion> GetLastRevisionAsync(SchemaType type, string @namespace, string name)
        {
            var query = await _repository.RetrieveAsync(q => q
                                                        .Where(x =>
                                                               x.Type.ToString() ==
                                                               type.ToString() && // Azure SDK does not respect serializer settings: force conversion
                                                               x.Namespace == @namespace &&
                                                               x.Name == name)
                                                        .OrderByDescending(x => x.Revision));

            var lastRevision = query.FirstOrDefault();

            return(lastRevision?.Model);
        }
		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;
			});
		}
Beispiel #9
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;
            }));
        }
		/// <summary>
		/// 创建机构人员组对象
		/// </summary>
		/// <param name="type">需要创建的对象类型</param>
		/// <returns></returns>
		public IOguObject CreateObject(SchemaType type)
		{
			OguBaseImpl oBase = null;

			switch (type)
			{
				case SchemaType.Users:
					oBase = new OguUserImpl();
					break;
				case SchemaType.Organizations:
					oBase = new OguOrganizationImpl();
					break;
				case SchemaType.OrganizationsInRole:
					oBase = new OguOrganizationInRoleImpl();
					break;
				case SchemaType.Groups:
					oBase = new OguGroupImpl();
					break;
				default:
					throw new InvalidOperationException(string.Format(Resource.InvalidObjectTypeCreation, type.ToString()));
			}

			return oBase;
		}
        public string Generate(JsonSchema rootSchema)
        {
            _additionalTypesRequiredList.Clear();

            if (_settings.GenerateCloningCode)
            {
                _kindEnumName      = _settings.SchemaName + "NodeKind" + _settings.TypeNameSuffix;
                _nodeInterfaceName = "I" + _settings.SchemaName + "Node" + _settings.TypeNameSuffix;
            }

            _rootSchema = JsonSchema.Collapse(rootSchema);

            if (_fileSystem.DirectoryExists(_settings.OutputDirectory) && !_settings.ForceOverwrite)
            {
                throw Error.CreateException(Resources.ErrorOutputDirectoryExists, _settings.OutputDirectory);
            }

            _fileSystem.CreateDirectory(_settings.OutputDirectory);

            SchemaType rootSchemaType = _rootSchema.SafeGetType();

            if (rootSchemaType != SchemaType.Object)
            {
                throw Error.CreateException(Resources.ErrorNotAnObject, rootSchemaType.ToString().ToLowerInvariant());
            }

            string rootFileText = GenerateClass(_settings.RootClassName, _rootSchema, _settings.SealClasses, _settings.TypeNameSuffix);

            if (_settings.GenerateEqualityComparers)
            {
                GenerateEqualityComparer(_settings.RootClassName, _rootSchema);
            }

            if (_rootSchema.Definitions != null)
            {
                List <KeyValuePair <string, JsonSchema> > typeDefinitions = _rootSchema.Definitions.Where(ShouldGenerateType).ToList();
                GenerateClassesForDefinitions(typeDefinitions);

                if (_settings.GenerateEqualityComparers)
                {
                    GenerateEqualityComparers(typeDefinitions);
                }
            }

            foreach (AdditionalTypeRequiredInfo additionalTypeRequiredInfo in _additionalTypesRequiredList)
            {
                GenerateAdditionalType(additionalTypeRequiredInfo.Hint, additionalTypeRequiredInfo.Schema);
            }

            if (_settings.GenerateCloningCode)
            {
                _pathToFileContentsDictionary[_nodeInterfaceName + _settings.TypeNameSuffix] =
                    GenerateSyntaxInterface(_settings.SchemaName, _kindEnumName, _nodeInterfaceName);

                _pathToFileContentsDictionary[_kindEnumName + _settings.TypeNameSuffix] =
                    GenerateKindEnum(_kindEnumName);

                string rewritingVisitorClassName = _settings.SchemaName + "RewritingVisitor" + _settings.TypeNameSuffix;
                _pathToFileContentsDictionary[rewritingVisitorClassName] =
                    new RewritingVisitorGenerator(
                        _classInfoDictionary,
                        _settings.CopyrightNotice,
                        _settings.SuffixedNamespaceName,
                        rewritingVisitorClassName,
                        _settings.SchemaName,
                        _kindEnumName,
                        _nodeInterfaceName,
                        _generatedClassNames)
                    .GenerateRewritingVisitor();
            }

            foreach (KeyValuePair <string, string> entry in _pathToFileContentsDictionary)
            {
                _fileSystem.WriteAllText(Path.Combine(_settings.OutputDirectory, entry.Key + ".cs"), entry.Value);
            }

            // Returning the text of the file generated from the root schema allows this method
            // to be more easily unit tested.
            return(rootFileText);
        }
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            switch (TypeCode)
            {
            case XmlTypeCode.AnyAtomicType:
                sb.Append("AnyAtomicType");
                break;

            case XmlTypeCode.UntypedAtomic:
                sb.Append("UntypedAtomic");
                break;

            case XmlTypeCode.None:
                sb.Append("empty-sequence()");
                break;

            case XmlTypeCode.Item:
                sb.Append("item()");
                break;

            case XmlTypeCode.Node:
                sb.Append("node()");
                break;

            case XmlTypeCode.Document:
                sb.Append("document-node(");
                if (SchemaElement == null)
                {
                    if (!NameTest.IsWildcard || SchemaType != null)
                    {
                        sb.Append("element(");
                        sb.Append(NameTest.ToString());
                        if (SchemaType != null)
                        {
                            sb.Append(",");
                            sb.Append(SchemaType.ToString());
                            if (Nillable)
                            {
                                sb.Append("?");
                            }
                        }
                        else
                        {
                            sb.Append(", xs:untyped");
                        }
                        sb.Append(")");
                    }
                }
                else
                {
                    sb.Append("schema-element(");
                    sb.Append(SchemaElement.QualifiedName);
                    sb.Append(")");
                }
                sb.Append(")");
                break;

            case XmlTypeCode.Element:
                if (SchemaElement == null)
                {
                    sb.Append("element(");
                    sb.Append(NameTest.ToString());
                    if (SchemaType != null)
                    {
                        sb.Append(",");
                        sb.Append(SchemaType.ToString());
                        if (Nillable)
                        {
                            sb.Append("?");
                        }
                    }
                    else
                    {
                        sb.Append(", xs:untyped");
                    }
                }
                else
                {
                    sb.Append("schema-element(");
                    sb.Append(SchemaElement.QualifiedName);
                }
                sb.Append(")");
                break;

            case XmlTypeCode.Attribute:
                if (SchemaAttribute == null)
                {
                    sb.Append("attribute(");
                    sb.Append(NameTest.ToString());
                    if (SchemaType != null)
                    {
                        sb.Append(",");
                        sb.Append(SchemaType.ToString());
                    }
                }
                else
                {
                    sb.Append("schema-attribute(");
                    sb.Append(SchemaAttribute.QualifiedName);
                }
                sb.Append(")");
                break;

            case XmlTypeCode.ProcessingInstruction:
                sb.Append("processing-instruction(");
                break;

            case XmlTypeCode.Comment:
                sb.Append("comment()");
                break;

            case XmlTypeCode.Text:
                sb.Append("text()");
                break;

            case XmlTypeCode.String:
                sb.Append("xs:string");
                break;

            case XmlTypeCode.Boolean:
                sb.Append("xs:boolean");
                break;

            case XmlTypeCode.Decimal:
                sb.Append("xs:decimal");
                break;

            case XmlTypeCode.Float:
                sb.Append("xs:float");
                break;

            case XmlTypeCode.Double:
                sb.Append("xs:double");
                break;

            case XmlTypeCode.Duration:
                sb.Append("xs:Duration");
                break;

            case XmlTypeCode.DateTime:
                sb.Append("xs:dateTime");
                break;

            case XmlTypeCode.Time:
                sb.Append("xs:time");
                break;

            case XmlTypeCode.Date:
                sb.Append("xs:date");
                break;

            case XmlTypeCode.GYearMonth:
                sb.Append("xs:gYearMonth");
                break;

            case XmlTypeCode.GYear:
                sb.Append("xs:gYear");
                break;

            case XmlTypeCode.GMonthDay:
                sb.Append("xs:gMonthDay");
                break;

            case XmlTypeCode.GDay:
                sb.Append("xs:gDay");
                break;

            case XmlTypeCode.GMonth:
                sb.Append("xs:gMonth");
                break;

            case XmlTypeCode.HexBinary:
                sb.Append("xs:hexBinary");
                break;

            case XmlTypeCode.Base64Binary:
                sb.Append("xs:base64Binary");
                break;

            case XmlTypeCode.AnyUri:
                sb.Append("xs:anyURI");
                break;

            case XmlTypeCode.QName:
                sb.Append("xs:QName");
                break;

            case XmlTypeCode.Notation:
                sb.Append("xs:NOTATION");
                break;

            case XmlTypeCode.NormalizedString:
                sb.Append("xs:normalizedString");
                break;

            case XmlTypeCode.Token:
                sb.Append("xs:token");
                break;

            case XmlTypeCode.Language:
                sb.Append("xs:language");
                break;

            case XmlTypeCode.NmToken:
                if (SchemaType == XmlSchema.NMTOKENS)
                {
                    sb.Append("xs:NMTOKENS");
                }
                else
                {
                    sb.Append("xs:NMTOKEN");
                }
                break;

            case XmlTypeCode.Name:
                sb.Append("xs:Name");
                break;

            case XmlTypeCode.NCName:
                sb.Append("xs:NCName");
                break;

            case XmlTypeCode.Id:
                sb.Append("xs:ID");
                break;

            case XmlTypeCode.Idref:
                if (SchemaType == XmlSchema.IDREFS)
                {
                    sb.Append("xs:IDREFS");
                }
                else
                {
                    sb.Append("xs:IDREF");
                }
                break;

            case XmlTypeCode.Entity:
                if (SchemaType == XmlSchema.ENTITIES)
                {
                    sb.Append("xs:ENTITYS");
                }
                else
                {
                    sb.Append("xs:ENTITY");
                }
                break;

            case XmlTypeCode.Integer:
                sb.Append("xs:integer");
                break;

            case XmlTypeCode.NonPositiveInteger:
                sb.Append("xs:nonPositiveInteger");
                break;

            case XmlTypeCode.NegativeInteger:
                sb.Append("xs:negativeInteger");
                break;

            case XmlTypeCode.Long:
                sb.Append("xs:long");
                break;

            case XmlTypeCode.Int:
                sb.Append("xs:int");
                break;

            case XmlTypeCode.Short:
                sb.Append("xs:short");
                break;

            case XmlTypeCode.Byte:
                sb.Append("xs:byte");
                break;

            case XmlTypeCode.NonNegativeInteger:
                sb.Append("xs:nonNegativeInteger");
                break;

            case XmlTypeCode.UnsignedLong:
                sb.Append("xs:unsignedLong");
                break;

            case XmlTypeCode.UnsignedInt:
                sb.Append("xs:unsignedInt");
                break;

            case XmlTypeCode.UnsignedShort:
                sb.Append("xs:unsignedShort");
                break;

            case XmlTypeCode.UnsignedByte:
                sb.Append("xs:unsignedByte");
                break;

            case XmlTypeCode.PositiveInteger:
                sb.Append("xs:positiveInteger");
                break;

            case XmlTypeCode.DayTimeDuration:
                sb.Append("xs:dayTimeDuration");
                break;

            case XmlTypeCode.YearMonthDuration:
                sb.Append("xs:yearMonthDuration");
                break;

            default:
                sb.Append("[]");
                break;
            }
            switch (Cardinality)
            {
            case XmlTypeCardinality.OneOrMore:
                sb.Append("+");
                break;

            case XmlTypeCardinality.ZeroOrMore:
                sb.Append("*");
                break;

            case XmlTypeCardinality.ZeroOrOne:
                sb.Append("?");
                break;
            }
            return(sb.ToString());
        }
Beispiel #13
0
 /// <summary>
 /// Returns symbol name for the given schema type
 /// </summary>
 /// <param name="type">schema type</param>
 /// <returns>symbol name</returns>
 private static string GetTypeString(SchemaType type)
 {
     return(type != SchemaType.Enumeration ? type.ToString().ToLower() : "enum");
 }
        /// <summary>
        /// 创建机构人员组对象
        /// </summary>
        /// <param name="type">需要创建的对象类型</param>
        /// <returns></returns>
        public IOguObject CreateObject(SchemaType type)
        {
            OguBaseImpl oBase = null;

            switch (type)
            {
            case SchemaType.Users:
                oBase = new OguUserImpl();
                break;

            case SchemaType.Organizations:
                oBase = new OguOrganizationImpl();
                break;

            case SchemaType.OrganizationsInRole:
                oBase = new OguOrganizationInRoleImpl();
                break;

            case SchemaType.Groups:
                oBase = new OguGroupImpl();
                break;

            default:
                throw new InvalidOperationException(string.Format(Resource.InvalidObjectTypeCreation, type.ToString()));
            }

            return(oBase);
        }
Beispiel #15
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);
            }
        }