Author: norman
Date: Mon Jul 20 13:29:40 2009
New Revision: 795828
URL: http://svn.apache.org/viewvc?rev=795828&view=rev
Log:
Add support for deleting messages
Some cleanup
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
labs/hupa/src/main/java/org/apache/hupa/server/DeleteMessageHandler.java
labs/hupa/src/main/java/org/apache/hupa/server/FetchMessagesHandler.java
labs/hupa/src/main/java/org/apache/hupa/server/LogoutUserHandler.java
labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java
labs/hupa/src/main/java/org/apache/hupa/shared/data/IMAPFolder.java
labs/hupa/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java
labs/hupa/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageResult.java
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
---
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
(original)
+++
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
Mon Jul 20 13:29:40 2009
@@ -39,6 +39,8 @@
import org.apache.hupa.shared.events.LoadMessagesEventHandler;
import org.apache.hupa.shared.events.LoginEvent;
import org.apache.hupa.shared.events.LoginEventHandler;
+import org.apache.hupa.shared.events.LogoutEvent;
+import org.apache.hupa.shared.events.LogoutEventHandler;
import org.apache.hupa.shared.rpc.DeleteMessage;
import org.apache.hupa.shared.rpc.DeleteMessageResult;
@@ -56,12 +58,15 @@
public ArrayList<Integer> getSelectedMessagesUids();
public com.google.gwt.event.dom.client.HasClickHandlers
getDeleteClick();
public void reloadData(IMAPUser user, IMAPFolder folder,String
searchValue);
+ public void removeMessages(ArrayList<Integer> uids);
+ public void reset();
}
- protected IMAPUser user;
- protected IMAPFolder folder;
- protected String searchValue;
+ private IMAPUser user;
+ private IMAPFolder folder;
+ private String searchValue;
private DispatchAsync dispatcher;
+ public final static Place PLACE = new Place("IMAPMessageList");
@Inject
public IMAPMessageListPresenter(IMAPMessageListPresenter.Display
display,EventBus bus,DispatchAsync dispatcher) {
@@ -72,8 +77,7 @@
@Override
public Place getPlace() {
- // TODO Auto-generated method stub
- return null;
+ return PLACE;
}
@Override
@@ -98,7 +102,14 @@
});
-
+ eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
+
+ public void onLogout(LogoutEvent event) {
+ display.reset();
+ }
+
+
+ });
display.getDataTableClick().addClickHandler(new
ClickHandler<IMAPMessage>() {
public void onClick(ClickEvent<IMAPMessage> event) {
@@ -119,8 +130,7 @@
}
public void
onSuccess(DeleteMessageResult result) {
- // TODO Auto-generated method
stub
-
+
display.removeMessages(result.getMessageUids());
}
});
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
Mon Jul 20 13:29:40 2009
@@ -99,6 +99,8 @@
private MyFixedWidthGrid<IMAPMessage> dataTable = createDataTable();
private ArrayList<Integer> selectedUids = new ArrayList<Integer>();
private Button deleteMailButton = new
Button(constants.deleteMailButton());
+ private ListBox pageBox = new ListBox();
+
@Inject
@@ -195,6 +197,7 @@
navigatorBar.add(deleteMailButton);
+ // Add handler to get a list of selected rows
mailTable.getDataTable().addRowSelectionHandler(new
RowSelectionHandler() {
public void onRowSelection(RowSelectionEvent event) {
@@ -203,18 +206,21 @@
} else {
deleteMailButton.setEnabled(true);
}
- selectedUids.clear();
Iterator<Row> rowIt =
event.getSelectedRows().iterator();
while(rowIt.hasNext()) {
int uid =
mailTable.getRowValue(rowIt.next().getRowIndex()).getUid();
- selectedUids.add(uid);
+ selectedUids.add(new Integer(uid));
+ }
+ Iterator<Row> deselectedRowIt =
event.getDeselectedRows().iterator();
+ while(deselectedRowIt.hasNext()) {
+ int uid =
mailTable.getRowValue(deselectedRowIt.next().getRowIndex()).getUid();
+ selectedUids.remove(new Integer(uid));
}
}
});
- final ListBox pageBox = new ListBox();
pageBox.addItem("20");
pageBox.addItem("50");
pageBox.addItem("100");
@@ -448,6 +454,13 @@
mailTable.getTableModel().setRowCount(0);
mailTable.reloadPage();
}
+
+ public void reset() {
+ this.user = null;
+ this.folder = null;
+ pageBox.setSelectedIndex(0);
+
+ }
public HasPageLoadHandlers getDataTableLoad() {
return mailTable;
@@ -478,5 +491,18 @@
public HasClickHandlers getDeleteClick() {
return deleteMailButton;
}
-
+
+ public void removeMessages(ArrayList<Integer> uids) {
+ List<Integer> rows = new ArrayList<Integer>();
+ for (int a = 0; a < dataTable.getRowCount(); a++) {
+ IMAPMessage msg = mailTable.getRowValue(a);
+ if (uids.contains(msg.getUid())) {
+ rows.add(a);
+ }
+ }
+ // remove rows
+ for (int i = 0; i < rows.size(); i++) {
+ dataTable.removeRow(rows.get(i) -i);
+ }
+ }
}
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
---
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
(original)
+++
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
Mon Jul 20 13:29:40 2009
@@ -19,6 +19,9 @@
package org.apache.hupa.client.mvp;
+import java.util.ArrayList;
+import java.util.Arrays;
+
import net.customware.gwt.dispatch.client.DispatchAsync;
import net.customware.gwt.presenter.client.EventBus;
import net.customware.gwt.presenter.client.place.Place;
@@ -26,8 +29,18 @@
import net.customware.gwt.presenter.client.widget.WidgetDisplay;
import net.customware.gwt.presenter.client.widget.WidgetPresenter;
+import org.apache.hupa.shared.data.IMAPFolder;
import org.apache.hupa.shared.data.IMAPMessage;
-
+import org.apache.hupa.shared.data.IMAPUser;
+import org.apache.hupa.shared.events.LoadMessagesEvent;
+import org.apache.hupa.shared.rpc.DeleteMessage;
+import org.apache.hupa.shared.rpc.DeleteMessageResult;
+import org.apache.hupa.shared.rpc.FetchMessages;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HasHTML;
import com.google.gwt.user.client.ui.HasText;
import com.google.inject.Inject;
@@ -44,11 +57,15 @@
public HasText getSubject();
public HasHTML getContent();
+
+ public HasClickHandlers getDeleteButtonClick();
}
public static final Place PLACE = new Place("IMAPMessage");
private IMAPMessage message;
private DispatchAsync dispatcher;
+ private IMAPFolder folder;
+ private IMAPUser user;
@Inject
private IMAPMessagePresenter(IMAPMessagePresenter.Display
display,EventBus bus, DispatchAsync dispatcher) {
@@ -58,8 +75,10 @@
}
- public void bind(IMAPMessage message) {
+ public void bind(IMAPUser user, IMAPFolder folder, IMAPMessage message)
{
this.message = message;
+ this.folder = folder;
+ this.user = user;
updateDisplay();
}
@@ -77,6 +96,28 @@
@Override
protected void onBind() {
+ display.getDeleteButtonClick().addClickHandler(new
ClickHandler() {
+
+ public void onClick(ClickEvent event) {
+ ArrayList<Integer> uidList = new
ArrayList<Integer>();
+ uidList.add(message.getUid());
+ dispatcher.execute(new
DeleteMessage(user,folder,uidList), new AsyncCallback<DeleteMessageResult>() {
+
+ public void onFailure(Throwable caught)
{
+ // TODO Auto-generated method
stub
+
+ }
+
+ public void
onSuccess(DeleteMessageResult result) {
+ eventBus.fireEvent(new
LoadMessagesEvent(user,folder));
+ }
+
+ });
+ }
+
+ });
+
+
}
@Override
Modified:
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java Mon
Jul 20 13:29:40 2009
@@ -25,6 +25,7 @@
import org.cobogw.gwt.user.client.ui.ButtonBar;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
@@ -136,4 +137,8 @@
}
+ public HasClickHandlers getDeleteButtonClick() {
+ return deleteMsgButton;
+ }
+
}
Modified: labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java Mon
Jul 20 13:29:40 2009
@@ -66,7 +66,6 @@
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.user.client.ui.HTMLTable.Cell;
import com.google.inject.Inject;
public class MainPresenter extends WidgetPresenter<MainPresenter.Display>{
@@ -86,11 +85,10 @@
private IMAPUser user;
private IMAPFolder folder;
- protected Cell cell;
private IMAPTreeItem tItem;
private IMAPMessageListPresenter messageListPresenter;
private IMAPMessagePresenter messagePresenter;
-
+ public static final Place PLACE = new Place("Main");
@Inject
public MainPresenter(MainPresenter.Display display, EventBus bus,
DispatchAsync dispatcher,IMAPMessageListPresenter messageListPresenter,
IMAPMessagePresenter messagePresenter) {
@@ -182,7 +180,7 @@
}
private void showMessage(IMAPMessage message) {
- messagePresenter.bind(message);
+ messagePresenter.bind(user,folder,message);
display.setCenter(messagePresenter.getDisplay().asWidget());
}
@@ -195,8 +193,7 @@
@Override
public Place getPlace() {
- // TODO Auto-generated method stub
- return null;
+ return PLACE;
}
@Override
@@ -220,7 +217,9 @@
eventBus.addHandler(MessagesReceivedEvent.TYPE, new
MessagesReceivedEventHandler() {
public void onMessagesReceived(MessagesReceivedEvent
event) {
+ // fill the oracle and display the messagetable
display.fillOracle(event.getMessages());
+ showMessageTable();
}
});
Modified:
labs/hupa/src/main/java/org/apache/hupa/server/DeleteMessageHandler.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/DeleteMessageHandler.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/DeleteMessageHandler.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/DeleteMessageHandler.java
Mon Jul 20 13:29:40 2009
@@ -19,6 +19,8 @@
package org.apache.hupa.server;
+import java.util.ArrayList;
+
import net.customware.gwt.dispatch.server.ActionHandler;
import net.customware.gwt.dispatch.server.ExecutionContext;
import net.customware.gwt.dispatch.shared.ActionException;
@@ -44,25 +46,39 @@
this.logger = logger;
}
+ /*
+ * (non-Javadoc)
+ * @see
net.customware.gwt.dispatch.server.ActionHandler#execute(net.customware.gwt.dispatch.shared.Action,
net.customware.gwt.dispatch.server.ExecutionContext)
+ */
public DeleteMessageResult execute(DeleteMessage action,
ExecutionContext context)
throws ActionException {
+ IMAPFolder folder = action.getFolder();
+ ArrayList<Integer> uids = action.getMessageUids();
+
+ logger.info("Deleting messages with uids "+
action.getMessageUids() + " for user " + action.getUser() + " in folder" +
action.getFolder());
+
try {
IMAPProtocol protocol =
cache.getProtocol(action.getUser());
- IMAPFolder folder = action.getFolder();
+
protocol.select(folder.getFullName());
+ SequenceSet set = new SequenceSet(uids);
if
(folder.getFullName().equalsIgnoreCase(IMAPFolder.DEFAULT_TRASH) == false) {
- protocol.copy(new
SequenceSet(action.getMessageUids()), IMAPFolder.DEFAULT_TRASH);
+ protocol.uidCopy(set, IMAPFolder.DEFAULT_TRASH);
}
- protocol.store(new
SequenceSet(action.getMessageUids()), true, new IMAPFlags(IMAPFlags.DELETED));
+ protocol.uidStore(set, true, new
IMAPFlags(IMAPFlags.DELETED));
protocol.expunge();
} catch (Exception e) {
- logger.error("Error while deleting messages with uids +
"+ action.getMessageUids() + " for user " + action.getUser() + " in" +
action.getFolder());
+ logger.error("Error while deleting messages with uids
"+ action.getMessageUids() + " for user " + action.getUser() + " in folder" +
action.getFolder(),e);
throw new ActionException("Error while deleting
messages",e);
}
- return new DeleteMessageResult();
+ return new DeleteMessageResult(action.getUser(),folder,uids);
}
+ /*
+ * (non-Javadoc)
+ * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+ */
public Class<DeleteMessage> getActionType() {
return DeleteMessage.class;
}
Modified:
labs/hupa/src/main/java/org/apache/hupa/server/FetchMessagesHandler.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/FetchMessagesHandler.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/FetchMessagesHandler.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/FetchMessagesHandler.java
Mon Jul 20 13:29:40 2009
@@ -106,7 +106,6 @@
}
sSet = new SequenceSet(matchedList);
}
-
org.columba.ristretto.imap.IMAPHeader[] headers = proto
.fetchHeader(sSet);
IMAPFlags[] flags = proto.fetchFlags(sSet);
Modified: labs/hupa/src/main/java/org/apache/hupa/server/LogoutUserHandler.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/LogoutUserHandler.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/LogoutUserHandler.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/LogoutUserHandler.java Mon
Jul 20 13:29:40 2009
@@ -47,9 +47,12 @@
throws ActionException {
IMAPUser user = action.getUser();
user.setAuthenticated(false);
-
- disconnect(user);
-
+ try {
+ cache.getProtocol(user).expunge();
+ } catch (Exception e) {
+ logger.error("Error while expunge for user " + user);
+ }
+ cache.deleteProcotol(user);
return new LogoutUserResult(user);
}
@@ -61,9 +64,4 @@
ExecutionContext arg2) throws ActionException {
}
-
- protected void disconnect(IMAPUser user) {
- cache.deleteProcotol(user);
- }
-
}
Modified: labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/guice/ServerModul.java Mon
Jul 20 13:29:40 2009
@@ -22,6 +22,7 @@
import net.customware.gwt.dispatch.server.guice.ActionHandlerModule;
import org.apache.commons.logging.Log;
+import org.apache.hupa.server.DeleteMessageHandler;
import org.apache.hupa.server.ExposeMessageHandler;
import org.apache.hupa.server.FetchFoldersHandler;
import org.apache.hupa.server.FetchMessagesHandler;
@@ -48,6 +49,7 @@
bindHandler(FetchMessagesHandler.class);
bindHandler(LogoutUserHandler.class);
bindHandler(ExposeMessageHandler.class);
+ bindHandler(DeleteMessageHandler.class);
bindHandler(NoopHandler.class);
bind(IMAPProtocolCache.class).in(Singleton.class);
Modified: labs/hupa/src/main/java/org/apache/hupa/shared/data/IMAPFolder.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/data/IMAPFolder.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/shared/data/IMAPFolder.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/shared/data/IMAPFolder.java Mon Jul
20 13:29:40 2009
@@ -96,6 +96,11 @@
}
@Override
+ public String toString() {
+ return getFullName();
+ }
+
+ @Override
public boolean equals(Object o) {
if (o instanceof IMAPFolder) {
if (((IMAPFolder)
o).getFullName().equals(getFullName())) {
Modified: labs/hupa/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java Mon
Jul 20 13:29:40 2009
@@ -76,6 +76,7 @@
}
}
+
public String toString() {
return String.valueOf(getUid());
}
Modified:
labs/hupa/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageResult.java
URL:
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageResult.java?rev=795828&r1=795827&r2=795828&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageResult.java
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/shared/rpc/DeleteMessageResult.java
Mon Jul 20 13:29:40 2009
@@ -19,6 +19,11 @@
package org.apache.hupa.shared.rpc;
+import java.util.ArrayList;
+
+import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.IMAPUser;
+
import net.customware.gwt.dispatch.shared.Result;
public class DeleteMessageResult implements Result{
@@ -27,8 +32,33 @@
*
*/
private static final long serialVersionUID = -5149203502019947912L;
+ private IMAPUser user;
+ private IMAPFolder folder;
+ private ArrayList<Integer> messageUids;
- public DeleteMessageResult() {
+
+ @SuppressWarnings("unused")
+ private DeleteMessageResult() {
+
+ }
+
+ public DeleteMessageResult(IMAPUser user,IMAPFolder folder,
ArrayList<Integer> messageUids) {
+ this.user = user;
+ this.folder = folder;
+ this.messageUids = messageUids;
+ }
+
+ public IMAPUser getUser() {
+ return user;
}
+
+ public IMAPFolder getFolder() {
+ return folder;
+ }
+
+ public ArrayList<Integer> getMessageUids() {
+ return messageUids;
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]