package com.thinkbiganalytics.metadata.api.feed; import com.thinkbiganalytics.metadata.api.BaseProvider; /*- * #%L * thinkbig-metadata-api * %% * Copyright (C) 2017 ThinkBig Analytics * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import com.thinkbiganalytics.metadata.api.category.Category; import com.thinkbiganalytics.metadata.api.datasource.Datasource; import com.thinkbiganalytics.metadata.api.extension.UserFieldDescriptor; import com.thinkbiganalytics.metadata.api.template.FeedManagerTemplate; import com.thinkbiganalytics.metadata.sla.api.Metric; import com.thinkbiganalytics.metadata.sla.api.ServiceLevelAgreement; import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.Set; import javax.annotation.Nonnull; public interface FeedProvider extends BaseProvider<Feed, Feed.ID> { FeedSource ensureFeedSource(Feed.ID feedId, Datasource.ID dsId); FeedSource ensureFeedSource(Feed.ID feedId, Datasource.ID id, ServiceLevelAgreement.ID slaId); FeedDestination ensureFeedDestination(Feed.ID feedId, Datasource.ID dsId); Feed ensureFeed(Category.ID categoryId, String feedSystemName); Feed ensureFeed(String categorySystemName, String feedSystemName); Feed ensureFeed(String categorySystemName, String feedSystemName, String descr); Feed ensureFeed(String categorySystemName, String feedSystemName, String descr, Datasource.ID destId); Feed ensureFeed(String categorySystemName, String feedSystemName, String descr, Datasource.ID srcId, Datasource.ID destId); Feed createPrecondition(Feed.ID feedId, String descr, List<Metric> metrics); PreconditionBuilder buildPrecondition(Feed.ID feedId); Feed findBySystemName(String systemName); Feed findBySystemName(String categorySystemName, String systemName); FeedCriteria feedCriteria(); Feed getFeed(Feed.ID id); List<? extends Feed> getFeeds(); List<Feed> getFeeds(FeedCriteria criteria); Feed addDependent(Feed.ID targetId, Feed.ID dependentId); Feed removeDependent(Feed.ID feedId, Feed.ID depId); void populateInverseFeedDependencies(); void removeFeedSources(Feed.ID feedId); void removeFeedSource(Feed.ID feedId, Datasource.ID dsId); void removeFeedDestination(Feed.ID feedId, Datasource.ID dsId); void removeFeedDestinations(Feed.ID feedId); // FeedSource getFeedSource(FeedSource.ID id); // FeedDestination getFeedDestination(FeedDestination.ID id); Feed.ID resolveFeed(Serializable fid); // FeedSource.ID resolveSource(Serializable sid); // FeedDestination.ID resolveDestination(Serializable sid); boolean enableFeed(Feed.ID id); boolean disableFeed(Feed.ID id); /** * Deletes the feed with the specified id. * * @param feedId the feed id to be deleted * @throws RuntimeException if the feed cannot be deleted */ void deleteFeed(Feed.ID feedId); Feed updateFeedServiceLevelAgreement(Feed.ID feedId, ServiceLevelAgreement sla); /** * Merge properties and return the newly merged properties */ Map<String, Object> mergeFeedProperties(Feed.ID feedId, Map<String, Object> properties); Map<String, Object> replaceProperties(Feed.ID feedId, Map<String, Object> properties); /** * Gets the user fields for all feeds. * * @return user field descriptors * @since 0.4.0 */ @Nonnull Set<UserFieldDescriptor> getUserFields(); /** * Sets the user fields for all feeds. * * @param userFields user field descriptors * @since 0.4.0 */ void setUserFields(@Nonnull Set<UserFieldDescriptor> userFields); List<? extends Feed> findByTemplateId(FeedManagerTemplate.ID templateId); List<? extends Feed> findByCategoryId(Category.ID categoryId); // TODO Methods to add policy info to source }