/** * Create a GeoPackage metadata from the current cursor location * * @param cursor * @return */ private GeoPackageMetadata createGeoPackageMetadata(Cursor cursor) { GeoPackageMetadata metadata = new GeoPackageMetadata(); metadata.setId(cursor.getLong(0)); metadata.setName(cursor.getString(1)); metadata.setExternalPath(cursor.getString(2)); return metadata; }
/** * Rename the GeoPackage metadata to the new name * * @param metadata * @param newName * @return */ public boolean rename(GeoPackageMetadata metadata, String newName) { boolean renamed = rename(metadata.getName(), newName); if (renamed) { metadata.setName(newName); } return renamed; }
/** * Get GeoPackage metadata or create it if it does not exist * * @return */ public GeoPackageMetadata getOrCreate(String geoPackage) { GeoPackageMetadata metadata = get(geoPackage); if (metadata == null) { metadata = new GeoPackageMetadata(); metadata.setName(geoPackage); create(metadata); } return metadata; }
/** * Delete the database * * @param database * @return */ public boolean delete(String database) { GeoPackageMetadata metadata = get(database); if (metadata != null) { TableMetadataDataSource tableDs = new TableMetadataDataSource(db); tableDs.delete(metadata.getId()); } String whereClause = GeoPackageMetadata.COLUMN_NAME + " = ?"; String[] whereArgs = new String[] {database}; int deleteCount = db.delete(GeoPackageMetadata.TABLE_NAME, whereClause, whereArgs); return deleteCount > 0; }
/** * Create a new GeoPackage metadata * * @param metadata */ public void create(GeoPackageMetadata metadata) { ContentValues values = new ContentValues(); values.put(GeoPackageMetadata.COLUMN_NAME, metadata.getName()); values.put(GeoPackageMetadata.COLUMN_EXTERNAL_PATH, metadata.getExternalPath()); long insertId = db.insert(GeoPackageMetadata.TABLE_NAME, null, values); if (insertId == -1) { throw new GeoPackageException( "Failed to insert GeoPackage metadata. Name: " + metadata.getName() + ", External Path: " + metadata.getExternalPath()); } metadata.setId(insertId); }
/** * Delete the GeoPackage metadata * * @param metadata * @return */ public boolean delete(GeoPackageMetadata metadata) { return delete(metadata.getName()); }
/** * Determine if the GeoPackage is external * * @param database * @return */ public boolean isExternal(String database) { GeoPackageMetadata metadata = get(database); return get(database) != null && metadata.getExternalPath() != null; }