← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18301: SQL view, regex fix

 

------------------------------------------------------------
revno: 18301
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2015-02-18 00:04:46 +0100
message:
  SQL view, regex fix
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlView.java
  dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/sqlview/SqlViewServiceTest.java


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlView.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlView.java	2015-02-12 19:37:50 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlView.java	2015-02-17 23:04:46 +0000
@@ -141,7 +141,7 @@
 
     public static String getProtectedTablesRegex()
     {
-        StringBuffer regex = new StringBuffer( "^.*?(" );
+        StringBuffer regex = new StringBuffer( "^.*?(\"|'|`|\\s|^)(" );
 
         for ( String table : PROTECTED_TABLES )
         {
@@ -150,12 +150,12 @@
 
         regex.delete( regex.length() - 1, regex.length() );
         
-        return regex.append( ").*$" ).toString();
+        return regex.append( ")(\"|'|`|\\s|$).*$" ).toString();
     }
     
     public static String getIllegalKeywordsRegex()
     {
-        StringBuffer regex = new StringBuffer( "^.*?(" );
+        StringBuffer regex = new StringBuffer( "^.*?(\\s|^)(" );
         
         for ( String word : ILLEGAL_KEYWORDS )
         {
@@ -164,7 +164,7 @@
         
         regex.delete( regex.length() - 1, regex.length() );
         
-        return regex.append( ").*$" ).toString();
+        return regex.append( ")(\\s|$).*$" ).toString();
     }
     
     public SqlView cleanSqlQuery()

=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/sqlview/SqlViewServiceTest.java'
--- dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/sqlview/SqlViewServiceTest.java	2015-02-12 19:37:50 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/sqlview/SqlViewServiceTest.java	2015-02-17 23:04:46 +0000
@@ -233,7 +233,7 @@
     @Test( expected = IllegalQueryException.class )
     public void testValidateProtectedTables()
     {
-        SqlView sqlView = new SqlView( "Name", "select * from userinfo", true );
+        SqlView sqlView = new SqlView( "Name", "select * from userinfo where userinfoid=1", true );
         
         sqlViewService.validateSqlView( sqlView, null, null );
     }
@@ -266,7 +266,7 @@
     }
     
     @Test
-    public void testValidateSuccess()
+    public void testValidateSuccessA()
     {
         SqlView sqlView = new SqlView( "Name", "select * from dataelement where valueType = '${valueType}'", true );
         
@@ -275,4 +275,12 @@
         
         sqlViewService.validateSqlView( sqlView, null, variables );
     }
+    
+    @Test
+    public void testValidateSuccessB()
+    {
+        SqlView sqlView = new SqlView( "Name", "select ug.name from usergroup ug where ug.name ~* '^OU\\s(\\w.*)\\sAgency\\s(\\w.*)\\susers$'", false );
+        
+        sqlViewService.validateSqlView( sqlView, null, null );
+    }
 }