=== 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-06-11 18:44:52 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2015-07-07 03:14:28 +0000 @@ -28,13 +28,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import org.amplecode.quick.BatchHandler; import org.amplecode.quick.BatchHandlerFactory; import org.amplecode.quick.StatementHolder; @@ -49,6 +42,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * @author Lars Helge Overland */ @@ -79,7 +79,7 @@ public void execute() { int defaultCategoryComboId = getDefaultCategoryCombo(); - int defaultOptionComboId = getDefaultOptionCombo(); + int defaultOptionComboId = getDefaultOptionCombo(); // --------------------------------------------------------------------- // Drop outdated tables @@ -271,7 +271,7 @@ executeSql( "ALTER TABLE programrule ALTER condition TYPE text" ); executeSql( "ALTER TABLE programruleaction ALTER content TYPE text" ); executeSql( "ALTER TABLE programruleaction ALTER data TYPE text" ); - + executeSql( "ALTER TABLE minmaxdataelement RENAME minvalue TO minimumvalue" ); executeSql( "ALTER TABLE minmaxdataelement RENAME maxvalue TO maximumvalue" ); @@ -484,13 +484,13 @@ executeSql( "update reporttable set coltotals = totals where coltotals is null" ); executeSql( "update reporttable set coltotals = true where coltotals is null" ); executeSql( "update reporttable set rowtotals = totals where rowtotals is null" ); - executeSql( "update reporttable set rowtotals = true where rowtotals is null" ); + executeSql( "update reporttable set rowtotals = true where rowtotals is null" ); executeSql( "alter table reporttable drop column totals" ); // reporttable col/row subtotals executeSql( "update reporttable set colsubtotals = subtotals where colsubtotals is null" ); executeSql( "update reporttable set rowsubtotals = subtotals where rowsubtotals is null" ); - + // reporttable upgrade counttype to outputtype executeSql( "update eventreport set outputtype = 'EVENT' where outputtype is null and counttype = 'events'" ); executeSql( "update eventreport set outputtype = 'TRACKED_ENTITY_INSTANCE' where outputtype is null and counttype = 'tracked_entity_instances'" ); @@ -520,7 +520,7 @@ executeSql( "update chart set userorganisationunitgrandchildren = false where userorganisationunitgrandchildren is null" ); executeSql( "update chart set hidetitle = false where hidetitle is null" ); executeSql( "update chart set sortorder = 0 where sortorder is null" ); - + executeSql( "update eventreport set showhierarchy = false where showhierarchy is null" ); executeSql( "update eventreport set counttype = 'events' where counttype is null" ); executeSql( "update eventreport set hidenadata = false where hidenadata is null" ); @@ -530,13 +530,13 @@ executeSql( "update eventreport set coltotals = totals where coltotals is null" ); executeSql( "update eventreport set coltotals = true where coltotals is null" ); executeSql( "update eventreport set rowtotals = totals where rowtotals is null" ); - executeSql( "update eventreport set rowtotals = true where rowtotals is null" ); + executeSql( "update eventreport set rowtotals = true where rowtotals is null" ); executeSql( "alter table eventreport drop column totals" ); // eventreport col/row subtotals executeSql( "update eventreport set colsubtotals = subtotals where colsubtotals is null" ); executeSql( "update eventreport set rowsubtotals = subtotals where rowsubtotals is null" ); - + // eventchart upgrade counttype to outputtype executeSql( "update eventchart set outputtype = 'EVENT' where outputtype is null and counttype = 'events'" ); executeSql( "update eventchart set outputtype = 'TRACKED_ENTITY_INSTANCE' where outputtype is null and counttype = 'tracked_entity_instances'" ); @@ -715,7 +715,7 @@ executeSql( "update sqlview set type = 'QUERY' where query is true" ); executeSql( "update sqlview set type = 'VIEW' where type is null" ); executeSql( "alter table sqlview drop column query" ); - + executeSql( "UPDATE dashboard SET publicaccess='--------' WHERE publicaccess is null" ); executeSql( "UPDATE optionset SET version=0 WHERE version IS NULL" ); @@ -748,7 +748,7 @@ executeSql( "ALTER TABLE dataelementgroupset ALTER COLUMN datadimension SET NOT NULL" ); executeSql( "UPDATE orgunitgroupset SET datadimension=true WHERE datadimension IS NULL" ); executeSql( "ALTER TABLE orgunitgroupset ALTER COLUMN datadimension SET NOT NULL" ); - + // set attribute defaults executeSql( "UPDATE attribute SET dataelementattribute=false WHERE dataelementattribute IS NULL" ); executeSql( "UPDATE attribute SET dataelementgroupattribute=false WHERE dataelementgroupattribute IS NULL" ); @@ -773,7 +773,7 @@ //update programruleaction: executeSql( "ALTER TABLE programruleaction DROP COLUMN name" ); - + // data approval executeSql( "UPDATE dataapproval SET accepted=false WHERE accepted IS NULL" ); executeSql( "ALTER TABLE dataapproval ALTER COLUMN accepted SET NOT NULL" ); @@ -786,7 +786,7 @@ // validation rule group, new column alertbyorgunits executeSql( "UPDATE validationrulegroup SET alertbyorgunits=false WHERE alertbyorgunits IS NULL" ); - + executeSql( "update expression set missingvaluestrategy = 'SKIP_IF_ANY_VALUE_MISSING' where missingvaluestrategy is null and (nullifblank is true or nullifblank is null)" ); executeSql( "update expression set missingvaluestrategy = 'NEVER_SKIP' where missingvaluestrategy is null nullifblank is false" ); executeSql( "alter table expression alter column missingvaluestrategy set not null" ); @@ -794,11 +794,11 @@ executeSql( "alter table dataelementcategoryoption alter column startdate type date" ); executeSql( "alter table dataelementcategoryoption alter column enddate type date" ); - + executeSql( "alter table dataelement drop column sortorder" ); executeSql( "alter table indicator drop column sortorder" ); executeSql( "alter table dataset drop column sortorder" ); - + executeSql( "alter table dataelement drop column active" ); executeSql( "alter table datavalue alter column value type varchar(50000)" ); @@ -807,36 +807,62 @@ executeSql( "update datavalueaudit set attributeoptioncomboid = " + defaultOptionComboId + " where attributeoptioncomboid is null" ); executeSql( "alter table datavalueaudit alter column attributeoptioncomboid set not null;" ); - + executeSql( "update dataelementcategoryoption set shortname = substring(name,0,50) where shortname is null" ); // AttributeValue executeSql( "UPDATE attributevalue SET created=now() WHERE created IS NULL" ); executeSql( "UPDATE attributevalue SET lastupdated=now() WHERE lastupdated IS NULL" ); executeSql( "ALTER TABLE attributevalue ALTER value TYPE text" ); - + executeSql( "update dashboarditem set shape = 'normal' where shape is null" ); - + executeSql( "update categoryoptioncombo set ignoreapproval = false where ignoreapproval is null" ); executeSql( "alter table version alter column versionkey set not null" ); executeSql( "alter table version add constraint version_versionkey_key unique(versionkey)" ); + oauth2(); + upgradeDataValuesWithAttributeOptionCombo(); upgradeCompleteDataSetRegistrationsWithAttributeOptionCombo(); upgradeMapViewsToAnalyticalObject(); upgradeTranslations(); updateOptions(); - + upgradeAggregationType( "reporttable" ); upgradeAggregationType( "chart" ); - + updateRelativePeriods(); log.info( "Tables updated" ); } - + + public void oauth2() + { + // OAuth2 + executeSql( "CREATE TABLE oauth_code (" + + " code VARCHAR(256), authentication " + statementBuilder.getLongVarBinaryType() + + ")" ); + + executeSql( "CREATE TABLE oauth_access_token (" + + " token_id VARCHAR(256)," + + " token " + statementBuilder.getLongVarBinaryType() + "," + + " authentication_id VARCHAR(256) PRIMARY KEY," + + " user_name VARCHAR(256)," + + " client_id VARCHAR(256)," + + " authentication " + statementBuilder.getLongVarBinaryType() + "," + + " refresh_token VARCHAR(256)" + + ")" ); + + executeSql( "CREATE TABLE oauth_refresh_token (" + + " token_id VARCHAR(256)," + + " token " + statementBuilder.getLongVarBinaryType() + "," + + " authentication " + statementBuilder.getLongVarBinaryType() + + ")" ); + } + private void upgradeAggregationType( String table ) { executeSql( "update " + table + " set aggregationtype='SUM' where aggregationtype='sum'" ); @@ -871,7 +897,7 @@ executeSql( "update relativeperiods set lastsixmonth = false where lastsixmonth is null" ); executeSql( "update relativeperiods set lastweek = false where lastweek is null" ); } - + private void upgradeDataValuesWithAttributeOptionCombo() { final String sql = statementBuilder.getNumberOfColumnsInPrimaryKey( "datavalue" ); @@ -1272,7 +1298,7 @@ } catch ( Exception ex ) { - log.debug( ex ); + log.warn( ex ); return -1; } @@ -1299,9 +1325,9 @@ String sql = "insert into optionvalue(optionvalueid, code, name, optionsetid, sort_order) " + "select " + statementBuilder.getAutoIncrementValue() + ", optionvalue, optionvalue, optionsetid, ( sort_order + 1 ) " + "from optionsetmembers"; - + int result = executeSql( sql ); - + if ( result != -1 ) { executeSql( "drop table optionsetmembers" ); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java 2015-07-06 05:55:44 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java 2015-07-07 03:14:28 +0000 @@ -200,6 +200,8 @@ hql += ")"; } + System.err.println( "hql: " + hql ); + return hql; } @@ -438,6 +440,8 @@ sql = removeLastAnd( sql ) + ") "; } + System.err.println( "sql: " + sql ); + return sql; } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/security.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/security.xml 2015-06-24 09:17:03 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/security.xml 2015-07-07 03:14:28 +0000 @@ -76,9 +76,13 @@ - + + + - + + + === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/StatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/StatementBuilder.java 2015-01-17 07:41:26 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/StatementBuilder.java 2015-07-07 03:14:28 +0000 @@ -115,7 +115,9 @@ * @return the name of a double column type. */ String getDoubleColumnType(); - + + String getLongVarBinaryType(); + /** * Returns the value used to match a column to a regular expression. Matching * is case insensitive. === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/AbstractStatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/AbstractStatementBuilder.java 2015-01-17 07:41:26 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/AbstractStatementBuilder.java 2015-07-07 03:14:28 +0000 @@ -28,11 +28,11 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.system.util.DateUtils.getSqlDateString; - import org.hisp.dhis.jdbc.StatementBuilder; import org.hisp.dhis.period.Period; +import static org.hisp.dhis.system.util.DateUtils.getSqlDateString; + /** * @author Lars Helge Overland */ @@ -44,7 +44,7 @@ { return encode( value, true ); } - + @Override public String encode( String value, boolean quote ) { @@ -53,14 +53,14 @@ value = value.endsWith( "\\" ) ? value.substring( 0, value.length() - 1 ) : value; value = value.replaceAll( QUOTE, QUOTE + QUOTE ); } - - return quote ? ( QUOTE + value + QUOTE ) : value; + + return quote ? (QUOTE + value + QUOTE) : value; } - + @Override public String columnQuote( String column ) { - return column != null ? ( getColumnQuote() + column + getColumnQuote() ) : null; + return column != null ? (getColumnQuote() + column + getColumnQuote()) : null; } @Override @@ -76,76 +76,82 @@ } @Override + public String getLongVarBinaryType() + { + return "VARBINARY(1000000)"; + } + + @Override public String getPeriodIdentifierStatement( Period period ) { return - "SELECT periodid FROM period WHERE periodtypeid=" + period.getPeriodType().getId() + " " + - "AND startdate='" + getSqlDateString( period.getStartDate() ) + "' " + - "AND enddate='" + getSqlDateString( period.getEndDate() ) + "'"; + "SELECT periodid FROM period WHERE periodtypeid=" + period.getPeriodType().getId() + " " + + "AND startdate='" + getSqlDateString( period.getStartDate() ) + "' " + + "AND enddate='" + getSqlDateString( period.getEndDate() ) + "'"; } @Override public String getCreateAggregatedDataValueTable( boolean temp ) { return - "CREATE TABLE aggregateddatavalue" + ( temp ? "_temp" : "" ) + " ( " + - "dataelementid INTEGER, " + - "categoryoptioncomboid INTEGER, " + - "periodid INTEGER, " + - "organisationunitid INTEGER, " + - "periodtypeid INTEGER, " + - "level INTEGER, " + - "value " + getDoubleColumnType() + " );"; + "CREATE TABLE aggregateddatavalue" + (temp ? "_temp" : "") + " ( " + + "dataelementid INTEGER, " + + "categoryoptioncomboid INTEGER, " + + "periodid INTEGER, " + + "organisationunitid INTEGER, " + + "periodtypeid INTEGER, " + + "level INTEGER, " + + "value " + getDoubleColumnType() + " );"; } @Override public String getCreateAggregatedOrgUnitDataValueTable( boolean temp ) { return - "CREATE TABLE aggregatedorgunitdatavalue" + ( temp ? "_temp" : "" ) + " ( " + - "dataelementid INTEGER, " + - "categoryoptioncomboid INTEGER, " + - "periodid INTEGER, " + - "organisationunitid INTEGER, " + - "organisationunitgroupid INTEGER, " + - "periodtypeid INTEGER, " + - "level INTEGER, " + - "value " + getDoubleColumnType() + " );"; + "CREATE TABLE aggregatedorgunitdatavalue" + (temp ? "_temp" : "") + " ( " + + "dataelementid INTEGER, " + + "categoryoptioncomboid INTEGER, " + + "periodid INTEGER, " + + "organisationunitid INTEGER, " + + "organisationunitgroupid INTEGER, " + + "periodtypeid INTEGER, " + + "level INTEGER, " + + "value " + getDoubleColumnType() + " );"; } @Override public String getCreateAggregatedIndicatorTable( boolean temp ) { return - "CREATE TABLE aggregatedindicatorvalue" + ( temp ? "_temp" : "" ) + " ( " + - "indicatorid INTEGER, " + - "periodid INTEGER, " + - "organisationunitid INTEGER, " + - "periodtypeid INTEGER, " + - "level INTEGER, " + - "annualized VARCHAR( 10 ), " + - "factor " + getDoubleColumnType() + ", " + - "value " + getDoubleColumnType() + ", " + - "numeratorvalue " + getDoubleColumnType() + ", " + - "denominatorvalue " + getDoubleColumnType() + " );"; + "CREATE TABLE aggregatedindicatorvalue" + (temp ? "_temp" : "") + " ( " + + "indicatorid INTEGER, " + + "periodid INTEGER, " + + "organisationunitid INTEGER, " + + "periodtypeid INTEGER, " + + "level INTEGER, " + + "annualized VARCHAR( 10 ), " + + "factor " + getDoubleColumnType() + ", " + + "value " + getDoubleColumnType() + ", " + + "numeratorvalue " + getDoubleColumnType() + ", " + + "denominatorvalue " + getDoubleColumnType() + " );"; } @Override public String getCreateAggregatedOrgUnitIndicatorTable( boolean temp ) { return - "CREATE TABLE aggregatedorgunitindicatorvalue" + ( temp ? "_temp" : "" ) + " ( " + - "indicatorid INTEGER, " + - "periodid INTEGER, " + - "organisationunitid INTEGER, " + - "organisationunitgroupid INTEGER, " + - "periodtypeid INTEGER, " + - "level INTEGER, " + - "annualized VARCHAR( 10 ), " + - "factor " + getDoubleColumnType() + ", " + - "value " + getDoubleColumnType() + ", " + - "numeratorvalue " + getDoubleColumnType() + ", " + - "denominatorvalue " + getDoubleColumnType() + " );"; + "CREATE TABLE aggregatedorgunitindicatorvalue" + (temp ? "_temp" : "") + " ( " + + "indicatorid INTEGER, " + + "periodid INTEGER, " + + "organisationunitid INTEGER, " + + "organisationunitgroupid INTEGER, " + + "periodtypeid INTEGER, " + + "level INTEGER, " + + "annualized VARCHAR( 10 ), " + + "factor " + getDoubleColumnType() + ", " + + "value " + getDoubleColumnType() + ", " + + "numeratorvalue " + getDoubleColumnType() + ", " + + "denominatorvalue " + getDoubleColumnType() + " );"; } @Override @@ -153,15 +159,15 @@ { return "CREATE TABLE aggregateddatasetcompleteness ( " + - "datasetid INTEGER, " + - "periodid INTEGER, " + - "periodname VARCHAR( 30 ), " + - "organisationunitid INTEGER, " + - "sources INTEGER, " + - "registrations INTEGER, " + - "registrationsOnTime INTEGER, " + - "value " + getDoubleColumnType() + ", " + - "valueOnTime " + getDoubleColumnType() + " );"; + "datasetid INTEGER, " + + "periodid INTEGER, " + + "periodname VARCHAR( 30 ), " + + "organisationunitid INTEGER, " + + "sources INTEGER, " + + "registrations INTEGER, " + + "registrationsOnTime INTEGER, " + + "value " + getDoubleColumnType() + ", " + + "valueOnTime " + getDoubleColumnType() + " );"; } @Override @@ -169,16 +175,16 @@ { return "CREATE TABLE aggregatedorgunitdatasetcompleteness ( " + - "datasetid INTEGER, " + - "periodid INTEGER, " + - "periodname VARCHAR( 30 ), " + - "organisationunitid INTEGER, " + - "organisationunitgroupid INTEGER, " + - "sources INTEGER, " + - "registrations INTEGER, " + - "registrationsOnTime INTEGER, " + - "value " + getDoubleColumnType() + ", " + - "valueOnTime " + getDoubleColumnType() + " );"; + "datasetid INTEGER, " + + "periodid INTEGER, " + + "periodname VARCHAR( 30 ), " + + "organisationunitid INTEGER, " + + "organisationunitgroupid INTEGER, " + + "sources INTEGER, " + + "registrations INTEGER, " + + "registrationsOnTime INTEGER, " + + "value " + getDoubleColumnType() + ", " + + "valueOnTime " + getDoubleColumnType() + " );"; } @Override @@ -186,14 +192,14 @@ { return "select count(cu.column_name) from information_schema.key_column_usage cu " + - "inner join information_schema.table_constraints tc " + - "on cu.constraint_catalog=tc.constraint_catalog " + + "inner join information_schema.table_constraints tc " + + "on cu.constraint_catalog=tc.constraint_catalog " + "and cu.constraint_schema=tc.constraint_schema " + "and cu.constraint_name=tc.constraint_name " + "and cu.table_schema=tc.table_schema " + "and cu.table_name=tc.table_name " + - "where tc.constraint_type='PRIMARY KEY' " + - "and cu.table_name='" + table + "';"; + "where tc.constraint_type='PRIMARY KEY' " + + "and cu.table_name='" + table + "';"; } @Override @@ -207,7 +213,7 @@ { return "alter table " + table + " add column " + column + " integer auto_increment primary key not null;"; } - + @Override public String getDropNotNullConstraint( String table, String column, String type ) { === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java 2015-01-17 07:41:26 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java 2015-07-07 03:14:28 +0000 @@ -41,7 +41,7 @@ { return "double"; } - + @Override public String getColumnQuote() { === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/HsqlStatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/HsqlStatementBuilder.java 2015-01-17 07:41:26 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/HsqlStatementBuilder.java 2015-07-07 03:14:28 +0000 @@ -41,7 +41,7 @@ { return "double"; } - + @Override public String getColumnQuote() { === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java 2015-01-17 07:41:26 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java 2015-07-07 03:14:28 +0000 @@ -43,6 +43,12 @@ } @Override + public String getLongVarBinaryType() + { + return "BLOB"; + } + + @Override public String getColumnQuote() { return "`"; === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java 2015-01-17 07:41:26 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java 2015-07-07 03:14:28 +0000 @@ -43,6 +43,12 @@ } @Override + public String getLongVarBinaryType() + { + return "BYTEA"; + } + + @Override public String getColumnQuote() { return "\"";