Repository: incubator-ranger
Updated Branches:
  refs/heads/master 8057944c2 -> f3467abc3


RANGER-733 : Implement best coding practices to resolve issues found during 
code scan


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/f3467abc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/f3467abc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/f3467abc

Branch: refs/heads/master
Commit: f3467abc3dce82c66acaa4530ce8c6d34bb455a2
Parents: 8057944
Author: Gautam Borad <[email protected]>
Authored: Sun Dec 6 08:14:47 2015 +0530
Committer: Gautam Borad <[email protected]>
Committed: Mon Dec 7 11:00:30 2015 +0530

----------------------------------------------------------------------
 .../java/org/apache/ranger/db/XXTrxLogDao.java  |  36 +++++++
 .../patch/cliutil/XXTrxLogUpdateUtil.java       | 102 +++++++++++++++++++
 .../ranger/service/RangerPolicyService.java     |  14 +--
 .../resources/META-INF/jpa_named_queries.xml    |  12 ++-
 4 files changed, 150 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f3467abc/security-admin/src/main/java/org/apache/ranger/db/XXTrxLogDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTrxLogDao.java 
b/security-admin/src/main/java/org/apache/ranger/db/XXTrxLogDao.java
index 63e0d63..5344368 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXTrxLogDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXTrxLogDao.java
@@ -63,5 +63,41 @@ public class XXTrxLogDao extends BaseDao<XXTrxLog> {
                        return null;
                }
        }
+       public Long getMaxIdOfXXTrxLog(){
+               Long maxXTrxLogID=new Long(0);
+               try {
+                       maxXTrxLogID = (Long) getEntityManager()
+                                       
.createNamedQuery("XXTrxLog.getMaxIdOfXXTrxLog", Long.class)
+                                       .getSingleResult();
+               } catch (NoResultException e) {
+                       logger.debug(e.getMessage());
+               }finally{
+                       if(maxXTrxLogID==null){
+                               maxXTrxLogID=new Long(0);
+                       }
+               }
+               return maxXTrxLogID;
+       }
+
+       public int updateXTrxLog(long idFrom,long idTo,int objClassType,String 
attrName,String newValue){
+               int rowAffected=-1;
+               if(objClassType == 0 ||attrName==null || newValue==null){
+                       return rowAffected;
+               }
+               try {
+               //idFrom and idTo both exclusive
+               
rowAffected=getEntityManager().createNamedQuery("XXTrxLog.updateLogAttr", 
tClass)
+               .setParameter("idFrom", idFrom)
+               .setParameter("idTo", idTo)
+               .setParameter("objClassType", objClassType)
+               .setParameter("attrName", attrName)
+               .setParameter("newValue", newValue)
+               .executeUpdate();
+               }catch (NoResultException e) {
+                       logger.debug(e.getMessage());
+               }
+               return rowAffected;
+       }
+
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f3467abc/security-admin/src/main/java/org/apache/ranger/patch/cliutil/XXTrxLogUpdateUtil.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/patch/cliutil/XXTrxLogUpdateUtil.java
 
