LCOV - code coverage report
Current view: directory - ogr/ogrsf_frmts/filegdb - FGdbResultLayer.cpp (source / functions) Found Hit Coverage
Test: gdal_filtered.info Lines: 59 37 62.7 %
Date: 2012-12-26 Functions: 10 4 40.0 %

       1                 : /******************************************************************************
       2                 : *
       3                 : * Project:  OpenGIS Simple Features Reference Implementation
       4                 : * Purpose:  Implements FileGDB OGR result layer.
       5                 : * Author:   Even Rouault, <even dot rouault at mines dash paris dot org>
       6                 : *
       7                 : ******************************************************************************
       8                 : * Copyright (c) 2012, Even Rouault, <even dot rouault at mines dash paris dot org>
       9                 : *
      10                 : * Permission is hereby granted, free of charge, to any person obtaining a
      11                 : * copy of this software and associated documentation files (the "Software"),
      12                 : * to deal in the Software without restriction, including without limitation
      13                 : * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      14                 : * and/or sell copies of the Software, and to permit persons to whom the
      15                 : * Software is furnished to do so, subject to the following conditions:
      16                 : *
      17                 : * The above copyright notice and this permission notice shall be included
      18                 : * in all copies or substantial portions of the Software.
      19                 : *
      20                 : * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
      21                 : * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      22                 : * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
      23                 : * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      24                 : * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
      25                 : * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
      26                 : * DEALINGS IN THE SOFTWARE.
      27                 : ****************************************************************************/
      28                 : 
      29                 : #include "ogr_fgdb.h"
      30                 : #include "cpl_conv.h"
      31                 : #include "cpl_string.h"
      32                 : #include "FGdbUtils.h"
      33                 : 
      34                 : using std::string;
      35                 : using std::wstring;
      36                 : 
      37                 : /************************************************************************/
      38                 : /*                         FGdbResultLayer()                            */
      39                 : /************************************************************************/
      40               1 : FGdbResultLayer::FGdbResultLayer(FGdbDataSource* pParentDataSource,
      41                 :                                  const char* pszSQL,
      42               1 :                                  EnumRows* pEnumRows)
      43                 : {
      44               1 :     m_pFeatureDefn = new OGRFeatureDefn("result");
      45               1 :     m_pFeatureDefn->Reference();
      46               1 :     m_pEnumRows = pEnumRows;
      47               1 :     m_pDS = pParentDataSource;
      48               1 :     osSQL = pszSQL;
      49                 : 
      50               1 :     m_supressColumnMappingError = false;
      51                 : 
      52               1 :     FieldInfo fieldInfo;
      53               1 :     m_pEnumRows->GetFieldInformation(fieldInfo);
      54                 : 
      55                 :     int fieldCount;
      56               1 :     fieldInfo.GetFieldCount(fieldCount);
      57               6 :     for (int i = 0; i < fieldCount; i++)
      58                 :     {
      59                 :         FieldType fieldType;
      60               5 :         string    strFieldType;
      61               5 :         wstring   fieldName;
      62               5 :         fieldInfo.GetFieldType(i, fieldType);
      63               5 :         fieldInfo.GetFieldName(i, fieldName);
      64                 : 
      65               5 :         OGRFieldType eType = OFTString;
      66               5 :         int bSkip = FALSE;
      67                 : 
      68               5 :         switch(fieldType)
      69                 :         {
      70                 :             case fieldTypeSmallInteger:
      71                 :             case fieldTypeInteger:
      72               0 :                 eType = OFTInteger;
      73               0 :                 break;
      74                 : 
      75                 :             case fieldTypeSingle:
      76               0 :                 eType = OFTReal;
      77               0 :                 strFieldType = "esriFieldTypeSingle";
      78               0 :                 break;
      79                 : 
      80                 :             case fieldTypeDouble:
      81               2 :                 eType = OFTReal;
      82               2 :                 break;
      83                 : 
      84                 :             case fieldTypeString:
      85               1 :                 eType = OFTString;
      86               1 :                 break;
      87                 : 
      88                 :             case fieldTypeDate:
      89               0 :                 eType = OFTDateTime;
      90               0 :                 break;
      91                 : 
      92                 :             case fieldTypeOID:
      93               1 :                 bSkip = TRUE;
      94               1 :                 break;
      95                 : 
      96                 :             case fieldTypeGeometry:
      97               1 :                 bSkip = TRUE;
      98               1 :                 break;
      99                 : 
     100                 :             case fieldTypeBlob:
     101               0 :                 eType = OFTBinary;
     102               0 :                 break;
     103                 : 
     104                 :             case fieldTypeRaster:
     105               0 :                 bSkip = TRUE;
     106               0 :                 break;
     107                 : 
     108                 :             case fieldTypeGUID:
     109               0 :                 break;
     110                 : 
     111                 :             case fieldTypeGlobalID:
     112               0 :                 break;
     113                 : 
     114                 :             case fieldTypeXML:
     115               0 :                 break;
     116                 : 
     117                 :             default:
     118               0 :                 CPLAssert(FALSE);
     119                 :                 break;
     120                 :         }
     121                 : 
     122               5 :         if (!bSkip)
     123                 :         {
     124               3 :             OGRFieldDefn oFieldDefn(WStringToString(fieldName).c_str(), eType);
     125               3 :             m_pFeatureDefn->AddFieldDefn(&oFieldDefn);
     126                 : 
     127               3 :             m_vOGRFieldToESRIField.push_back(fieldName);
     128               3 :             m_vOGRFieldToESRIFieldType.push_back( strFieldType );
     129                 :         }
     130               1 :     }
     131               1 : }
     132                 : 
     133                 : /************************************************************************/
     134                 : /*                         ~FGdbResultLayer()                           */
     135                 : /************************************************************************/
     136                 : 
     137               1 : FGdbResultLayer::~FGdbResultLayer()
     138                 : {
     139               1 : }
     140                 : 
     141                 : /************************************************************************/
     142                 : /*                            ResetReading()                            */
     143                 : /************************************************************************/
     144                 : 
     145               0 : void FGdbResultLayer::ResetReading()
     146                 : {
     147               0 :     m_pEnumRows->Close();
     148                 :     long hr;
     149               0 :     if (FAILED(hr = m_pDS->GetGDB()->ExecuteSQL(
     150                 :                                     StringToWString(osSQL), true, *m_pEnumRows)))
     151                 :     {
     152               0 :         GDBErr(hr, CPLSPrintf("Failed at executing '%s'", osSQL.c_str()));
     153                 :     }
     154               0 : }
     155                 : 
     156                 : /************************************************************************/
     157                 : /*                           TestCapability()                           */
     158                 : /************************************************************************/
     159                 : 
     160               0 : int FGdbResultLayer::TestCapability( const char * )
     161                 : {
     162               0 :     return FALSE;
     163            2139 : }

Generated by: LCOV version 1.7