[mapguide-commits] r4934 - trunk/Tools/Maestro/MaestroAPI

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Fri Jun 4 08:10:20 EDT 2010


Author: jng
Date: 2010-06-04 08:10:18 -0400 (Fri, 04 Jun 2010)
New Revision: 4934

Modified:
   trunk/Tools/Maestro/MaestroAPI/XmlFeatureSetReader.cs
Log:
Change XmlFeatureSetReader to handle post #708 SELECTFEATURES output

Modified: trunk/Tools/Maestro/MaestroAPI/XmlFeatureSetReader.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPI/XmlFeatureSetReader.cs	2010-06-04 00:06:46 UTC (rev 4933)
+++ trunk/Tools/Maestro/MaestroAPI/XmlFeatureSetReader.cs	2010-06-04 12:10:18 UTC (rev 4934)
@@ -124,7 +124,7 @@
 
         protected override void CloseInternal()
         {
-            throw new NotImplementedException();
+            
         }
 
         public override int Depth
@@ -159,64 +159,72 @@
                     throw new Exception("Bad document, multiple: " + p["Name"].InnerText + " values in a single feature");
                 m_nulls[ordinal] = false;
 
-                if (parent.Columns[ordinal].Type == typeof(string) || parent.Columns[ordinal].Type == Utility.UnmappedType)
-                    m_items[ordinal] = p["Value"].InnerText;
-                else if (parent.Columns[ordinal].Type == typeof(int))
-                    m_items[ordinal] = XmlConvert.ToInt32(p["Value"].InnerText);
-                else if (parent.Columns[ordinal].Type == typeof(long))
-                    m_items[ordinal] = XmlConvert.ToInt64(p["Value"].InnerText);
-                else if (parent.Columns[ordinal].Type == typeof(short))
-                    m_items[ordinal] = XmlConvert.ToInt16(p["Value"].InnerText);
-                else if (parent.Columns[ordinal].Type == typeof(double))
-                    m_items[ordinal] = XmlConvert.ToDouble(p["Value"].InnerText);
-                else if (parent.Columns[ordinal].Type == typeof(bool))
-                    m_items[ordinal] = XmlConvert.ToBoolean(p["Value"].InnerText);
-                else if (parent.Columns[ordinal].Type == typeof(DateTime))
+                XmlNode valueNode = p["Value"];
+                if (valueNode == null)
                 {
-                    try
+                    m_nulls[ordinal] = true;
+                }
+                else
+                {
+                    if (parent.Columns[ordinal].Type == typeof(string) || parent.Columns[ordinal].Type == Utility.UnmappedType)
+                        m_items[ordinal] = valueNode.InnerText;
+                    else if (parent.Columns[ordinal].Type == typeof(int))
+                        m_items[ordinal] = XmlConvert.ToInt32(valueNode.InnerText);
+                    else if (parent.Columns[ordinal].Type == typeof(long))
+                        m_items[ordinal] = XmlConvert.ToInt64(valueNode.InnerText);
+                    else if (parent.Columns[ordinal].Type == typeof(short))
+                        m_items[ordinal] = XmlConvert.ToInt16(valueNode.InnerText);
+                    else if (parent.Columns[ordinal].Type == typeof(double))
+                        m_items[ordinal] = XmlConvert.ToDouble(valueNode.InnerText);
+                    else if (parent.Columns[ordinal].Type == typeof(bool))
+                        m_items[ordinal] = XmlConvert.ToBoolean(valueNode.InnerText);
+                    else if (parent.Columns[ordinal].Type == typeof(DateTime))
                     {
-                        //Fix for broken ODBC provider
-                        string v = p["Value"].InnerText;
+                        try
+                        {
+                            //Fix for broken ODBC provider
+                            string v = valueNode.InnerText;
 
-                        if (v.Trim().ToUpper().StartsWith("TIMESTAMP"))
-                            v = v.Trim().Substring("TIMESTAMP".Length).Trim();
-                        else if (v.Trim().ToUpper().StartsWith("DATE"))
-                            v = v.Trim().Substring("DATE".Length).Trim();
-                        else if (v.Trim().ToUpper().StartsWith("TIME"))
-                            v = v.Trim().Substring("TIME".Length).Trim();
+                            if (v.Trim().ToUpper().StartsWith("TIMESTAMP"))
+                                v = v.Trim().Substring("TIMESTAMP".Length).Trim();
+                            else if (v.Trim().ToUpper().StartsWith("DATE"))
+                                v = v.Trim().Substring("DATE".Length).Trim();
+                            else if (v.Trim().ToUpper().StartsWith("TIME"))
+                                v = v.Trim().Substring("TIME".Length).Trim();
 
-                        if (v != p["Value"].InnerText)
-                        {
-                            if (v.StartsWith("'"))
-                                v = v.Substring(1);
-                            if (v.EndsWith("'"))
-                                v = v.Substring(0, v.Length - 1);
+                            if (v != valueNode.InnerText)
+                            {
+                                if (v.StartsWith("'"))
+                                    v = v.Substring(1);
+                                if (v.EndsWith("'"))
+                                    v = v.Substring(0, v.Length - 1);
 
-                            m_items[ordinal] = DateTime.Parse(v, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.NoCurrentDateDefault);
+                                m_items[ordinal] = DateTime.Parse(v, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.NoCurrentDateDefault);
+                            }
+                            else
+                                m_items[ordinal] = XmlConvert.ToDateTime(v, XmlDateTimeSerializationMode.Unspecified);
                         }
-                        else
-                            m_items[ordinal] = XmlConvert.ToDateTime(v, XmlDateTimeSerializationMode.Unspecified);
+                        catch (Exception ex)
+                        {
+                            //Unfortunately FDO supports invalid dates, such as the 30th feb
+                            m_nulls[ordinal] = true;
+                            m_items[ordinal] = ex;
+                        }
                     }
-                    catch (Exception ex)
+                    else if (parent.Columns[ordinal].Type == Utility.GeometryType)
                     {
-                        //Unfortunately FDO supports invalid dates, such as the 30th feb
-                        m_nulls[ordinal] = true;
-                        m_items[ordinal] = ex;
+                        m_items[ordinal] = valueNode.InnerText;
+                        if (string.IsNullOrEmpty(valueNode.InnerText))
+                        {
+                            m_nulls[ordinal] = true;
+                            m_items[ordinal] = null;
+                        }
+                        else
+                            m_lazyloadGeometry[ordinal] = true;
                     }
-                }
-                else if (parent.Columns[ordinal].Type == Utility.GeometryType)
-                {
-                    m_items[ordinal] = p["Value"].InnerText;
-                    if (string.IsNullOrEmpty(p["Value"].InnerText))
-                    {
-                        m_nulls[ordinal] = true;
-                        m_items[ordinal] = null;
-                    }
                     else
-                        m_lazyloadGeometry[ordinal] = true;
+                        throw new Exception("Unknown type: " + parent.Columns[ordinal].Type.FullName);
                 }
-                else
-                    throw new Exception("Unknown type: " + parent.Columns[ordinal].Type.FullName);
             }
 		}
     }



More information about the mapguide-commits mailing list