/** * */ package com.thinkbiganalytics.metadata.modeshape.category; /*- * #%L * kylo-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 java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import javax.annotation.Nonnull; import javax.jcr.Node; import com.thinkbiganalytics.metadata.api.extension.UserFieldDescriptor; import com.thinkbiganalytics.metadata.api.feed.Feed; import com.thinkbiganalytics.metadata.api.security.HadoopSecurityGroup; import com.thinkbiganalytics.metadata.modeshape.common.JcrPropertiesEntity; import com.thinkbiganalytics.metadata.modeshape.feed.JcrFeed; import com.thinkbiganalytics.metadata.modeshape.security.JcrHadoopSecurityGroup; import com.thinkbiganalytics.metadata.modeshape.support.JcrPropertyUtil; import com.thinkbiganalytics.metadata.modeshape.support.JcrUtil; /** * */ public class CategoryDetails extends JcrPropertiesEntity { public static final String HADOOP_SECURITY_GROUPS = "tba:securityGroups"; /** * @param node */ public CategoryDetails(Node node) { super(node); } public List<? extends Feed> getFeeds() { List<JcrFeed> feeds = JcrUtil.getChildrenMatchingNodeType(this.node, "tba:feed", JcrFeed.class); return feeds; } @Nonnull public Map<String, String> getUserProperties() { return JcrPropertyUtil.getUserProperties(node); } public void setUserProperties(@Nonnull final Map<String, String> userProperties, @Nonnull final Set<UserFieldDescriptor> userFields) { JcrPropertyUtil.setUserProperties(node, userFields, userProperties); } public List<? extends HadoopSecurityGroup> getSecurityGroups() { Set<Node> list = JcrPropertyUtil.getReferencedNodeSet(this.node, HADOOP_SECURITY_GROUPS); List<HadoopSecurityGroup> hadoopSecurityGroups = new ArrayList<>(); if (list != null) { for (Node n : list) { hadoopSecurityGroups.add(JcrUtil.createJcrObject(n, JcrHadoopSecurityGroup.class)); } } return hadoopSecurityGroups; } public void setSecurityGroups(List<? extends HadoopSecurityGroup> hadoopSecurityGroups) { JcrPropertyUtil.setProperty(this.node, HADOOP_SECURITY_GROUPS, null); for (HadoopSecurityGroup securityGroup : hadoopSecurityGroups) { Node securityGroupNode = ((JcrHadoopSecurityGroup) securityGroup).getNode(); JcrPropertyUtil.addToSetProperty(this.node, HADOOP_SECURITY_GROUPS, securityGroupNode, true); } } }