=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/scheduling/TaskCategory.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/scheduling/TaskCategory.java 2013-10-23 22:03:17 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/scheduling/TaskCategory.java 2013-11-12 08:46:01 +0000 @@ -42,5 +42,6 @@ METADATA_IMPORT, METADATA_EXPORT, AGGREGATE_QUERY_BUILDER, - SENDING_REMINDER_MESSAGE + SENDING_REMINDER_MESSAGE, + SENDING_SMS } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/DataValueSMSListener.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/DataValueSMSListener.java 2013-10-29 10:27:23 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/DataValueSMSListener.java 2013-11-12 08:46:01 +0000 @@ -69,7 +69,7 @@ public class DataValueSMSListener implements IncomingSmsListener -{ +{ private static final String defaultPattern = "([a-zA-Z]+)\\s*(\\d+)"; private CompleteDataSetRegistrationService registrationService; @@ -123,7 +123,7 @@ } SMSCommand smsCommand = smsCommandService.getSMSCommand( commandString, ParserType.KEY_VALUE_PARSER ); Map parsedMessage = this.parse( message, smsCommand ); - + Date date = lookForDate( message ); String senderPhoneNumber = StringUtils.replace( sms.getOriginator(), "+", "" ); Collection orgUnits = getOrganisationUnitsByPhoneNumber( senderPhoneNumber ); @@ -143,7 +143,7 @@ } boolean valueStored = false; - + for ( SMSCode code : smsCommand.getCodes() ) { if ( parsedMessage.containsKey( code.getCode().toUpperCase() ) ) @@ -234,7 +234,7 @@ { // no date found } - + return date; } @@ -285,7 +285,7 @@ } throw new SMSParserException( messageListingOrgUnits ); } - + return orgUnit; } @@ -294,7 +294,7 @@ Period period; period = command.getDataset().getPeriodType().createPeriod(); CalendarPeriodType cpt = (CalendarPeriodType) period.getPeriodType(); - + if ( command.isCurrentPeriodUsedForReporting() ) { period = cpt.createPeriod( new Date() ); @@ -390,8 +390,8 @@ { OrganisationUnit orgunit = null; User user = null; - - //-------------------------> Need to be edit + + // -------------------------> Need to be edit for ( User u : userService.getUsersByPhoneNumber( sender ) ) { OrganisationUnit ou = u.getOrganisationUnit(); @@ -416,12 +416,11 @@ user = u; } // <------------------------------------- - if ( user == null) + if ( user == null ) { - throw new SMSParserException( - "User is not associated with any orgunit. Please contact your supervisor." ); + throw new SMSParserException( "User is not associated with any orgunit. Please contact your supervisor." ); } - + return user; } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/DatabaseSupportedInternalMemoryMessageQueue.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/DatabaseSupportedInternalMemoryMessageQueue.java 2013-09-19 09:51:14 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/DatabaseSupportedInternalMemoryMessageQueue.java 2013-11-12 08:46:01 +0000 @@ -90,4 +90,5 @@ { this.smsStore = smsStore; } + } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/SmsPublisher.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/SmsPublisher.java 2013-10-29 10:27:23 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/SmsPublisher.java 2013-11-12 08:46:01 +0000 @@ -64,7 +64,7 @@ { thread.stopFetching(); } - + thread = null; } @@ -104,7 +104,6 @@ private void fetchAndParseSMS() { IncomingSms message = messageQueue.get(); - while ( message != null ) { log.info( "Received SMS: " + message.getText() ); @@ -119,7 +118,6 @@ return; } } - smsSender.sendMessage( "No command found", message.getOriginator() ); } catch ( Exception e ) === added directory 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/task' === added file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/task/SendSmsTask.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/task/SendSmsTask.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/sms/task/SendSmsTask.java 2013-11-12 08:46:01 +0000 @@ -0,0 +1,121 @@ +package org.hisp.dhis.sms.task; + +import java.util.List; + +import org.hisp.dhis.i18n.I18n; +import org.hisp.dhis.scheduling.TaskId; +import org.hisp.dhis.sms.SmsSender; +import org.hisp.dhis.system.notification.Notifier; +import org.hisp.dhis.user.User; +import org.springframework.beans.factory.annotation.Autowired; + +public class SendSmsTask + implements Runnable +{ + @Autowired + private SmsSender smsSender; + + @Autowired + private Notifier notifier; + + // ------------------------------------------------------------------------- + // Input & Output + // ------------------------------------------------------------------------- + + private String smsSubject; + + private String text; + + private User currentUser; + + private List recipientsList; + + private String message = "success"; + + private TaskId taskId; + + // ------------------------------------------------------------------------- + // I18n + // ------------------------------------------------------------------------- + + private I18n i18n; + + public void setI18n( I18n i18n ) + { + this.i18n = i18n; + } + + @Override + public void run() + { + notifier.notify( taskId, "Sending SMS" ); + message = smsSender.sendMessage( smsSubject, text, currentUser, recipientsList, false ); + notifier.notify( taskId, "All Message Sent" ); + } + + public String getSmsSubject() + { + return smsSubject; + } + + public void setSmsSubject( String smsSubject ) + { + this.smsSubject = smsSubject; + } + + public String getText() + { + return text; + } + + public void setText( String text ) + { + this.text = text; + } + + public User getCurrentUser() + { + return currentUser; + } + + public void setCurrentUser( User currentUser ) + { + this.currentUser = currentUser; + } + + public List getRecipientsList() + { + return recipientsList; + } + + public void setRecipientsList( List recipientsList ) + { + this.recipientsList = recipientsList; + } + + public String getMessage() + { + return message; + } + + public void setMessage( String message ) + { + this.message = message; + } + + public TaskId getTaskId() + { + return taskId; + } + + public void setTaskId( TaskId taskId ) + { + this.taskId = taskId; + } + + public I18n getI18n() + { + return i18n; + } + +} === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2013-10-31 11:04:50 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml 2013-11-12 08:46:01 +0000 @@ -814,6 +814,8 @@ + + === modified file 'dhis-2/dhis-web/dhis-web-sms/src/main/java/org/hisp/dhis/sms/outcoming/ProcessingSendSMSAction.java' --- dhis-2/dhis-web/dhis-web-sms/src/main/java/org/hisp/dhis/sms/outcoming/ProcessingSendSMSAction.java 2013-10-08 17:16:47 +0000 +++ dhis-2/dhis-web/dhis-web-sms/src/main/java/org/hisp/dhis/sms/outcoming/ProcessingSendSMSAction.java 2013-11-12 08:46:01 +0000 @@ -37,8 +37,12 @@ import org.hisp.dhis.i18n.I18n; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.oust.manager.SelectionTreeManager; -import org.hisp.dhis.sms.SmsSender; +import org.hisp.dhis.scheduling.TaskCategory; +import org.hisp.dhis.scheduling.TaskId; import org.hisp.dhis.sms.outbound.OutboundSmsTransportService; +import org.hisp.dhis.sms.task.SendSmsTask; +import org.hisp.dhis.system.notification.Notifier; +import org.hisp.dhis.system.scheduling.Scheduler; import org.hisp.dhis.user.CurrentUserService; import org.hisp.dhis.user.User; import org.hisp.dhis.user.UserGroup; @@ -72,13 +76,15 @@ @Autowired private OutboundSmsTransportService transportService; - - private SmsSender smsSender; - - public void setSmsSender( SmsSender smsSender ) - { - this.smsSender = smsSender; - } + + @Autowired + private Scheduler scheduler; + + @Autowired + private Notifier notifier; + + @Autowired + private SendSmsTask sendSmsTask; // ------------------------------------------------------------------------- // Input & Output @@ -194,7 +200,6 @@ } // message = messageSender.sendMessage( smsSubject, smsMessage, // currentUser, true, recipients, gatewayId ); - message = smsSender.sendMessage( smsSubject, text, currentUser, recipientsList, false ); } else if ( sendTarget.equals( "userGroup" ) ) { @@ -213,12 +218,8 @@ return ERROR; } - - // message = messageSender.sendMessage( smsSubject, smsMessage, - // currentUser, false, group.getMembers(), gatewayId ); - - message = smsSender.sendMessage( smsSubject, text, currentUser, new ArrayList( group.getMembers() ), - false ); + + recipientsList = new ArrayList( group.getMembers()); } else if ( sendTarget.equals( "user" ) ) { @@ -240,8 +241,6 @@ // message = messageSender.sendMessage( smsSubject, smsMessage, // currentUser, false, users, gatewayId ); - - message = smsSender.sendMessage( smsSubject, text, currentUser, recipientsList, false ); } } else if ( sendTarget.equals( "unit" ) ) @@ -262,9 +261,18 @@ return ERROR; } - - message = smsSender.sendMessage( smsSubject, text, currentUser, recipientsList, false ); } + + TaskId taskId = new TaskId( TaskCategory.SENDING_SMS, currentUser ); + notifier.clear( taskId ); + + sendSmsTask.setTaskId( taskId ); + sendSmsTask.setCurrentUser( currentUser ); + sendSmsTask.setRecipientsList( recipientsList ); + sendSmsTask.setSmsSubject( smsSubject ); + sendSmsTask.setText( text ); + + scheduler.executeTask( sendSmsTask ); if ( message != null && !message.equals( "success" ) ) { === modified file 'dhis-2/dhis-web/dhis-web-sms/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-sms/src/main/resources/META-INF/dhis/beans.xml 2013-09-05 06:05:43 +0000 +++ dhis-2/dhis-web/dhis-web-sms/src/main/resources/META-INF/dhis/beans.xml 2013-11-12 08:46:01 +0000 @@ -16,9 +16,7 @@ scope="prototype" /> - - + class="org.hisp.dhis.sms.outcoming.ProcessingSendSMSAction" scope="prototype"/> === modified file 'dhis-2/dhis-web/dhis-web-sms/src/main/webapp/dhis-web-sms/javascript/sendSMS.js' --- dhis-2/dhis-web/dhis-web-sms/src/main/webapp/dhis-web-sms/javascript/sendSMS.js 2013-08-22 08:03:53 +0000 +++ dhis-2/dhis-web/dhis-web-sms/src/main/webapp/dhis-web-sms/javascript/sendSMS.js 2013-11-12 08:46:01 +0000 @@ -80,14 +80,7 @@ return; } } - else if ( _target == "user" || _target == "unit" ) - { - if ( !isOrgunitSelected ) - { - setHeaderDelayMessage( i18n_please_select_orgunit ); - return; - } - } + else { if ( hasElements( 'recipients' ) )