@Override public void populateMetadata(final HasMetadata holder, final ObjectNode definitionMetadata, final ObjectNode dataMetadata) { super.populateMetadata(holder, definitionMetadata, dataMetadata); }
@Override public void saveMetadata(final String userId, final HasMetadata holder, final boolean merge) { super.saveMetadata(userId, holder, merge); }
private Lookup addTags(final Set<String> tags) { try { return lookupService.addValues(LOOKUP_NAME_TAG, tags); } catch (Exception e) { final String message = String.format("Failed adding the tags %s", tags); log.error(message, e); throw new UserMetadataServiceException(message, e); } }
/** * Populate the given metadata. * * @param holder metadata */ @Override public void populateMetadata(final HasMetadata holder, final boolean disableIntercetpor) { Optional<ObjectNode> metadata = Optional.empty(); if (holder instanceof HasDataMetadata) { final HasDataMetadata dataDto = (HasDataMetadata) holder; if (dataDto.isDataExternal()) { metadata = getDataMetadata(dataDto.getDataUri()); } } Optional<ObjectNode> definitionMetadata = Optional.empty(); if (holder instanceof HasDefinitionMetadata) { final HasDefinitionMetadata definitionDto = (HasDefinitionMetadata) holder; definitionMetadata = disableIntercetpor ? this.getDefinitionMetadata(definitionDto.getDefinitionName()) : this.getDefinitionMetadataWithInterceptor(definitionDto.getDefinitionName(), GetMetadataInterceptorParameters.builder().hasMetadata(holder).build()); } populateMetadata(holder, definitionMetadata.orElse(null), metadata.orElse(null)); }
/** * {@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; }
/** * {@inheritDoc} */ @Override public void checkPermission(final String userName, final QualifiedName name, final MetacatOperation op) { if (config.isAuthorizationEnabled()) { switch (op) { case CREATE: checkPermit(config.getMetacatCreateAcl(), userName, name, op); break; case RENAME: case DELETE: checkPermit(config.getMetacatDeleteAcl(), userName, name, op); break; default: } } }
/** * Deletes tags for deleted tables. */ public void cleanUpObsoleteTags() { log.info("Start deleting obsolete tags"); final List<QualifiedName> names = tagService.list(null, null, null, null, null, null); names.forEach(name -> { if (!name.isPartitionDefinition() && !name.isViewDefinition() && name.isTableDefinition() && !tableService.exists(name)) { this.tagService.delete(name, false); log.info("Deleted obsolete tag for {}", name); } }); log.info("End deleting obsolete tags"); } }
@Override @Transactional(readOnly = true) public List<String> getDeletedDataMetadataUris(final Date deletedPriorTo, final Integer offset, final Integer limit) { try { return jdbcTemplate.query(String.format(SQL.GET_DELETED_DATA_METADATA_URI, offset, limit), new Object[]{deletedPriorTo}, new int[]{Types.TIMESTAMP}, (rs, rowNum) -> rs.getString("uri")); } catch (Exception e) { final String message = String.format("Failed to get deleted data metadata uris deleted prior to %s", deletedPriorTo); log.error(message, e); throw new UserMetadataServiceException(message, e); } }
/** * Returns the list of tags. * * @return list of tag names */ @Override @Transactional(readOnly = true) public Set<String> getTags() { return lookupService.getValues(LOOKUP_NAME_TAG); }
/** * Authorization service. * @param config metacat config * @return authorization class based on config */ @Bean @ConditionalOnMissingBean(AuthorizationService.class) public AuthorizationService authorizationService( final Config config ) { return new DefaultAuthorizationService(config); }
/** * business Metadata Manager. * @return business Metadata Manager */ @Bean @ConditionalOnMissingBean(MetadataInterceptor.class) public MetadataInterceptor businessMetadataManager( ) { return new MetadataInterceptorImpl(); }
/** * No-op Tag service. * * @return User metadata service based on MySql */ @Bean @ConditionalOnMissingBean(TagService.class) public TagService tagService() { return new DefaultTagService(); }
/** * No-op User Metadata service. * * @return User metadata service based on MySql */ @Bean @ConditionalOnMissingBean(UserMetadataService.class) public UserMetadataService userMetadataService() { return new DefaultUserMetadataService(); }
/** * No-op Look up service. * * @return User metadata service based on MySql */ @Bean @ConditionalOnMissingBean(LookupService.class) public LookupService lookupService() { return new DefaultLookupService(); }
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)); }
@Nonnull @Override @Transactional(readOnly = true) public Optional<ObjectNode> getDefinitionMetadataWithInterceptor( @Nonnull final QualifiedName name, final GetMetadataInterceptorParameters getMetadataInterceptorParameters) { //not applying interceptor final Optional<ObjectNode> retData = getDefinitionMetadata(name); retData.ifPresent(objectNode -> this.metadataInterceptor.onRead(this, name, objectNode, getMetadataInterceptorParameters)); return retData; }
private void tag(final QualifiedName name, final ObjectNode definitionMetadata) { if (definitionMetadata != null && definitionMetadata.get(NAME_TAGS) != null) { final JsonNode tagsNode = definitionMetadata.get(NAME_TAGS); final Set<String> tags = Sets.newHashSet(); if (tagsNode.isArray() && tagsNode.size() > 0) { for (JsonNode tagNode : tagsNode) { tags.add(tagNode.textValue()); } log.info("Setting tags {} for table {}", tags, name); final Set<String> result = tagService.setTags(name, tags, false); } } }
/** * Populate the given metadata. * * @param holder metadata */ @Override public void populateMetadata(final HasMetadata holder, final boolean disableIntercetpor) { Optional<ObjectNode> metadata = Optional.empty(); if (holder instanceof HasDataMetadata) { final HasDataMetadata dataDto = (HasDataMetadata) holder; if (dataDto.isDataExternal()) { metadata = getDataMetadata(dataDto.getDataUri()); } } Optional<ObjectNode> definitionMetadata = Optional.empty(); if (holder instanceof HasDefinitionMetadata) { final HasDefinitionMetadata definitionDto = (HasDefinitionMetadata) holder; definitionMetadata = disableIntercetpor ? this.getDefinitionMetadata(definitionDto.getDefinitionName()) : this.getDefinitionMetadataWithInterceptor(definitionDto.getDefinitionName(), GetMetadataInterceptorParameters.builder().hasMetadata(holder).build()); } populateMetadata(holder, definitionMetadata.orElse(null), metadata.orElse(null)); }
/** * {@inheritDoc} */ @Override public void checkPermission(final String userName, final QualifiedName name, final MetacatOperation op) { if (config.isAuthorizationEnabled()) { switch (op) { case CREATE: checkPermit(config.getMetacatCreateAcl(), userName, name, op); break; case RENAME: case DELETE: checkPermit(config.getMetacatDeleteAcl(), userName, name, op); break; default: } } }
private void deleteDataMetadatasWithBatch(final List<String> uris, final boolean removeDataMetadata) { try { final List<List<String>> subLists = Lists.partition(uris, config.getUserMetadataMaxInClauseItems()); for (List<String> subUris : subLists) { _deleteDataMetadata(subUris, removeDataMetadata); } } catch (Exception e) { final String message = String.format("Failed deleting the data metadata for %s", uris); log.error(message, e); throw new UserMetadataServiceException(message, e); } }