Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: GDAL 4 : * Purpose: Zarr driver 5 : * Author: Even Rouault <even dot rouault at spatialys.com> 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2021, Even Rouault <even dot rouault at spatialys.com> 9 : * 10 : * SPDX-License-Identifier: MIT 11 : ****************************************************************************/ 12 : 13 : #include "zarr.h" 14 : 15 : /************************************************************************/ 16 : /* Rename() */ 17 : /************************************************************************/ 18 : 19 24 : bool ZarrDimension::Rename(const std::string &osNewName) 20 : { 21 24 : if (!m_bUpdatable) 22 : { 23 6 : CPLError(CE_Failure, CPLE_NotSupported, 24 : "Dataset not open in update mode"); 25 6 : return false; 26 : } 27 18 : if (!IsXArrayDimension()) 28 : { 29 0 : CPLError(CE_Failure, CPLE_NotSupported, 30 : "Cannot rename an implicit dimension " 31 : "(that is one listed in _ARRAY_DIMENSIONS attribute)"); 32 0 : return false; 33 : } 34 18 : if (!ZarrGroupBase::IsValidObjectName(osNewName)) 35 : { 36 6 : CPLError(CE_Failure, CPLE_NotSupported, "Invalid dimension name"); 37 6 : return false; 38 : } 39 : 40 12 : if (auto poParentGroup = m_poParentGroup.lock()) 41 : { 42 12 : if (!poParentGroup->RenameDimension(m_osName, osNewName)) 43 : { 44 6 : return false; 45 : } 46 : } 47 : 48 6 : BaseRename(osNewName); 49 : 50 6 : m_bModified = true; 51 : 52 6 : return true; 53 : }