[mapguide-commits] r6363 - in trunk/MgDev/Server/src/Gws/GwsQueryEngine: . inc

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Sat Dec 24 09:20:28 EST 2011


Author: jng
Date: 2011-12-24 06:20:28 -0800 (Sat, 24 Dec 2011)
New Revision: 6363

Modified:
   trunk/MgDev/Server/src/Gws/GwsQueryEngine/GwsFeatureQueryResults.cpp
   trunk/MgDev/Server/src/Gws/GwsQueryEngine/GwsPreparedFeatureQuery.cpp
   trunk/MgDev/Server/src/Gws/GwsQueryEngine/inc/GwsQuery.h
Log:
#1888: The prepared GWS feature query did not create the FDO extended select command, despite the fixed sortability check actually now checking support for this command. This submission updates the prepared feature query to create this command. 

Modified: trunk/MgDev/Server/src/Gws/GwsQueryEngine/GwsFeatureQueryResults.cpp
===================================================================
--- trunk/MgDev/Server/src/Gws/GwsQueryEngine/GwsFeatureQueryResults.cpp	2011-12-23 16:41:25 UTC (rev 6362)
+++ trunk/MgDev/Server/src/Gws/GwsQueryEngine/GwsFeatureQueryResults.cpp	2011-12-24 14:20:28 UTC (rev 6363)
@@ -72,8 +72,10 @@
     m_reader = pReader;
 
     m_bScrollableReader = bIsScrollable;
-
-    if(dynamic_cast<SdfIScrollableFeatureReader*>(pReader) != NULL)
+    
+    if(dynamic_cast<FdoIScrollableFeatureReader*>(pReader) != NULL)
+        m_extProviderType = eFDO;
+    else if(dynamic_cast<SdfIScrollableFeatureReader*>(pReader) != NULL)
         m_extProviderType = eSDF;
     else if(dynamic_cast<ShpIScrollableFeatureReader*>(pReader) != NULL)
         m_extProviderType = eSHP;

Modified: trunk/MgDev/Server/src/Gws/GwsQueryEngine/GwsPreparedFeatureQuery.cpp
===================================================================
--- trunk/MgDev/Server/src/Gws/GwsQueryEngine/GwsPreparedFeatureQuery.cpp	2011-12-23 16:41:25 UTC (rev 6362)
+++ trunk/MgDev/Server/src/Gws/GwsQueryEngine/GwsPreparedFeatureQuery.cpp	2011-12-24 14:20:28 UTC (rev 6363)
@@ -34,6 +34,7 @@
 //operation. Each executed command prints [Query] to stdout
 //
 //#define TRACE_GWS_QUERY
+//#define DEBUG_PREPARED_FEATURE_QUERY
 
 /////////////////////////////////////////////////////////////////////
 //
@@ -204,6 +205,13 @@
         FdoInt32* pTypes = ptrCap->GetCommands(size);
         for(int i = 0; i < size; i++ )
         {
+            if( pTypes[i] == FdoCommandType_ExtendedSelect)
+            {
+                m_bExtendedQuerySupported = true;
+                selcmd = (FdoIExtendedSelect *) m_connection->CreateCommand (FdoCommandType_ExtendedSelect);
+                mExSelProv = eFDO;
+                break;
+            }
             if( pTypes[i] == SdfCommandType_ExtendedSelect)
             {
                 m_bExtendedQuerySupported = true;
@@ -232,8 +240,13 @@
             }
             if(m_bExtendedQuerySupported)
             {
-                if(mExSelProv == eSDF)
+                if(mExSelProv == eFDO)
                 {
+                    FdoIExtendedSelect* pExSelCmd = (FdoIExtendedSelect*)selcmd;
+                    pExSelCmd->SetOrderingOption(orderBy->GetString(0), orderingOption);
+                }
+                else if(mExSelProv == eSDF)
+                {
                     SdfIExtendedSelect* pExSelCmd = (SdfIExtendedSelect*)selcmd;
                     pExSelCmd->SetOrderingOption(orderBy->GetString(0), orderingOption);
                 }
@@ -411,7 +424,9 @@
         FdoPtr<FdoIFeatureReader> reader;
         if(bScrollable && m_bExtendedQuerySupported)
         {
-            if(mExSelProv == eSDF)
+            if (mExSelProv == eFDO)
+                reader = ((FdoIExtendedSelect *)m_pCommand.p)->ExecuteScrollable();
+            else if(mExSelProv == eSDF)
                 reader = ((SdfIExtendedSelect *)m_pCommand.p)->ExecuteScrollable();
             else if(mExSelProv == eSHP)
                 reader = ((ShpIExtendedSelect *)m_pCommand.p)->ExecuteScrollable();
@@ -424,6 +439,21 @@
         else
             bGotScrollableIterator = true;
 
+        #ifdef DEBUG_PREPARED_FEATURE_QUERY
+        if(bScrollable && m_bExtendedQuerySupported)
+        {
+            std::string sCommandType;
+            if (mExSelProv == eFDO)
+                sCommandType = "FdoIExtendedSelect";
+            else if(mExSelProv == eSDF)
+                sCommandType = "SdfIExtendedSelect";
+            else if(mExSelProv == eSHP)
+                sCommandType = "ShpIExtendedSelect";
+
+            if (!sCommandType.empty())
+                printf("Extended query type is: %s\n", sCommandType.c_str());
+        }
+        #endif
         CGwsFeatureIterator * pResults = CreateFeatureIterator (eGwsFeatureIterator);
         stat = pResults->InitializeReader (reader, m_pQuery, this, bGotScrollableIterator);
         if (! IGWSException::IsError (stat)) {

Modified: trunk/MgDev/Server/src/Gws/GwsQueryEngine/inc/GwsQuery.h
===================================================================
--- trunk/MgDev/Server/src/Gws/GwsQueryEngine/inc/GwsQuery.h	2011-12-23 16:41:25 UTC (rev 6362)
+++ trunk/MgDev/Server/src/Gws/GwsQueryEngine/inc/GwsQuery.h	2011-12-24 14:20:28 UTC (rev 6363)
@@ -269,7 +269,7 @@
     GWSCoordinateSystem                 m_csname;
 };
 
-typedef enum _GwsExtendedSelProvider { eSDF, eSHP, eCGFI } EGwsExtendedSelProvider;
+typedef enum _GwsExtendedSelProvider { eSDF, eSHP, eCGFI, eFDO } EGwsExtendedSelProvider;
 
 
 ///////////////////////////////////////////////////////////////////////////////



More information about the mapguide-commits mailing list