package com.thinkbiganalytics.metadata.modeshape.feed; /*- * #%L * thinkbig-metadata-modeshape * %% * 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.category.CategoryProvider; import com.thinkbiganalytics.metadata.api.feed.Feed; import com.thinkbiganalytics.metadata.api.feed.FeedProvider; import com.thinkbiganalytics.metadata.api.template.FeedManagerTemplate; import com.thinkbiganalytics.metadata.api.template.FeedManagerTemplateProvider; import com.thinkbiganalytics.metadata.modeshape.category.JcrCategory; import org.springframework.stereotype.Component; import javax.inject.Inject; /** */ @Component public class FeedTestUtil { @Inject CategoryProvider categoryProvider; @Inject FeedProvider feedProvider; @Inject FeedManagerTemplateProvider feedManagerTemplateProvider; /** * must be called within metdata.commit() */ public Category findOrCreateCategory(String categorySystemName) { Category category = categoryProvider.findBySystemName(categorySystemName); if (category == null) { category = createCategory(categorySystemName); } return category; } public Category createCategory(String categorySystemName) { JcrCategory cat = (JcrCategory) categoryProvider.ensureCategory(categorySystemName); cat.setDescription(categorySystemName + " desc"); cat.setTitle(categorySystemName); categoryProvider.update(cat); return cat; } public Feed findOrCreateFeed(String categorySystemName, String feedSystemName, String feedTemplate) { Category category = findOrCreateCategory(categorySystemName); Feed feed = feedProvider.ensureFeed(category.getId(), feedSystemName); feed.setDisplayName(feedSystemName); FeedManagerTemplate template = findOrCreateTemplate(feedTemplate); feed.setTemplate(template); return feedProvider.update(feed); } public Feed findOrCreateFeed(Category category, String feedSystemName, FeedManagerTemplate template) { Feed feed = feedProvider.ensureFeed(category.getId(), feedSystemName); feed.setDisplayName(feedSystemName); feed.setTemplate(template); feed.setJson(sampleFeedJson()); return feedProvider.update(feed); } private String sampleFeedJson() { return ""; } public Feed findFeed(String categorySystemName, String feedSystemName) { Feed feed = feedProvider.findBySystemName(categorySystemName, feedSystemName); return feed; } /** * returns a FeedManagerTemplate. Must be called within a metadata.commit() call */ public FeedManagerTemplate findOrCreateTemplate(String templateName) { FeedManagerTemplate template = feedManagerTemplateProvider.findByName(templateName); if (template == null) { template = feedManagerTemplateProvider.ensureTemplate(templateName); return template; } else { return template; } } }