| /* |
| * 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.io.Serializable; |
| 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.commons.logging.Log; |
| import org.apache.commons.logging.LogFactory; |
| import org.apache.ranger.common.AppConstants; |
| import org.apache.ranger.common.GUIDUtil; |
| import org.apache.ranger.common.JSONUtil; |
| import org.apache.ranger.common.MessageEnums; |
| import org.apache.ranger.common.SearchField; |
| import org.apache.ranger.common.SortField; |
| import org.apache.ranger.common.SearchField.DATA_TYPE; |
| import org.apache.ranger.common.SearchField.SEARCH_TYPE; |
| import org.apache.ranger.entity.*; |
| import org.apache.ranger.plugin.model.RangerServiceDef; |
| import org.apache.ranger.plugin.model.RangerServiceDef.RangerAccessTypeDef; |
| import org.apache.ranger.plugin.model.RangerServiceDef.RangerContextEnricherDef; |
| import org.apache.ranger.plugin.model.RangerServiceDef.RangerDataMaskDef; |
| import org.apache.ranger.plugin.model.RangerServiceDef.RangerDataMaskTypeDef; |
| import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumDef; |
| import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumElementDef; |
| import org.apache.ranger.plugin.model.RangerServiceDef.RangerPolicyConditionDef; |
| import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef; |
| import org.apache.ranger.plugin.model.RangerServiceDef.RangerRowFilterDef; |
| import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef; |
| import org.apache.ranger.plugin.util.SearchFilter; |
| import org.apache.ranger.plugin.util.ServiceDefUtil; |
| import org.apache.ranger.view.RangerServiceDefList; |
| import org.springframework.beans.factory.annotation.Autowired; |
| |
| public abstract class RangerServiceDefServiceBase<T extends XXServiceDefBase, V extends RangerServiceDef> |
| extends RangerBaseModelService<T, V> { |
| private static final Log LOG = LogFactory.getLog(RangerServiceDefServiceBase.class); |
| |
| @Autowired |
| RangerAuditFields<XXDBBase> rangerAuditFields; |
| |
| @Autowired |
| JSONUtil jsonUtil; |
| |
| @Autowired |
| GUIDUtil guidUtil; |
| |
| public RangerServiceDefServiceBase() { |
| super(); |
| |
| searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); |
| searchFields.add(new SearchField(SearchFilter.SERVICE_TYPE_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); |
| searchFields.add(new SearchField(SearchFilter.IS_ENABLED, "obj.isEnabled", DATA_TYPE.BOOLEAN, SEARCH_TYPE.FULL)); |
| |
| sortFields.add(new SortField(SearchFilter.CREATE_TIME, "obj.createTime")); |
| sortFields.add(new SortField(SearchFilter.UPDATE_TIME, "obj.updateTime")); |
| sortFields.add(new SortField(SearchFilter.SERVICE_TYPE_ID, "obj.id")); |
| sortFields.add(new SortField(SearchFilter.SERVICE_TYPE, "obj.name")); |
| } |
| |
| @Override |
| protected V populateViewBean(T xServiceDef) { |
| V serviceDef = super.populateViewBean((T) xServiceDef); |
| Long serviceDefId = xServiceDef.getId(); |
| |
| List<XXServiceConfigDef> xConfigs = daoMgr.getXXServiceConfigDef().findByServiceDefId(serviceDefId); |
| if (!stringUtil.isEmpty(xConfigs)) { |
| List<RangerServiceConfigDef> configs = new ArrayList<RangerServiceConfigDef>(); |
| for (XXServiceConfigDef xConfig : xConfigs) { |
| RangerServiceConfigDef config = populateXXToRangerServiceConfigDef(xConfig); |
| configs.add(config); |
| } |
| serviceDef.setConfigs(configs); |
| } |
| |
| List<XXResourceDef> xResources = daoMgr.getXXResourceDef().findByServiceDefId(serviceDefId); |
| if (!stringUtil.isEmpty(xResources)) { |
| List<RangerResourceDef> resources = new ArrayList<RangerResourceDef>(); |
| for (XXResourceDef xResource : xResources) { |
| RangerResourceDef resource = populateXXToRangerResourceDef(xResource); |
| resources.add(resource); |
| } |
| serviceDef.setResources(resources); |
| } |
| |
| List<XXAccessTypeDef> xAccessTypes = daoMgr.getXXAccessTypeDef().findByServiceDefId(serviceDefId); |
| if (!stringUtil.isEmpty(xAccessTypes)) { |
| List<RangerAccessTypeDef> accessTypes = new ArrayList<RangerAccessTypeDef>(); |
| for (XXAccessTypeDef xAtd : xAccessTypes) { |
| RangerAccessTypeDef accessType = populateXXToRangerAccessTypeDef(xAtd); |
| accessTypes.add(accessType); |
| } |
| serviceDef.setAccessTypes(accessTypes); |
| } |
| |
| List<XXPolicyConditionDef> xPolicyConditions = daoMgr.getXXPolicyConditionDef() |
| .findByServiceDefId(serviceDefId); |
| if (!stringUtil.isEmpty(xPolicyConditions)) { |
| List<RangerPolicyConditionDef> policyConditions = new ArrayList<RangerPolicyConditionDef>(); |
| for (XXPolicyConditionDef xPolicyCondDef : xPolicyConditions) { |
| RangerPolicyConditionDef policyCondition = populateXXToRangerPolicyConditionDef(xPolicyCondDef); |
| policyConditions.add(policyCondition); |
| } |
| serviceDef.setPolicyConditions(policyConditions); |
| } |
| |
| List<XXContextEnricherDef> xContextEnrichers = daoMgr.getXXContextEnricherDef() |
| .findByServiceDefId(serviceDefId); |
| if (!stringUtil.isEmpty(xContextEnrichers)) { |
| List<RangerContextEnricherDef> contextEnrichers = new ArrayList<RangerContextEnricherDef>(); |
| for (XXContextEnricherDef xContextEnricherDef : xContextEnrichers) { |
| RangerContextEnricherDef contextEnricher = populateXXToRangerContextEnricherDef(xContextEnricherDef); |
| contextEnrichers.add(contextEnricher); |
| } |
| serviceDef.setContextEnrichers(contextEnrichers); |
| } |
| |
| List<XXEnumDef> xEnumList = daoMgr.getXXEnumDef().findByServiceDefId(serviceDefId); |
| if (!stringUtil.isEmpty(xEnumList)) { |
| List<RangerEnumDef> enums = new ArrayList<RangerEnumDef>(); |
| for (XXEnumDef xEnum : xEnumList) { |
| RangerEnumDef vEnum = populateXXToRangerEnumDef(xEnum); |
| enums.add(vEnum); |
| } |
| serviceDef.setEnums(enums); |
| } |
| |
| RangerDataMaskDef dataMaskDef = new RangerDataMaskDef(); |
| RangerRowFilterDef rowFilterDef = new RangerRowFilterDef(); |
| |
| List<XXDataMaskTypeDef> xDataMaskTypes = daoMgr.getXXDataMaskTypeDef().findByServiceDefId(serviceDefId); |
| if (!stringUtil.isEmpty(xDataMaskTypes)) { |
| List<RangerDataMaskTypeDef> dataMaskTypes = new ArrayList<RangerDataMaskTypeDef>(); |
| for (XXDataMaskTypeDef xDataMaskType : xDataMaskTypes) { |
| RangerDataMaskTypeDef dataMaskType = populateXXToRangerDataMaskTypeDef(xDataMaskType); |
| dataMaskTypes.add(dataMaskType); |
| } |
| |
| dataMaskDef.setMaskTypes(dataMaskTypes); |
| } |
| |
| if (!stringUtil.isEmpty(xResources)) { |
| for (XXResourceDef xResource : xResources) { |
| if (StringUtils.isNotEmpty(xResource.getDataMaskOptions())) { |
| RangerResourceDef dataMaskResource = jsonToObject(xResource.getDataMaskOptions(), RangerResourceDef.class); |
| |
| dataMaskDef.getResources().add(dataMaskResource); |
| } |
| |
| if (StringUtils.isNotEmpty(xResource.getRowFilterOptions())) { |
| RangerResourceDef resource = jsonToObject(xResource.getRowFilterOptions(), RangerResourceDef.class); |
| |
| rowFilterDef.getResources().add(resource); |
| } |
| } |
| } |
| |
| if (!stringUtil.isEmpty(xAccessTypes)) { |
| for (XXAccessTypeDef xAtd : xAccessTypes) { |
| if(StringUtils.isNotEmpty(xAtd.getDataMaskOptions())) { |
| RangerAccessTypeDef dataMaskAccessType = jsonToObject(xAtd.getDataMaskOptions(), RangerAccessTypeDef.class); |
| |
| dataMaskDef.getAccessTypes().add(dataMaskAccessType); |
| } |
| |
| if(StringUtils.isNotEmpty(xAtd.getRowFilterOptions())) { |
| RangerAccessTypeDef accessType = jsonToObject(xAtd.getRowFilterOptions(), RangerAccessTypeDef.class); |
| |
| rowFilterDef.getAccessTypes().add(accessType); |
| } |
| } |
| } |
| serviceDef.setDataMaskDef(dataMaskDef); |
| serviceDef.setRowFilterDef(rowFilterDef); |
| |
| ServiceDefUtil.normalize(serviceDef); |
| |
| return serviceDef; |
| } |
| |
| @Override |
| protected T mapViewToEntityBean(V vObj, T xObj, int operationContext) { |
| |
| String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid(); |
| |
| xObj.setGuid(guid); |
| xObj.setName(vObj.getName()); |
| xObj.setImplclassname(vObj.getImplClass()); |
| xObj.setLabel(vObj.getLabel()); |
| xObj.setDescription(vObj.getDescription()); |
| xObj.setDefOptions(mapToJsonString(vObj.getOptions())); |
| xObj.setRbkeylabel(vObj.getRbKeyLabel()); |
| xObj.setRbkeydescription(vObj.getRbKeyDescription()); |
| xObj.setIsEnabled(vObj.getIsEnabled()); |
| return xObj; |
| } |
| |
| @Override |
| protected V mapEntityToViewBean(V vObj, T xObj) { |
| vObj.setGuid(xObj.getGuid()); |
| vObj.setVersion(xObj.getVersion()); |
| vObj.setName(xObj.getName()); |
| vObj.setImplClass(xObj.getImplclassname()); |
| vObj.setLabel(xObj.getLabel()); |
| vObj.setDescription(xObj.getDescription()); |
| vObj.setOptions(jsonStringToMap(xObj.getDefOptions())); |
| vObj.setRbKeyLabel(xObj.getRbkeylabel()); |
| vObj.setRbKeyDescription(xObj.getRbkeydescription()); |
| vObj.setIsEnabled(xObj.getIsEnabled()); |
| return vObj; |
| } |
| |
| public XXServiceConfigDef populateRangerServiceConfigDefToXX(RangerServiceConfigDef vObj, XXServiceConfigDef xObj, |
| XXServiceDef serviceDef, int operationContext) { |
| if(serviceDef == null) { |
| LOG.error("RangerServiceDefServiceBase.populateRangerServiceConfigDefToXX, serviceDef can not be null"); |
| throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); |
| } |
| |
| xObj = (XXServiceConfigDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); |
| xObj.setDefid(serviceDef.getId()); |
| xObj.setItemId(vObj.getItemId()); |
| xObj.setName(vObj.getName()); |
| xObj.setType(vObj.getType()); |
| xObj.setSubtype(vObj.getSubType()); |
| xObj.setIsMandatory(vObj.getMandatory()); |
| xObj.setDefaultvalue(vObj.getDefaultValue()); |
| xObj.setValidationRegEx(vObj.getValidationRegEx()); |
| xObj.setValidationMessage(vObj.getValidationMessage()); |
| xObj.setUiHint(vObj.getUiHint()); |
| xObj.setLabel(vObj.getLabel()); |
| xObj.setDescription(vObj.getDescription()); |
| xObj.setRbkeylabel(vObj.getRbKeyLabel()); |
| xObj.setRbkeydescription(vObj.getRbKeyDescription()); |
| xObj.setRbKeyValidationMessage(vObj.getRbKeyValidationMessage()); |
| xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); |
| return xObj; |
| } |
| |
| public RangerServiceConfigDef populateXXToRangerServiceConfigDef(XXServiceConfigDef xObj) { |
| RangerServiceConfigDef vObj = new RangerServiceConfigDef(); |
| vObj.setItemId(xObj.getItemId()); |
| vObj.setName(xObj.getName()); |
| vObj.setType(xObj.getType()); |
| vObj.setSubType(xObj.getSubtype()); |
| vObj.setMandatory(xObj.getIsMandatory()); |
| vObj.setDefaultValue(xObj.getDefaultvalue()); |
| vObj.setValidationRegEx(xObj.getValidationRegEx()); |
| vObj.setValidationMessage(xObj.getValidationMessage()); |
| vObj.setUiHint(xObj.getUiHint()); |
| vObj.setLabel(xObj.getLabel()); |
| vObj.setDescription(xObj.getDescription()); |
| vObj.setRbKeyLabel(xObj.getRbkeylabel()); |
| vObj.setRbKeyDescription(xObj.getRbkeydescription()); |
| vObj.setRbKeyValidationMessage(xObj.getRbKeyValidationMessage()); |
| return vObj; |
| } |
| |
| public XXResourceDef populateRangerResourceDefToXX(RangerResourceDef vObj, XXResourceDef xObj, |
| XXServiceDef serviceDef, int operationContext) { |
| if(serviceDef == null) { |
| LOG.error("RangerServiceDefServiceBase.populateRangerResourceDefToXX, serviceDef can not be null"); |
| throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); |
| } |
| |
| xObj = (XXResourceDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); |
| xObj.setDefid(serviceDef.getId()); |
| xObj.setItemId(vObj.getItemId()); |
| xObj.setName(vObj.getName()); |
| xObj.setType(vObj.getType()); |
| xObj.setLevel(vObj.getLevel()); |
| xObj.setMandatory(vObj.getMandatory()); |
| xObj.setLookupsupported(vObj.getLookupSupported()); |
| xObj.setRecursivesupported(vObj.getRecursiveSupported()); |
| xObj.setExcludessupported(vObj.getExcludesSupported()); |
| xObj.setMatcher(vObj.getMatcher()); |
| xObj.setMatcheroptions(mapToJsonString(vObj.getMatcherOptions())); |
| xObj.setValidationRegEx(vObj.getValidationRegEx()); |
| xObj.setValidationMessage(vObj.getValidationMessage()); |
| xObj.setUiHint(vObj.getUiHint()); |
| xObj.setLabel(vObj.getLabel()); |
| xObj.setDescription(vObj.getDescription()); |
| xObj.setRbkeylabel(vObj.getRbKeyLabel()); |
| xObj.setRbkeydescription(vObj.getRbKeyDescription()); |
| xObj.setRbKeyValidationMessage(vObj.getRbKeyValidationMessage()); |
| xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); |
| return xObj; |
| } |
| |
| public RangerResourceDef populateXXToRangerResourceDef(XXResourceDef xObj) { |
| RangerResourceDef vObj = new RangerResourceDef(); |
| vObj.setItemId(xObj.getItemId()); |
| vObj.setName(xObj.getName()); |
| vObj.setType(xObj.getType()); |
| vObj.setLevel(xObj.getLevel()); |
| vObj.setMandatory(xObj.getMandatory()); |
| vObj.setLookupSupported(xObj.getLookupsupported()); |
| vObj.setRecursiveSupported(xObj.getRecursivesupported()); |
| vObj.setExcludesSupported(xObj.getExcludessupported()); |
| vObj.setMatcher(xObj.getMatcher()); |
| vObj.setMatcherOptions(jsonStringToMap(xObj.getMatcheroptions())); |
| vObj.setValidationRegEx(xObj.getValidationRegEx()); |
| vObj.setValidationMessage(xObj.getValidationMessage()); |
| vObj.setUiHint(xObj.getUiHint()); |
| vObj.setLabel(xObj.getLabel()); |
| vObj.setDescription(xObj.getDescription()); |
| vObj.setRbKeyLabel(xObj.getRbkeylabel()); |
| vObj.setRbKeyDescription(xObj.getRbkeydescription()); |
| vObj.setRbKeyValidationMessage(xObj.getRbKeyValidationMessage()); |
| |
| XXResourceDef parent = daoMgr.getXXResourceDef().getById(xObj.getParent()); |
| String parentName = (parent != null) ? parent.getName() : null; |
| vObj.setParent(parentName); |
| |
| return vObj; |
| } |
| |
| public XXAccessTypeDef populateRangerAccessTypeDefToXX(RangerAccessTypeDef vObj, XXAccessTypeDef xObj, |
| XXServiceDef serviceDef, int operationContext) { |
| if(serviceDef == null) { |
| LOG.error("RangerServiceDefServiceBase.populateRangerAccessTypeDefToXX, serviceDef can not be null"); |
| throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); |
| } |
| |
| xObj = (XXAccessTypeDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); |
| xObj.setDefid(serviceDef.getId()); |
| xObj.setItemId(vObj.getItemId()); |
| xObj.setName(vObj.getName()); |
| xObj.setLabel(vObj.getLabel()); |
| xObj.setRbkeylabel(vObj.getRbKeyLabel()); |
| xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); |
| return xObj; |
| } |
| |
| public RangerAccessTypeDef populateXXToRangerAccessTypeDef(XXAccessTypeDef xObj) { |
| RangerAccessTypeDef vObj = new RangerAccessTypeDef(); |
| vObj.setItemId(xObj.getItemId()); |
| vObj.setName(xObj.getName()); |
| vObj.setLabel(xObj.getLabel()); |
| vObj.setRbKeyLabel(xObj.getRbkeylabel()); |
| |
| List<String> impliedGrants = daoMgr.getXXAccessTypeDefGrants().findImpliedGrantsByATDId(xObj.getId()); |
| vObj.setImpliedGrants(impliedGrants); |
| return vObj; |
| } |
| |
| public XXPolicyConditionDef populateRangerPolicyConditionDefToXX(RangerPolicyConditionDef vObj, |
| XXPolicyConditionDef xObj, XXServiceDef serviceDef, int operationContext) { |
| if(serviceDef == null) { |
| LOG.error("RangerServiceDefServiceBase.populateRangerPolicyConditionDefToXX, serviceDef can not be null"); |
| throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); |
| } |
| |
| xObj = (XXPolicyConditionDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); |
| xObj.setDefid(serviceDef.getId()); |
| xObj.setItemId(vObj.getItemId()); |
| xObj.setName(vObj.getName()); |
| xObj.setEvaluator(vObj.getEvaluator()); |
| xObj.setEvaluatoroptions(mapToJsonString(vObj.getEvaluatorOptions())); |
| xObj.setValidationRegEx(vObj.getValidationRegEx()); |
| xObj.setValidationMessage(vObj.getValidationMessage()); |
| xObj.setUiHint(vObj.getUiHint()); |
| xObj.setLabel(vObj.getLabel()); |
| xObj.setDescription(vObj.getDescription()); |
| xObj.setRbkeylabel(vObj.getRbKeyLabel()); |
| xObj.setRbkeydescription(vObj.getRbKeyDescription()); |
| xObj.setRbKeyValidationMessage(vObj.getRbKeyValidationMessage()); |
| xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); |
| return xObj; |
| } |
| |
| public RangerPolicyConditionDef populateXXToRangerPolicyConditionDef(XXPolicyConditionDef xObj) { |
| RangerPolicyConditionDef vObj = new RangerPolicyConditionDef(); |
| vObj.setItemId(xObj.getItemId()); |
| vObj.setName(xObj.getName()); |
| vObj.setEvaluator(xObj.getEvaluator()); |
| vObj.setEvaluatorOptions(jsonStringToMap(xObj.getEvaluatoroptions())); |
| vObj.setValidationRegEx(xObj.getValidationRegEx()); |
| vObj.setValidationMessage(xObj.getValidationMessage()); |
| vObj.setUiHint(xObj.getUiHint()); |
| vObj.setLabel(xObj.getLabel()); |
| vObj.setDescription(xObj.getDescription()); |
| vObj.setRbKeyLabel(xObj.getRbkeylabel()); |
| vObj.setRbKeyDescription(xObj.getRbkeydescription()); |
| vObj.setRbKeyValidationMessage(xObj.getRbKeyValidationMessage()); |
| return vObj; |
| } |
| |
| public XXContextEnricherDef populateRangerContextEnricherDefToXX(RangerContextEnricherDef vObj, |
| XXContextEnricherDef xObj, XXServiceDef serviceDef, int operationContext) { |
| if(serviceDef == null) { |
| LOG.error("RangerServiceDefServiceBase.populateRangerContextEnricherDefToXX, serviceDef can not be null"); |
| throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); |
| } |
| |
| xObj = (XXContextEnricherDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); |
| xObj.setDefid(serviceDef.getId()); |
| xObj.setItemId(vObj.getItemId()); |
| xObj.setName(vObj.getName()); |
| xObj.setEnricher(vObj.getEnricher()); |
| xObj.setEnricherOptions(mapToJsonString(vObj.getEnricherOptions())); |
| xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); |
| return xObj; |
| } |
| |
| public RangerContextEnricherDef populateXXToRangerContextEnricherDef(XXContextEnricherDef xObj) { |
| RangerContextEnricherDef vObj = new RangerContextEnricherDef(); |
| vObj.setItemId(xObj.getItemId()); |
| vObj.setName(xObj.getName()); |
| vObj.setEnricher(xObj.getEnricher()); |
| vObj.setEnricherOptions(jsonStringToMap(xObj.getEnricherOptions())); |
| return vObj; |
| } |
| |
| public XXEnumDef populateRangerEnumDefToXX(RangerEnumDef vObj, XXEnumDef xObj, XXServiceDef serviceDef, |
| int operationContext) { |
| if(serviceDef == null) { |
| LOG.error("RangerServiceDefServiceBase.populateRangerEnumDefToXX, serviceDef can not be null"); |
| throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); |
| } |
| |
| xObj = (XXEnumDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); |
| xObj.setDefid(serviceDef.getId()); |
| xObj.setItemId(vObj.getItemId()); |
| xObj.setName(vObj.getName()); |
| xObj.setDefaultindex(vObj.getDefaultIndex()); |
| return xObj; |
| } |
| |
| public RangerEnumDef populateXXToRangerEnumDef(XXEnumDef xObj) { |
| RangerEnumDef vObj = new RangerEnumDef(); |
| vObj.setItemId(xObj.getItemId()); |
| vObj.setName(xObj.getName()); |
| vObj.setDefaultIndex(xObj.getDefaultindex()); |
| |
| List<XXEnumElementDef> xElements = daoMgr.getXXEnumElementDef().findByEnumDefId(xObj.getId()); |
| List<RangerEnumElementDef> elements = new ArrayList<RangerEnumElementDef>(); |
| |
| for(XXEnumElementDef xEle : xElements) { |
| RangerEnumElementDef element = populateXXToRangerEnumElementDef(xEle); |
| elements.add(element); |
| } |
| vObj.setElements(elements); |
| |
| return vObj; |
| } |
| |
| public XXEnumElementDef populateRangerEnumElementDefToXX(RangerEnumElementDef vObj, XXEnumElementDef xObj, |
| XXEnumDef enumDef, int operationContext) { |
| if(enumDef == null) { |
| LOG.error("RangerServiceDefServiceBase.populateRangerEnumElementDefToXX, enumDef can not be null"); |
| throw restErrorUtil.createRESTException("enumDef cannot be null.", MessageEnums.DATA_NOT_FOUND); |
| } |
| |
| xObj = (XXEnumElementDef) rangerAuditFields.populateAuditFields(xObj, enumDef); |
| xObj.setEnumdefid(enumDef.getId()); |
| xObj.setItemId(vObj.getItemId()); |
| xObj.setName(vObj.getName()); |
| xObj.setLabel(vObj.getLabel()); |
| xObj.setRbkeylabel(vObj.getRbKeyLabel()); |
| xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); |
| return xObj; |
| } |
| |
| public RangerEnumElementDef populateXXToRangerEnumElementDef(XXEnumElementDef xObj) { |
| RangerEnumElementDef vObj = new RangerEnumElementDef(); |
| vObj.setItemId(xObj.getItemId()); |
| vObj.setName(xObj.getName()); |
| vObj.setLabel(xObj.getLabel()); |
| vObj.setRbKeyLabel(xObj.getRbkeylabel()); |
| return vObj; |
| } |
| |
| public XXDataMaskTypeDef populateRangerDataMaskDefToXX(RangerDataMaskTypeDef vObj, XXDataMaskTypeDef xObj, |
| XXServiceDef serviceDef, int operationContext) { |
| if(serviceDef == null) { |
| LOG.error("RangerServiceDefServiceBase.populateRangerDataMaskDefToXX, serviceDef can not be null"); |
| throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND); |
| } |
| |
| xObj = (XXDataMaskTypeDef) rangerAuditFields.populateAuditFields(xObj, serviceDef); |
| xObj.setDefid(serviceDef.getId()); |
| xObj.setItemId(vObj.getItemId()); |
| xObj.setName(vObj.getName()); |
| xObj.setLabel(vObj.getLabel()); |
| xObj.setDescription(vObj.getDescription()); |
| xObj.setTransformer(vObj.getTransformer()); |
| xObj.setDataMaskOptions(mapToJsonString(vObj.getDataMaskOptions())); |
| xObj.setRbkeylabel(vObj.getRbKeyLabel()); |
| xObj.setRbKeyDescription(vObj.getRbKeyDescription()); |
| xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER); |
| return xObj; |
| } |
| |
| public RangerDataMaskTypeDef populateXXToRangerDataMaskTypeDef(XXDataMaskTypeDef xObj) { |
| RangerDataMaskTypeDef vObj = new RangerDataMaskTypeDef(); |
| vObj.setItemId(xObj.getItemId()); |
| vObj.setName(xObj.getName()); |
| vObj.setLabel(xObj.getLabel()); |
| vObj.setDescription(xObj.getDescription()); |
| vObj.setTransformer(xObj.getTransformer()); |
| vObj.setDataMaskOptions(jsonStringToMap(xObj.getDataMaskOptions())); |
| vObj.setRbKeyLabel(xObj.getRbkeylabel()); |
| vObj.setRbKeyDescription(xObj.getRbKeyDescription()); |
| |
| return vObj; |
| } |
| |
| public RangerServiceDefList searchRangerServiceDefs(SearchFilter searchFilter) { |
| RangerServiceDefList retList = new RangerServiceDefList(); |
| int startIndex = searchFilter.getStartIndex(); |
| int pageSize = searchFilter.getMaxRows(); |
| searchFilter.setStartIndex(0); |
| searchFilter.setMaxRows(Integer.MAX_VALUE); |
| |
| boolean isAuditPage=false; |
| if(searchFilter.getParam("pageSource")!=null){ |
| isAuditPage=true; |
| } |
| List<T> xSvcDefList = searchResources(searchFilter, searchFields, sortFields, |
| retList); |
| List<T> permittedServiceDefs = new ArrayList<T>(); |
| for (T xSvcDef : xSvcDefList) { |
| if (bizUtil.hasAccess(xSvcDef, null) || (bizUtil.isAdmin() && isAuditPage) ) { |
| permittedServiceDefs.add(xSvcDef); |
| } |
| } |
| if (permittedServiceDefs.size() > 0) { |
| populatePageList(permittedServiceDefs, startIndex, pageSize, retList); |
| } |
| return retList; |
| |
| } |
| |
| |
| private void populatePageList(List<T> xxObjList, int startIndex, int pageSize, |
| RangerServiceDefList retList) { |
| List<RangerServiceDef> onePageList = new ArrayList<RangerServiceDef>(); |
| |
| for (int i = startIndex; i < pageSize + startIndex && i < xxObjList.size(); i++) { |
| onePageList.add(populateViewBean(xxObjList.get(i))); |
| } |
| retList.setServiceDefs(onePageList); |
| retList.setStartIndex(startIndex); |
| retList.setPageSize(pageSize); |
| retList.setResultSize(onePageList.size()); |
| retList.setTotalCount(xxObjList.size()); |
| } |
| |
| private String mapToJsonString(Map<String, String> map) { |
| String ret = null; |
| |
| if(map != null) { |
| try { |
| ret = jsonUtil.readMapToString(map); |
| } catch(Exception excp) { |
| LOG.warn("mapToJsonString() failed to convert map: " + map, excp); |
| } |
| } |
| |
| return ret; |
| } |
| |
| protected Map<String, String> jsonStringToMap(String jsonStr) { |
| Map<String, String> ret = null; |
| |
| if(!StringUtils.isEmpty(jsonStr)) { |
| try { |
| ret = jsonUtil.jsonToMap(jsonStr); |
| } catch(Exception excp) { |
| // fallback to earlier format: "name1=value1;name2=value2" |
| for(String optionString : jsonStr.split(";")) { |
| if(StringUtils.isEmpty(optionString)) { |
| continue; |
| } |
| |
| String[] nvArr = optionString.split("="); |
| |
| String name = (nvArr != null && nvArr.length > 0) ? nvArr[0].trim() : null; |
| String value = (nvArr != null && nvArr.length > 1) ? nvArr[1].trim() : null; |
| |
| if(StringUtils.isEmpty(name)) { |
| continue; |
| } |
| |
| if(ret == null) { |
| ret = new HashMap<String, String>(); |
| } |
| |
| ret.put(name, value); |
| } |
| } |
| } |
| |
| return ret; |
| } |
| |
| public String objectToJson(Serializable obj) { |
| String ret = null; |
| |
| if(obj != null) { |
| try { |
| ret = jsonUtil.writeObjectAsString(obj); |
| } catch(Exception excp) { |
| LOG.warn("objectToJson() failed to convert object to json: " + obj, excp); |
| } |
| } |
| |
| return ret; |
| } |
| |
| public <DST> DST jsonToObject(String jsonStr, Class<DST> clz) { |
| DST ret = null; |
| |
| if(StringUtils.isNotEmpty(jsonStr)) { |
| try { |
| ret = jsonUtil.writeJsonToJavaObject(jsonStr, clz); |
| } catch(Exception excp) { |
| LOG.warn("jsonToObject() failed to convert json to object: " + jsonStr, excp); |
| } |
| } |
| |
| return ret; |
| } |
| } |