Example #1
0
        /// <summary>
        /// Serializes an ChangeDetectionItem to an XML file.
        /// </summary>
        /// <param name="writer">XMLWriter where the ChangeDetectionItem is stored.</param>
        /// <param name="ChangeDetectionItem">ChangeDetectionItem to serialize.</param>
        /// <returns>Returns the XMLWriter with the ChangeDetectionItem.</returns>
        public static XmlWriter Serialize(XmlWriter writer, ChangeDetectionItem item)
        {
            writer.WriteStartElement(DTD.Request.ServiceRequest.ChangeDetectionItems.TagChangeDetectionItem);
            writer.WriteAttributeString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagName, item.Name);
            ModelType modelType = Convert.StringTypeToMODELType(item.Type);

            if (modelType == ModelType.Oid)
            {
                writer.WriteAttributeString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagType, item.ClassName);
            }
            else
            {
                writer.WriteAttributeString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagType, item.Type);
            }

            if (item.Value != null)
            {
                if (item.Value is Oids.AlternateKey)
                {
                    XMLAlternateKeySerializer.Serialize(writer, (Oids.AlternateKey)item.Value);
                }
                else if (item.Value is Oids.Oid)
                {
                    XMLAdaptorOIDSerializer.Serialize(writer, item.Value as Oids.Oid);
                }
                else                                                          // <Literal>
                {
                    string lvalue = Convert.TypeToXml(item.Type, item.Value); //<-- Convert TypeToXML()!!!!
                    if (lvalue.Length > 0)
                    {
                        string lvalueTrim = lvalue.Trim();
                        if (lvalueTrim.Length > 0)
                        {
                            writer.WriteStartElement(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagLiteral);
                            writer.WriteValue(lvalue);
                            writer.WriteEndElement();
                        }
                        else                        // if is string White spaces it value is <NULL>
                        {
                            writer.WriteElementString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagNull, string.Empty);
                        }
                    }
                    else                     // Is <NULL>
                    {
                        writer.WriteElementString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagNull, string.Empty);
                    }
                }
            }
            else             // Is <NULL>
            {
                writer.WriteElementString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagNull, string.Empty);
            }
            writer.WriteEndElement();
            return(writer);
        }
        /// <summary>
        /// Deserializes an ChangeDetectionItem from an XML file.
        /// </summary>
        /// <param name="reader">XMLReader where the ChangeDetectionItem is.</param>
        /// <returns>ChangeDetectionItem.</returns>
        public static ChangeDetectionItem Deserialize(XmlReader reader)
        {
            ChangeDetectionItem lResult = null;
            if (reader.IsStartElement(DTD.Request.ServiceRequest.ChangeDetectionItems.TagChangeDetectionItem))
            {
                lResult = new ChangeDetectionItem();
                string stringModelType = reader.GetAttribute(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagType);
                ModelType modelType = Convert.StringTypeToMODELType(stringModelType);

                if (modelType == ModelType.Oid)
                {
                    lResult.Type = Convert.MODELTypeToStringType(ModelType.Oid);
                    lResult.ClassName = stringModelType;
                }
                else
                {
                    lResult.Type = stringModelType;
                    lResult.ClassName = string.Empty;
                }
                lResult.Name = reader.GetAttribute(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagName);

                if (!reader.IsEmptyElement)
                {
                    reader.ReadStartElement();
                    // if the ChangeDetectionItem is OutBound
                    if (reader.IsStartElement(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagValue))
                    {
                        reader.Read();
                    }
                    switch (reader.LocalName)
                    {
                        case DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagNull:
                            try
                            {
                                lResult.Value = Convert.XmlToType(lResult.Type, null);
                            }
                            catch
                            {
                                // the ChangeDetectionItem is an object-valued ChangeDetectionItem
                                lResult.Value = null;
                            }
                            reader.Skip();
                        break;
                        case DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagLiteral:
                        {
                            if (reader.IsEmptyElement)
                            {
                                lResult.Value = string.Empty;
                                reader.Skip();
                            }
                            else
                            {
                                lResult.Value = Convert.XmlToType(lResult.Type, reader.ReadString());
                                reader.ReadEndElement();
                            }
                        }
                        break;

                        case DTD.TagOID:
                        lResult.Value = XMLAdaptorOIDSerializer.Deserialize(reader.ReadSubtree());
                        break;
                    }
                    reader.ReadEndElement();
                }
                else
                {
                    reader.Skip();
                }
            }
            else
            {
                throw new ArgumentException("Xml Reader don't have the ChangeDetectionItem in Start Element.", "XmlReader reader");
            }
            return lResult;
        }
        /// <summary>
        /// Serializes an ChangeDetectionItem to an XML file.
        /// </summary>
        /// <param name="writer">XMLWriter where the ChangeDetectionItem is stored.</param>
        /// <param name="ChangeDetectionItem">ChangeDetectionItem to serialize.</param>
        /// <returns>Returns the XMLWriter with the ChangeDetectionItem.</returns>
        public static XmlWriter Serialize(XmlWriter writer, ChangeDetectionItem item)
        {
            writer.WriteStartElement(DTD.Request.ServiceRequest.ChangeDetectionItems.TagChangeDetectionItem);
            writer.WriteAttributeString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagName, item.Name);
            ModelType modelType = Convert.StringTypeToMODELType(item.Type);
            if (modelType == ModelType.Oid)
            {
                writer.WriteAttributeString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagType, item.ClassName);
            }
            else
            {
                writer.WriteAttributeString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagType, item.Type);
            }

            if (item.Value != null)
            {
                if (item.Value is Oids.AlternateKey)
                {
                    XMLAlternateKeySerializer.Serialize(writer, (Oids.AlternateKey)item.Value);
                }
                else if (item.Value is Oids.Oid)
                {
                    XMLAdaptorOIDSerializer.Serialize(writer, item.Value as Oids.Oid);
                }
                else // <Literal>
                {
                    string lvalue = Convert.TypeToXml(item.Type, item.Value); //<-- Convert TypeToXML()!!!!
                    if (lvalue.Length > 0)
                    {
                        string lvalueTrim = lvalue.Trim();
                        if (lvalueTrim.Length > 0)
                        {
                            writer.WriteStartElement(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagLiteral);
                            writer.WriteValue(lvalue);
                            writer.WriteEndElement();
                        }
                        else// if is string White spaces it value is <NULL>
                        {
                            writer.WriteElementString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagNull, string.Empty);
                        }
                    }
                    else // Is <NULL>
                    {
                        writer.WriteElementString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagNull, string.Empty);
                    }
                }
            }
            else // Is <NULL>
            {
                writer.WriteElementString(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagNull, string.Empty);
            }
            writer.WriteEndElement();
            return writer;
        }
