@Override public void delete(final QualifiedName name, final boolean updateUserMetadata) { try { jdbcTemplate .update(SQL_DELETE_TAG_ITEM_TAGS_BY_NAME, new SqlParameterValue(Types.VARCHAR, name.toString())); jdbcTemplate.update(SQL_DELETE_TAG_ITEM, new SqlParameterValue(Types.VARCHAR, name.toString())); if (updateUserMetadata) { // Set the tags in user metadata final Map<String, Set<String>> data = Maps.newHashMap(); data.put(NAME_TAGS, Sets.newHashSet()); userMetadataService .saveDefinitionMetadata(name, "admin", Optional.of(metacatJson.toJsonObject(data)), true); } } catch (Exception e) { final String message = String.format("Failed to delete all tags for name %s", name); log.error(message, e); throw new UserMetadataServiceException(message, e); } }
while (true) { final List<String> urisToDelete = userMetadataService.getDeletedDataMetadataUris(priorTo.toDate(), 0, limit); log.info("Count of deleted marked data metadata: {}", urisToDelete.size()); if (urisToDelete.size() > 0) { .collect(Collectors.toList()); log.info("Start deleting data metadata: {}", canDeleteMetadataForUris.size()); userMetadataService.deleteDataMetadata(canDeleteMetadataForUris); userMetadataService.deleteDataMetadataDeletes(subUris); MetacatContextManager.removeContext(); });
/** * Subscriber. * * @param event event */ @EventListener public void metacatDeleteTablePostEventHandler(final MetacatDeleteTablePostEvent event) { if (config.canCascadeViewsMetadataOnTableDelete() && !event.isMView()) { final QualifiedName name = event.getTable().getName(); try { // delete views associated with this table final List<NameDateDto> viewNames = mViewService.list(name); viewNames.forEach(viewName -> mViewService.deleteAndReturn(viewName.getName())); } catch (Exception e) { log.warn("Failed cleaning mviews after deleting table {}", name); } // delete table partitions metadata try { final List<QualifiedName> names = userMetadataService.getDescendantDefinitionNames(name); if (names != null && !names.isEmpty()) { userMetadataService.deleteDefinitionMetadata(names); } } catch (Exception e) { log.warn("Failed cleaning partition definition metadata after deleting table {}", name); } } }
final List<ListenableFuture<Map<String, ObjectNode>>> futures = Lists.newArrayList(); futures.add(threadServiceManager.getExecutor().submit(() -> includeUserDefinitionMetadata ? userMetadataService.getDefinitionMetadataMap(names) : Maps.newHashMap())); futures.add(threadServiceManager.getExecutor().submit(() -> includeUserDataMetadata ? userMetadataService.getDataMetadataMap(uris) : Maps.newHashMap())); try { final Map<String, ObjectNode> definitionMetadataMap = metadataResults.get(0); final Map<String, ObjectNode> dataMetadataMap = metadataResults.get(1); result.forEach(partitionDto -> userMetadataService.populateMetadata(partitionDto, definitionMetadataMap.get(partitionDto.getName().toString()), prePopulatedMap.containsKey(partitionDto.getName().toString())
final Optional<ObjectNode> definitionMetadata = (getTableServiceParameters.isDisableOnReadMetadataIntercetor()) ? userMetadataService.getDefinitionMetadata(name) : userMetadataService.getDefinitionMetadataWithInterceptor(name, GetMetadataInterceptorParameters.builder().hasMetadata(tableInternal).build()); definitionMetadata.ifPresent(table::setDefinitionMetadata); userMetadataService.getDataMetadata(dto.getSerde().getUri()); dataMetadata.ifPresent(table::setDataMetadata);
/** * {@inheritDoc} */ @Override public Optional<TableDto> getOpt(final QualifiedName name, final GetTableServiceParameters tableParameters) { final QualifiedName viewQName = QualifiedName.ofTable(name.getCatalogName(), VIEW_DB_NAME, createViewName(name)); final Optional<TableDto> result = tableService.get(viewQName, tableParameters); // // User definition metadata of the underlying table is returned // if (result.isPresent()) { final TableDto table = result.get(); table.setName(name); final QualifiedName tableName = QualifiedName .ofTable(name.getCatalogName(), name.getDatabaseName(), name.getTableName()); final Optional<ObjectNode> definitionMetadata = userMetadataService.getDefinitionMetadataWithInterceptor(tableName, GetMetadataInterceptorParameters.builder().hasMetadata(table).build()); definitionMetadata.ifPresent( jsonNodes -> userMetadataService.populateMetadata(table, jsonNodes, null)); } return result; }
QualifiedName::toString).collect(Collectors.toList()); log.info("Deleting databases({}): {}", deleteDatabaseNames.size(), deleteDatabaseNames); userMetadataService.deleteDefinitionMetadata(deleteDatabaseQualifiedNames); elasticSearchUtil.softDelete("database", deleteDatabaseNames, context); dto -> dto.getName().toString()).collect(Collectors.toList()); log.info("Deleting tables({}): {}", deleteTableNames.size(), deleteTableNames); userMetadataService.deleteMetadata("admin", Lists.newArrayList(deleteTableDtos));
/** * {@inheritDoc} */ @Override public void delete(final QualifiedName name) { validate(name); final MetacatRequestContext metacatRequestContext = MetacatContextManager.getContext(); this.authorizationService.checkPermission(metacatRequestContext.getUserName(), name, MetacatOperation.DELETE); log.info("Dropping schema {}", name); final DatabaseDto dto = get(name, GetDatabaseServiceParameters.builder() .disableOnReadMetadataIntercetor(false) .includeUserMetadata(true) .includeTableNames(true) .build()); eventBus.post(new MetacatDeleteDatabasePreEvent(name, metacatRequestContext, this, dto)); final ConnectorRequestContext connectorRequestContext = converterUtil.toConnectorContext(metacatRequestContext); connectorManager.getDatabaseService(name).delete(connectorRequestContext, name); // Delete definition metadata if it exists if (userMetadataService.getDefinitionMetadata(name).isPresent()) { log.info("Deleting user metadata for schema {}", name); userMetadataService.deleteDefinitionMetadata(ImmutableList.of(name)); } eventBus.post(new MetacatDeleteDatabasePostEvent(name, metacatRequestContext, this, dto)); }
userMetadataService.deleteMetadata(metacatRequestContext.getUserName(), Lists.newArrayList(tableDto)); log.info("Deleting tags for table {}", name); tagService.delete(name, false); } else { if (config.canSoftDeleteDataMetadata() && tableDto.isDataExternal()) { userMetadataService.softDeleteDataMetadata(metacatRequestContext.getUserName(), Lists.newArrayList(tableDto.getDataUri()));
private void deleteMetadatas(final String userId, final List<HasMetadata> partitions) { // Spawning off since this is a time consuming task threadServiceManager.getExecutor().submit(() -> userMetadataService.deleteMetadata(userId, partitions)); }
if (metadataGetRequestDto.getUri() != null) { final Optional<ObjectNode> o = this.userMetadataService.getDataMetadata(metadataGetRequestDto.getUri()); if (o.isPresent()) { result = new DataMetadataDto();
this.helper.postPreDeleteEvent(name, metacatRequestContext); this.userMetadataService.deleteDefinitionMetadata(Lists.newArrayList(name)); this.tagService.delete(name, false); log.info("Deleted definition metadata for {}", name);
String message; try { final Optional<ObjectNode> objectNode = this.userMetadataService.getDefinitionMetadata( QualifiedName.ofTable(event.getName().getCatalogName(), event.getName().getDatabaseName(), event.getName().getTableName()));
p.getDefinitionName().getPartitionName())) .collect(Collectors.toList()); userMetadataService.deleteMetadata("admin", deletePartitionDtos);
/** * remove. * * @param name qualifiedName * @param tags tags * @param updateUserMetadata flag to update user metadata */ public void remove(final QualifiedName name, final Set<String> tags, final boolean updateUserMetadata) { try { jdbcTemplate.update(String.format(SQL_DELETE_TAG_ITEM_TAGS_BY_NAME_TAGS, "'" + Joiner.on("','").skipNulls().join(tags) + "'"), new SqlParameterValue(Types.VARCHAR, name.toString())); if (updateUserMetadata) { final TagItem tagItem = get(name); tagItem.getValues().removeAll(tags); final Map<String, Set<String>> data = Maps.newHashMap(); data.put(NAME_TAGS, tagItem.getValues()); userMetadataService .saveDefinitionMetadata(name, "admin", Optional.of(metacatJson.toJsonObject(data)), true); } } catch (Exception e) { final String message = String.format("Failed to remove tags for name %s", name); log.error(message, e); throw new UserMetadataServiceException(message, e); } }
data.put(NAME_TAGS, values); userMetadataService .saveDefinitionMetadata(name, "admin", Optional.of(metacatJson.toJsonObject(data)), true);
/** * {@inheritDoc} */ @Override public void update(final QualifiedName name, final DatabaseDto dto) { validate(name); log.info("Updating schema {}", name); final MetacatRequestContext metacatRequestContext = MetacatContextManager.getContext(); eventBus.post(new MetacatUpdateDatabasePreEvent(name, metacatRequestContext, this)); try { final ConnectorRequestContext connectorRequestContext = converterUtil.toConnectorContext(metacatRequestContext); connectorManager.getDatabaseService(name) .update(connectorRequestContext, converterUtil.fromDatabaseDto(dto)); } catch (UnsupportedOperationException ignored) { } if (dto.getDefinitionMetadata() != null) { log.info("Saving user metadata for schema {}", name); userMetadataService.saveDefinitionMetadata(name, metacatRequestContext.getUserName(), Optional.of(dto.getDefinitionMetadata()), true); } eventBus.post(new MetacatUpdateDatabasePostEvent(name, metacatRequestContext, this)); }
/** * {@inheritDoc} */ @Override public DatabaseDto create(final QualifiedName name, final DatabaseDto dto) { validate(name); log.info("Creating schema {}", name); final MetacatRequestContext metacatRequestContext = MetacatContextManager.getContext(); eventBus.post(new MetacatCreateDatabasePreEvent(name, metacatRequestContext, this)); final ConnectorRequestContext connectorRequestContext = converterUtil.toConnectorContext(metacatRequestContext); connectorManager.getDatabaseService(name).create(connectorRequestContext, converterUtil.fromDatabaseDto(dto)); if (dto.getDefinitionMetadata() != null) { log.info("Saving user metadata for schema {}", name); userMetadataService.saveDefinitionMetadata(name, metacatRequestContext.getUserName(), Optional.of(dto.getDefinitionMetadata()), true); } final DatabaseDto createdDto = get(name, GetDatabaseServiceParameters.builder() .disableOnReadMetadataIntercetor(true) .includeUserMetadata(dto.getDefinitionMetadata() != null) .includeTableNames(true) .build()); eventBus.post(new MetacatCreateDatabasePostEvent(name, metacatRequestContext, this, createdDto)); return createdDto; }