=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/Message.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/Message.java 2012-03-19 18:32:42 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/Message.java 2012-12-13 08:06:31 +0000 @@ -76,6 +76,7 @@ this.text = text; this.metaData = metaData; this.sender = sender; + } @Override @@ -85,7 +86,7 @@ } @JsonProperty - @JsonView( {DetailedView.class, ExportView.class} ) + @JsonView( { DetailedView.class, ExportView.class } ) @JacksonXmlProperty public String getText() { @@ -98,7 +99,7 @@ } @JsonProperty - @JsonView( {DetailedView.class, ExportView.class} ) + @JsonView( { DetailedView.class, ExportView.class } ) @JacksonXmlProperty public String getMetaData() { @@ -112,7 +113,7 @@ @JsonProperty @JsonSerialize( as = BaseIdentifiableObject.class ) - @JsonView( {DetailedView.class, ExportView.class} ) + @JsonView( { DetailedView.class, ExportView.class } ) @JacksonXmlProperty public User getSender() { === 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 2012-10-08 14:17:25 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversation.java 2012-12-13 08:06:31 +0000 @@ -50,9 +50,9 @@ public class MessageConversation extends BaseIdentifiableObject { - //-------------------------------------------------------------------------- + // -------------------------------------------------------------------------- // Persistent fields - //-------------------------------------------------------------------------- + // -------------------------------------------------------------------------- private String subject; @@ -66,9 +66,9 @@ @Scanned private List messages = new ArrayList(); - //-------------------------------------------------------------------------- + // -------------------------------------------------------------------------- // Transient fields - //-------------------------------------------------------------------------- + // -------------------------------------------------------------------------- private transient boolean read; @@ -80,9 +80,10 @@ private transient int messageCount; - //-------------------------------------------------------------------------- + + // -------------------------------------------------------------------------- // Constructors - //-------------------------------------------------------------------------- + // -------------------------------------------------------------------------- public MessageConversation() { @@ -95,9 +96,9 @@ this.lastMessage = new Date(); } - //-------------------------------------------------------------------------- + // -------------------------------------------------------------------------- // Logic - //-------------------------------------------------------------------------- + // -------------------------------------------------------------------------- @Override public int hashCode() @@ -253,9 +254,9 @@ userMessages.clear(); } - //------------------------------------------------------------------------------------------------------- + // ------------------------------------------------------------------------------------------------------- // Persistent fields - //------------------------------------------------------------------------------------------------------- + // ------------------------------------------------------------------------------------------------------- @Override public String getName() @@ -264,7 +265,7 @@ } @JsonProperty - @JsonView( {DetailedView.class, ExportView.class} ) + @JsonView( { DetailedView.class, ExportView.class } ) @JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE ) public String getSubject() { @@ -278,7 +279,7 @@ @JsonProperty @JsonSerialize( as = BaseIdentifiableObject.class ) - @JsonView( {DetailedView.class, ExportView.class} ) + @JsonView( { DetailedView.class, ExportView.class } ) @JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE ) public User getLastSender() { @@ -291,7 +292,7 @@ } @JsonProperty - @JsonView( {DetailedView.class, ExportView.class} ) + @JsonView( { DetailedView.class, ExportView.class } ) @JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE ) public Date getLastMessage() { @@ -304,7 +305,7 @@ } @JsonProperty - @JsonView( {DetailedView.class, ExportView.class} ) + @JsonView( { DetailedView.class, ExportView.class } ) @JacksonXmlElementWrapper( localName = "userMessages", namespace = Dxf2Namespace.NAMESPACE ) @JacksonXmlProperty( localName = "userMessage", namespace = Dxf2Namespace.NAMESPACE ) public Set getUserMessages() @@ -318,7 +319,7 @@ } @JsonProperty - @JsonView( {DetailedView.class, ExportView.class} ) + @JsonView( { DetailedView.class, ExportView.class } ) @JacksonXmlElementWrapper( localName = "messages", namespace = Dxf2Namespace.NAMESPACE ) @JacksonXmlProperty( localName = "message", namespace = Dxf2Namespace.NAMESPACE ) public List getMessages() @@ -331,12 +332,12 @@ this.messages = messages; } - //------------------------------------------------------------------------------------------------------- + // ------------------------------------------------------------------------------------------------------- // Transient fields - //------------------------------------------------------------------------------------------------------- + // ------------------------------------------------------------------------------------------------------- @JsonProperty - @JacksonXmlProperty( isAttribute = true) + @JacksonXmlProperty( isAttribute = true ) public boolean isRead() { return read; @@ -348,7 +349,7 @@ } @JsonProperty - @JacksonXmlProperty( isAttribute = true) + @JacksonXmlProperty( isAttribute = true ) public boolean isFollowUp() { return followUp; @@ -405,7 +406,8 @@ 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-api/src/main/java/org/hisp/dhis/message/MessageConversationStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversationStore.java 2012-05-30 08:41:20 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageConversationStore.java 2012-12-13 08:06:31 +0000 @@ -58,4 +58,8 @@ int deleteUserMessages( User user ); int removeUserFromMessageConversations( User lastSender ); + + List getLastRecipients(User user, Integer first, Integer max, Integer currentUserId); + + } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageService.java 2012-12-04 08:35:56 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageService.java 2012-12-13 08:06:31 +0000 @@ -75,4 +75,6 @@ List getAllMessageConversations(); void deleteMessages( User sender ); + + List getLastRecipients( int first, int max, Integer currentUserId ); } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/UserMessage.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/UserMessage.java 2012-06-14 18:50:45 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/UserMessage.java 2012-12-13 08:06:31 +0000 @@ -55,6 +55,37 @@ private boolean read; private boolean followUp; + + private transient String lastRecipientSurname; + + private transient String lastRecipientFirstname; + + + + public String getLastRecipientSurname() + { + return lastRecipientSurname; + } + + public void setLastRecipientSurname( String lastRecipientSurname ) + { + this.lastRecipientSurname = lastRecipientSurname; + } + + public String getLastRecipientFirstname() + { + return lastRecipientFirstname; + } + + public void setLastRecipientFirstname( String lastRecipientFirstname ) + { + this.lastRecipientFirstname = lastRecipientFirstname; + } + + public String getLastRecipientName() + { + return lastRecipientFirstname + " " + lastRecipientSurname; + } public UserMessage() { === 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 2012-12-12 10:55:21 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/DefaultMessageService.java 2012-12-13 08:06:31 +0000 @@ -43,6 +43,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import com.sun.org.apache.regexp.internal.recompile; + /** * @author Lars Helge Overland */ @@ -51,8 +53,9 @@ implements MessageService { private static final Log log = LogFactory.getLog( DefaultMessageService.class ); - + private static final String COMPLETE_SUBJECT = "Form registered as complete"; + private static final String COMPLETE_TEMPLATE = "completeness_message"; // ------------------------------------------------------------------------- @@ -98,11 +101,12 @@ { return sendMessage( subject, text, metaData, users, false ); } - - public int sendMessage( String subject, String text, String metaData, Set users_, boolean includeFeedbackRecipients ) + + public int sendMessage( String subject, String text, String metaData, Set users_, + boolean includeFeedbackRecipients ) { Set users = new HashSet( users_ ); - + // --------------------------------------------------------------------- // Add feedback recipients to users if they are not there // --------------------------------------------------------------------- @@ -110,13 +114,13 @@ if ( includeFeedbackRecipients ) { UserGroup userGroup = configurationService.getConfiguration().getFeedbackRecipients(); - + if ( userGroup != null && userGroup.getMembers().size() > 0 ) { users.addAll( userGroup.getMembers() ); } } - + User sender = currentUserService.getCurrentUser(); if ( sender != null ) @@ -124,6 +128,13 @@ users.add( sender ); } + User recipient = currentUserService.getCurrentUser(); + + if ( recipient != null ) + { + users.add( recipient ); + } + // --------------------------------------------------------------------- // Instantiate message, content and user messages // --------------------------------------------------------------------- @@ -167,18 +178,18 @@ public int sendCompletenessMessage( CompleteDataSetRegistration registration ) { DataSet dataSet = registration.getDataSet(); - + if ( dataSet == null ) { return 0; } UserGroup userGroup = dataSet.getNotificationRecipients(); - + User sender = currentUserService.getCurrentUser(); Set recipients = new HashSet(); - + if ( userGroup != null ) { recipients.addAll( new HashSet( userGroup.getMembers() ) ); @@ -188,18 +199,18 @@ { recipients.add( sender ); } - + if ( recipients.isEmpty() ) { return 0; } - + String text = new VelocityManager().render( registration, COMPLETE_TEMPLATE ); MessageConversation conversation = new MessageConversation( COMPLETE_SUBJECT, sender ); conversation.addMessage( new Message( text, null, sender ) ); - + for ( User user : recipients ) { conversation.addUserMessage( new UserMessage( user ) ); @@ -208,12 +219,16 @@ if ( !conversation.getUserMessages().isEmpty() ) { int id = saveMessageConversation( conversation ); + + + invokeMessageSenders( COMPLETE_SUBJECT, text, sender, conversation.getUsers() ); + invokeMessageSenders( COMPLETE_SUBJECT, text, sender, new HashSet( conversation.getUsers() ) ); - + return id; } - + return 0; } @@ -249,14 +264,17 @@ public List getMessageConversations( int first, int max ) { - return messageConversationStore.getMessageConversations( currentUserService.getCurrentUser(), false, false, first, max ); + return messageConversationStore.getMessageConversations( currentUserService.getCurrentUser(), false, false, + first, max ); } - public List getMessageConversations( boolean followUpOnly, boolean unreadOnly, int first, int max ) + public List getMessageConversations( boolean followUpOnly, boolean unreadOnly, int first, + int max ) { - return messageConversationStore.getMessageConversations( currentUserService.getCurrentUser(), followUpOnly, unreadOnly, first, max ); + return messageConversationStore.getMessageConversations( currentUserService.getCurrentUser(), followUpOnly, + unreadOnly, first, max ); } - + public int getMessageConversationCount() { return messageConversationStore.getMessageConversationCount( currentUserService.getCurrentUser(), false, false ); @@ -264,9 +282,10 @@ public int getMessageConversationCount( boolean followUpOnly, boolean unreadOnly ) { - return messageConversationStore.getMessageConversationCount( currentUserService.getCurrentUser(), followUpOnly, unreadOnly ); + return messageConversationStore.getMessageConversationCount( currentUserService.getCurrentUser(), followUpOnly, + unreadOnly ); } - + public List getAllMessageConversations() { return messageConversationStore.getMessageConversations( null, false, false, null, null ); @@ -278,7 +297,7 @@ messageConversationStore.deleteUserMessages( user ); messageConversationStore.removeUserFromMessageConversations( user ); } - + // ------------------------------------------------------------------------- // Supportive methods // ------------------------------------------------------------------------- @@ -289,6 +308,12 @@ { messageSender.sendMessage( subject, text, sender, users, false ); } - } - + } + + @Override + public List getLastRecipients( int first, int max, Integer currentUserId ) + { + return messageConversationStore.getLastRecipients( currentUserService.getCurrentUser(), first, max, currentUserId ); + } + } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/hibernate/HibernateMessageConversationStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/hibernate/HibernateMessageConversationStore.java 2012-10-08 14:17:25 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/hibernate/HibernateMessageConversationStore.java 2012-12-13 08:06:31 +0000 @@ -36,6 +36,7 @@ import org.hisp.dhis.jdbc.StatementBuilder; import org.hisp.dhis.message.MessageConversation; import org.hisp.dhis.message.MessageConversationStore; +import org.hisp.dhis.message.UserMessage; import org.hisp.dhis.system.util.SqlHelper; import org.hisp.dhis.user.User; import org.springframework.jdbc.core.RowMapper; @@ -44,14 +45,15 @@ * @author Lars Helge Overland */ public class HibernateMessageConversationStore - extends HibernateIdentifiableObjectStore implements MessageConversationStore + extends HibernateIdentifiableObjectStore + implements MessageConversationStore { // ------------------------------------------------------------------------- // Dependencies // ------------------------------------------------------------------------- private StatementBuilder statementBuilder; - + public void setStatementBuilder( StatementBuilder statementBuilder ) { this.statementBuilder = statementBuilder; @@ -61,123 +63,125 @@ // Implementation methods // ------------------------------------------------------------------------- - public List getMessageConversations( User user, boolean followUpOnly, boolean unreadOnly, Integer first, Integer max ) + + + public List getMessageConversations( User user, boolean followUpOnly, boolean unreadOnly, + Integer first, Integer max ) { SqlHelper sh = new SqlHelper(); - - String sql = - "select mc.messageconversationid, mc.uid, mc.subject, mc.lastmessage, ui.surname, ui.firstname, um.isread, um.isfollowup, (" + - "select count(messageconversationid) from messageconversation_messages mcm where mcm.messageconversationid=mc.messageconversationid) as messagecount " + - "from messageconversation mc " + - "left join messageconversation_usermessages mu on mc.messageconversationid=mu.messageconversationid " + - "left join usermessage um on mu.usermessageid=um.usermessageid " + - "left join userinfo ui on mc.lastsenderid=ui.userinfoid "; - + + String sql = "select mc.messageconversationid, mc.uid, mc.subject, mc.lastmessage, ui.surname, ui.firstname, um.isread, um.isfollowup, (" + + "select count(messageconversationid) from messageconversation_messages mcm where mcm.messageconversationid=mc.messageconversationid) as messagecount " + + "from messageconversation mc " + + "left join messageconversation_usermessages mu on mc.messageconversationid=mu.messageconversationid " + + "left join usermessage um on mu.usermessageid=um.usermessageid " + + "left join userinfo ui on mc.lastsenderid=ui.userinfoid "; + if ( user != null ) { sql += sh.whereAnd() + " um.userid=" + user.getId() + " "; } - + if ( followUpOnly ) { sql += sh.whereAnd() + " um.isfollowup=true "; } - + if ( unreadOnly ) { sql += sh.whereAnd() + " um.isread=false "; } - + sql += "order by mc.lastmessage desc "; - + if ( first != null && max != null ) { sql += statementBuilder.limitRecord( first, max ); } - + final List conversations = jdbcTemplate.query( sql, new RowMapper() { - public MessageConversation mapRow( ResultSet resultSet, int count ) throws SQLException + public MessageConversation mapRow( ResultSet resultSet, int count ) + throws SQLException { MessageConversation conversation = new MessageConversation(); - + conversation.setId( resultSet.getInt( 1 ) ); conversation.setUid( resultSet.getString( 2 ) ); conversation.setSubject( resultSet.getString( 3 ) ); conversation.setLastMessage( resultSet.getDate( 4 ) ); conversation.setLastSenderSurname( resultSet.getString( 5 ) ); - conversation.setLastSenderFirstname( resultSet.getString( 6 ) ); + conversation.setLastSenderFirstname( resultSet.getString( 6 ) ); conversation.setRead( resultSet.getBoolean( 7 ) ); conversation.setFollowUp( resultSet.getBoolean( 8 ) ); conversation.setMessageCount( resultSet.getInt( 9 ) ); - + return conversation; - } + } } ); - + return conversations; } public int getMessageConversationCount( User user, boolean followUpOnly, boolean unreadOnly ) { - String sql = - "select count(*) from messageconversation mc " + - "left join messageconversation_usermessages mu on mc.messageconversationid=mu.messageconversationid " + - "left join usermessage um on mu.usermessageid=um.usermessageid " + - "where um.userid=" + user.getId() + " "; + String sql = "select count(*) from messageconversation mc " + + "left join messageconversation_usermessages mu on mc.messageconversationid=mu.messageconversationid " + + "left join usermessage um on mu.usermessageid=um.usermessageid " + "where um.userid=" + user.getId() + + " "; if ( followUpOnly ) { sql += "and um.isfollowup=true "; } - + if ( unreadOnly ) { sql += "and um.isread=false "; } - + return jdbcTemplate.queryForInt( sql ); } - + public long getUnreadUserMessageConversationCount( User user ) { String hql = "select count(*) from MessageConversation m join m.userMessages u where u.user = :user and u.read = false"; - + Query query = getQuery( hql ); query.setEntity( "user", user ); query.setCacheable( true ); - + return (Long) query.uniqueResult(); } - + public int deleteMessages( User sender ) { - String sql = "delete from messageconversation_messages where messageid in (" + - "select messageid from message where userid = " + sender.getId() + ")"; - + String sql = "delete from messageconversation_messages where messageid in (" + + "select messageid from message where userid = " + sender.getId() + ")"; + getSqlQuery( sql ).executeUpdate(); - + String hql = "delete Message m where m.sender = :sender"; Query query = getQuery( hql ); query.setEntity( "sender", sender ); return query.executeUpdate(); } - + public int deleteUserMessages( User user ) { - String sql = "delete from messageconversation_usermessages where usermessageid in (" + - "select usermessageid from usermessage where userid = " + user.getId() + ")"; + String sql = "delete from messageconversation_usermessages where usermessageid in (" + + "select usermessageid from usermessage where userid = " + user.getId() + ")"; getSqlQuery( sql ).executeUpdate(); - + String hql = "delete UserMessage u where u.user = :user"; Query query = getQuery( hql ); query.setEntity( "user", user ); return query.executeUpdate(); } - + public int removeUserFromMessageConversations( User lastSender ) { String hql = "update MessageConversation m set m.lastSender = null where m.lastSender = :lastSender"; @@ -186,4 +190,38 @@ query.setEntity( "lastSender", lastSender ); return query.executeUpdate(); } + + public List getLastRecipients( User user, Integer first, Integer max, Integer currentUserId ) + { + String sql = " select distinct userinfoid, surname, firstname from userinfo uf" + + " JOIN usermessage um ON (uf.userinfoid = um.userid)" + + " JOIN messageconversation_usermessages mu ON (um.usermessageid = mu.usermessageid)" + + " JOIN messageconversation mc ON(mu.messageconversationid = mc.messageconversationid)" + + " where mc.lastsenderid = " + currentUserId; + + sql += " order by userinfoid desc"; + + if ( first != null && max != null ) + { + sql += " " + statementBuilder.limitRecord( first, max ); + } + + + final List recipients = jdbcTemplate.query( sql, new RowMapper() + { + public UserMessage mapRow( ResultSet resultSet, int count ) throws SQLException + { + UserMessage recipient = new UserMessage(); + + recipient.setId( resultSet.getInt( 1 ) ); + recipient.setLastRecipientSurname( resultSet.getString( 2 ) ); + recipient.setLastRecipientFirstname( resultSet.getString( 3 ) ); + + return recipient; + } + } ); + + + return recipients; + } } \ No newline at end of file === modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/message/MessageServiceTest.java' --- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/message/MessageServiceTest.java 2012-11-20 17:04:08 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/message/MessageServiceTest.java 2012-12-13 08:06:31 +0000 @@ -49,6 +49,7 @@ private User sender; private User userA; private User userB; + private Set users; @@ -65,10 +66,12 @@ sender = createUser( 'S' ); userA = createUser( 'A' ); userB = createUser( 'B' ); + userService.addUser( sender ); userService.addUser( userA ); userService.addUser( userB ); + users = new HashSet(); users.add( userA ); @@ -106,7 +109,7 @@ conversation.addUserMessage( userMessageB ); Message contentA = new Message( "TextA", "MetaA", sender ); - Message contentB = new Message( "TextB", "MetaB", sender ); + Message contentB = new Message( "TextB", "MetaB", sender); conversation.addMessage( contentA ); conversation.addMessage( contentB ); @@ -128,7 +131,7 @@ @Test public void testDeleteMessage() { - MessageConversation conversation = new MessageConversation( "Subject", sender ); + MessageConversation conversation = new MessageConversation( "Subject", sender); UserMessage userMessageA = new UserMessage( userA ); UserMessage userMessageB = new UserMessage( userB ); @@ -137,7 +140,7 @@ conversation.addUserMessage( userMessageB ); Message contentA = new Message( "TextA", "MetaA", sender ); - Message contentB = new Message( "TextB", "MetaB", sender ); + Message contentB = new Message( "TextB", "MetaB", sender); conversation.addMessage( contentA ); conversation.addMessage( contentB ); @@ -184,7 +187,7 @@ public void testSendReply() { MessageConversation message = new MessageConversation( "Subject", sender ); - message.addMessage( new Message( "TextA", "MetaA", sender ) ); + message.addMessage( new Message( "TextA", "MetaA", sender) ); int id = messageService.saveMessageConversation( message ); messageService.sendReply( message, "TextB", "MetaB" ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ResourceTableController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ResourceTableController.java 2012-12-04 18:31:02 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ResourceTableController.java 2012-12-13 08:06:31 +0000 @@ -29,7 +29,6 @@ import javax.servlet.http.HttpServletResponse; -import org.hisp.dhis.analytics.AnalyticsTableService; import org.hisp.dhis.api.utils.ContextUtils; import org.hisp.dhis.resourcetable.ResourceTableService; import org.springframework.beans.factory.annotation.Autowired; === modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessageAction.java' --- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessageAction.java 2012-01-12 08:43:22 +0000 +++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessageAction.java 2012-12-13 08:06:31 +0000 @@ -31,12 +31,16 @@ import org.hisp.dhis.message.Message; import org.hisp.dhis.message.MessageConversation; import org.hisp.dhis.message.MessageService; +import org.hisp.dhis.message.UserMessage; import org.hisp.dhis.user.CurrentUserService; +import org.hisp.dhis.user.User; import org.springframework.util.Assert; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * @author Morten Olav Hansen @@ -97,16 +101,17 @@ // ------------------------------------------------------------------------- @Override - public String execute() throws Exception + public String execute() + throws Exception { Assert.hasText( conversationId ); MessageConversation conversation = messageService.getMessageConversation( conversationId ); - + subject = conversation.getSubject(); + messages = new ArrayList( conversation.getMessages() ); Collections.reverse( messages ); - conversation.markRead( currentUserService.getCurrentUser() ); messageService.updateMessageConversation( conversation ); === modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessagesAction.java' --- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessagesAction.java 2012-01-09 14:29:43 +0000 +++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/message/action/GetMessagesAction.java 2012-12-13 08:06:31 +0000 @@ -27,12 +27,15 @@ package org.hisp.dhis.light.message.action; -import com.opensymphony.xwork2.Action; +import java.util.ArrayList; +import java.util.List; + import org.hisp.dhis.message.MessageConversation; import org.hisp.dhis.message.MessageService; +import org.hisp.dhis.message.UserMessage; +import org.hisp.dhis.user.CurrentUserService; -import java.util.ArrayList; -import java.util.List; +import com.opensymphony.xwork2.Action; /** * @author Morten Olav Hansen @@ -51,6 +54,13 @@ this.messageService = messageService; } + private CurrentUserService currentUserService; + + public void setCurrentUserService( CurrentUserService currentUserService ) + { + this.currentUserService = currentUserService; + } + // ------------------------------------------------------------------------- // Input & Output // ------------------------------------------------------------------------- @@ -62,15 +72,34 @@ return conversations; } + private List usermessages; + + public List getUsermessages() + { + return usermessages; + } + + private Integer currentUserId; + + public void setCurrentUserId( Integer currentUserId ) + { + this.currentUserId = currentUserId; + } + // ------------------------------------------------------------------------- // Action Implementation // ------------------------------------------------------------------------- @Override - public String execute() throws Exception + public String execute() + throws Exception { conversations = new ArrayList( messageService.getMessageConversations( 0, 10 ) ); + currentUserId = currentUserService.getCurrentUser().getId(); + + usermessages = new ArrayList( messageService.getLastRecipients( 0, 5, currentUserId ) ); + return SUCCESS; } } === modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/messaging/action/SendMessagesAction.java' --- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/messaging/action/SendMessagesAction.java 2012-12-04 08:35:56 +0000 +++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/messaging/action/SendMessagesAction.java 2012-12-13 08:06:31 +0000 @@ -48,7 +48,7 @@ @Autowired private MessageService messageService; - + @Autowired private UserService userService; === modified file 'dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml 2012-12-04 08:35:56 +0000 +++ dhis-2/dhis-web/dhis-web-light/src/main/resources/META-INF/dhis/beans.xml 2012-12-13 08:06:31 +0000 @@ -509,6 +509,7 @@ + /light/messages.action + + + /dhis-web-light/main.vm + /dhis-web-light/messages.vm +

- +

$i18n.getString( "last_recipients" )

- -
-
-

$i18n.getString( "send_feedback" )

-

- $i18n.getString( "subject" ) *
- - - $i18n.getString( "text" ) *
- - -

-
-
+

+

    +#set( $max = 1) + #foreach( $usermessage in $usermessages ) + +
  • $usermessage.lastRecipientName
  • + #if ( $max == 5 ) + #break + #end + #set( $max = $max+1 ) + + #end +
+