LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/amigocloud - ogramigoclouddriver.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 32 47 68.1 %
Date: 2026-02-01 11:59:10 Functions: 2 4 50.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  AmigoCloud Translator
       4             :  * Purpose:  Implements OGRAMIGOCLOUDDriver.
       5             :  * Author:   Victor Chernetsky, <victor at amigocloud dot com>
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2015, Victor Chernetsky, <victor at amigocloud dot com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "ogr_amigocloud.h"
      14             : 
      15             : extern "C" void RegisterOGRAmigoCloud();
      16             : 
      17             : /************************************************************************/
      18             : /*                    OGRAmigoCloudDriverIdentify()                     */
      19             : /************************************************************************/
      20             : 
      21       54558 : static int OGRAmigoCloudDriverIdentify(GDALOpenInfo *poOpenInfo)
      22             : {
      23       54558 :     return EQUALN(poOpenInfo->pszFilename,
      24             :                   "AMIGOCLOUD:", strlen("AMIGOCLOUD:"));
      25             : }
      26             : 
      27             : /************************************************************************/
      28             : /*                      OGRAmigoCloudDriverOpen()                       */
      29             : /************************************************************************/
      30             : 
      31           0 : static GDALDataset *OGRAmigoCloudDriverOpen(GDALOpenInfo *poOpenInfo)
      32             : 
      33             : {
      34           0 :     if (!OGRAmigoCloudDriverIdentify(poOpenInfo))
      35           0 :         return nullptr;
      36             : 
      37           0 :     OGRAmigoCloudDataSource *poDS = new OGRAmigoCloudDataSource();
      38             : 
      39           0 :     if (!poDS->Open(poOpenInfo->pszFilename, poOpenInfo->papszOpenOptions,
      40           0 :                     poOpenInfo->eAccess == GA_Update))
      41             :     {
      42           0 :         delete poDS;
      43           0 :         poDS = nullptr;
      44             :     }
      45             : 
      46           0 :     return poDS;
      47             : }
      48             : 
      49             : /************************************************************************/
      50             : /*                     OGRAmigoCloudDriverCreate()                      */
      51             : /************************************************************************/
      52             : 
      53             : static GDALDataset *
      54           0 : OGRAmigoCloudDriverCreate(const char *pszName, CPL_UNUSED int nBands,
      55             :                           CPL_UNUSED int nXSize, CPL_UNUSED int nYSize,
      56             :                           CPL_UNUSED GDALDataType eDT,
      57             :                           CPL_UNUSED CSLConstList papszOptions)
      58             : 
      59             : {
      60           0 :     OGRAmigoCloudDataSource *poDS = new OGRAmigoCloudDataSource();
      61             : 
      62           0 :     if (!poDS->Open(pszName, nullptr, TRUE))
      63             :     {
      64           0 :         delete poDS;
      65           0 :         return nullptr;
      66             :     }
      67             : 
      68           0 :     return poDS;
      69             : }
      70             : 
      71             : /************************************************************************/
      72             : /*                       RegisterOGRAMIGOCLOUD()                        */
      73             : /************************************************************************/
      74             : 
      75        2058 : void RegisterOGRAmigoCloud()
      76             : {
      77        2058 :     if (GDALGetDriverByName("AmigoCloud") != nullptr)
      78         283 :         return;
      79             : 
      80        1775 :     GDALDriver *poDriver = new GDALDriver();
      81             : 
      82        1775 :     poDriver->SetDescription("AmigoCloud");
      83        1775 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "AmigoCloud");
      84        1775 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      85        1775 :     poDriver->SetMetadataItem(GDAL_DCAP_CREATE_LAYER, "YES");
      86        1775 :     poDriver->SetMetadataItem(GDAL_DCAP_DELETE_LAYER, "YES");
      87        1775 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC,
      88        1775 :                               "drivers/vector/amigocloud.html");
      89        1775 :     poDriver->SetMetadataItem(GDAL_DMD_CONNECTION_PREFIX, "AMIGOCLOUD:");
      90             : 
      91        1775 :     poDriver->SetMetadataItem(
      92             :         GDAL_DMD_OPENOPTIONLIST,
      93             :         "<OpenOptionList>"
      94             :         "  <Option name='AMIGOCLOUD_API_KEY' type='string' "
      95             :         "description='AmigoCLoud API token'/>"
      96             :         "  <Option name='OVERWRITE' type='boolean' description='Whether to "
      97             :         "overwrite an existing table without deleting it' default='NO'/>"
      98        1775 :         "</OpenOptionList>");
      99             : 
     100        1775 :     poDriver->SetMetadataItem(GDAL_DMD_CREATIONOPTIONLIST,
     101        1775 :                               "<CreationOptionList/>");
     102             : 
     103        1775 :     poDriver->SetMetadataItem(
     104             :         GDAL_DS_LAYER_CREATIONOPTIONLIST,
     105             :         "<LayerCreationOptionList>"
     106             :         "  <Option name='GEOMETRY_NULLABLE' type='boolean' "
     107             :         "description='Whether the values of the geometry column can be NULL' "
     108             :         "default='YES'/>"
     109        1775 :         "</LayerCreationOptionList>");
     110             : 
     111        1775 :     poDriver->SetMetadataItem(GDAL_DMD_CREATIONFIELDDATATYPES,
     112        1775 :                               "String Integer Integer64 Real");
     113        1775 :     poDriver->SetMetadataItem(GDAL_DCAP_NOTNULL_FIELDS, "YES");
     114        1775 :     poDriver->SetMetadataItem(GDAL_DCAP_DEFAULT_FIELDS, "YES");
     115        1775 :     poDriver->SetMetadataItem(GDAL_DCAP_NOTNULL_GEOMFIELDS, "YES");
     116        1775 :     poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES");
     117        1775 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS,
     118        1775 :                               "NATIVE OGRSQL SQLITE");
     119             : 
     120        1775 :     poDriver->pfnOpen = OGRAmigoCloudDriverOpen;
     121        1775 :     poDriver->pfnIdentify = OGRAmigoCloudDriverIdentify;
     122        1775 :     poDriver->pfnCreate = OGRAmigoCloudDriverCreate;
     123             : 
     124        1775 :     GetGDALDriverManager()->RegisterDriver(poDriver);
     125             : }

Generated by: LCOV version 1.14