예제 #1
0
        /// <summary>
        /// Parses the raw message.
        /// </summary>
        /// <param name="message">The raw message as string.</param>
        /// <returns>List of <see cref="ChangeMessageRecovery"/>.</returns>
        private static IEnumerable <ChangeMessageRecovery> ParseMessage(XElement message)
        {
            List <ChangeMessageRecovery> changeMessageList = new List <ChangeMessageRecovery>();

            if (message != null)
            {
                string resourceType = message.Element(OperationElement).Value;

                // Retrieve values from the XML.
                foreach (XElement resourceNode in message.Element(ChangedDataElement).Elements(ResourceElement))
                {
                    string resourceId         = GetAttributeValue(resourceNode, ResourceIdAttribute);
                    string dataNamespace      = GetAttributeValue(resourceNode, NameSpaceAttribute);
                    string dateAddedString    = GetAttributeValue(resourceNode, DateAddedAttribute);
                    string dateModifiedString = GetAttributeValue(resourceNode, DateModifiedAttribute);
                    string resourceName       = GetAttributeValue(resourceNode, ResourceNameAttribute);
                    string resourceTypeId     = GetAttributeValue(resourceNode, ResourceTypeIdAttribute);

                    // Parse the string values to get the required datatype.
                    Guid resourceGuid;
                    Guid.TryParse(resourceId, out resourceGuid);
                    Guid resourceTypeGuid;
                    Guid.TryParse(resourceTypeId, out resourceTypeGuid);
                    DateTime addedDateTime;
                    DateTime.TryParse(dateAddedString, out addedDateTime);
                    DateTime modifiedDateTime;
                    DateTime.TryParse(dateModifiedString, out modifiedDateTime);

                    // Create the model to be saved into the database.
                    ChangeMessageRecovery changeMessage = new ChangeMessageRecovery
                    {
                        Id                 = Guid.NewGuid(),
                        ChangeType         = (short)GetChangeType(resourceType),
                        DataModelNamespace = dataNamespace,
                        ResourceId         = resourceGuid,
                        DateAdded          = addedDateTime,
                        DateModified       = modifiedDateTime,
                        ResourceTypeId     = resourceTypeGuid,
                        ResourceTypeName   = resourceName
                    };

                    if (changeMessage.ResourceId != Guid.Empty)
                    {
                        changeMessageList.Add(changeMessage);
                    }
                }
            }

            return(changeMessageList);
        }
예제 #2
0
        /// <summary>
        /// Converts a ChangeMessageRecovery into a ResourceChangeMessage.
        /// </summary>
        /// <param name="changeMessage">The change message.</param>
        /// <returns>Resource change message.</returns>
        internal static ResourceChangeMessage ToResourceChangeMessage(this ChangeMessageRecovery changeMessage)
        {
            if (changeMessage == null)
            {
                return(null);
            }

            ResourceChangeMessage resChangeMessage = new ResourceChangeMessage
            {
                ResourceId         = changeMessage.ResourceId,
                ResourceTypeId     = changeMessage.ResourceTypeId,
                ResourceTypeName   = changeMessage.ResourceTypeName,
                DataModelNamespace = changeMessage.DataModelNamespace,
                ChangeType         = (ResourceChangeType)Enum.Parse(typeof(ResourceChangeType), changeMessage.ChangeType.ToString()),
                DateAdded          = changeMessage.DateAdded,
                DateModified       = changeMessage.DateModified
            };

            return(resChangeMessage);
        }
예제 #3
0
        /// <summary>
        /// Converts a ResourceChangeMessage into a ChangeMessageRecovery
        /// </summary>
        /// <param name="resChangeMessage">The res change message.</param>
        /// <returns>Change message recovery.</returns>
        internal static ChangeMessageRecovery ToChangeMessage(this ResourceChangeMessage resChangeMessage)
        {
            if (resChangeMessage == null)
            {
                return(null);
            }

            ChangeMessageRecovery changeMessage = new ChangeMessageRecovery
            {
                Id                 = Guid.NewGuid(),
                ResourceId         = resChangeMessage.ResourceId,
                ResourceTypeId     = resChangeMessage.ResourceTypeId,
                ResourceTypeName   = resChangeMessage.ResourceTypeName,
                DataModelNamespace = resChangeMessage.DataModelNamespace,
                DateAdded          = resChangeMessage.DateAdded,
                DateModified       = resChangeMessage.DateModified,
                ChangeType         = (short)resChangeMessage.ChangeType
            };

            return(changeMessage);
        }
 partial void DeleteChangeMessageRecovery(ChangeMessageRecovery instance);
 partial void UpdateChangeMessageRecovery(ChangeMessageRecovery instance);
 partial void InsertChangeMessageRecovery(ChangeMessageRecovery instance);