/** * {@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; }