You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by do...@apache.org on 2013/09/12 05:13:56 UTC
svn commit: r1522175 - in /james/hupa/trunk:
client/src/main/java/org/apache/hupa/client/activity/
client/src/main/java/org/apache/hupa/client/ioc/
client/src/main/java/org/apache/hupa/client/rf/
client/src/main/java/org/apache/hupa/client/ui/ server/s...
Author: dongxu
Date: Thu Sep 12 03:13:55 2013
New Revision: 1522175
URL: http://svn.apache.org/r1522175
Log:
fix some bugs related to RF, and try to use new CellView to replace gwt-incubator
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/rf/FetchMessagesRequest.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesService.java
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/ImapFolderServiceImpl.java
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/LoginActivity.java Thu Sep 12 03:13:55 2013
@@ -67,6 +67,8 @@ import org.apache.hupa.client.place.Mail
import org.apache.hupa.client.rf.HupaRequestFactory;
import org.apache.hupa.client.rf.LoginUserRequest;
import org.apache.hupa.client.ui.WidgetDisplayable;
+import org.apache.hupa.shared.data.ImapFolderImpl;
+import org.apache.hupa.shared.domain.ImapFolder;
import org.apache.hupa.shared.domain.User;
import org.apache.hupa.shared.events.FlashEvent;
import org.apache.hupa.shared.events.LoginEvent;
@@ -426,7 +428,7 @@ public class LoginActivity extends Abstr
loginRequest.login(user, pass).fire(new Receiver<User>() {
@Override
public void onSuccess(User response) {
- placeController.goTo(new MailFolderPlace().with(response));
+ placeController.goTo(new MailFolderPlace().with(response, useDefaultInboxFolder(response), null));
eventBus.fireEvent(new LoginEvent(response));
}
@Override
@@ -437,6 +439,10 @@ public class LoginActivity extends Abstr
>>>>>>> Make chechsession and login work with RF, with refactoring fetch folders.
}
+
+ private ImapFolder useDefaultInboxFolder(User user){
+ return new ImapFolderImpl(user.getSettings().getInboxFolderName());
+ }
/**
* Reset display
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/activity/WestActivity.java Thu Sep 12 03:13:55 2013
@@ -917,8 +917,16 @@ System.out.println("1111111"+response);
}
GetMessageDetailsRequest req = messagesRequest.append(requestFactory.messageDetailsRequest());
GetMessageDetailsAction action = req.create(GetMessageDetailsAction.class);
+ final ImapFolder folder = req.create(ImapFolder.class);
+ folder.setChildren(event.getFolder().getChildren());
+ folder.setDelimiter(event.getFolder().getDelimiter());
+ folder.setFullName(event.getFolder().getFullName());
+ folder.setMessageCount(event.getFolder().getMessageCount());
+ folder.setName(event.getFolder().getName());
+ folder.setSubscribed(event.getFolder().getSubscribed());
+ folder.setUnseenMessageCount(event.getFolder().getUnseenMessageCount());
// ImapFolder imapFolder = req.edit(event.getFolder());
- action.setFolder(event.getFolder());
+ action.setFolder(folder);
action.setUid(message.getUid());
req.get(action).fire(new Receiver<GetMessageDetailsResult>() {
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ioc/AppGinModule.java Thu Sep 12 03:13:55 2013
@@ -168,6 +168,7 @@ import org.apache.hupa.client.ui.IMAPMes
import org.apache.hupa.client.ui.LoginView;
import org.apache.hupa.client.ui.MessageSendView;
import org.apache.hupa.client.ui.MessageTableModel;
+import org.apache.hupa.client.ui.MessagesCellTable;
import org.apache.hupa.client.ui.TopView;
import org.apache.hupa.client.ui.WestView;
@@ -415,6 +416,7 @@ public class AppGinModule extends Abstra
bind(PagingScrollTableRowDragController.class).in(Singleton.class);
bind(MessageTableModel.class).in(Singleton.class);
+// bind(MessagesCellTable.class).in(Singleton.class);
// Places
bind(PlaceHistoryMapper.class).to(AppPlaceHistoryMapper.class).in(Singleton.class);
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/rf/FetchMessagesRequest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/rf/FetchMessagesRequest.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/rf/FetchMessagesRequest.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/rf/FetchMessagesRequest.java Thu Sep 12 03:13:55 2013
@@ -26,6 +26,7 @@ import org.apache.hupa.server.ioc.IocRfS
import org.apache.hupa.server.service.FetchMessagesService;
import org.apache.hupa.shared.domain.FetchMessagesAction;
import org.apache.hupa.shared.domain.FetchMessagesResult;
+import org.apache.hupa.shared.domain.ImapFolder;
import com.google.web.bindery.requestfactory.shared.Request;
import com.google.web.bindery.requestfactory.shared.RequestContext;
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/IMAPMessageListView.java Thu Sep 12 03:13:55 2013
@@ -75,6 +75,7 @@ import com.google.gwt.dom.client.Style.U
>>>>>>> Change to new mvp framework - first step
import org.apache.hupa.client.bundles.HupaImageBundle;
import org.apache.hupa.client.dnd.PagingScrollTableRowDragController;
+import org.apache.hupa.client.rf.HupaRequestFactory;
import org.apache.hupa.client.widgets.CommandsBar;
import org.apache.hupa.client.widgets.ConfirmDialogBox;
import org.apache.hupa.client.widgets.DragRefetchPagingScrollTable;
@@ -102,6 +103,7 @@ import com.google.gwt.event.dom.client.K
import com.google.gwt.event.dom.client.KeyUpHandler;
<<<<<<< HEAD
<<<<<<< HEAD
+<<<<<<< HEAD
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
@@ -748,6 +750,9 @@ public class IMAPMessageListView extends
=======
=======
>>>>>>> Change to new mvp framework - first step
+=======
+import com.google.gwt.event.shared.EventBus;
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator
import com.google.gwt.gen2.table.client.AbstractColumnDefinition;
import com.google.gwt.gen2.table.client.AbstractScrollTable.ColumnResizePolicy;
import com.google.gwt.gen2.table.client.AbstractScrollTable.ResizePolicy;
@@ -773,6 +778,12 @@ import com.google.gwt.gen2.table.event.c
import com.google.gwt.i18n.client.DateTimeFormat;
<<<<<<< HEAD
<<<<<<< HEAD
+<<<<<<< HEAD
+=======
+import com.google.gwt.user.cellview.client.AbstractPager;
+import com.google.gwt.user.cellview.client.DataGrid;
+import com.google.gwt.user.cellview.client.SimplePager;
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator
import com.google.gwt.user.client.ui.Anchor;
=======
>>>>>>> Change to new mvp framework - first step
@@ -792,8 +803,8 @@ import com.google.gwt.user.client.ui.Ver
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
-
@SuppressWarnings("deprecation")
+<<<<<<< HEAD
public class IMAPMessageListView extends Composite implements IMAPMessageListActivity.Displayable{
private static final int DEFAULT_MSG_PAGE_SIZE = 25;
@@ -1530,4 +1541,793 @@ public class IMAPMessageListView extends
>>>>>>> Change to new mvp framework - first step
=======
>>>>>>> Change to new mvp framework - first step
+=======
+public class IMAPMessageListView extends Composite implements IMAPMessageListActivity.Displayable {
+
+ private static final int DEFAULT_MSG_PAGE_SIZE = 25;
+
+ @SuppressWarnings("unused") private HupaMessages messages;
+ private HupaImageBundle imageBundle;
+
+ private PagingOptions pagingBar;
+ private DragRefetchPagingScrollTable<Message> mailTable;
+ private CachedTableModel<Message> cTableModel;
+
+ private FixedWidthGrid dataTable = createDataTable();
+ private EnableButton deleteMailButton;
+ private Button newMailButton;
+ private Button deleteAllMailButton;
+ private ConfirmDialogBox confirmBox = new ConfirmDialogBox();
+ private ConfirmDialogBox confirmDeleteAllBox = new ConfirmDialogBox();
+ private EnableButton markSeenButton;
+ private EnableButton markUnSeenButton;
+
+ private ListBox pageBox = new ListBox();
+ private Anchor allLink;
+ private Anchor noneLink;
+ private Anchor refreshLink;
+ private MultiWordSuggestOracle oracle = new MultiWordSuggestOracle(" ,@");
+ private SuggestBox searchBox = new SuggestBox(oracle);
+ private Button searchButton;
+ private Loading loading;
+
+// private MessagesCellTable table;
+// private AbstractPager pager;
+
+
+ @Inject
+ public IMAPMessageListView(final PagingScrollTableRowDragController controller,
+ final MessageTableModel mTableModel, final HupaConstants constants, final HupaMessages messages,
+ final HupaImageBundle imageBundle,final EventBus eventBus, final HupaRequestFactory requestFactory) {
+ this.messages = messages;
+ this.imageBundle = imageBundle;
+
+// table = new MessagesCellTable(eventBus, requestFactory, imageBundle);
+// pager = new SimplePager();
+// pager.setDisplay(table);
+
+ deleteMailButton = new EnableButton(constants.deleteMailButton());
+ newMailButton = new Button(constants.newMailButton());
+ deleteAllMailButton = new Button(constants.deleteAll());
+ markSeenButton = new EnableButton(constants.markSeen());
+ markUnSeenButton = new EnableButton(constants.markUnseen());
+ allLink = new Anchor(constants.all());
+ noneLink = new Anchor(constants.none());
+ refreshLink = new Anchor(constants.refresh());
+ searchButton = new Button(constants.searchButton());
+ loading = new Loading(constants.loading());
+ this.cTableModel = new CachedTableModel<Message>(mTableModel);
+ cTableModel.setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
+ mTableModel.addRowCountChangeHandler(new RowCountChangeHandler() {
+
+ public void onRowCountChange(RowCountChangeEvent event) {
+ cTableModel.setRowCount(event.getNewRowCount());
+ }
+ });
+
+ VerticalPanel msgListContainer = new VerticalPanel();
+ msgListContainer.addStyleName(HupaCSS.C_msg_list_container);
+ mailTable = new DragRefetchPagingScrollTable<Message>(cTableModel, dataTable, new FixedWidthFlexTable(),
+ createTableDefinitation(), controller, 1);
+ mailTable.setPageSize(20);
+ mailTable.setDragHandler(0, 30, new DragHandlerFactory() {
+
+ public Widget createHandler() {
+ return new Image(imageBundle.readyToMoveMailIcon());
+ }
+
+ });
+
+ HTML emptyTable = new HTML(constants.emptyMailTable());
+ emptyTable.addStyleName(HupaCSS.C_msg_table_empty);
+ mailTable.setEmptyTableWidget(emptyTable);
+ FixedWidthGridBulkRenderer<Message> bulkRenderer = new FixedWidthGridBulkRenderer<Message>(
+ mailTable.getDataTable(), mailTable);
+ mailTable.setBulkRenderer(bulkRenderer);
+ mailTable.addStyleName(HupaCSS.C_msg_table);
+ mailTable.setCellPadding(0);
+ mailTable.setResizePolicy(ResizePolicy.FILL_WIDTH);
+ mailTable.setColumnResizePolicy(ColumnResizePolicy.MULTI_CELL);
+ mailTable.setScrollPolicy(ScrollPolicy.DISABLED);
+ mailTable.addPageLoadHandler(onMessagePageLoadHandler);
+ mailTable.setPageSize(DEFAULT_MSG_PAGE_SIZE);
+ mailTable.getDataTable().setCellSpacing(0);
+ mailTable.setSortPolicy(SortPolicy.DISABLED);
+
+ mailTable.fillWidth();
+
+ pagingBar = new PagingOptions(mailTable, constants, loading);
+
+ HorizontalPanel buttonBar = new HorizontalPanel();
+ buttonBar.addStyleName(HupaCSS.C_buttons);
+
+ ButtonBar navigatorBar = new ButtonBar();
+ navigatorBar.add(newMailButton);
+ deleteMailButton.setEnabled(false);
+ navigatorBar.add(deleteMailButton);
+ buttonBar.add(navigatorBar);
+ buttonBar.add(deleteAllMailButton);
+
+ ButtonBar markButtonBar = new ButtonBar();
+ markButtonBar.add(markSeenButton);
+ markButtonBar.add(markUnSeenButton);
+ buttonBar.add(markButtonBar);
+ buttonBar.add(refreshLink);
+ pageBox.addItem("" + DEFAULT_MSG_PAGE_SIZE);
+ pageBox.addItem("" + (DEFAULT_MSG_PAGE_SIZE * 2));
+ pageBox.addItem("" + (DEFAULT_MSG_PAGE_SIZE * 4));
+ pageBox.addChangeHandler(new ChangeHandler() {
+ public void onChange(ChangeEvent event) {
+ if (pageBox.getSelectedIndex() > 0)
+ mailTable.setPageSize(Integer.parseInt(pageBox.getItemText(pageBox.getSelectedIndex())));
+ }
+ });
+
+ HorizontalPanel searchPanel = new HorizontalPanel();
+ searchPanel.addStyleName(HupaCSS.C_buttons);
+
+ searchBox.addStyleName(HupaCSS.C_msg_search);
+ searchBox.setAnimationEnabled(true);
+ searchBox.setAutoSelectEnabled(false);
+ searchBox.setLimit(20);
+ searchBox.addKeyUpHandler(new KeyUpHandler() {
+
+ public void onKeyUp(KeyUpEvent event) {
+ if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
+ searchButton.click();
+ }
+ }
+
+ });
+ searchPanel.add(searchBox);
+ searchPanel.add(searchButton);
+ searchPanel.add(pageBox);
+
+ HorizontalPanel hPanel = new HorizontalPanel();
+ hPanel.addStyleName(HupaCSS.C_msg_top_bar);
+ hPanel.add(buttonBar);
+ hPanel.add(searchPanel);
+ hPanel.setCellHorizontalAlignment(searchPanel, HorizontalPanel.ALIGN_RIGHT);
+
+ msgListContainer.add(hPanel);
+
+ CommandsBar commandsBar = new CommandsBar();
+ commandsBar.addLeft(new HTML(constants.select() + ":"));
+ commandsBar.addLeft(allLink);
+ commandsBar.addLeft(noneLink);
+ commandsBar.add(loading);
+ commandsBar.addRight(pagingBar);
+
+ msgListContainer.add(commandsBar);
+ msgListContainer.add(mailTable);
+// msgListContainer.add(table);
+
+ confirmBox.setText(messages.confirmDeleteMessages());
+ confirmDeleteAllBox.setText(messages.confirmDeleteAllMessages());
+ initWidget(msgListContainer);
+ }
+
+ PageLoadHandler onMessagePageLoadHandler = new PageLoadHandler() {
+
+ public void onPageLoad(PageLoadEvent event) {
+
+ for (int i = 0; i < mailTable.getDataTable().getRowCount(); i++) {
+ mailTable.getDataTable().getRowFormatter().setStyleName(i, HupaCSS.C_msg_table_row);
+ Message msg = mailTable.getRowValue(i);
+ if (msg != null) {
+ if (msg.getFlags().contains(IMAPFlag.SEEN) == false) {
+ mailTable.getDataTable().getRowFormatter().addStyleName(i, HupaCSS.C_msg_table_unseen);
+ } else {
+ mailTable.getDataTable().getRowFormatter().removeStyleName(i, HupaCSS.C_msg_table_seen);
+ }
+ }
+ }
+
+ String nrows = String.valueOf(mailTable.getPageSize());
+ for (int i = 0; i < pageBox.getItemCount(); i++) {
+ if (nrows.equals(pageBox.getItemText(i)))
+ pageBox.setSelectedIndex(i);
+ }
+ }
+
+ };
+
+ private DefaultTableDefinition<Message> createTableDefinitation() {
+ DefaultTableDefinition<Message> def = new DefaultTableDefinition<Message>(createColumnDefinitionList());
+
+ return def;
+ }
+
+ /**
+ * @return the newly created data table.
+ */
+ private FixedWidthGrid createDataTable() {
+ FixedWidthGrid dataTable = new FixedWidthGrid();
+ dataTable.setSelectionPolicy(SelectionPolicy.CHECKBOX);
+ return dataTable;
+ }
+
+ /**
+ * Create a new List which holds all needed ColumnDefinitions
+ *
+ */
+ private List<ColumnDefinition<Message, ?>> createColumnDefinitionList() {
+ List<ColumnDefinition<Message, ?>> cList = new ArrayList<ColumnDefinition<Message, ?>>();
+
+ FromColumnDefination from = new FromColumnDefination();
+ from.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
+ from.setColumnTruncatable(true);
+ from.setPreferredColumnWidth(250);
+ from.setMinimumColumnWidth(150);
+ from.setMaximumColumnWidth(300);
+ cList.add(from);
+
+ SubjectColumnDefination subject = new SubjectColumnDefination();
+ subject.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
+ subject.setColumnTruncatable(true);
+ subject.setPreferredColumnWidth(800);
+ subject.setMinimumColumnWidth(200);
+ cList.add(subject);
+
+ AttachmentColumnDefination attachment = new AttachmentColumnDefination();
+ attachment.setColumnTruncatable(false);
+ // display an image if the message contains an attachment
+ attachment.setCellRenderer(new CellRenderer<Message, Boolean>() {
+
+ public void renderRowValue(Message rowValue, ColumnDefinition<Message, Boolean> columnDef,
+ AbstractCellView<Message> view) {
+ if (columnDef.getCellValue(rowValue)) {
+ view.setWidget(new Image(imageBundle.attachmentIcon()));
+ } else {
+ view.setHTML(" ");
+ }
+
+ }
+
+ });
+
+ attachment.setPreferredColumnWidth(20);
+ attachment.setMinimumColumnWidth(15);
+ attachment.setMaximumColumnWidth(25);
+ cList.add(attachment);
+
+ DateColumnDefination date = new DateColumnDefination();
+ date.setColumnTruncatable(true);
+ // set a special renderer for the date
+ date.setCellRenderer(new CellRenderer<Message, Date>() {
+
+ public void renderRowValue(Message rowValue, ColumnDefinition<Message, Date> columnDef,
+ AbstractCellView<Message> view) {
+ DateTimeFormat dtformat;
+ Date rDate = rowValue.getReceivedDate();
+ int rYear = rDate.getYear();
+ int rMonth = rDate.getMonth();
+ int rDay = rDate.getDate();
+
+ Date now = new Date();
+ int nowYear = now.getYear();
+ int nowMonth = now.getMonth();
+ int nowDay = now.getDate();
+
+ if (rYear < nowYear) {
+ dtformat = DateTimeFormat.getFormat("dd.MMM.yyyy");
+ } else if (rMonth < nowMonth || (rMonth == nowMonth && rDay < nowDay)) {
+ dtformat = DateTimeFormat.getFormat("dd.MMM.");
+ } else if (rDay == nowDay) {
+ dtformat = DateTimeFormat.getFormat("HH:mm");
+ } else {
+
+ dtformat = DateTimeFormat.getFormat("dd.MMM.yyyy HH:mm");
+ }
+
+ view.setHTML(dtformat.format(rDate));
+ view.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
+ }
+
+ });
+ date.setPreferredColumnWidth(100);
+ date.setMinimumColumnWidth(100);
+ date.setMaximumColumnWidth(150);
+
+ cList.add(date);
+
+ return cList;
+ }
+
+ /**
+ * ColumnDefination which display if the message contains an attachment
+ *
+ * @author Norman
+ *
+ */
+ private static final class AttachmentColumnDefination extends AbstractColumnDefinition<Message, Boolean> {
+
+ @Override
+ public Boolean getCellValue(Message rowValue) {
+ return rowValue.hasAttachment();
+ }
+
+ @Override
+ public void setCellValue(Message rowValue, Boolean cellValue) {
+ }
+
+ }
+
+ /**
+ * ColumnDefination which display the From
+ *
+ */
+ private static final class FromColumnDefination extends AbstractColumnDefinition<Message, String> {
+
+ @Override
+ public String getCellValue(Message rowValue) {
+ return rowValue.getFrom();
+ }
+
+ @Override
+ public void setCellValue(Message rowValue, String cellValue) {
+ rowValue.setFrom(cellValue);
+ }
+
+ }
+
+ /**
+ * ColumnDefination which display the Subject
+ *
+ */
+ private static final class SubjectColumnDefination extends AbstractColumnDefinition<Message, String> {
+
+ @Override
+ public String getCellValue(Message rowValue) {
+ return rowValue.getSubject();
+ }
+
+ @Override
+ public void setCellValue(Message rowValue, String cellValue) {
+ rowValue.setSubject(cellValue);
+
+ }
+
+ }
+
+ /**
+ * ColumnDefination which display the Date
+ *
+ */
+ private static final class DateColumnDefination extends AbstractColumnDefinition<Message, Date> {
+
+ @Override
+ public Date getCellValue(Message rowValue) {
+ return rowValue.getReceivedDate();
+ }
+
+ @Override
+ public void setCellValue(Message rowValue, Date cellValue) {
+ rowValue.setReceivedDate(cellValue);
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getDataTableSelection()
+ */
+ public HasRowSelectionHandlers getDataTableSelection() {
+ return mailTable.getDataTable();
+ }
+
+ public void reloadData() {
+ mailTable.reloadPage();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#reset()
+ */
+ public void reset() {
+ pageBox.setSelectedIndex(0);
+ cTableModel.clearCache();
+ cTableModel.setRowCount(CachedTableModel.UNKNOWN_ROW_COUNT);
+ mailTable.gotoPage(0, false);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDataTableLoad
+ * ()
+ */
+ public HasPageLoadHandlers getDataTableLoad() {
+ return mailTable;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see net.customware.gwt.presenter.client.widget.WidgetDisplay#asWidget()
+ */
+ public Widget asWidget() {
+ return this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteClick
+ * ()
+ */
+ public HasClickHandlers getDeleteClick() {
+ return deleteMailButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getNewClick()
+ */
+ public HasClickHandlers getNewClick() {
+ return newMailButton;
+ }
+
+ /**
+ * Renderer which fill empty rows with a whitespace
+ *
+ * @param <E> RowType
+ */
+ private static final class WhiteSpaceCellRenderer<E> implements CellRenderer<E, String> {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.google.gwt.gen2.table.client.CellRenderer#renderRowValue(java
+ * .lang.Object, com.google.gwt.gen2.table.client.ColumnDefinition,
+ * com.google.gwt.gen2.table.client.TableDefinition.AbstractCellView)
+ */
+ public void renderRowValue(E rowValue, ColumnDefinition<E, String> columnDef, AbstractCellView<E> view) {
+ String cellValue = columnDef.getCellValue(rowValue);
+ if (cellValue == null || cellValue.length() < 1) {
+ view.setHTML(" ");
+ } else {
+ view.setHTML(cellValue);
+ }
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getData(int)
+ */
+ public Message getData(int rowIndex) {
+ return mailTable.getRowValue(rowIndex);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getConfirmDialog
+ * ()
+ */
+ public HasDialog getConfirmDeleteDialog() {
+ return confirmBox;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getConfirmDeleteDialogClick()
+ */
+ public HasClickHandlers getConfirmDeleteDialogClick() {
+ return confirmBox;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getConfirmDeleteAllDialog()
+ */
+ public HasDialog getConfirmDeleteAllDialog() {
+ return confirmDeleteAllBox;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getConfirmDeleteAllDialogClick()
+ */
+ public HasClickHandlers getConfirmDeleteAllDialogClick() {
+ return confirmDeleteAllBox;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * deselectAllMessages()
+ */
+ public void deselectAllMessages() {
+ mailTable.getDataTable().deselectAllRows();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectAllClick
+ * ()
+ */
+ public HasClickHandlers getSelectAllClick() {
+ return allLink;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getSelectNoneClick()
+ */
+ public HasClickHandlers getSelectNoneClick() {
+ return noneLink;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#selectAllMessages
+ * ()
+ */
+ public void selectAllMessages() {
+ mailTable.getDataTable().selectAllRows();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getSelectedMessages()
+ */
+ public List<Message> getSelectedMessages() {
+ return mailTable.getSelectedRows();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeMessages
+ * (java.util.ArrayList)
+ */
+ public void removeMessages(List<Message> messages) {
+ mailTable.removeRows(messages);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#addTableListener
+ * (com.google.gwt.user.client.ui.TableListener)
+ */
+ public void addTableListener(TableListener listener) {
+ dataTable.addTableListener(listener);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * removeTableListener(com.google.gwt.user.client.ui.TableListener)
+ */
+ public void removeTableListener(TableListener listener) {
+ dataTable.removeTableListener(listener);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * setPostFetchMessageCount(int)
+ */
+ public void setPostFetchMessageCount(int count) {
+ cTableModel.setPostCachedRowCount(count);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#redraw()
+ */
+ public void redraw() {
+ mailTable.reloadPage();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteAllClick
+ * ()
+ */
+ public HasClickHandlers getDeleteAllClick() {
+ return deleteAllMailButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenClick
+ * ()
+ */
+ public HasClickHandlers getMarkSeenClick() {
+ return markSeenButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getMarkUnseenClick()
+ */
+ public HasClickHandlers getMarkUnseenClick() {
+ return markUnSeenButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getDeleteEnable
+ * ()
+ */
+ public HasEnable getDeleteEnable() {
+ return deleteMailButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getMarkSeenEnable
+ * ()
+ */
+ public HasEnable getMarkSeenEnable() {
+ return markSeenButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getMarkUnseenEnable()
+ */
+ public HasEnable getMarkUnseenEnable() {
+ return markUnSeenButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getRefreshClick
+ * ()
+ */
+ public HasClickHandlers getRefreshClick() {
+ return refreshLink;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#goToPage(int)
+ */
+ public void goToPage(int page) {
+ if (page != mailTable.getCurrentPage()) {
+ mailTable.gotoPage(page, false);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getCurrentPage
+ * ()
+ */
+ public int getCurrentPage() {
+ return mailTable.getCurrentPage();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getDataTablePageChange()
+ */
+ public HasPageChangeHandlers getDataTablePageChange() {
+ return mailTable;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getRowsPerPageIndex()
+ */
+ public int getRowsPerPageIndex() {
+ return pageBox.getSelectedIndex();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#
+ * getRowsPerPageChange()
+ */
+ public HasChangeHandlers getRowsPerPageChange() {
+ return pageBox;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.MainPresenter.Display#getSearchClick()
+ */
+ public HasClickHandlers getSearchClick() {
+ return searchButton;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.hupa.client.mvp.MainPresenter.Display#getSearchValue()
+ */
+ public HasValue<String> getSearchValue() {
+ return searchBox;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.apache.hupa.client.mvp.MainPresenter.Display#fillSearchOracle(java
+ * .util.ArrayList)
+ */
+ public void fillSearchOracle(List<Message> messages) {
+ for (Message m : messages) {
+ String subject = m.getSubject();
+ String from = m.getFrom();
+ if (subject != null && subject.trim().length() > 0) {
+ oracle.add(subject.trim());
+ }
+ if (from != null && from.trim().length() > 0) {
+ oracle.add(from.trim());
+ }
+ }
+ // searchBox.setText("");
+ }
+
+ public void setExpandLoading(boolean expanding) {
+ if (expanding) {
+ loading.show();
+ } else {
+ loading.hide();
+ }
+ }
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator
}
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessageTableModel.java Thu Sep 12 03:13:55 2013
@@ -280,15 +280,22 @@ public class MessageTableModel extends M
public Iterator<Message> getRowValues() {
return new ArrayList<Message>().iterator();
}
-
});
return;
}
FetchMessagesRequest messagesRequest = requestFactory.messagesRequest();
final FetchMessagesAction action = messagesRequest.create(FetchMessagesAction.class);
+ final ImapFolder folder1 = messagesRequest.create(ImapFolder.class);
// FIXME cannot put setFolder to the first place
+ folder1.setChildren(this.folder.getChildren());
+ folder1.setDelimiter(this.folder.getDelimiter());
+ folder1.setFullName(this.folder.getFullName());
+ folder1.setMessageCount(this.folder.getMessageCount());
+ folder1.setName(this.folder.getName());
+ folder1.setSubscribed(this.folder.getSubscribed());
+ folder1.setUnseenMessageCount(this.folder.getUnseenMessageCount());
action.setOffset(request.getNumRows());
- action.setFolder(folder);
+ action.setFolder(folder1);
action.setSearchString(searchValue);
action.setStart(request.getStartRow());
messagesRequest.fetch(action).fire(new Receiver<FetchMessagesResult>() {
@@ -302,7 +309,6 @@ public class MessageTableModel extends M
@Override
public void onSuccess(final FetchMessagesResult result) {
assert result != null;
- System.out.println(result.getOffset());
folder.setMessageCount(result.getRealCount());
folder.setUnseenMessageCount(result.getRealUnreadCount());
setRowCount(result.getRealCount());
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/ui/MessagesCellTable.java Thu Sep 12 03:13:55 2013
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
/****************************************************************
* Licensed to the Apache Software Foundation (ASF) under one *
* or more contributor license agreements. See the NOTICE file *
@@ -473,3 +474,237 @@ public class MessagesCellTable extends D
}
}
+=======
+package org.apache.hupa.client.ui;
+
+import java.util.Date;
+
+import org.apache.hupa.client.bundles.HupaImageBundle;
+import org.apache.hupa.client.rf.FetchMessagesRequest;
+import org.apache.hupa.client.rf.HupaRequestFactory;
+import org.apache.hupa.shared.data.ImapFolderImpl;
+import org.apache.hupa.shared.domain.FetchMessagesAction;
+import org.apache.hupa.shared.domain.FetchMessagesResult;
+import org.apache.hupa.shared.domain.ImapFolder;
+import org.apache.hupa.shared.domain.Message;
+import org.apache.hupa.shared.domain.User;
+import org.apache.hupa.shared.events.FolderSelectionEvent;
+import org.apache.hupa.shared.events.FolderSelectionEventHandler;
+import org.apache.hupa.shared.events.LoadMessagesEvent;
+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.events.MessagesReceivedEvent;
+
+import com.google.gwt.cell.client.CheckboxCell;
+import com.google.gwt.cell.client.DateCell;
+import com.google.gwt.cell.client.ImageResourceCell;
+import com.google.gwt.cell.client.TextCell;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.i18n.client.DateTimeFormat;
+import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.user.cellview.client.AbstractPager;
+import com.google.gwt.user.cellview.client.Column;
+import com.google.gwt.user.cellview.client.DataGrid;
+import com.google.gwt.user.cellview.client.SimplePager;
+import com.google.gwt.view.client.RangeChangeEvent;
+import com.google.inject.Inject;
+import com.google.web.bindery.requestfactory.shared.Receiver;
+import com.google.web.bindery.requestfactory.shared.ServerFailure;
+
+public class MessagesCellTable extends DataGrid<Message> {
+
+ private static final int PAGE_SIZE = 5;
+
+ private User user;
+ private ImapFolder folder;
+ private String searchValue;
+ private EventBus eventBus;
+ private HupaRequestFactory requestFactory;
+ private HupaImageBundle imageBundle;
+ private boolean pending;
+
+ private SimplePager pager;
+
+ public SimplePager getPager(){
+ return pager;
+ }
+// @Inject
+ public MessagesCellTable(final EventBus eventBus, final HupaRequestFactory requestFactory,
+ final HupaImageBundle imageBundle) {
+
+ super(PAGE_SIZE);
+ this.eventBus = eventBus;
+ this.requestFactory = requestFactory;
+ this.imageBundle = imageBundle;
+
+// addColumn(new CheckboxColumn());
+ addColumn(new FromColumn(), "from");
+ addColumn(new SubjectColumn(), "subject");
+// addColumn(new AttachmentColumn());
+// addColumn(new DateColumn());
+
+ pager = new SimplePager();
+ pager.setDisplay(this);
+ setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);
+// setVisible(true);
+ addRangeChangeHandler(new RangeChangeEvent.Handler() {
+ @Override
+ public void onRangeChange(RangeChangeEvent event) {
+ fetch(event.getNewRange().getStart());
+ }
+ });
+ /*
+ if (!pending) {
+ pending = true;
+ Scheduler.get().scheduleFinally(new ScheduledCommand() {
+ @Override
+ public void execute() {
+ pending = false;
+ fetch(0);
+ }
+ });
+ }
+ */
+ // bind some Events
+ eventBus.addHandler(LoadMessagesEvent.TYPE, new LoadMessagesEventHandler() {
+
+ public void onLoadMessagesEvent(LoadMessagesEvent loadMessagesEvent) {
+ user = loadMessagesEvent.getUser();
+ folder = loadMessagesEvent.getFolder();
+ searchValue = loadMessagesEvent.getSearchValue();
+ fetch(0);
+ }
+ });
+ eventBus.addHandler(FolderSelectionEvent.TYPE, new FolderSelectionEventHandler() {
+
+ public void onFolderSelectionEvent(FolderSelectionEvent event) {
+ user = event.getUser();
+ folder = event.getFolder();
+ searchValue = null;
+ }
+ });
+ eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
+
+ public void onLogin(LoginEvent event) {
+ user = event.getUser();
+ folder = new ImapFolderImpl(user.getSettings().getInboxFolderName());
+ searchValue = null;
+ fetch(0);
+ }
+ });
+ eventBus.addHandler(LogoutEvent.TYPE, new LogoutEventHandler() {
+
+ public void onLogout(LogoutEvent logoutEvent) {
+ user = null;
+ folder = null;
+ searchValue = null;
+ }
+ });
+
+ // this.setRowData(values);
+
+ }
+
+ public void fetch(final int start) {
+ FetchMessagesRequest messagesRequest = requestFactory.messagesRequest();
+ FetchMessagesAction action = messagesRequest.create(FetchMessagesAction.class);
+ final ImapFolder folder = messagesRequest.create(ImapFolder.class);
+ folder.setChildren(this.folder.getChildren());
+ folder.setDelimiter(this.folder.getDelimiter());
+ folder.setFullName(this.folder.getFullName());
+ folder.setMessageCount(this.folder.getMessageCount());
+ folder.setName(this.folder.getName());
+ folder.setSubscribed(this.folder.getSubscribed());
+ folder.setUnseenMessageCount(this.folder.getUnseenMessageCount());
+ // FIXME cannot put setFolder to the first place
+ action.setOffset(getPageSize());
+ action.setFolder(folder);
+ action.setSearchString(searchValue);
+ action.setStart(start);
+ messagesRequest.fetch(action).fire(new Receiver<FetchMessagesResult>() {
+
+ @Override
+ public void onFailure(ServerFailure error) {
+ if (error.isFatal()) {
+ throw new RuntimeException(error.getMessage());
+ }
+ }
+ @Override
+ public void onSuccess(final FetchMessagesResult result) {
+ assert result != null;
+ MessagesCellTable.this.folder.setMessageCount(result.getRealCount());
+ MessagesCellTable.this.folder.setUnseenMessageCount(result.getRealUnreadCount());
+ setRowCount(result.getRealCount());
+ if (result != null && result.getMessages() != null) {
+ setRowData(start + getPageSize(), result.getMessages());
+ } else {
+ setRowData(start + getPageSize(), result.getMessages());
+ }
+
+ pager.setPageStart(start);
+ if (start == 0 || !isRowCountExact()) {
+ setRowCount(start + result.getMessages().size(), result.getMessages().size() < getPageSize());
+ }
+ flush();
+ // Notify presenter to update folder tree view
+ eventBus.fireEvent(new MessagesReceivedEvent(folder, result.getMessages()));
+ }
+ });
+ }
+
+ private class CheckboxColumn extends Column<Message, Boolean> {
+ public CheckboxColumn() {
+ super(new CheckboxCell());
+ }
+ @Override
+ public Boolean getValue(Message object) {
+ return true;
+ }
+ }
+
+ private class FromColumn extends Column<Message, String> {
+ public FromColumn() {
+ super(new TextCell());
+ }
+ @Override
+ public String getValue(Message object) {
+ return object.getFrom();
+ }
+ }
+
+ private class SubjectColumn extends Column<Message, String> {
+ public SubjectColumn() {
+ super(new TextCell());
+ }
+ @Override
+ public String getValue(Message object) {
+ return object.getSubject();
+ }
+ }
+
+ private class AttachmentColumn extends Column<Message, ImageResource> {
+ public AttachmentColumn() {
+ super(new ImageResourceCell());
+ }
+ @Override
+ public ImageResource getValue(Message object) {
+ return object.hasAttachment() ? imageBundle.attachmentIcon() : null;
+ }
+ }
+
+ private class DateColumn extends Column<Message, Date> {
+ public DateColumn() {
+ super(new DateCell(DateTimeFormat.getFormat("dd.MMM.yyyy")));
+ }
+ @Override
+ public Date getValue(Message object) {
+ return object.getReceivedDate();
+ }
+ }
+}
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesService.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesService.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesService.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesService.java Thu Sep 12 03:13:55 2013
@@ -37,6 +37,7 @@ package org.apache.hupa.server.service;
import org.apache.hupa.shared.domain.FetchMessagesAction;
import org.apache.hupa.shared.domain.FetchMessagesResult;
+import org.apache.hupa.shared.domain.ImapFolder;
public interface FetchMessagesService {
<<<<<<< HEAD
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/FetchMessagesServiceImpl.java Thu Sep 12 03:13:55 2013
@@ -32,6 +32,7 @@ import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.UIDFolder;
import javax.mail.internet.MimeMessage.RecipientType;
+<<<<<<< HEAD
=======
package org.apache.hupa.server.service;
@@ -41,6 +42,8 @@ import java.util.List;
import javax.mail.Message;
import javax.mail.MessagingException;
>>>>>>> try to fetch messages, yet can not fire the login event in ModelTable such that just get a NullPointerException in it.
+=======
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator
import javax.mail.search.BodyTerm;
import javax.mail.search.FromStringTerm;
import javax.mail.search.OrTerm;
@@ -48,10 +51,14 @@ import javax.mail.search.SearchTerm;
import javax.mail.search.SubjectTerm;
<<<<<<< HEAD
+<<<<<<< HEAD
+=======
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator
import org.apache.hupa.server.handler.JavamailUtil;
import org.apache.hupa.server.preferences.UserPreferencesStorage;
import org.apache.hupa.server.utils.MessageUtils;
import org.apache.hupa.shared.data.FetchMessagesResultImpl;
+<<<<<<< HEAD
import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
import org.apache.hupa.shared.data.TagImpl;
import org.apache.hupa.shared.domain.FetchMessagesAction;
@@ -115,13 +122,70 @@ public class FetchMessagesServiceImpl ex
protected MessageConvertArray getMessagesToConvert(IMAPFolder f, FetchMessagesAction action) throws MessagingException, HupaException {
=======
+=======
+import org.apache.hupa.shared.data.ImapFolderImpl;
+import org.apache.hupa.shared.data.TagImpl;
+import org.apache.hupa.shared.data.MessageImpl.IMAPFlag;
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator
import org.apache.hupa.shared.domain.FetchMessagesAction;
+import org.apache.hupa.shared.domain.FetchMessagesResult;
+import org.apache.hupa.shared.domain.ImapFolder;
+import org.apache.hupa.shared.domain.Tag;
+import org.apache.hupa.shared.domain.User;
+import com.google.inject.Inject;
import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPStore;
+
+public class FetchMessagesServiceImpl extends AbstractService implements FetchMessagesService{
+
+
+ @Inject protected UserPreferencesStorage userPreferences;
+
+ public FetchMessagesResult fetch(FetchMessagesAction action){
+ User user = getUser();
+// ImapFolder folder = action.getFolder();
+ if (action.getFolder() == null) {
+// folder = new ImapFolderImpl(user.getSettings().getInboxFolderName());
+ throw new IllegalArgumentException("why you want to ask us for messages in a null folder");
+ }
+ com.sun.mail.imap.IMAPFolder f = null;
+ int start = action.getStart();
+ int offset = action.getOffset();
+ try {
+ IMAPStore store = cache.get(user);
+
+ f = (com.sun.mail.imap.IMAPFolder)store.getFolder(action.getFolder().getFullName());
+
+ // check if the folder is open, if not open it read only
+ if (f.isOpen() == false) {
+ f.open(com.sun.mail.imap.IMAPFolder.READ_ONLY);
+ }
+
+ // if the folder is empty we have no need to process
+ int exists = f.getMessageCount();
+ if (exists == 0) {
+ return new FetchMessagesResultImpl(new ArrayList<org.apache.hupa.shared.domain.Message>(), start, offset, 0, 0);
+ }
+
+ MessageConvertArray convArray = getMessagesToConvert(f,action);
+ return new FetchMessagesResultImpl(convert(offset, f, convArray.getMesssages()),start, offset,convArray.getRealCount(),f.getUnreadMessageCount());
+ } catch (MessagingException e) {
+ logger.info("Error fetching messages in folder: " + action.getFolder().getFullName() + " " + e.getMessage());
+ // Folder can not contain messages
+ return new FetchMessagesResultImpl(new ArrayList<org.apache.hupa.shared.domain.Message>(), start, offset, 0, 0);
+ } finally {
+ if (f != null && f.isOpen()) {
+ try {
+ f.close(false);
+ } catch (MessagingException e) {
+ // we don't care to much about an exception on close here...
+ }
+ }
+ }
+ }
-public class FetchMessagesServiceImpl extends FetchMessagesBaseServiceImpl implements FetchMessagesService{
- @Override
protected MessageConvertArray getMessagesToConvert(IMAPFolder f, FetchMessagesAction action) throws MessagingException {
>>>>>>> try to fetch messages, yet can not fire the login event in ModelTable such that just get a NullPointerException in it.
@@ -178,7 +242,11 @@ public class FetchMessagesServiceImpl ex
}
<<<<<<< HEAD
+<<<<<<< HEAD
public List<org.apache.hupa.shared.domain.Message> convert(int offset, com.sun.mail.imap.IMAPFolder folder, Message[] messages) throws MessagingException {
+=======
+ protected List<org.apache.hupa.shared.domain.Message> convert(int offset, com.sun.mail.imap.IMAPFolder folder, Message[] messages) throws MessagingException {
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator
List<org.apache.hupa.shared.domain.Message> mList = new ArrayList<org.apache.hupa.shared.domain.Message>();
// Setup fetchprofile to limit the stuff which is fetched
FetchProfile fp = new FetchProfile();
@@ -310,6 +378,9 @@ public class FetchMessagesServiceImpl ex
return messages;
}
}
+<<<<<<< HEAD
=======
>>>>>>> try to fetch messages, yet can not fire the login event in ModelTable such that just get a NullPointerException in it.
+=======
+>>>>>>> fix some bugs related to RF, and try to use new CellView to replace gwt-incubator
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/ImapFolderServiceImpl.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/ImapFolderServiceImpl.java?rev=1522175&r1=1522174&r2=1522175&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/ImapFolderServiceImpl.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/service/ImapFolderServiceImpl.java Thu Sep 12 03:13:55 2013
@@ -228,7 +228,7 @@ public class ImapFolderServiceImpl exten
try {
System.out.println("Creating folder: " + fullName + " for user: ");
delimiter = String.valueOf(folder.getSeparator());
- iFolder = (ImapFolder) new ImapFolderImpl(fullName);
+ iFolder = new ImapFolderImpl(fullName);
iFolder.setDelimiter(delimiter);
if ("[Gmail]".equals(folder.getFullName()))
return iFolder;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org