LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/carto - ogrcartodrivercore.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 30 30 100.0 %
Date: 2025-10-19 15:46:27 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  Carto Translator
       4             :  * Purpose:  Implements OGRCARTODriver.
       5             :  * Author:   Even Rouault, even dot rouault at spatialys.com
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2013, Even Rouault <even dot rouault at spatialys.com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "gdal_frmts.h"
      14             : #include "gdalplugindriverproxy.h"
      15             : 
      16             : #include "ogrsf_frmts.h"
      17             : 
      18             : #include "ogrcartodrivercore.h"
      19             : 
      20             : /************************************************************************/
      21             : /*                    OGRCartoDriverIdentify()                            */
      22             : /************************************************************************/
      23             : 
      24       52935 : int OGRCartoDriverIdentify(GDALOpenInfo *poOpenInfo)
      25             : 
      26             : {
      27      105800 :     return STARTS_WITH_CI(poOpenInfo->pszFilename, "CARTO:") ||
      28      105800 :            STARTS_WITH_CI(poOpenInfo->pszFilename, "CARTODB:");
      29             : }
      30             : 
      31             : /************************************************************************/
      32             : /*                  OGRCartoDriverSetCommonMetadata()                  */
      33             : /************************************************************************/
      34             : 
      35        1750 : void OGRCartoDriverSetCommonMetadata(GDALDriver *poDriver)
      36             : {
      37        1750 :     poDriver->SetDescription(DRIVER_NAME);
      38        1750 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Carto");
      39        1750 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      40        1750 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE_LAYER, "YES");
      41        1750 :     poDriver->SetMetadataItem(GDAL_DCAP_DELETE_LAYER, "YES");
      42        1750 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE_FIELD, "YES");
      43        1750 :     poDriver->SetMetadataItem(GDAL_DCAP_DELETE_FIELD, "YES");
      44        1750 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/carto.html");
      45        1750 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS,
      46        1750 :                               "NATIVE OGRSQL SQLITE");
      47             : 
      48        1750 :     poDriver->SetMetadataItem(GDAL_DMD_CONNECTION_PREFIX, "CARTO:");
      49             : 
      50        1750 :     poDriver->SetMetadataItem(
      51             :         GDAL_DMD_OPENOPTIONLIST,
      52             :         "<OpenOptionList>"
      53             :         "  <Option name='API_KEY' type='string' description='Account API key'/>"
      54             :         "  <Option name='ACCOUNT' type='string' description='Account name' "
      55             :         "required='true'/>"
      56             :         "  <Option name='BATCH_INSERT' type='boolean' description='Whether to "
      57             :         "group features to be inserted in a batch' default='YES'/>"
      58             :         "  <Option name='COPY_MODE' type='boolean' description='Whether to use "
      59             :         "the COPY API for faster uploads' default='YES'/>"
      60        1750 :         "</OpenOptionList>");
      61             : 
      62        1750 :     poDriver->SetMetadataItem(GDAL_DMD_CREATIONOPTIONLIST,
      63        1750 :                               "<CreationOptionList/>");
      64             : 
      65        1750 :     poDriver->SetMetadataItem(
      66             :         GDAL_DS_LAYER_CREATIONOPTIONLIST,
      67             :         "<LayerCreationOptionList>"
      68             :         "  <Option name='OVERWRITE' type='boolean' description='Whether to "
      69             :         "overwrite an existing table with the layer name to be created' "
      70             :         "default='NO'/>"
      71             :         "  <Option name='LAUNDER' type='boolean' description='Whether layer "
      72             :         "and field names will be laundered' default='YES'/>"
      73             :         "  <Option name='GEOMETRY_NULLABLE' type='boolean' "
      74             :         "description='Whether the values of the geometry column can be NULL' "
      75             :         "default='YES'/>"
      76             :         "  <Option name='CARTODBFY' alias='CARTODBIFY' type='boolean' "
      77             :         "description='Whether the created layer should be "
      78             :         "\"Cartodbifi&apos;ed\" (i.e. registered in dashboard)' default='YES'/>"
      79        1750 :         "</LayerCreationOptionList>");
      80             : 
      81        1750 :     poDriver->SetMetadataItem(
      82             :         GDAL_DMD_CREATIONFIELDDATATYPES,
      83        1750 :         "Integer Integer64 Real String Date DateTime Time");
      84        1750 :     poDriver->SetMetadataItem(GDAL_DCAP_NOTNULL_FIELDS, "YES");
      85        1750 :     poDriver->SetMetadataItem(GDAL_DCAP_DEFAULT_FIELDS, "YES");
      86        1750 :     poDriver->SetMetadataItem(GDAL_DCAP_NOTNULL_GEOMFIELDS, "YES");
      87             : 
      88        1750 :     poDriver->pfnIdentify = OGRCartoDriverIdentify;
      89        1750 :     poDriver->SetMetadataItem(GDAL_DCAP_OPEN, "YES");
      90        1750 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE, "YES");
      91        1750 : }
      92             : 
      93             : /************************************************************************/
      94             : /*                   DeclareDeferredOGRCartoPlugin()                      */
      95             : /************************************************************************/
      96             : 
      97             : #ifdef PLUGIN_FILENAME
      98             : void DeclareDeferredOGRCartoPlugin()
      99             : {
     100             :     if (GDALGetDriverByName(DRIVER_NAME) != nullptr)
     101             :     {
     102             :         return;
     103             :     }
     104             :     auto poDriver = new GDALPluginDriverProxy(PLUGIN_FILENAME);
     105             : #ifdef PLUGIN_INSTALLATION_MESSAGE
     106             :     poDriver->SetMetadataItem(GDAL_DMD_PLUGIN_INSTALLATION_MESSAGE,
     107             :                               PLUGIN_INSTALLATION_MESSAGE);
     108             : #endif
     109             :     OGRCartoDriverSetCommonMetadata(poDriver);
     110             :     GetGDALDriverManager()->DeclareDeferredPluginDriver(poDriver);
     111             : }
     112             : #endif

Generated by: LCOV version 1.14