dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #36237
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18553: SQL views. Impl support for materialized sql views.
------------------------------------------------------------
revno: 18553
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2015-03-10 12:36:58 +0100
message:
SQL views. Impl support for materialized sql views.
added:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewType.java
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlView.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewService.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewStore.java
dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java
dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/sqlview/DefaultSqlViewService.java
dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/sqlview/jdbc/JdbcSqlViewStore.java
dhis-2/dhis-services/dhis-service-administration/src/main/resources/org/hisp/dhis/sqlview/hibernate/SqlView.hbm.xml
dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/sqlview/SqlViewServiceTest.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java
dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/AddSqlViewAction.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/RemoveSqlViewAction.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/ValidateAddUpdateSqlViewAction.java
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/addSqlViewForm.vm
dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/updateSqlViewForm.vm
--
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-26 15:21:29 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlView.java 2015-03-10 11:36:58 +0000
@@ -74,7 +74,7 @@
private String sqlQuery;
- private boolean query;
+ private SqlViewType type;
// -------------------------------------------------------------------------
// Constructors
@@ -84,11 +84,11 @@
{
}
- public SqlView( String name, String sqlQuery, boolean query )
+ public SqlView( String name, String sqlQuery, SqlViewType type )
{
this.name = name;
this.sqlQuery = sqlQuery;
- this.query = query;
+ this.type = type;
}
// -------------------------------------------------------------------------
@@ -176,6 +176,14 @@
return this;
}
+ /**
+ * Indicates whether this SQL view is a query.
+ */
+ public boolean isQuery()
+ {
+ return SqlViewType.QUERY.equals( type );
+ }
+
// -------------------------------------------------------------------------
// Getters and setters
// -------------------------------------------------------------------------
@@ -210,16 +218,15 @@
@JsonProperty
@JsonView( { DetailedView.class, ExportView.class } )
@JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 )
- public boolean isQuery()
+ public SqlViewType getType()
{
- return query;
+ return type;
}
- public void setQuery( boolean query )
+ public void setType( SqlViewType type )
{
- this.query = query;
+ this.type = type;
}
-
@Override
public void mergeWith( IdentifiableObject other, MergeStrategy strategy )
@@ -234,13 +241,13 @@
{
description = sqlView.getDescription();
sqlQuery = sqlView.getSqlQuery();
- query = sqlView.isQuery();
+ type = sqlView.getType();
}
else if ( strategy.isMerge() )
{
description = sqlView.getDescription() == null ? description : sqlView.getDescription();
sqlQuery = sqlView.getSqlQuery() == null ? sqlQuery : sqlView.getSqlQuery();
- query = sqlView.isQuery();
+ type = sqlView.getType() == null ? type : sqlView.getType();
}
}
}
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewService.java 2015-03-03 16:18:51 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewService.java 2015-03-10 11:36:58 +0000
@@ -86,7 +86,7 @@
String createViewTable( SqlView sqlView );
- void dropViewTable( String viewName );
+ void dropViewTable( SqlView sqlView );
/**
* Returns the SQL view as a grid.
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewStore.java 2015-02-12 09:28:20 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewStore.java 2015-03-10 11:36:58 +0000
@@ -43,9 +43,9 @@
boolean viewTableExists( String viewTableName );
- String createViewTable( SqlView sqlViewInstance );
+ String createViewTable( SqlView sqlView );
- void dropViewTable( String sqlViewName );
+ void dropViewTable( SqlView sqlView );
void setUpDataSqlViewTable( Grid sqlViewGrid, String viewTableName, Map<String, String> criteria );
=== added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewType.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewType.java 1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/sqlview/SqlViewType.java 2015-03-10 11:36:58 +0000
@@ -0,0 +1,34 @@
+package org.hisp.dhis.sqlview;
+
+/*
+ * Copyright (c) 2004-2015, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * Neither the name of the HISP project nor the names of its contributors may
+ * be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+public enum SqlViewType
+{
+ VIEW, MATERIALIZED_VIEW, QUERY
+}
=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java'
--- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java 2015-03-03 16:18:51 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java 2015-03-10 11:36:58 +0000
@@ -548,7 +548,7 @@
{
if ( !view.isQuery() )
{
- sqlViewService.dropViewTable( view.getViewName() );
+ sqlViewService.dropViewTable( view );
}
}
}
=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/sqlview/DefaultSqlViewService.java'
--- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/sqlview/DefaultSqlViewService.java 2015-03-03 16:18:51 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/sqlview/DefaultSqlViewService.java 2015-03-10 11:36:58 +0000
@@ -67,11 +67,14 @@
// -------------------------------------------------------------------------
@Override
- public void deleteSqlView( SqlView sqlViewObject )
+ public void deleteSqlView( SqlView sqlView )
{
- dropViewTable( sqlViewObject.getViewName() );
+ if ( !sqlView.isQuery() )
+ {
+ dropViewTable( sqlView );
+ }
- sqlViewStore.delete( sqlViewObject );
+ sqlViewStore.delete( sqlView );
}
@Override
@@ -105,15 +108,15 @@
}
@Override
- public int saveSqlView( SqlView sqlViewObject )
+ public int saveSqlView( SqlView sqlView )
{
- return sqlViewStore.save( sqlViewObject );
+ return sqlViewStore.save( sqlView );
}
@Override
- public void updateSqlView( SqlView sqlViewObject )
+ public void updateSqlView( SqlView sqlView )
{
- sqlViewStore.update( sqlViewObject );
+ sqlViewStore.update( sqlView );
}
@Override
@@ -282,8 +285,8 @@
}
@Override
- public void dropViewTable( String sqlViewTableName )
+ public void dropViewTable( SqlView sqlView )
{
- sqlViewStore.dropViewTable( sqlViewTableName );
+ sqlViewStore.dropViewTable( sqlView );
}
}
\ No newline at end of file
=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/sqlview/jdbc/JdbcSqlViewStore.java'
--- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/sqlview/jdbc/JdbcSqlViewStore.java 2015-03-02 15:49:50 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/sqlview/jdbc/JdbcSqlViewStore.java 2015-03-10 11:36:58 +0000
@@ -37,10 +37,13 @@
import org.hisp.dhis.jdbc.StatementBuilder;
import org.hisp.dhis.sqlview.SqlView;
import org.hisp.dhis.sqlview.SqlViewStore;
+import org.hisp.dhis.sqlview.SqlViewType;
import org.hisp.dhis.system.util.SqlHelper;
import org.springframework.jdbc.BadSqlGrammarException;
import org.springframework.jdbc.support.rowset.SqlRowSet;
+import com.google.common.collect.ImmutableMap;
+
/**
* @author Dang Duy Hieu
*/
@@ -50,8 +53,13 @@
{
private static final Log log = LogFactory.getLog( JdbcSqlViewStore.class );
- private static final String PREFIX_CREATEVIEW_QUERY = "CREATE VIEW ";
private static final String PREFIX_SELECT_QUERY = "SELECT * FROM ";
+
+ private static final Map<SqlViewType, String> TYPE_CREATE_PREFIX_MAP =
+ ImmutableMap.of( SqlViewType.VIEW, "CREATE VIEW ", SqlViewType.MATERIALIZED_VIEW, "CREATE MATERIALIZED VIEW " );
+
+ private static final Map<SqlViewType, String> TYPE_DROP_PREFIX_MAP =
+ ImmutableMap.of( SqlViewType.VIEW, "DROP VIEW ", SqlViewType.MATERIALIZED_VIEW, "DROP MATERIALIZED VIEW " );
// -------------------------------------------------------------------------
// Dependencies
@@ -86,11 +94,9 @@
@Override
public String createViewTable( SqlView sqlView )
{
- String viewName = sqlView.getViewName();
-
- dropViewTable( viewName );
-
- final String sql = PREFIX_CREATEVIEW_QUERY + statementBuilder.columnQuote( viewName ) + " AS " + sqlView.getSqlQuery();
+ dropViewTable( sqlView );
+
+ final String sql = TYPE_CREATE_PREFIX_MAP.get( sqlView.getType() ) + statementBuilder.columnQuote( sqlView.getViewName() ) + " AS " + sqlView.getSqlQuery();
log.debug( "Create view SQL: " + sql );
@@ -138,9 +144,9 @@
@Override
public String testSqlGrammar( String sql )
{
- String viewNameCheck = SqlView.PREFIX_VIEWNAME + System.currentTimeMillis();
+ String viewName = SqlView.PREFIX_VIEWNAME + System.currentTimeMillis();
- sql = PREFIX_CREATEVIEW_QUERY + viewNameCheck + " AS " + sql;
+ sql = "CREATE VIEW " + viewName + " AS " + sql;
log.debug( "Test view SQL: " + sql );
@@ -148,7 +154,7 @@
{
jdbcTemplate.execute( sql );
- dropViewTable( viewNameCheck );
+ jdbcTemplate.execute( "DROP VIEW IF EXISTS " + viewName );
}
catch ( BadSqlGrammarException ex )
{
@@ -159,11 +165,13 @@
}
@Override
- public void dropViewTable( String viewName )
+ public void dropViewTable( SqlView sqlView )
{
+ String viewName = sqlView.getViewName();
+
try
{
- final String sql = "DROP VIEW IF EXISTS " + statementBuilder.columnQuote( viewName );
+ final String sql = TYPE_DROP_PREFIX_MAP.get( sqlView.getType() ) + " IF EXISTS " + statementBuilder.columnQuote( viewName );
log.debug( "Drop view SQL: " + sql );
=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/resources/org/hisp/dhis/sqlview/hibernate/SqlView.hbm.xml'
--- dhis-2/dhis-services/dhis-service-administration/src/main/resources/org/hisp/dhis/sqlview/hibernate/SqlView.hbm.xml 2015-02-11 22:32:01 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/resources/org/hisp/dhis/sqlview/hibernate/SqlView.hbm.xml 2015-03-10 11:36:58 +0000
@@ -19,7 +19,12 @@
<property name="sqlQuery" not-null="true" type="text" />
- <property name="query" />
+ <property name="type" length="40">
+ <type name="org.hibernate.type.EnumType">
+ <param name="enumClass">org.hisp.dhis.sqlview.SqlViewType</param>
+ <param name="type">12</param>
+ </type>
+ </property>
<!-- Access properties -->
<property name="externalAccess" />
=== 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-18 12:16:29 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/test/java/org/hisp/dhis/sqlview/SqlViewServiceTest.java 2015-03-10 11:36:58 +0000
@@ -225,7 +225,7 @@
@Test( expected = IllegalQueryException.class )
public void testValidateIllegalKeywords()
{
- SqlView sqlView = new SqlView( "Name", "delete * from dataelement", true );
+ SqlView sqlView = new SqlView( "Name", "delete * from dataelement", SqlViewType.QUERY );
sqlViewService.validateSqlView( sqlView, null, null );
}
@@ -233,7 +233,7 @@
@Test( expected = IllegalQueryException.class )
public void testValidateProtectedTables()
{
- SqlView sqlView = new SqlView( "Name", "select * from userinfo where userinfoid=1", true );
+ SqlView sqlView = new SqlView( "Name", "select * from userinfo where userinfoid=1", SqlViewType.QUERY );
sqlViewService.validateSqlView( sqlView, null, null );
}
@@ -241,7 +241,7 @@
@Test( expected = IllegalQueryException.class )
public void testValidateMissingVariables()
{
- SqlView sqlView = new SqlView( "Name", "select * from dataelement where valueType = '${valueType}' and aggregationtype = '${aggregationType}'", true );
+ SqlView sqlView = new SqlView( "Name", "select * from dataelement where valueType = '${valueType}' and aggregationtype = '${aggregationType}'", SqlViewType.QUERY );
Map<String, String> variables = new HashMap<>();
variables.put( "valueType", "int" );
@@ -252,7 +252,7 @@
@Test( expected = IllegalQueryException.class )
public void testValidateIllegalSemiColon()
{
- SqlView sqlView = new SqlView( "Name", "select * from dataelement; delete from dataelement", true );
+ SqlView sqlView = new SqlView( "Name", "select * from dataelement; delete from dataelement", SqlViewType.QUERY );
sqlViewService.validateSqlView( sqlView, null, null );
}
@@ -260,7 +260,7 @@
@Test( expected = IllegalQueryException.class )
public void testValidateNotSelectQuery()
{
- SqlView sqlView = new SqlView( "Name", "* from dataelement", true );
+ SqlView sqlView = new SqlView( "Name", "* from dataelement", SqlViewType.QUERY );
sqlViewService.validateSqlView( sqlView, null, null );
}
@@ -268,7 +268,7 @@
@Test
public void testValidateSuccessA()
{
- SqlView sqlView = new SqlView( "Name", "select * from dataelement where valueType = '${valueType}'", true );
+ SqlView sqlView = new SqlView( "Name", "select * from dataelement where valueType = '${valueType}'", SqlViewType.QUERY );
Map<String, String> variables = new HashMap<>();
variables.put( "valueType", "int" );
@@ -279,7 +279,7 @@
@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 );
+ SqlView sqlView = new SqlView( "Name", "select ug.name from usergroup ug where ug.name ~* '^OU\\s(\\w.*)\\sAgency\\s(\\w.*)\\susers$'", SqlViewType.QUERY );
sqlViewService.validateSqlView( sqlView, null, null );
}
@@ -287,7 +287,7 @@
@Test
public void testValidateSuccessC()
{
- SqlView sqlView = new SqlView( "Name", "SELECT a.dataelementid as dsd_id,a.name as dsd_name,b.dataelementid as ta_id,b.ta_name FROM dataelement a", false );
+ SqlView sqlView = new SqlView( "Name", "SELECT a.dataelementid as dsd_id,a.name as dsd_name,b.dataelementid as ta_id,b.ta_name FROM dataelement a", SqlViewType.QUERY );
sqlViewService.validateSqlView( sqlView, null, null );
}
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2015-02-18 13:39:52 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2015-03-10 11:36:58 +0000
@@ -707,8 +707,9 @@
executeSql( "alter table validationrulegroup rename column validationgroupid to validationrulegroupid" );
executeSql( "update sqlview set sqlviewid=viweid" );
executeSql( "alter table sqlview drop column viewid" );
- executeSql( "update sqlview set query = false where query is null" );
-
+ executeSql( "update sqlview set type = 'QUERY' where query is true" );
+ executeSql( "update sqlview set type = 'VIEW' where type is null" );
+
executeSql( "UPDATE dashboard SET publicaccess='--------' WHERE publicaccess is null" );
executeSql( "UPDATE optionset SET version=0 WHERE version IS NULL" );
=== modified file 'dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java'
--- dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java 2015-02-24 13:16:58 +0000
+++ dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/DhisConvenienceTest.java 2015-03-10 11:36:58 +0000
@@ -89,6 +89,7 @@
import org.hisp.dhis.program.ProgramTrackedEntityAttribute;
import org.hisp.dhis.relationship.RelationshipType;
import org.hisp.dhis.sqlview.SqlView;
+import org.hisp.dhis.sqlview.SqlViewType;
import org.hisp.dhis.trackedentity.TrackedEntity;
import org.hisp.dhis.trackedentity.TrackedEntityAttribute;
import org.hisp.dhis.trackedentity.TrackedEntityAttributeGroup;
@@ -1309,7 +1310,7 @@
sqlView.setName( "SqlView" + uniqueCharacter );
sqlView.setDescription( "Description" + uniqueCharacter );
sqlView.setSqlQuery( sql );
- sqlView.setQuery( false );
+ sqlView.setType( SqlViewType.VIEW );
return sqlView;
}
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/AddSqlViewAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/AddSqlViewAction.java 2015-02-11 22:54:43 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/AddSqlViewAction.java 2015-03-10 11:36:58 +0000
@@ -30,6 +30,7 @@
import org.hisp.dhis.sqlview.SqlView;
import org.hisp.dhis.sqlview.SqlViewService;
+import org.hisp.dhis.sqlview.SqlViewType;
import com.opensymphony.xwork2.Action;
@@ -75,11 +76,11 @@
this.sqlquery = sqlquery;
}
- private boolean query;
+ private String type;
- public void setQuery( boolean query )
+ public void setType( String type )
{
- this.query = query;
+ this.type = type;
}
// -------------------------------------------------------------------------
@@ -94,7 +95,7 @@
sqlView.setName( name );
sqlView.setDescription( description );
sqlView.setSqlQuery( sqlquery );
- sqlView.setQuery( query );
+ sqlView.setType( SqlViewType.valueOf( type ) );
sqlViewService.saveSqlView( sqlView.cleanSqlQuery() );
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/RemoveSqlViewAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/RemoveSqlViewAction.java 2015-02-11 22:54:43 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/RemoveSqlViewAction.java 2015-03-10 11:36:58 +0000
@@ -29,6 +29,8 @@
*/
import com.opensymphony.xwork2.Action;
+
+import org.hisp.dhis.sqlview.SqlView;
import org.hisp.dhis.sqlview.SqlViewService;
/**
@@ -69,7 +71,9 @@
public String execute()
throws Exception
{
- sqlViewService.deleteSqlView( sqlViewService.getSqlView( id ) );
+ SqlView sqlView = sqlViewService.getSqlView( id );
+
+ sqlViewService.deleteSqlView( sqlView );
return SUCCESS;
}
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/ValidateAddUpdateSqlViewAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/ValidateAddUpdateSqlViewAction.java 2015-02-12 19:37:50 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/sqlview/ValidateAddUpdateSqlViewAction.java 2015-03-10 11:36:58 +0000
@@ -32,6 +32,7 @@
import org.hisp.dhis.i18n.I18n;
import org.hisp.dhis.sqlview.SqlView;
import org.hisp.dhis.sqlview.SqlViewService;
+import org.hisp.dhis.sqlview.SqlViewType;
import com.opensymphony.xwork2.Action;
@@ -140,7 +141,7 @@
try
{
- SqlView sqlView = new SqlView( name, sqlquery, false ); // Avoid variable check
+ SqlView sqlView = new SqlView( name, sqlquery, SqlViewType.VIEW ); // Avoid variable check
sqlViewService.validateSqlView( sqlView, null, null );
}
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties 2015-02-20 14:53:31 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties 2015-03-10 11:36:58 +0000
@@ -188,8 +188,10 @@
sql_view=SQL View
sql_type=SQL type
sql_view_type=SQL view
+materialized_sql_view_type=Materialized SQL view
sql_query_type=SQL query
created_in_database=created in database
+materialized_in_database=materialized in database
allows_for_variables=allows for variables
sql_statement=SQL Statement
run=Execute query
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/addSqlViewForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/addSqlViewForm.vm 2015-02-11 22:32:01 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/addSqlViewForm.vm 2015-03-10 11:36:58 +0000
@@ -18,11 +18,12 @@
<td><textarea id="description" name="description"></textarea></td>
</tr>
<tr>
- <td><label for="query">$encoder.htmlEncode( $i18n.getString( "sql_type" ) )</label></td>
+ <td><label for="type">$encoder.htmlEncode( $i18n.getString( "sql_type" ) )</label></td>
<td>
- <select id="query" name="query">
- <option value="false">$i18n.getString( "sql_view_type" ) ($i18n.getString( "created_in_database" ))</option>
- <option value="true">$i18n.getString( "sql_query_type" ) ($i18n.getString( "allows_for_variables" ))</option>
+ <select id="type" name="type">
+ <option value="VIEW">$i18n.getString( "sql_view_type" ) ($i18n.getString( "created_in_database" ))</option>
+ <option value="MATERIALIZED_VIEW">$i18n.getString( "materialized_sql_view_type" ) ($i18n.getString( "materialized_in_database" ))</option>
+ <option value="QUERY">$i18n.getString( "sql_query_type" ) ($i18n.getString( "allows_for_variables" ))</option>
</select>
</td>
</tr>
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/updateSqlViewForm.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/updateSqlViewForm.vm 2015-02-12 09:51:39 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/updateSqlViewForm.vm 2015-03-10 11:36:58 +0000
@@ -2,6 +2,14 @@
<h3>$encoder.htmlEncode( $i18n.getString( "update_sql_view" ) )</h3>
+#if( "VIEW" == $sqlViewObject.type )
+#set( $type = $i18n.getString( "sql_view_type" ) )
+#elseif( "MATERIALIZED_VIEW" == $sqlViewObject.type )
+#set( $type = $i18n.getString( "materialized_sql_view_type" ) )
+#elseif( "QUERY" == $sqlViewObject.type )
+#set( $type = $i18n.getString( "sql_query_type" ) )
+#end
+
<form id="updateSqlViewForm" action="updateSqlViewInstance.action" method="post" class="inputForm">
<div>
@@ -28,10 +36,10 @@
</tr>
<tr>
<td><label>$encoder.htmlEncode( $i18n.getString( "sql_type" ) )</label></td>
- <td><input type="text" disabled="disabled" value="#if( $sqlViewObject.query == true )$i18n.getString( "sql_query_type" )#else$i18n.getString( "sql_view_type" )#end"/></td>
+ <td><input type="text" disabled="disabled" value="${type}"/></td>
</tr>
<tr>
- <td><label for="sql_statement">$encoder.htmlEncode( $i18n.getString( "sql_statement" ) ) <em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
+ <td><label for="sqlquery">$encoder.htmlEncode( $i18n.getString( "sql_statement" ) ) <em title="$i18n.getString( 'required' )" class="required">*</em></label></td>
<td>
<textarea type="text" id="sqlquery" name="sqlquery" style="width:80em;height:20em">$!encoder.htmlEncode( $!sqlViewObject.sqlQuery )</textarea>
</td>