ARGUS-183:Fix for search policies API failing in Oracle

Signed-off-by: sneethiraj <[email protected]>


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

Branch: refs/heads/ranger-0.4
Commit: 487d1bfbb9c546a834dad7c7550eba0c4190de8c
Parents: c75662e
Author: vperiasamy <[email protected]>
Authored: Thu Nov 13 18:34:11 2014 -0500
Committer: sneethiraj <[email protected]>
Committed: Sun Dec 7 01:16:14 2014 -0500

----------------------------------------------------------------------
 .../main/java/com/xasecure/biz/XABizUtil.java   | 36 +++++++++++++++++
 .../java/com/xasecure/common/AppConstants.java  | 42 ++++++++++++++++++++
 .../com/xasecure/common/SearchCriteria.java     | 12 ++++++
 .../main/java/com/xasecure/rest/AssetREST.java  |  2 +-
 4 files changed, 91 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/487d1bfb/security-admin/src/main/java/com/xasecure/biz/XABizUtil.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/com/xasecure/biz/XABizUtil.java 
b/security-admin/src/main/java/com/xasecure/biz/XABizUtil.java
index 6dc21a4..5a071c4 100644
--- a/security-admin/src/main/java/com/xasecure/biz/XABizUtil.java
+++ b/security-admin/src/main/java/com/xasecure/biz/XABizUtil.java
@@ -1277,4 +1277,40 @@ public class XABizUtil {
                        daoManager.getXXTrxLog().create(xTrxLog);
                }
        }
+
+       public static int getDBFlavor() {
+
+               String dbFlavor = "";
+               boolean dbFlavorPropFound = true;
+
+               dbFlavor = PropertiesUtil.getProperty("xa.db.flavor");
+               if (dbFlavor == null || dbFlavor.trim().isEmpty()) {
+                       dbFlavor = PropertiesUtil.getProperty("jdbc.dialect");
+                       dbFlavorPropFound = false;
+               }
+
+               if (dbFlavor != null && !dbFlavor.trim().isEmpty()) {
+                       if (dbFlavorPropFound) {
+                               if ("MYSQL".equalsIgnoreCase(dbFlavor)) {
+                                       return AppConstants.DB_FLAVOR_MYSQL;
+                               } else if ("ORACLE".equalsIgnoreCase(dbFlavor)) 
{
+                                       return AppConstants.DB_FLAVOR_ORACLE;
+                               } else {
+                                       return AppConstants.DB_FLAVOR_UNKNOWN;
+                               }
+                       } else {
+                               if (dbFlavor.toUpperCase().contains("MYSQL")) {
+                                       return AppConstants.DB_FLAVOR_MYSQL;
+                               } else if 
(dbFlavor.toUpperCase().contains("ORACLE")) {
+                                       return AppConstants.DB_FLAVOR_ORACLE;
+                               } else {
+                                       return AppConstants.DB_FLAVOR_UNKNOWN;
+                               }
+                       }
+               } else {
+                       logger.error("Property : xa.db.flavor or jdbc.dialect, 
not found");
+                       return AppConstants.DB_FLAVOR_UNKNOWN;
+               }
+       }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/487d1bfb/security-admin/src/main/java/com/xasecure/common/AppConstants.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/com/xasecure/common/AppConstants.java 
b/security-admin/src/main/java/com/xasecure/common/AppConstants.java
index 86ba6da..c4e5991 100644
--- a/security-admin/src/main/java/com/xasecure/common/AppConstants.java
+++ b/security-admin/src/main/java/com/xasecure/common/AppConstants.java
@@ -351,6 +351,22 @@ public class AppConstants extends XACommonEnums {
         */
        public static final int XAPermType_MAX = 31;
 
+       /***************************************************************
+        * Enum values for DatabaseFavor
+        **************************************************************/
+       /**
+        * DB Favor Unknown
+        */
+       public static final int DB_FLAVOR_UNKNOWN = 0;
+       /**
+        * DB Favor MySql
+        */
+       public static final int DB_FLAVOR_MYSQL = 1;
+       /**
+        * DB Favor Oracle
+        */
+       public static final int DB_FLAVOR_ORACLE = 2;
+
 
        /***************************************************************
         * Enum values for ClassTypes
@@ -908,5 +924,31 @@ public class AppConstants extends XACommonEnums {
                return 0;
        }
 
+       static public int getEnumFor_DatabaseFlavor(String label) {
+               if (label == null) {
+                       return DB_FLAVOR_UNKNOWN; // DB_FLAVOR_UNKNOWN
+               }
+               if ("MYSQL".equalsIgnoreCase(label)) {
+                       return DB_FLAVOR_MYSQL; // DB_FLAVOR_MYSQL
+               }
+               if ("ORACLE".equalsIgnoreCase(label)) {
+                       return DB_FLAVOR_ORACLE; // DB_FLAVOR_ORACLE
+               }
+               return DB_FLAVOR_UNKNOWN;
+       }
+
+       static public String getLabelFor_DatabaseFlavor(int elementValue) {
+               if (elementValue == DB_FLAVOR_UNKNOWN) {
+                       return "UNKNOWN"; // Unknown
+               }
+               if (elementValue == DB_FLAVOR_MYSQL) {
+                       return "MYSQL"; // MYSQL
+               }
+               if (elementValue == DB_FLAVOR_ORACLE) {
+                       return "ORACLE"; // ORACLE
+               }
+               return null;
+       }
+
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/487d1bfb/security-admin/src/main/java/com/xasecure/common/SearchCriteria.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/com/xasecure/common/SearchCriteria.java 
b/security-admin/src/main/java/com/xasecure/common/SearchCriteria.java
index bb85fe4..c1df00f 100644
--- a/security-admin/src/main/java/com/xasecure/common/SearchCriteria.java
+++ b/security-admin/src/main/java/com/xasecure/common/SearchCriteria.java
@@ -28,8 +28,13 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.log4j.Logger;
+
+import com.xasecure.biz.XABizUtil;
+
 
 public class SearchCriteria {
+       Logger logger = Logger.getLogger(SearchCriteria.class);
 
        int startIndex = 0;
        int maxRows = Integer.MAX_VALUE;
@@ -182,6 +187,13 @@ public class SearchCriteria {
         *            the isDistinct to set
         */
        public void setDistinct(boolean isDistinct) {
+
+               int dbFlavor = XABizUtil.getDBFlavor();
+               if (isDistinct && dbFlavor == AppConstants.DB_FLAVOR_ORACLE) {
+                       isDistinct = false;
+                       logger.debug("Database flavor is `ORACLE` so ignoring 
DISTINCT "
+                                       + "clause from select statement.");
+               }
                this.isDistinct = isDistinct;
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/487d1bfb/security-admin/src/main/java/com/xasecure/rest/AssetREST.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/com/xasecure/rest/AssetREST.java 
b/security-admin/src/main/java/com/xasecure/rest/AssetREST.java
index e187a78..2662409 100644
--- a/security-admin/src/main/java/com/xasecure/rest/AssetREST.java
+++ b/security-admin/src/main/java/com/xasecure/rest/AssetREST.java
@@ -334,7 +334,7 @@ public class AssetREST {
                // searchUtil.addSearchGroup(searchCriteria, outerGroup);
                //
                // }
-               //searchCriteria.setDistinct(true);
+               searchCriteria.setDistinct(true);
 
                return assetMgr.searchXResources(searchCriteria);
        }

Reply via email to