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 : }