=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/InitTableAlteror.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/InitTableAlteror.java 2015-12-16 13:23:46 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/InitTableAlteror.java 2015-12-23 14:03:46 +0000 @@ -29,7 +29,6 @@ */ import org.amplecode.quick.StatementManager; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.jdbc.StatementBuilder; @@ -40,6 +39,7 @@ import javax.annotation.Resource; + /** * @author Lars Helge Overland */ @@ -55,10 +55,10 @@ private StatementBuilder statementBuilder; @Resource( name = "stringEncryptor" ) - private PBEStringEncryptor oldPBEStringEncryptor; + PBEStringEncryptor oldPBEStringEncryptor; @Resource( name = "strongStringEncryptor" ) - private PBEStringEncryptor newPBEStringEncryptor; + PBEStringEncryptor newPBEStringEncryptor; // ------------------------------------------------------------------------- // Execute @@ -68,7 +68,8 @@ @Transactional public void execute() { - executeSql( "update dataelement set domaintype='AGGREGATE' where domaintype='aggregate' or domaintype is null;" ); + executeSql( + "update dataelement set domaintype='AGGREGATE' where domaintype='aggregate' or domaintype is null;" ); executeSql( "update dataelement set domaintype='TRACKER' where domaintype='patient';" ); executeSql( "update users set invitation = false where invitation is null" ); executeSql( "alter table dataelement alter column domaintype set not null;" ); @@ -76,7 +77,7 @@ executeSql( "UPDATE programstageinstance SET status='ACTIVE' WHERE status='0';" ); executeSql( "UPDATE programstageinstance SET status='COMPLETED' WHERE status='1';" ); executeSql( "UPDATE programstageinstance SET status='SKIPPED' WHERE status='5';" ); - executeSql( "update users set externalauth = false where externalauth is null" ); + executeSql( "ALTER TABLE program DROP COLUMN displayonallorgunit" ); upgradeProgramStageDataElements(); @@ -85,42 +86,27 @@ updateFeatureTypes(); updateValidationRuleEnums(); updateProgramStatus(); - reEncryptConfigurationPasswords(); + updateSmtpPasswordColumn(); updateTimestamps(); executeSql( "ALTER TABLE program ALTER COLUMN \"type\" TYPE varchar(255);" ); executeSql( "update program set \"type\"='WITH_REGISTRATION' where type='1' or type='2'" ); executeSql( "update program set \"type\"='WITHOUT_REGISTRATION' where type='3'" ); - - executeSql( "alter table programstage rename column irregular to repeatable" ); - executeSql( "update programstage set repeatable=false where repeatable is null" ); - executeSql( "update attribute set isunique=false where isunique is null" ); } // ------------------------------------------------------------------------- // Supportive methods // ------------------------------------------------------------------------- - private void reEncryptConfigurationPasswords() + private void updateSmtpPasswordColumn() { try { - String smtpPassword = statementManager.getHolder().queryForString( "SELECT smptpassword FROM configuration" ); - String remoteServerPassword = statementManager.getHolder().queryForString( "SELECT remoteserverpassword FROM configuration" ); - - if ( StringUtils.isNotBlank( smtpPassword ) ) - { - executeSql( "UPDATE configuration SET smtppassword = '" + newPBEStringEncryptor.encrypt( oldPBEStringEncryptor.decrypt( smtpPassword ) ) + "'" ); - executeSql( "ALTER TABLE configuration DROP COLUMN smptpassword" ); - } - - if ( StringUtils.isNotBlank( remoteServerPassword ) ) - { - executeSql( "UPDATE configuration SET remotepassword = '" + newPBEStringEncryptor.encrypt( oldPBEStringEncryptor.decrypt( remoteServerPassword ) ) + "'" ); - executeSql( "ALTER TABLE configuration DROP COLUMN remoteserverpassword" ); - } + executeSql( "UPDATE configuration SET smtppassword = smptpassword" ); + executeSql( "ALTER TABLE configuration DROP COLUMN smptpassword" ); + } - catch ( Exception ex ) + catch(Exception ex) { log.debug( ex ); } @@ -139,7 +125,6 @@ executeSql( "update trackedentityattributevalue set created=now() where created is null" ); executeSql( "update trackedentityattributevalue set lastupdated=now() where lastupdated is null" ); } - private void updateProgramStatus() { executeSql( "alter table programinstance alter column status type varchar(50)" ); @@ -210,11 +195,13 @@ executeSql( "update dataelement set valuetype='PERCENTAGE' where valuetype='int' and numbertype='percentage'" ); executeSql( "update dataelement set valuetype='UNIT_INTERVAL' where valuetype='int' and numbertype='unitInterval'" ); executeSql( "update dataelement set valuetype='NUMBER' where valuetype='int' and numbertype is null" ); + executeSql( "alter table dataelement drop column numbertype" ); executeSql( "update dataelement set valuetype='TEXT' where valuetype='string' and texttype='text'" ); executeSql( "update dataelement set valuetype='LONG_TEXT' where valuetype='string' and texttype='longText'" ); executeSql( "update dataelement set valuetype='TEXT' where valuetype='string' and texttype is null" ); + executeSql( "alter table dataelement drop column texttype" ); executeSql( "update dataelement set valuetype='DATE' where valuetype='date'" ); @@ -241,16 +228,6 @@ executeSql( "update trackedentityattribute set valuetype='TEXT' where valuetype is null" ); executeSql( "update optionset set valuetype='TEXT' where valuetype is null" ); - executeSql( "update attribute set valuetype='TEXT' where valuetype='string'" ); - executeSql( "update attribute set valuetype='LONG_TEXT' where valuetype='text'" ); - executeSql( "update attribute set valuetype='BOOLEAN' where valuetype='bool'" ); - executeSql( "update attribute set valuetype='DATE' where valuetype='date'" ); - executeSql( "update attribute set valuetype='NUMBER' where valuetype='number'" ); - executeSql( "update attribute set valuetype='INTEGER' where valuetype='integer'" ); - executeSql( "update attribute set valuetype='INTEGER_POSITIVE' where valuetype='positive_integer'" ); - executeSql( "update attribute set valuetype='INTEGER_NEGATIVE' where valuetype='negative_integer'" ); - executeSql( "update attribute set valuetype='TEXT' where valuetype='option_set'" ); - executeSql( "update attribute set valuetype='TEXT' where valuetype is null" ); } private void upgradeProgramStageDataElements() @@ -264,6 +241,7 @@ "sort_order,displayinreports,programstagesectionid,allowfuturedate,section_sort_order) " + "select " + autoIncr + ",programstageid,dataelementid,compulsory,allowprovidedelsewhere,sort_order,displayinreports,programstagesectionid,allowfuturedate,section_sort_order from programstage_dataelements"; + executeSql( insertSql ); String dropSql = "drop table programstage_dataelements"; === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/configuration/hibernate/Configuration.hbm.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/configuration/hibernate/Configuration.hbm.xml 2015-12-01 17:19:15 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/configuration/hibernate/Configuration.hbm.xml 2015-12-23 13:59:37 +0000 @@ -39,9 +39,9 @@ - + - + === modified file 'dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/META-INF/dhis/beans.xml 2015-12-03 20:47:13 +0000 +++ dhis-2/dhis-support/dhis-support-hibernate/src/main/resources/META-INF/dhis/beans.xml 2015-12-23 13:59:37 +0000 @@ -141,6 +141,6 @@ - + === modified file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/startup/DefaultStartupRoutineExecutor.java' --- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/startup/DefaultStartupRoutineExecutor.java 2015-11-23 11:11:46 +0000 +++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/startup/DefaultStartupRoutineExecutor.java 2015-12-23 13:59:37 +0000 @@ -28,17 +28,17 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.external.conf.ConfigurationKey; import org.hisp.dhis.external.conf.DhisConfigurationProvider; import org.springframework.beans.factory.annotation.Autowired; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + /** * Default implementation of StartupRoutineExecutor. The execute method will * execute the added StartupRoutines ordered by their runlevels. Startup routines @@ -102,6 +102,7 @@ private void execute( boolean testing ) throws Exception { + if ( TRUE.equalsIgnoreCase( System.getProperty( SKIP_PROP ) ) ) { LOG.info( "Skipping startup routines, system property " + SKIP_PROP + " is true" ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/CrudControllerAdvice.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/CrudControllerAdvice.java 2015-11-12 04:47:12 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/CrudControllerAdvice.java 2015-12-23 13:59:37 +0000 @@ -43,6 +43,7 @@ import org.hisp.dhis.webapi.controller.exception.NotFoundException; import org.hisp.dhis.webapi.service.WebMessageService; import org.hisp.dhis.webapi.utils.WebMessageUtils; +import org.jasypt.exceptions.EncryptionOperationNotPossibleException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.AccessDeniedException; import org.springframework.web.bind.WebDataBinder; @@ -79,6 +80,12 @@ } ); } + @ExceptionHandler( { EncryptionOperationNotPossibleException.class } ) + public void encryptionOperationNotPossibleException( EncryptionOperationNotPossibleException ex, HttpServletResponse response, HttpServletRequest request ) + { + webMessageService.send( WebMessageUtils.unathorized( "Could not encrypt data. This indicates a problem in your setup. Please refer to the DHIS2 manual for setting up encryption." ), response, request ); + } + @ExceptionHandler( { NotAuthenticatedException.class } ) public void notAuthenticatedExceptionHandler( NotAuthenticatedException ex, HttpServletResponse response, HttpServletRequest request ) {