Exemplo n.º 1
0
 /// <inheritdoc />
 public IEnumerable <PropertyNode> Serialize(object obj)
 {
     if (obj == null)
     {
         yield break;
     }
     foreach (var de in (IEnumerable)obj)
     {
         var name  = KVKey(de);
         var value = serializer.Serialize(KVValue(de));
         if (value == null)
         {
             yield return new PropertyNode {
                        FieldNameSuffix = name
             }
         }
         ;
         else
         {
             foreach (var v in value)
             {
                 yield return new PropertyNode {
                            FieldValue      = v.FieldValue,
                            FieldNameSuffix = name,
                 }
             }
         };
     }
 }
Exemplo n.º 2
0
        public XElement Serialize(Dictionary <string, object> doc, double?boost)
        {
            if (doc == null)
            {
                throw new ArgumentNullException("doc");
            }
            var docNode = new XElement("doc");

            if (boost.HasValue)
            {
                var boostAttr = new XAttribute("boost", boost.Value.ToString(CultureInfo.InvariantCulture.NumberFormat));
                docNode.Add(boostAttr);
            }
            foreach (var kv in doc)
            {
                var nodes = serializer.Serialize(kv.Value);
                foreach (var n in nodes)
                {
                    var value = SolrDocumentSerializer <object> .RemoveControlCharacters(n.FieldValue);

                    if (value != null)
                    {
                        var fieldNode = new XElement("field", new XAttribute("name", kv.Key), value);
                        docNode.Add(fieldNode);
                    }
                }
            }
            return(docNode);
        }
Exemplo n.º 3
0
        public XmlDocument Serialize(Dictionary <string, object> doc, double?boost)
        {
            if (doc == null)
            {
                throw new ArgumentNullException("doc");
            }
            var xml     = new XmlDocument();
            var docNode = xml.CreateElement("doc");

            if (boost.HasValue)
            {
                var boostAttr = xml.CreateAttribute("boost");
                boostAttr.Value = boost.Value.ToString(CultureInfo.InvariantCulture.NumberFormat);
                docNode.Attributes.Append(boostAttr);
            }
            foreach (var kv in doc)
            {
                var nodes = serializer.Serialize(kv.Value);
                foreach (var n in nodes)
                {
                    var name = xml.CreateAttribute("name");
                    name.Value = kv.Key;
                    var fieldNode = xml.CreateElement("field");
                    fieldNode.Attributes.Append(name);
                    fieldNode.InnerText = n.FieldValue;
                    docNode.AppendChild(fieldNode);
                }
            }
            xml.AppendChild(docNode);
            return(xml);
        }
Exemplo n.º 4
0
 public string SerializeValue(object o)
 {
     if (o == null)
     {
         return("*");
     }
     return(fieldSerializer.Serialize(o).First().FieldValue);
 }
Exemplo n.º 5
0
 /// <inheritdoc />
 public IEnumerable <PropertyNode> Serialize(object obj)
 {
     if (obj == null)
     {
         yield break;
     }
     foreach (var i in serializer.Serialize(obj))
     {
         yield return(i);
     }
 }
Exemplo n.º 6
0
        public XmlDocument Serialize(T doc, double?boost)
        {
            var xml     = new XmlDocument();
            var docNode = xml.CreateElement("doc");

            if (boost.HasValue)
            {
                var boostAttr = xml.CreateAttribute("boost");
                boostAttr.Value = boost.Value.ToString(CultureInfo.InvariantCulture.NumberFormat);
                docNode.Attributes.Append(boostAttr);
            }
            var fields = mappingManager.GetFields(doc.GetType());

            foreach (var field in fields)
            {
                var p = field.Property;
                if (!p.CanRead)
                {
                    continue;
                }
                var value = p.GetValue(doc, null);
                if (value == null)
                {
                    continue;
                }
                var nodes = fieldSerializer.Serialize(value);
                foreach (var n in nodes)
                {
                    var fieldNode = xml.CreateElement("field");
                    var nameAtt   = xml.CreateAttribute("name");
                    nameAtt.InnerText = (field.FieldName == "*" ? "" : field.FieldName) + n.FieldNameSuffix;
                    fieldNode.Attributes.Append(nameAtt);

                    if (field.Boost != null && field.Boost > 0)
                    {
                        var boostAtt = xml.CreateAttribute("boost");
                        boostAtt.InnerText = field.Boost.ToString();
                        fieldNode.Attributes.Append(boostAtt);
                    }

                    fieldNode.InnerText = n.FieldValue;
                    docNode.AppendChild(fieldNode);
                }
            }
            xml.AppendChild(docNode);
            return(xml);
        }
Exemplo n.º 7
0
        public XElement Serialize(T doc, double?boost)
        {
            var docNode = new XElement("doc");

            if (boost.HasValue)
            {
                var boostAttr = new XAttribute("boost", boost.Value.ToString(CultureInfo.InvariantCulture.NumberFormat));
                docNode.Add(boostAttr);
            }
            var fields = mappingManager.GetFields(doc.GetType());

            foreach (var field in fields.Values)
            {
                var p = field.Property;
                if (!p.CanRead)
                {
                    continue;
                }
                var value = p.GetValue(doc, null);
                if (value == null)
                {
                    continue;
                }
                var nodes = fieldSerializer.Serialize(value);
                foreach (var n in nodes)
                {
                    var fieldNode = new XElement("field");
                    var nameAtt   = new XAttribute("name", (field.FieldName == "*" ? "" : field.FieldName) + n.FieldNameSuffix);
                    fieldNode.Add(nameAtt);

                    if (field.Boost != null && field.Boost > 0)
                    {
                        var boostAtt = new XAttribute("boost", field.Boost.Value.ToString(CultureInfo.InvariantCulture.NumberFormat));
                        fieldNode.Add(boostAtt);
                    }

                    var v = RemoveControlCharacters(n.FieldValue);
                    if (v != null)
                    {
                        fieldNode.Value = v;
                        docNode.Add(fieldNode);
                    }
                }
            }
            return(docNode);
        }
        internal static string SerializeToSolr(this object value, ISolrFieldSerializer serializer)
        {
            if (serializer == null)
            {
                throw new ArgumentNullException(nameof(serializer));
            }
            if (value == null)
            {
                return(null);
            }

            if (serializer.CanHandleType(value.GetType()))
            {
                return(serializer.Serialize(value).First().FieldValue);
            }

            throw new InvalidOperationException($"Unable to serialize '{value}'.");
        }
Exemplo n.º 9
0
 /// <inheritdoc />
 public IEnumerable <PropertyNode> Serialize(object obj)
 {
     if (obj == null)
     {
         yield break;
     }
     foreach (var o in (IEnumerable)obj)
     {
         var e = valueSerializer.Serialize(o);
         if (e == null)
         {
             yield return(new PropertyNode());
         }
         else
         {
             foreach (var n in e)
             {
                 yield return(n);
             }
         }
     }
 }
Exemplo n.º 10
0
 public string SerializeSingle(object o)
 {
     return(fieldSerializer.Serialize(o).First().FieldValue);
 }