b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/XXTrxLogUpdateUtil.java
new file mode 100644
index 0000000..beafd1c
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/XXTrxLogUpdateUtil.java
@@ -0,0 +1,102 @@
+/*
+ * 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.patch.cliutil;
+
+import org.apache.log4j.Logger;
+import org.apache.ranger.common.AppConstants;
+import org.apache.ranger.db.RangerDaoManager;
+import org.apache.ranger.patch.BaseLoader;
+import org.apache.ranger.service.XPortalUserService;
+import org.apache.ranger.biz.XUserMgr;
+import org.apache.ranger.util.CLIUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class XXTrxLogUpdateUtil extends BaseLoader {
+       private static Logger logger = Logger
+                       .getLogger(XXTrxLogUpdateUtil.class);
+
+       @Autowired
+       XUserMgr xUserMgr;
+
+       @Autowired
+       XPortalUserService xPortalUserService;
+
+       @Autowired
+       RangerDaoManager daoManager;
+
+       public static void main(String[] args) {
+               logger.info("main()");
+               try {
+                       XXTrxLogUpdateUtil loader = (XXTrxLogUpdateUtil) CLIUtil
+                                       .getBean(XXTrxLogUpdateUtil.class);
+
+                       loader.init();
+                       while (loader.isMoreToProcess()) {
+                               loader.load();
+                       }
+                       logger.info("Load complete. Exiting!!!");
+                       System.exit(0);
+               } catch (Exception e) {
+                       logger.error("Error loading", e);
+                       System.exit(1);
+               }
+       }
+
+       @Override
+       public void init() throws Exception {
+               // Do Nothing
+       }
+
+       @Override
+       public void execLoad() {
+               logger.info("==> XTrxLogUpdate.execLoad() Start.");
+               updateXTrxLog();
+               logger.info("<== XTrxLogUpdate.execLoad() End.");
+       }
+
+       public void updateXTrxLog() {
+               long maxXTrxLogID = 
daoManager.getXXTrxLog().getMaxIdOfXXTrxLog();
+               if(maxXTrxLogID==0){
+                       return;
+               }
+               long maxRowsPerBatch=10000;
+               //To ceil the actual division result i.e 
noOfBatches=maxXTrxLogID/maxRowsPerBatch
+               long 
noOfBatches=(maxXTrxLogID+maxRowsPerBatch-1)/maxRowsPerBatch;
+               long minRange=0;
+               long maxRange=maxXTrxLogID<=maxRowsPerBatch ? maxXTrxLogID : 
maxRowsPerBatch;
+               long startTimeInMS=0;
+               long timeTaken=0;
+               for(long index=1;index<=noOfBatches;index++){
+                       logger.info("Batch "+ index+" of total "+noOfBatches);
+                       startTimeInMS=System.currentTimeMillis();
+                       //minRange and maxRange both exclusive, if we add +1 in 
maxRange
+                       int 
rowsAffected=daoManager.getXXTrxLog().updateXTrxLog(minRange,maxRange+1,AppConstants.CLASS_TYPE_XA_USER,"Password",AppConstants.Masked_String);
+                       timeTaken=(System.currentTimeMillis()-startTimeInMS);
+                       logger.info(rowsAffected +" rows affected 
("+timeTaken+" ms)");
+                       minRange=maxRange;
+                       maxRange=maxRange+maxRowsPerBatch;
+               }
+       }
+
+       @Override
+       public void printStats() {
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f3467abc/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java
index aaadea7..4a14ab9 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java
@@ -381,19 +381,7 @@ public class RangerPolicyService extends 
RangerPolicyServiceBase<XXPolicy, Range
        }
 
        private boolean compareTwoPolicyName(String value, String oldValue) {
-               if (value==null && oldValue==null) {
-                       return 
org.apache.commons.lang.StringUtils.equals(value, oldValue);
-               }
-               if (value!=null && oldValue!=null && value.trim().isEmpty() && 
oldValue.trim().isEmpty()) {
-                       return true;
-               }
-               if (stringUtil.isEmpty(value) || stringUtil.isEmpty(oldValue)) {
-                       return false;
-               }
-               if(!value.equals(oldValue)) {
-                       return false;
-               }
-               return true;
+               return org.apache.commons.lang.StringUtils.equals(value, 
oldValue);
        }
 
        private String processPolicyNameForTrxLog(Object value) {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f3467abc/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 ac1c87a..f3aa431 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
@@ -865,5 +865,15 @@
        </named-query>  
 
        <!-- End <== JPA Queries for Tag Based Policies  -->
-       
+       <named-query name="XXTrxLog.getMaxIdOfXXTrxLog">
+               <query>select max(obj.id) from XXTrxLog obj</query>
+       </named-query>
+       <named-query name="XXTrxLog.updateLogAttr">
+               <query>UPDATE XXTrxLog obj SET obj.newValue = :newValue
+                       WHERE obj.id &gt; :idFrom
+                         AND obj.id &lt; :idTo
+                         AND obj.objectClassType = :objClassType
+                         AND obj.attributeName = :attrName
+               </query>
+    </named-query>
 </entity-mappings>

Reply via email to