Repository: incubator-ranger
Updated Branches:
  refs/heads/tag-policy 83cb21e0b -> 303f7b702


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java
new file mode 100644
index 0000000..503df82
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java
@@ -0,0 +1,190 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+package org.apache.ranger.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.ranger.common.SearchField;
+import org.apache.ranger.common.SearchField.DATA_TYPE;
+import org.apache.ranger.common.SearchField.SEARCH_TYPE;
+import org.apache.ranger.entity.XXTagResourceMap;
+import org.apache.ranger.plugin.model.RangerTagResourceMap;
+import org.apache.ranger.plugin.util.SearchFilter;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RangerTagResourceMapService extends 
RangerTagResourceMapServiceBase<XXTagResourceMap, RangerTagResourceMap> {
+
+       public RangerTagResourceMapService() {
+               searchFields.add(new SearchField(SearchFilter.TAG_DEF_ID, 
"obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
+               searchFields.add(new SearchField(SearchFilter.TAG_RESOURCE_ID, 
"obj.resourceId", DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
+               searchFields.add(new SearchField(SearchFilter.TAG_ID, 
"obj.tagId", DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL));
+       }
+       
+       @Override
+       protected void validateForCreate(RangerTagResourceMap vObj) {
+
+       }
+
+       @Override
+       protected void validateForUpdate(RangerTagResourceMap vObj, 
XXTagResourceMap entityObj) {
+
+       }
+
+       @Override
+       public RangerTagResourceMap postCreate(XXTagResourceMap tagResMap) {
+               RangerTagResourceMap ret = super.postCreate(tagResMap);
+
+               
daoMgr.getXXTagResourceMap().updateServiceForTagUpdate(tagResMap.getTagId(), 
tagResMap.getUpdateTime());
+
+               return ret;
+       }
+
+       @Override
+       public RangerTagResourceMap postUpdate(XXTagResourceMap tagResMap) {
+               RangerTagResourceMap ret = super.postUpdate(tagResMap);
+
+               
daoMgr.getXXTagResourceMap().updateServiceForTagUpdate(tagResMap.getTagId(), 
tagResMap.getUpdateTime());
+
+               return ret;
+       }
+
+       @Override
+       protected XXTagResourceMap preDelete(Long id) {
+               XXTagResourceMap tagResMap = super.preDelete(id);
+
+               if (tagResMap != null) {
+                       
daoMgr.getXXTagResourceMap().updateServiceForTagUpdate(tagResMap.getTagId(), 
tagResMap.getUpdateTime());
+               }
+
+               return tagResMap;
+       }
+
+       public RangerTagResourceMap getPopulatedViewObject(XXTagResourceMap 
xObj) {
+               return populateViewBean(xObj);
+       }
+
+
+       public List<RangerTagResourceMap> getByTagId(Long tagId) {
+               List<RangerTagResourceMap> ret = new 
ArrayList<RangerTagResourceMap>();
+
+               List<XXTagResourceMap> xxTagResourceMaps = 
daoMgr.getXXTagResourceMap().findByTagId(tagId);
+               
+               if(CollectionUtils.isNotEmpty(xxTagResourceMaps)) {
+                       for(XXTagResourceMap xxTagResourceMap : 
xxTagResourceMaps) {
+                               RangerTagResourceMap tagResourceMap = 
populateViewBean(xxTagResourceMap);
+
+                               ret.add(tagResourceMap);
+                       }
+               }
+
+               return ret;
+       }
+
+       public List<RangerTagResourceMap> getByTagGuid(String tagGuid) {
+               List<RangerTagResourceMap> ret = new 
ArrayList<RangerTagResourceMap>();
+
+               List<XXTagResourceMap> xxTagResourceMaps = 
daoMgr.getXXTagResourceMap().findByTagGuid(tagGuid);
+               
+               if(CollectionUtils.isNotEmpty(xxTagResourceMaps)) {
+                       for(XXTagResourceMap xxTagResourceMap : 
xxTagResourceMaps) {
+                               RangerTagResourceMap tagResourceMap = 
populateViewBean(xxTagResourceMap);
+
+                               ret.add(tagResourceMap);
+                       }
+               }
+
+               return ret;
+       }
+
+       public List<RangerTagResourceMap> getByResourceId(Long resourceId) {
+               List<RangerTagResourceMap> ret = new 
ArrayList<RangerTagResourceMap>();
+
+               List<XXTagResourceMap> xxTagResourceMaps = 
daoMgr.getXXTagResourceMap().findByResourceId(resourceId);
+               
+               if(CollectionUtils.isNotEmpty(xxTagResourceMaps)) {
+                       for(XXTagResourceMap xxTagResourceMap : 
xxTagResourceMaps) {
+                               RangerTagResourceMap tagResourceMap = 
populateViewBean(xxTagResourceMap);
+
+                               ret.add(tagResourceMap);
+                       }
+               }
+
+               return ret;
+       }
+
+       public List<RangerTagResourceMap> getByResourceGuid(String 
resourceGuid) {
+               List<RangerTagResourceMap> ret = new 
ArrayList<RangerTagResourceMap>();
+
+               List<XXTagResourceMap> xxTagResourceMaps = 
daoMgr.getXXTagResourceMap().findByResourceGuid(resourceGuid);
+               
+               if(CollectionUtils.isNotEmpty(xxTagResourceMaps)) {
+                       for(XXTagResourceMap xxTagResourceMap : 
xxTagResourceMaps) {
+                               RangerTagResourceMap tagResourceMap = 
populateViewBean(xxTagResourceMap);
+
+                               ret.add(tagResourceMap);
+                       }
+               }
+
+               return ret;
+       }
+       
+       public RangerTagResourceMap getByTagAndResourceId(Long tagId, Long 
resourceId) {
+               RangerTagResourceMap ret = null;
+
+               XXTagResourceMap xxTagResourceMap = 
daoMgr.getXXTagResourceMap().findByTagAndResourceId(tagId, resourceId);
+
+               if(xxTagResourceMap != null) {
+                       ret = populateViewBean(xxTagResourceMap);
+               }
+
+               return ret;
+       }
+
+       public RangerTagResourceMap getByTagAndResourceGuid(String tagGuid, 
String resourceGuid) {
+               RangerTagResourceMap ret = null;
+
+               XXTagResourceMap xxTagResourceMap = 
daoMgr.getXXTagResourceMap().findByTagAndResourceGuid(tagGuid, resourceGuid);
+
+               if(xxTagResourceMap != null) {
+                       ret = populateViewBean(xxTagResourceMap);
+               }
+
+               return ret;
+       }
+
+       public List<RangerTagResourceMap> getTagResourceMapsByServiceId(Long 
serviceId) {
+               List<RangerTagResourceMap> ret = new 
ArrayList<RangerTagResourceMap>();
+
+               List<XXTagResourceMap> xxTagResourceMaps = 
daoMgr.getXXTagResourceMap().findByServiceId(serviceId);
+               
+               if(CollectionUtils.isNotEmpty(xxTagResourceMaps)) {
+                       for(XXTagResourceMap xxTagResourceMap : 
xxTagResourceMaps) {
+                               RangerTagResourceMap tagResourceMap = 
populateViewBean(xxTagResourceMap);
+
+                               ret.add(tagResourceMap);
+                       }
+               }
+
+               return ret;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java
new file mode 100644
index 0000000..727cb79
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+package org.apache.ranger.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.ranger.common.GUIDUtil;
+import org.apache.ranger.entity.XXTagResourceMap;
+import org.apache.ranger.plugin.model.RangerTagResourceMap;
+import org.apache.ranger.plugin.store.PList;
+import org.apache.ranger.plugin.util.SearchFilter;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class RangerTagResourceMapServiceBase<T extends 
XXTagResourceMap, V extends RangerTagResourceMap> extends 
RangerBaseModelService<T, V> {
+
+       @Autowired
+       GUIDUtil guidUtil;
+
+       @Override
+       @SuppressWarnings("unchecked")
+       protected XXTagResourceMap mapViewToEntityBean(RangerTagResourceMap 
vObj, XXTagResourceMap xObj, int operationContext) {
+               String guid = (StringUtils.isEmpty(vObj.getGuid())) ? 
guidUtil.genGUID() : vObj.getGuid();
+
+               xObj.setGuid(guid);
+               xObj.setTagId(vObj.getTagId());
+               xObj.setResourceId(vObj.getResourceId());
+
+               return xObj;
+       }
+
+       @Override
+       @SuppressWarnings("unchecked")
+       protected RangerTagResourceMap mapEntityToViewBean(RangerTagResourceMap 
vObj, XXTagResourceMap xObj) {
+               vObj.setGuid(xObj.getGuid());
+               vObj.setTagId(xObj.getTagId());
+               vObj.setResourceId(xObj.getResourceId());
+
+               return vObj;
+       }
+
+       @SuppressWarnings("unchecked")
+       public PList<RangerTagResourceMap> 
searchRangerTaggedResources(SearchFilter searchFilter) {
+               PList<RangerTagResourceMap> retList = new 
PList<RangerTagResourceMap>();
+               List<RangerTagResourceMap> taggedResList = new 
ArrayList<RangerTagResourceMap>();
+
+               List<XXTagResourceMap> xTaggedResList = 
(List<XXTagResourceMap>) searchRangerObjects(searchFilter, searchFields, 
sortFields, (PList<V>) retList);
+
+               for (XXTagResourceMap xTaggedRes : xTaggedResList) {
+                       RangerTagResourceMap taggedRes = populateViewBean((T) 
xTaggedRes);
+                       taggedResList.add(taggedRes);
+               }
+               retList.setList(taggedResList);
+               return retList;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java
index b5cb303..1251454 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java
@@ -1,14 +1,15 @@
 package org.apache.ranger.service;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.ranger.common.SearchField;
 import org.apache.ranger.entity.XXTag;
 import org.apache.ranger.plugin.model.RangerTag;
 import org.apache.ranger.plugin.util.SearchFilter;
 import org.springframework.stereotype.Service;
 
-/**
- * Created by akulkarni on 8/19/15.
- */
 
 @Service
 public class RangerTagService extends RangerTagServiceBase<XXTag, RangerTag> {
@@ -32,4 +33,79 @@ public class RangerTagService extends 
RangerTagServiceBase<XXTag, RangerTag> {
                return populateViewBean(xObj);
        }
 
+       public RangerTag getTagByGuid(String guid) {
+               RangerTag ret = null;
+
+               XXTag xxTag = daoMgr.getXXTag().findByGuid(guid);
+               
+               if(xxTag != null) {
+                       ret = populateViewBean(xxTag);
+               }
+
+               return ret;
+       }
+
+       public List<RangerTag> getTagsByName(String name) {
+               List<RangerTag> ret = new ArrayList<RangerTag>();
+
+               List<XXTag> xxTags = daoMgr.getXXTag().findByName(name);
+               
+               if(CollectionUtils.isNotEmpty(xxTags)) {
+                       for(XXTag xxTag : xxTags) {
+                               RangerTag tag = populateViewBean(xxTag);
+
+                               ret.add(tag);
+                       }
+               }
+
+               return ret;
+       }
+
+       public List<RangerTag> getTagsForResourceId(Long resourceId) {
+               List<RangerTag> ret = new ArrayList<RangerTag>();
+
+               List<XXTag> xxTags = 
daoMgr.getXXTag().findForResourceId(resourceId);
+               
+               if(CollectionUtils.isNotEmpty(xxTags)) {
+                       for(XXTag xxTag : xxTags) {
+                               RangerTag tag = populateViewBean(xxTag);
+
+                               ret.add(tag);
+                       }
+               }
+
+               return ret;
+       }
+
+       public List<RangerTag> getTagsForResourceGuid(String resourceGuid) {
+               List<RangerTag> ret = new ArrayList<RangerTag>();
+
+               List<XXTag> xxTags = 
daoMgr.getXXTag().findForResourceGuid(resourceGuid);
+               
+               if(CollectionUtils.isNotEmpty(xxTags)) {
+                       for(XXTag xxTag : xxTags) {
+                               RangerTag tag = populateViewBean(xxTag);
+
+                               ret.add(tag);
+                       }
+               }
+
+               return ret;
+       }
+
+       public List<RangerTag> getTagsByServiceId(Long serviceId) {
+               List<RangerTag> ret = new ArrayList<RangerTag>();
+
+               List<XXTag> xxTags = 
daoMgr.getXXTag().findByServiceId(serviceId);
+               
+               if(CollectionUtils.isNotEmpty(xxTags)) {
+                       for(XXTag xxTag : xxTags) {
+                               RangerTag tag = populateViewBean(xxTag);
+
+                               ret.add(tag);
+                       }
+               }
+
+               return ret;
+       }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
index 7a9c9da..359e7ae 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
@@ -20,16 +20,18 @@
 package org.apache.ranger.service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.ranger.common.GUIDUtil;
 import org.apache.ranger.common.RangerConfigUtil;
 import org.apache.ranger.entity.XXDBBase;
-import org.apache.ranger.entity.XXTagAttributeDef;
+import org.apache.ranger.entity.XXTagAttribute;
 import org.apache.ranger.entity.XXTag;
 import org.apache.ranger.plugin.model.RangerTag;
-import org.apache.ranger.plugin.model.RangerTagDef;
 import org.apache.ranger.plugin.store.PList;
 import org.apache.ranger.plugin.util.SearchFilter;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,8 +54,6 @@ public abstract class RangerTagServiceBase<T extends XXTag, V 
extends RangerTag>
                String guid = (StringUtils.isEmpty(vObj.getGuid())) ? 
guidUtil.genGUID() : vObj.getGuid();
 
                xObj.setGuid(guid);
-               xObj.setVersion(vObj.getVersion());
-               xObj.setIsEnabled(vObj.getIsEnabled());
                xObj.setName(vObj.getName());
                return xObj;
        }
@@ -63,22 +63,25 @@ public abstract class RangerTagServiceBase<T extends XXTag, 
V extends RangerTag>
        protected RangerTag mapEntityToViewBean(RangerTag vObj, XXTag xObj) {
 
                vObj.setGuid(xObj.getGuid());
-               vObj.setVersion(xObj.getVersion());
-               vObj.setIsEnabled(xObj.getIsEnabled());
                vObj.setName(xObj.getName());
 
+               Map<String, String> attributeValues = 
getAttributeValuesForTag(xObj);
+               vObj.setAttributeValues(attributeValues);
+
                return vObj;
        }
 
-       /**
-        * @param xObj
-        * @return
-        */
-       public RangerTagDef.RangerTagAttributeDef 
populateRangerTagAttributeDef(XXTagAttributeDef xObj) {
-               RangerTagDef.RangerTagAttributeDef attrDef = new 
RangerTagDef.RangerTagAttributeDef();
-               attrDef.setName(xObj.getName());
-               attrDef.setType(xObj.getType());
-               return attrDef;
+       public Map<String, String> getAttributeValuesForTag(XXTag xtag) {
+               List<XXTagAttribute> tagAttrList = 
daoMgr.getXXTagAttribute().findByTagId(xtag.getId());
+               Map<String, String>  ret         = new HashMap<String, 
String>();
+
+               if(CollectionUtils.isNotEmpty(tagAttrList)) {
+                       for (XXTagAttribute tagAttr : tagAttrList) {
+                               ret.put(tagAttr.getName(), tagAttr.getValue());
+                       }
+               }
+
+               return ret;
        }
 
        @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
deleted file mode 100644
index 327a6b8..0000000
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.ranger.service;
-
-import org.apache.ranger.common.SearchField;
-import org.apache.ranger.common.SearchField.DATA_TYPE;
-import org.apache.ranger.common.SearchField.SEARCH_TYPE;
-import org.apache.ranger.entity.XXTaggedResource;
-import org.apache.ranger.plugin.model.RangerServiceResource;
-import org.apache.ranger.plugin.util.SearchFilter;
-import org.springframework.stereotype.Service;
-
-@Service
-public class RangerTaggedResourceService extends 
RangerTaggedResourceServiceBase<XXTaggedResource, RangerServiceResource> {
-
-       public RangerTaggedResourceService() {
-               searchFields.add(new SearchField(SearchFilter.TAG_RESOURCE_ID, 
"obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
-       }
-
-       @Override
-       protected void validateForCreate(RangerServiceResource vObj) {
-
-       }
-
-       @Override
-       protected void validateForUpdate(RangerServiceResource vObj, 
XXTaggedResource entityObj) {
-
-       }
-       
-       public RangerServiceResource getPopulatedViewObject(XXTaggedResource 
xObj) {
-               return populateViewBean(xObj);
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
deleted file mode 100644
index 5f97001..0000000
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- */
-
-package org.apache.ranger.service;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.ranger.common.GUIDUtil;
-import org.apache.ranger.common.MessageEnums;
-import org.apache.ranger.entity.XXResourceDef;
-import org.apache.ranger.entity.XXService;
-import org.apache.ranger.entity.XXTaggedResource;
-import org.apache.ranger.entity.XXTaggedResourceValue;
-import org.apache.ranger.plugin.model.RangerPolicy;
-import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
-import org.apache.ranger.plugin.model.RangerServiceResource;
-import org.apache.ranger.plugin.store.PList;
-import org.apache.ranger.plugin.util.SearchFilter;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public abstract class RangerTaggedResourceServiceBase<T extends 
XXTaggedResource, V extends RangerServiceResource> extends 
RangerBaseModelService<T, V> {
-
-       @Autowired
-       GUIDUtil guidUtil;
-
-       @Override
-       @SuppressWarnings("unchecked")
-       protected XXTaggedResource mapViewToEntityBean(RangerServiceResource 
vObj, XXTaggedResource xObj, int operationContext) {
-               String guid = (StringUtils.isEmpty(vObj.getGuid())) ? 
guidUtil.genGUID() : vObj.getGuid();
-
-               xObj.setGuid(guid);
-               xObj.setVersion(vObj.getVersion());
-               xObj.setIsEnabled(vObj.getIsEnabled());
-
-               XXService xService = 
daoMgr.getXXService().findByName(vObj.getServiceName());
-               if (xService == null) {
-                       throw restErrorUtil.createRESTException("Error 
Populating XXTaggedResource. No Service found with name: " + 
vObj.getServiceName(), MessageEnums.INVALID_INPUT_DATA);
-               }
-
-               xObj.setServiceId(xService.getId());
-
-               return xObj;
-       }
-
-       @Override
-       @SuppressWarnings("unchecked")
-       protected RangerServiceResource 
mapEntityToViewBean(RangerServiceResource vObj, XXTaggedResource xObj) {
-               vObj.setGuid(xObj.getGuid());
-               vObj.setVersion(xObj.getVersion());
-               vObj.setIsEnabled(xObj.getIsEnabled());
-
-               XXService xService = 
daoMgr.getXXService().getById(xObj.getServiceId());
-
-               vObj.setServiceName(xService.getName());
-
-               List<XXTaggedResourceValue> resValueList = 
daoMgr.getXXTaggedResourceValue().findByTaggedResId(xObj.getId());
-               Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = 
new HashMap<String, RangerPolicy.RangerPolicyResource>();
-
-               for (XXTaggedResourceValue resValue : resValueList) {
-                       List<String> resValueMapList = 
daoMgr.getXXTaggedResourceValueMap().findValuesByResValueId(resValue.getId());
-
-                       XXResourceDef xResDef = 
daoMgr.getXXResourceDef().getById(resValue.getResDefId());
-
-                       RangerPolicyResource policyRes = new 
RangerPolicyResource();
-                       policyRes.setIsExcludes(resValue.getIsExcludes());
-                       policyRes.setIsRecursive(resValue.getIsRecursive());
-                       policyRes.setValues(resValueMapList);
-
-                       resourceSpec.put(xResDef.getName(), policyRes);
-               }
-
-               vObj.setResourceSpec(resourceSpec);
-
-               return vObj;
-       }
-
-       @SuppressWarnings("unchecked")
-       public PList<RangerServiceResource> 
searchRangerTaggedResources(SearchFilter searchFilter) {
-               PList<RangerServiceResource> retList = new 
PList<RangerServiceResource>();
-               List<RangerServiceResource> taggedResList = new 
ArrayList<RangerServiceResource>();
-
-               List<XXTaggedResource> xTaggedResList = 
(List<XXTaggedResource>) searchRangerObjects(searchFilter, searchFields, 
sortFields, (PList<V>) retList);
-
-               for (XXTaggedResource xTaggedRes : xTaggedResList) {
-                       RangerServiceResource taggedRes = populateViewBean((T) 
xTaggedRes);
-                       taggedResList.add(taggedRes);
-               }
-               retList.setList(taggedResList);
-               return retList;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml 
b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
index 555dfb0..b8fd003 100644
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -534,51 +534,125 @@
        </named-query>
        
        <!-- Start ==> JPA Queries for Tag Based Policies  -->
-
-       <named-query name="XXTagAttributeDef.findByTagDefId">
-               <query>select obj from XXTagAttributeDef obj where obj.tagDefId 
= :tagDefId</query>
+       
+       <named-query name="XXServiceResourceElement.findByResourceId">
+               <query>select obj from XXServiceResourceElement obj where 
obj.resourceId = :resourceId</query>
        </named-query>
        
-       <named-query name="XXTaggedResourceValue.findByTaggedResId">
-               <query>select obj from XXTaggedResourceValue obj where 
obj.taggedResourceId = :taggedResId</query>
+       <named-query name="XXServiceResourceElementValue.findByResElementId">
+               <query>select obj from XXServiceResourceElementValue obj where 
obj.resElementId = :resElementId</query>
+       </named-query>
+
+       <named-query 
name="XXServiceResourceElementValue.findValuesByResElementId">
+               <query>select obj.value from XXServiceResourceElementValue obj 
where obj.resElementId = :resElementId</query>
+       </named-query>
+
+       <named-query name="XXTagResourceMap.findByResourceId">
+               <query>select obj from XXTagResourceMap obj where 
obj.resourceId = :resourceId</query>
+       </named-query>
+
+       <named-query name="XXTagResourceMap.findByResourceGuid">
+               <query>select obj from XXTagResourceMap obj, XXServiceResource 
res where res.guid = :resourceGuid and obj.resourceId = res.id</query>
        </named-query>
        
-       <named-query name="XXTaggedResourceValueMap.findByResValueId">
-               <query>select obj from XXTaggedResourceValueMap obj where 
obj.resValueId = :resValueId</query>
+       <named-query name="XXTagResourceMap.findByTagId">
+               <query>select obj from XXTagResourceMap obj where obj.tagId = 
:tagId</query>
+       </named-query>
+
+       <named-query name="XXTagResourceMap.findByTagGuid">
+               <query>select obj from XXTagResourceMap obj, XXTag tag where 
tag.guid = :tagGuid and obj.tagId = tag.id</query>
        </named-query>
 
-       <named-query name="XXTaggedResourceValueMap.findValuesByResValueId">
-               <query>select obj.value from XXTaggedResourceValueMap obj where 
obj.resValueId = :resValueId</query>
+       <named-query name="XXTagResourceMap.findByTagAndResourceId">
+               <query>select obj from XXTagResourceMap obj where 
obj.resourceId = :resourceId and obj.tagId = :tagId</query>
        </named-query>
 
-       <named-query name="XXTag.findByTaggedResource">
-               <query>select obj from XXTag obj, XXTagResourceMap tagResMap 
where 
-               tagResMap.taggedResId = :taggedResId and obj.id = 
tagResMap.tagId</query>
+       <named-query name="XXTagResourceMap.findByTagAndResourceGuid">
+               <query>select obj from XXTagResourceMap obj, XXTag tag, 
XXServiceResource res where tag.guid = :tagGuid and res.guid = :resourceGuid 
and obj.tagId = tag.id and obj.resourceId = res.id</query>
        </named-query>
+
+       <named-query name="XXTagResourceMap.findByServiceId">
+               <query>select obj from XXTagResourceMap obj, XXServiceResource 
res
+                               where obj.resourceId = res.id and res.serviceId 
= :serviceId
+                               order by obj.resourceId</query>
+       </named-query>
+
+       <named-query name="XXTagResourceMap.updateTagVersionInService">
+               <query>update XXService obj set obj.tagVersion = obj.tagVersion 
+ 1, obj.tagUpdateTime = :tagUpdateTime
+                               where obj.id in (select res.serviceId from 
XXServiceResource res, XXTagResourceMap tagRes, XXTag tag
+                                                                 where res.id 
= tagRes.resourceId and tagRes.tagId = tag.id and tag.id = :tagId)</query>
+       </named-query>  
        
-       <named-query name="XXTagAttribute.findByTagId">
-               <query>select obj from XXTagAttribute obj where obj.tagId = 
:tagId</query>
+       <named-query name="XXTagDef.findByGuid">
+               <query>select obj from XXTagDef obj where obj.guid = 
:guid</query>
+       </named-query>
+       
+       <named-query name="XXTagDef.findByName">
+               <query>select obj from XXTagDef obj where obj.name = 
:name</query>
+       </named-query>
+       
+       <named-query name="XXTagDef.findByServiceId">
+               <query>select obj from XXTagDef obj where obj.name in
+                               (select tag.name from XXTag tag, 
XXTagResourceMap tagRes, XXServiceResource resource where tag.id = tagRes.tagId 
and tagRes.resourceId = resource.id and resource.serviceId = :serviceId)</query>
+       </named-query>
+
+       <named-query name="XXTagDef.updateTagVersionInService">
+               <query>update XXService obj set obj.tagVersion = obj.tagVersion 
+ 1, obj.tagUpdateTime = :tagUpdateTime
+                               where obj.id in (select res.serviceId from 
XXServiceResource res, XXTagResourceMap tagRes, XXTag tag, XXTagDef tagDef
+                                                                 where res.id 
= tagRes.resourceId and tagRes.tagId = tag.id and tag.name = tagDef.name and 
tagDef.id = :tagDefId)</query>
+       </named-query>  
+
+       <named-query name="XXTagAttributeDef.findByTagDefId">
+               <query>select obj from XXTagAttributeDef obj where obj.tagDefId 
= :tagDefId</query>
+       </named-query>
+
+       
+       <named-query name="XXTag.findByGuid">
+               <query>select obj from XXTag obj where obj.guid = :guid</query>
        </named-query>
        
-       <named-query name="XXTaggedResource.findByServiceId">
-               <query>select obj from XXTaggedResource obj where obj.serviceId 
= :serviceId</query>
+       <named-query name="XXTag.findByName">
+               <query>select obj from XXTag obj where obj.name = :name</query>
+       </named-query>
+
+       <named-query name="XXTag.findByResourceId">
+               <query>select obj from XXTag obj, XXTagResourceMap tagResMap 
where tagResMap.resourceId = :resourceId and obj.id = tagResMap.tagId</query>
+       </named-query>
+
+       <named-query name="XXTag.findByResourceGuid">
+               <query>select obj from XXTag obj, XXTagResourceMap tagRes, 
XXServiceResource res where res.guid = :resourceGuid and res.id = 
tagRes.resourceId and tagRes.tagId = obj.id</query>
        </named-query>
 
        <named-query name="XXTag.findTagNamesByServiceId">
-               <query>select obj.name from XXTag obj, XXTaggedResource tRes, 
XXTagResourceMap tResMap where 
-               tRes.serviceId = :serviceId and obj.id = tResMap.tagId and 
tRes.id = tResMap.taggedResId </query>
+               <query>select obj.name from XXTag obj, XXServiceResource tRes, 
XXTagResourceMap tResMap where 
+               tRes.serviceId = :serviceId and obj.id = tResMap.tagId and 
tRes.id = tResMap.resourceId </query>
        </named-query>  
        
-       <named-query name="XXTagResourceMap.findByTaggedResourceId">
-               <query>select obj from XXTagResourceMap obj where 
obj.taggedResId = :taggedResId</query>
+       <named-query name="XXTag.findByServiceId">
+               <query>select obj from XXTag obj where obj.id in
+                       (select tagRes.tagId from XXTagResourceMap tagRes, 
XXServiceResource resource where tagRes.resourceId = resource.id and 
resource.serviceId = :serviceId)</query>
+       </named-query>
+       
+       <named-query name="XXTagAttribute.findByTagId">
+               <query>select obj from XXTagAttribute obj where obj.tagId = 
:tagId</query>
+       </named-query>
+
+
+       <named-query name="XXServiceResource.findByGuid">
+               <query>select obj from XXServiceResource obj where obj.guid = 
:guid</query>
        </named-query>
        
-       <named-query name="XXTag.findTagsByExternalId">
-               <query>select obj from XXTag obj where obj.externalId = 
:externalId</query>
+       <named-query name="XXServiceResource.findByServiceId">
+               <query>select obj from XXServiceResource obj where 
obj.serviceId = :serviceId</query>
        </named-query>
        
-       <named-query name="XXTagDef.findByName">
-               <query>select obj from XXTagDef obj where obj.name = 
:name</query>
+       <named-query name="XXServiceResource.findTaggedResourcesInServiceId">
+               <query>select obj from XXServiceResource obj where 
obj.serviceId = :serviceId and obj.id in
+                                       (select tagResMap.resourceId from 
XXTagResourceMap tagResMap)</query>
+       </named-query>
+
+       <named-query 
name="XXServiceResource.findByServiceIdAndResourceSignature">
+               <query>select obj from XXServiceResource obj where 
obj.serviceId = :serviceId and obj.resourceSignature = 
:resourceSignature</query>
        </named-query>
 
        <!-- End <== JPA Queries for Tag Based Policies  -->

Reply via email to