blob: 9fa77f20acc622ed8f93f6c9d57a69eb67e4e406 [file] [log] [blame]
/*
* 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.db;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.NoResultException;
import org.apache.log4j.Logger;
import org.apache.ranger.common.db.BaseDao;
import org.apache.ranger.entity.XXResource;
public class XXResourceDao extends BaseDao<XXResource> {
private static final Logger logger = Logger.getLogger(XXResourceDao.class);
public XXResourceDao(RangerDaoManagerBase daoManager) {
super(daoManager);
}
public XXResource findByResourceName(String name) {
if (daoManager.getStringUtil().isEmpty(name)) {
logger.debug("name is empty");
return null;
}
try {
return getEntityManager()
.createNamedQuery("XXResource.findByResourceName",
XXResource.class).setParameter("name", name.trim())
.getSingleResult();
} catch (NoResultException e) {
// ignore
}
return null;
}
public List<XXResource> findUpdatedResourcesByAssetId(
Long assetId, Date lastUpdated) {
if (assetId != null) {
try {
return getEntityManager()
.createNamedQuery("XXResource.findUpdatedResourcesByAssetId",
XXResource.class)
.setParameter("assetId", assetId)
.setParameter("lastUpdated", lastUpdated)
.getResultList();
} catch (NoResultException e) {
logger.debug(e.getMessage());
}
} else {
logger.debug("AssetId not provided.");
return new ArrayList<XXResource>();
}
return null;
}
public List<XXResource> findByAssetId(Long assetId) {
List<XXResource> xResourceList = null;
if (assetId != null) {
try {
xResourceList = getEntityManager()
.createNamedQuery("XXResource.findByAssetId", XXResource.class)
.setParameter("assetId", assetId)
.getResultList();
} catch (NoResultException e) {
// ignore
logger.debug(e.getMessage());
}
if(xResourceList == null) {
xResourceList = new ArrayList<XXResource>();
}
} else {
logger.debug("AssetId not provided.");
xResourceList = new ArrayList<XXResource>();
}
return xResourceList;
}
public List<XXResource> findByAssetType(Integer assetType) {
List<XXResource> xResourceList = null;
if (assetType != null) {
try {
xResourceList = getEntityManager()
.createNamedQuery("XXResource.findByAssetType", XXResource.class)
.setParameter("assetType", assetType)
.getResultList();
} catch (NoResultException e) {
// ignore
logger.debug(e.getMessage());
}
if(xResourceList == null) {
xResourceList = new ArrayList<XXResource>();
}
} else {
logger.debug("AssetType not provided.");
xResourceList = new ArrayList<XXResource>();
}
return xResourceList;
}
public Timestamp getMaxUpdateTimeForAssetName(String assetName) {
if (assetName == null) {
return null;
}
try {
Date date=(Date)getEntityManager()
.createNamedQuery("XXResource.getMaxUpdateTimeForAssetName")
.setParameter("assetName", assetName)
.getSingleResult();
if(date!=null){
Timestamp timestamp=new Timestamp(date.getTime());
return timestamp;
}else{
return null;
}
} catch (NoResultException e) {
// ignore
}
return null;
}
public List<XXResource> findUpdatedResourcesByAssetName(
String assetName, Date lastUpdated) {
if (assetName != null) {
try {
return getEntityManager()
.createNamedQuery(
"XXResource.findUpdatedResourcesByAssetName",
XXResource.class)
.setParameter("assetName", assetName)
.setParameter("lastUpdated", lastUpdated)
.getResultList();
} catch (NoResultException e) {
logger.debug(e.getMessage());
}
} else {
logger.debug("Asset name not provided.");
return new ArrayList<XXResource>();
}
return null;
}
public List<XXResource> findByResourceNameAndAssetIdAndRecursiveFlag(
String name,Long assetId,int isRecursive ) {
if (daoManager.getStringUtil().isEmpty(name)) {
logger.debug("name is empty");
return null;
}
if (assetId==null) {
logger.debug("assetId is null");
return null;
}
try {
String resourceName = name.trim();
resourceName = "%"+resourceName+"%";
return getEntityManager()
.createNamedQuery(
"XXResource.findByResourceNameAndAssetIdAndRecursiveFlag",
XXResource.class).setParameter("name", resourceName)
.setParameter("assetId", assetId)
.setParameter("isRecursive", isRecursive)
.getResultList();
} catch (NoResultException e) {
// ignore
}
return null;
}
public List<XXResource> findByResourceNameAndAssetIdAndResourceType(String name,Long assetId,int resourceType) {
if (daoManager.getStringUtil().isEmpty(name)) {
logger.debug("name is empty");
return null;
}
if (assetId==null) {
logger.debug("assetId is null");
return null;
}
try {
String resourceName = name.trim();
resourceName = "%"+resourceName+"%";
return getEntityManager()
.createNamedQuery(
"XXResource.findByResourceNameAndAssetIdAndResourceType",
XXResource.class).setParameter("name", resourceName)
.setParameter("assetId", assetId)
.setParameter("resourceType", resourceType)
.getResultList();
} catch (NoResultException e) {
// ignore
}
return null;
}
@SuppressWarnings("unchecked")
public List<XXResource> findByAssetIdAndResourceTypes(Long assetId,
List<Integer> resourceType) {
if (assetId == null) {
logger.debug("assetId is null");
return null;
}
try {
StringBuilder query = new StringBuilder(
"SELECT obj FROM XXResource obj WHERE obj.assetId="
+ assetId);
String whereClause = makeWhereCaluseForResourceType(resourceType);
if (!whereClause.trim().isEmpty()) {
query.append(" and ( " + whereClause + " )");
}
return getEntityManager().createQuery(query.toString())
.getResultList();
} catch (NoResultException e) {
// ignore
}
return null;
}
private String makeWhereCaluseForResourceType(List<Integer> resourceTypes) {
StringBuilder whereClause = new StringBuilder();
if (resourceTypes != null && resourceTypes.size() != 0) {
for (int i = 0; i < resourceTypes.size() - 1; i++) {
whereClause.append("obj.resourceType=" + resourceTypes.get(i)
+ " OR ");
}
whereClause.append("obj.resourceType="
+ resourceTypes.get(resourceTypes.size() - 1));
}
return whereClause.toString();
}
public List<XXResource> findByAssetIdAndResourceStatus(Long assetId, int resourceStatus) {
List<XXResource> xResourceList = null;
if (assetId != null) {
try {
xResourceList = getEntityManager()
.createNamedQuery("XXResource.findByAssetIdAndResourceStatus", XXResource.class)
.setParameter("assetId", assetId)
.setParameter("resourceStatus", resourceStatus)
.getResultList();
} catch (NoResultException e) {
// ignore
logger.debug(e.getMessage());
}
if(xResourceList == null) {
xResourceList = new ArrayList<XXResource>();
}
} else {
logger.debug("AssetId not provided.");
xResourceList = new ArrayList<XXResource>();
}
return xResourceList;
}
}