Example #4
0
        /// <summary>
        /// Deserializes an ChangeDetectionItem from an XML file.
        /// </summary>
        /// <param name="reader">XMLReader where the ChangeDetectionItem is.</param>
        /// <returns>ChangeDetectionItem.</returns>
        public static ChangeDetectionItem Deserialize(XmlReader reader)
        {
            ChangeDetectionItem lResult = null;

            if (reader.IsStartElement(DTD.Request.ServiceRequest.ChangeDetectionItems.TagChangeDetectionItem))
            {
                lResult = new ChangeDetectionItem();
                string    stringModelType = reader.GetAttribute(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagType);
                ModelType modelType       = Convert.StringTypeToMODELType(stringModelType);

                if (modelType == ModelType.Oid)
                {
                    lResult.Type      = Convert.MODELTypeToStringType(ModelType.Oid);
                    lResult.ClassName = stringModelType;
                }
                else
                {
                    lResult.Type      = stringModelType;
                    lResult.ClassName = string.Empty;
                }
                lResult.Name = reader.GetAttribute(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagName);

                if (!reader.IsEmptyElement)
                {
                    reader.ReadStartElement();
                    // if the ChangeDetectionItem is OutBound
                    if (reader.IsStartElement(DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagValue))
                    {
                        reader.Read();
                    }
                    switch (reader.LocalName)
                    {
                    case DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagNull:
                        try
                        {
                            lResult.Value = Convert.XmlToType(lResult.Type, null);
                        }
                        catch
                        {
                            // the ChangeDetectionItem is an object-valued ChangeDetectionItem
                            lResult.Value = null;
                        }
                        reader.Skip();
                        break;

                    case DTD.Request.ServiceRequest.ChangeDetectionItems.ChangeDetectionItem.TagLiteral:
                    {
                        if (reader.IsEmptyElement)
                        {
                            lResult.Value = string.Empty;
                            reader.Skip();
                        }
                        else
                        {
                            lResult.Value = Convert.XmlToType(lResult.Type, reader.ReadString());
                            reader.ReadEndElement();
                        }
                    }
                    break;

                    case DTD.TagOID:
                        lResult.Value = XMLAdaptorOIDSerializer.Deserialize(reader.ReadSubtree());
                        break;
                    }
                    reader.ReadEndElement();
                }
                else
                {
                    reader.Skip();
                }
            }
            else
            {
                throw new ArgumentException("Xml Reader don't have the ChangeDetectionItem in Start Element.", "XmlReader reader");
            }
            return(lResult);
        }