package com.thinkbiganalytics.metadata.modeshape.sla; /*- * #%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.feed.Feed; import com.thinkbiganalytics.metadata.api.sla.FeedServiceLevelAgreementRelationship; import com.thinkbiganalytics.metadata.modeshape.extension.JcrExtensibleEntity; import com.thinkbiganalytics.metadata.modeshape.feed.JcrFeed; import com.thinkbiganalytics.metadata.sla.api.ServiceLevelAgreement; import java.util.Set; import javax.jcr.Node; /** * @see JcrFeedServiceLevelAgreementProvider#relate(ServiceLevelAgreement, Set) */ public class JcrFeedServiceLevelAgreementRelationship extends JcrExtensibleEntity implements FeedServiceLevelAgreementRelationship { public static String TYPE_NAME = "feedSla"; public static String NODE_TYPE = "tba:" + TYPE_NAME; public static String FEEDS = "feeds"; /// list of feed references on the SLA public static String SLA = "sla"; // a ref to the SLA public JcrFeedServiceLevelAgreementRelationship(Node node) { super(node); } public JcrFeedServiceLevelAgreementRelationship(JcrExtensibleEntity extensibleEntity) { super(extensibleEntity.getNode()); } @Override public ServiceLevelAgreement getAgreement() { Node node = (Node) this.getProperty(SLA); return new JcrServiceLevelAgreement(node); } @Override public Set<? extends Feed> getFeeds() { return getPropertyAsSet(FEEDS, JcrFeed.class); } @Override public boolean removeFeedRelationships(ServiceLevelAgreement.ID id) { @SuppressWarnings("unchecked") final Set<JcrFeed> feeds = (Set<JcrFeed>) getFeeds(); if (feeds != null && !feeds.isEmpty()) { feeds.stream() .filter(feed -> feed != null) .forEach(feed -> feed.removeServiceLevelAgreement(id)); } setProperty(FEEDS, null); return true; } }