diff --git a/src/main/java/org/gcube/portets/user/message_conversations/client/MessageConversations.java b/src/main/java/org/gcube/portets/user/message_conversations/client/MessageConversations.java index a29b5ef..ae0fa44 100644 --- a/src/main/java/org/gcube/portets/user/message_conversations/client/MessageConversations.java +++ b/src/main/java/org/gcube/portets/user/message_conversations/client/MessageConversations.java @@ -3,8 +3,6 @@ package org.gcube.portets.user.message_conversations.client; import org.gcube.portets.user.message_conversations.client.ui.ApplicationView; import com.google.gwt.core.client.EntryPoint; -import com.google.gwt.core.client.GWT; -import com.google.gwt.user.client.rpc.ServiceDefTarget; import com.google.gwt.user.client.ui.RootPanel; /** @@ -13,28 +11,14 @@ import com.google.gwt.user.client.ui.RootPanel; public class MessageConversations implements EntryPoint { public static final String DIV_CONTAINER_ID = "create-users-container"; public static final String ARTIFACT_ID = "messages"; - /** - * Create a remote service proxy to talk to the server-side Greeting service. - */ - private final MessageServiceAsync convService = GWT.create(MessageService.class); private ApplicationView ap; /** * This is the entry point method. */ public void onModuleLoad() { - ((ServiceDefTarget) convService).setServiceEntryPoint(Utils.getServiceEntryPoint()); ap = new ApplicationView(); RootPanel.get(DIV_CONTAINER_ID).add(ap); - ap.readUserMessages(false); - } - - - - - - - } diff --git a/src/main/java/org/gcube/portets/user/message_conversations/client/ui/ApplicationView.java b/src/main/java/org/gcube/portets/user/message_conversations/client/ui/ApplicationView.java index e0ba3ae..c0bbccc 100755 --- a/src/main/java/org/gcube/portets/user/message_conversations/client/ui/ApplicationView.java +++ b/src/main/java/org/gcube/portets/user/message_conversations/client/ui/ApplicationView.java @@ -115,6 +115,7 @@ public class ApplicationView extends Composite { forward.setTooltip("Forward"); forward.setTooltipPosition(Position.LEFT); } + readUserMessages(false); } /** @@ -140,12 +141,18 @@ public class ApplicationView extends Composite { messageLoader.setVisible(false); } } else { - RootPanel.get("create-users-container").add(new HTML("It is impossible to read your messages at this time. " - + "This could be a server error, please try to reload the page")); + showErrorOccurred(); } } }); } + private void showErrorOccurred() { + messagesCollection.clear(); + messagesLoader.setVisible(false); + messageLoader.setVisible(false); + hideSidePanel(); + writeErrorMessage(); + } /** * * @param messages @@ -375,4 +382,20 @@ public class ApplicationView extends Composite { totalMessages++; updateBadge(false); } + + private void writeErrorMessage() { + MessagesResources images = GWT.create(MessagesResources.class); + List recipients = Arrays.asList(new MessageUserModel(0, "you", "You", "")); + @SuppressWarnings("deprecation") + MessageUserModel sender = new MessageUserModel(0, "jarvis", "D4Science Team", images.d4scienceTeam().getURL(), "", ""); + ConvMessage welcomeMessage = new ConvMessage("0", "An error occurred!", sender, recipients , new Date(), MessagesResources.ERROR_MESSAGE, true, false); + FAB.setVisible(false); + displayMessage.showMessage(welcomeMessage); + welcomeMessage.setContent(MessagesResources.ERROR_MESSAGE.substring(0, 102)+ " ..."); + MessageItem item = new MessageItem(welcomeMessage, messagesCollection, this, false); + item.hideMessageMenu(); + messagesCollection.add(item); + totalMessages++; + updateBadge(false); + } } diff --git a/src/main/java/org/gcube/portets/user/message_conversations/client/ui/resources/MessagesResources.java b/src/main/java/org/gcube/portets/user/message_conversations/client/ui/resources/MessagesResources.java index b4fcf39..2c24783 100644 --- a/src/main/java/org/gcube/portets/user/message_conversations/client/ui/resources/MessagesResources.java +++ b/src/main/java/org/gcube/portets/user/message_conversations/client/ui/resources/MessagesResources.java @@ -5,15 +5,18 @@ import com.google.gwt.resources.client.ImageResource; public interface MessagesResources extends ClientBundle { public static final String WELCOME_MESSAGE = "Welcome to your Messages.\nMessages lets you stay connected, organized, and productive at work, at home, and everywhere in between. "+ -"Also, you can easily attach very large files to your messages from Workspace." + -"\n\nThis message will automatically be deleted as soon you'll receive another one."; - + "Also, you can easily attach very large files to your messages from Workspace." + + "\n\nThis message will automatically be deleted as soon you'll receive another one."; + + public static final String ERROR_MESSAGE = "We are very sorry, it is impossible to read your messages at the moment.\n\nThis could be either a networking problem or an error on the server." + + " Please try to reload this page, if the error persists report the issue."; + @Source("group.png") ImageResource group(); - + @Source("user.png") ImageResource user(); - + @Source("d4science.png") ImageResource d4scienceTeam(); } diff --git a/src/main/java/org/gcube/portets/user/message_conversations/server/ConvServiceImpl.java b/src/main/java/org/gcube/portets/user/message_conversations/server/ConvServiceImpl.java index 05f618d..08bb1b5 100644 --- a/src/main/java/org/gcube/portets/user/message_conversations/server/ConvServiceImpl.java +++ b/src/main/java/org/gcube/portets/user/message_conversations/server/ConvServiceImpl.java @@ -121,73 +121,79 @@ public class ConvServiceImpl extends RemoteServiceServlet implements MessageServ e.printStackTrace(); return null; } + List listMessages = null; + try { + listMessages = (sent) ? + workspace.getWorkspaceMessageManager().getSentMessages() : workspace.getWorkspaceMessageManager().getReceivedMessages(); + } catch (Exception e) { + _log.error("Could not read messages of " + user.getFullname()); + return null; + } + _log.debug("Got messages of " + user.getFullname() + " how many? " + listMessages.size()); + //the messages are returned from the oldest to the new one, so we reverse them + Collections.reverse(listMessages); + LiferayUserManager um = new LiferayUserManager(); - List listMessages = (sent) ? - workspace.getWorkspaceMessageManager().getSentMessages() : workspace.getWorkspaceMessageManager().getReceivedMessages(); - _log.debug("Got messages of " + user.getFullname() + " how many? " + listMessages.size()); - //the messages are returned from the oldest to the new one, so we reverse them - Collections.reverse(listMessages); - LiferayUserManager um = new LiferayUserManager(); + for (WorkspaceMessage m : listMessages) { + String previewBody = m.getBody().length() > 80 ? m.getBody().substring(0, 79) + " ..." : m.getBody(); + MessageUserModel mu = null; + GCubeUser sender = null; + try { + if (sent) { + if (m.getAddresses().size() < 2) { + GCubeUser recipient = um.getUserByUsername(m.getAddresses().get(0)); + mu = new MessageUserModel(recipient.getUserId(), recipient.getUsername(), recipient.getFullname(), recipient.getUserAvatarURL(), "", ""); + } else { + //we have at least 2 recipients + GCubeUser recipient1 = um.getUserByUsername(m.getAddresses().get(0)); + GCubeUser recipient2 = um.getUserByUsername(m.getAddresses().get(1)); + String label2Display = recipient1.getFirstName() + " & " + recipient2.getFirstName(); + if (m.getAddresses().size() > 2) + label2Display += " & ..."; + mu = new MessageUserModel(recipient1.getUserId(), recipient1.getUsername(), label2Display, null, "", ""); - for (WorkspaceMessage m : listMessages) { - String previewBody = m.getBody().length() > 80 ? m.getBody().substring(0, 79) + " ..." : m.getBody(); - MessageUserModel mu = null; - GCubeUser sender = null; - try { - if (sent) { - if (m.getAddresses().size() < 2) { - GCubeUser recipient = um.getUserByUsername(m.getAddresses().get(0)); - mu = new MessageUserModel(recipient.getUserId(), recipient.getUsername(), recipient.getFullname(), recipient.getUserAvatarURL(), "", ""); - } else { - //we have at least 2 recipients - GCubeUser recipient1 = um.getUserByUsername(m.getAddresses().get(0)); - GCubeUser recipient2 = um.getUserByUsername(m.getAddresses().get(1)); - String label2Display = recipient1.getFirstName() + " & " + recipient2.getFirstName(); - if (m.getAddresses().size() > 2) - label2Display += " & ..."; - mu = new MessageUserModel(recipient1.getUserId(), recipient1.getUsername(), label2Display, null, "", ""); - - } - } else { //received message - sender = um.getUserByUsername(m.getSender().getPortalLogin()); - mu = new MessageUserModel(sender.getUserId(), sender.getUsername(), sender.getFullname(), sender.getUserAvatarURL(), "", ""); - } - } catch (Exception ex) { - if (!sent) { - mu = new MessageUserModel(m.getSender().getPortalLogin()); - } else { - mu = new MessageUserModel(m.getAddresses().get(0)); - } - } - boolean hasAttachments = !m.getAttachmentsIds().isEmpty(); - if (!sent) { //received messages - - toReturn.add(new ConvMessage( - m.getId(), - m.getSubject(), - mu, - new Date(m.getSendTime().getTimeInMillis()), - previewBody, - m.isRead(), - hasAttachments)); - } else { //sent messages - ArrayList recipients = new ArrayList<>(); - for (String rec : m.getAddresses()) { - recipients.add(new MessageUserModel(rec)); - } - toReturn.add(new ConvMessage( - m.getId(), - m.getSubject(), - mu, - recipients, - new Date(m.getSendTime().getTimeInMillis()), - previewBody, - m.isRead(), - hasAttachments)); } + } else { //received message + sender = um.getUserByUsername(m.getSender().getPortalLogin()); + mu = new MessageUserModel(sender.getUserId(), sender.getUsername(), sender.getFullname(), sender.getUserAvatarURL(), "", ""); } + } catch (Exception ex) { + if (!sent) { + mu = new MessageUserModel(m.getSender().getPortalLogin()); + } else { + mu = new MessageUserModel(m.getAddresses().get(0)); + } + } + boolean hasAttachments = !m.getAttachmentsIds().isEmpty(); + if (!sent) { //received messages + + toReturn.add(new ConvMessage( + m.getId(), + m.getSubject(), + mu, + new Date(m.getSendTime().getTimeInMillis()), + previewBody, + m.isRead(), + hasAttachments)); + } else { //sent messages + ArrayList recipients = new ArrayList<>(); + for (String rec : m.getAddresses()) { + recipients.add(new MessageUserModel(rec)); + } + toReturn.add(new ConvMessage( + m.getId(), + m.getSubject(), + mu, + recipients, + new Date(m.getSendTime().getTimeInMillis()), + previewBody, + m.isRead(), + hasAttachments)); + } + } } catch (Exception e) { e.printStackTrace(); + return null; } _log.trace("get All Messages Received "); return toReturn; @@ -204,8 +210,8 @@ public class ConvServiceImpl extends RemoteServiceServlet implements MessageServ Workspace workspace = manager.getHome().getWorkspace(); WorkspaceMessage m = (sent) ? workspace.getWorkspaceMessageManager().getSentMessage(messageId): workspace.getWorkspaceMessageManager().getReceivedMessage(messageId); - m.setStatus(false); - return true; + m.setStatus(false); + return true; } catch (Exception e) { e.printStackTrace(); return false;