=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java 2013-08-23 15:56:19 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java 2013-09-04 07:35:34 +0000 @@ -267,6 +267,13 @@ { userMessages.clear(); } + + public String getLastSenderName() + { + boolean hasName = lastSenderFirstname != null || lastSenderSurname != null; + + return hasName ? ( lastSenderFirstname + " " + lastSenderSurname ) : null; + } // ------------------------------------------------------------------------------------------------------- // Persistent fields @@ -374,11 +381,6 @@ this.followUp = followUp; } - public String getLastSenderName() - { - return lastSenderFirstname + " " + lastSenderSurname; - } - public String getLastSenderSurname() { return lastSenderSurname; @@ -420,8 +422,7 @@ subject = messageConversation.getSubject() == null ? subject : messageConversation.getSubject(); lastSender = messageConversation.getLastSender() == null ? lastSender : messageConversation.getLastSender(); - lastMessage = messageConversation.getLastMessage() == null ? lastMessage : messageConversation - .getLastMessage(); + lastMessage = messageConversation.getLastMessage() == null ? lastMessage : messageConversation.getLastMessage(); removeAllUserMessages(); userMessages.addAll( messageConversation.getUserMessages() ); === modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/scheduling/ResourceTableTask.java' --- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/scheduling/ResourceTableTask.java 2013-09-03 19:31:42 +0000 +++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/scheduling/ResourceTableTask.java 2013-09-04 07:35:34 +0000 @@ -28,6 +28,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.message.MessageService; import org.hisp.dhis.resourcetable.ResourceTableService; import org.hisp.dhis.scheduling.TaskId; import org.hisp.dhis.system.notification.NotificationLevel; @@ -46,6 +47,9 @@ @Autowired private Notifier notifier; + @Autowired + private MessageService messageService; + private TaskId taskId; public void setTaskId( TaskId taskId ) @@ -71,6 +75,10 @@ catch ( RuntimeException ex ) { notifier.notify( taskId, NotificationLevel.ERROR, "Process failed: " + ex.getMessage(), true ); + + messageService.sendFeedback( "Resource table process failed", "Resource table process failed, please check the logs.", null ); + + throw ex; } } } === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/scheduling/AnalyticsTableTask.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/scheduling/AnalyticsTableTask.java 2013-09-03 19:31:42 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/scheduling/AnalyticsTableTask.java 2013-09-04 07:35:34 +0000 @@ -34,6 +34,7 @@ import javax.annotation.Resource; import org.hisp.dhis.analytics.AnalyticsTableService; +import org.hisp.dhis.message.MessageService; import org.hisp.dhis.resourcetable.ResourceTableService; import org.hisp.dhis.scheduling.TaskId; import org.hisp.dhis.system.notification.Notifier; @@ -62,6 +63,9 @@ @Autowired private Notifier notifier; + + @Autowired + private MessageService messageService; private boolean last3Years; @@ -111,6 +115,10 @@ catch ( RuntimeException ex ) { notifier.notify( taskId, ERROR, "Process failed: " + ex.getMessage(), true ); + + messageService.sendFeedback( "Analytics table process failed", "Analytics table process failed, please check the logs.", null ); + + throw ex; } } } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/DefaultMessageService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/DefaultMessageService.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/DefaultMessageService.java 2013-09-04 07:35:34 +0000 @@ -123,6 +123,7 @@ if ( sender == null ) { sender = currentUserService.getCurrentUser(); + if ( sender != null ) { users.add( sender ); === 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 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2013-09-04 07:35:34 +0000 @@ -619,7 +619,7 @@ executeSql( "ALTER TABLE dataelement ALTER COLUMN domaintype SET NOT NULL" ); executeSql( "update dataelementcategory set datadimension = false where datadimension is null" ); - executeSql( "UPDATE dataset SET dataelementdecoration=false WHERE dataelementdecoration is null" ); + executeSql( "UPDATE dataset SET dataelementdecoration=false WHERE dataelementdecoration is null" ); executeSql( "alter table validationrulegroup rename column validationgroupid to validationrulegroupid" ); executeSql( "alter table sqlview rename column viewid to sqlviewid" ); @@ -629,6 +629,7 @@ executeSql( "UPDATE optionset SET version=1 WHERE version IS NULL" ); executeSql( "ALTER TABLE datavalue ALTER COLUMN lastupdated TYPE timestamp" ); + executeSql( "ALTER TABLE message ALTER COLUMN userid DROP NOT NULL" ); log.info( "Tables updated" ); } === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/DataMartTask.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/DataMartTask.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/DataMartTask.java 2013-09-04 07:35:34 +0000 @@ -30,6 +30,7 @@ import static org.hisp.dhis.setting.SystemSettingManager.DEFAULT_SCHEDULED_PERIOD_TYPES; import static org.hisp.dhis.setting.SystemSettingManager.KEY_SCHEDULED_PERIOD_TYPES; +import static org.hisp.dhis.system.notification.NotificationLevel.ERROR; import java.util.ArrayList; import java.util.Collection; @@ -40,10 +41,12 @@ import org.apache.commons.logging.LogFactory; import org.hisp.dhis.completeness.DataSetCompletenessEngine; import org.hisp.dhis.datamart.DataMartEngine; +import org.hisp.dhis.message.MessageService; import org.hisp.dhis.period.Period; import org.hisp.dhis.period.PeriodService; import org.hisp.dhis.period.RelativePeriods; import org.hisp.dhis.setting.SystemSettingManager; +import org.hisp.dhis.system.notification.Notifier; import org.hisp.dhis.system.util.ConversionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -67,6 +70,12 @@ @Autowired private SystemSettingManager systemSettingManager; + @Autowired + private Notifier notifier; + + @Autowired + private MessageService messageService; + private List periods; public void setPeriods( List periods ) @@ -111,8 +120,19 @@ Collection periodIds = ConversionUtils.getIdentifiers( Period.class, periodService.reloadPeriods( periods ) ); - dataMartEngine.export( periodIds, taskId ); - completenessEngine.exportDataSetCompleteness( periodIds, taskId ); + try + { + dataMartEngine.export( periodIds, taskId ); + completenessEngine.exportDataSetCompleteness( periodIds, taskId ); + } + catch ( RuntimeException ex ) + { + notifier.notify( taskId, ERROR, "Process failed: " + ex.getMessage(), true ); + + messageService.sendFeedback( "Data mart process failed", "Data mart process failed, please check the logs.", null ); + + throw ex; + } } // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/org/hisp/dhis/dashboard/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/org/hisp/dhis/dashboard/i18n_module.properties 2013-08-23 11:12:24 +0000 +++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/org/hisp/dhis/dashboard/i18n_module.properties 2013-09-04 07:35:34 +0000 @@ -114,4 +114,5 @@ add_stuff_by_searching=Add stuff by searching from the search field above arrange_dashboard_by_dragging_and_dropping=Tip: arrange dashboard by dragging and dropping items click_to_explore_drag_to_new_position=Click to explore or drag to new position -drag_to_new_position=Drag to new position \ No newline at end of file +drag_to_new_position=Drag to new position +system_notification=System notification \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/message.vm' --- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/message.vm 2012-10-15 10:28:30 +0000 +++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/message.vm 2013-09-04 07:35:34 +0000 @@ -29,7 +29,8 @@ - $!encoder.htmlEncode( $conversation.lastSenderName )#if( $conversation.messageCount > 1 ) (${conversation.messageCount})#end + #if( $conversation.lastSenderName )$!encoder.htmlEncode( $conversation.lastSenderName )#else$i18n.getString( "system_notification" )#end + #if( $conversation.messageCount > 1 ) (${conversation.messageCount})#end $!encoder.htmlEncode( $conversation.subject ) $!format.formatDate( $conversation.lastMessage ) === modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/readMessage.vm' --- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/readMessage.vm 2013-01-16 12:56:02 +0000 +++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/readMessage.vm 2013-09-04 07:35:34 +0000 @@ -33,8 +33,12 @@ #foreach( $message in $conversation.messages )
-$encoder.htmlEncode( $message.sender.name )   -$format.formatDate( $message.lastUpdated ) +#if( $message.sender ) +$encoder.htmlEncode( $message.sender.name ) +#else +$i18n.getString( "system_notification" ) +#end +  $format.formatDate( $message.lastUpdated )
$!dhisTextUtils.htmlify( $encoder.htmlEncode( $message.text ) )