Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.eventzmail.view.mailinglist;
- import java.sql.SQLException;
- import com.eventzmail.common._const_;
- import com.eventzmail.datastore.DBConnectionPool;
- import com.eventzmail.datastore.TaskQueueDataStore;
- import com.eventzmail.datastore.UserDataStore;
- import com.eventzmail.datastore.querydelegate.MailingListFreeformQueryDelegate;
- import com.eventzmail.eventbus.EventzMailEvent.MailingListCloneEvent;
- import com.eventzmail.eventbus.EventzMailEvent.MailingListCreatorEvent;
- import com.eventzmail.eventbus.EventzMailEvent.MailingListEditorEvent;
- import com.eventzmail.eventbus.EventzMailEvent.MailingListEditorHeaderEvent;
- import com.eventzmail.eventbus.EventzMailEvent.RegisteredMailingListTableHeaderEvent;
- import com.eventzmail.view.common.EventzTable;
- import com.eventzmail.view.mailinglisteditor.MailingListEditorWindow;
- import com.google.common.eventbus.Subscribe;
- import com.vaadin.data.util.sqlcontainer.SQLContainer;
- import com.vaadin.data.util.sqlcontainer.query.FreeformQuery;
- import com.vaadin.event.ItemClickEvent;
- import com.vaadin.server.FontAwesome;
- import com.vaadin.server.Page;
- import com.vaadin.shared.ui.label.ContentMode;
- import com.vaadin.ui.Component;
- import com.vaadin.ui.Label;
- import com.vaadin.ui.Notification;
- import com.vaadin.ui.Table;
- import com.vaadin.ui.UI;
- import com.vaadin.ui.Notification.Type;
- import com.vaadin.ui.themes.ValoTheme;
- class RegisteredMailingListTable extends EventzTable {
- private static final long serialVersionUID = 8878079392331083558L;
- private SQLContainer mailingListSQC;
- //@formatter:off
- private final Object[] NATURAL_COL_ORDER = new Object[] {
- "mailinglist_id",
- "mailinglist_visibility",
- "mailinglist_name",
- "owner_id",
- "count",
- "created_timestamp",
- "importing_task_id"};
- private final String[] COL_HEADERS_ENGLISH = new String[] {
- "ID",
- "Visibility",
- "Name",
- "Owner",
- "Usage Count",
- "Created",
- "Importing Task Id"};
- //@formatter:on
- public MailingListFreeformQueryDelegate freeformQueryDelegate;
- public RegisteredMailingListTable() {
- super();
- try {
- FreeformQuery ffq = new FreeformQuery("SELECT COUNT(*) FROM mailinglist",
- DBConnectionPool.getPool());
- freeformQueryDelegate = new MailingListFreeformQueryDelegate();
- ffq.setDelegate(freeformQueryDelegate);
- mailingListSQC = new SQLContainer(ffq);
- mailingListSQC.setPageLength(_const_.DEFAULT_PAGE_LENGTH);
- } catch (SQLException e) {
- // TODO handle this case
- e.printStackTrace();
- }
- setContainerDataSource(mailingListSQC);
- setVisibleColumns(NATURAL_COL_ORDER);
- setColumnHeaders(COL_HEADERS_ENGLISH);
- setSizeFull();
- setPageLength(_const_.DEFAULT_PAGE_LENGTH);
- setHeight("100%");
- setWidth("100%");
- setColumnCollapsingAllowed(true);
- setColumnCollapsed("mailinglist_id", true);
- setColumnCollapsed("importing_task_id", true);
- setColumnWidth("mailinglist_visibility", 25);
- setStyleName(ValoTheme.TABLE_COMPACT + " " + ValoTheme.TABLE_SMALL + " "
- + ValoTheme.TABLE_NO_VERTICAL_LINES + " " + ValoTheme.TABLE_NO_HORIZONTAL_LINES);
- setSelectable(true);
- addItemClickListener(new ItemClickEvent.ItemClickListener() {
- private static final long serialVersionUID = 1L;
- @Override
- public void itemClick(ItemClickEvent event) {
- int mailinglistId = Integer.valueOf(event.getItem().getItemProperty(
- "mailinglist_id")
- + "");
- int importingTaskId = Integer.valueOf(event.getItem().getItemProperty(
- "importing_task_id")
- + "");
- int importingTaskSatus = ( new TaskQueueDataStore() )
- .getTaskStatus(importingTaskId);
- if (importingTaskId == -1 || importingTaskSatus == _const_.TASK_STATUS_COMPLETED
- || importingTaskSatus == _const_.TASK_STATUS_FAILED) {
- UI.getCurrent().addWindow(
- new MailingListEditorWindow("Edit Mailinglist", mailinglistId));
- } else {
- Notification notification = new Notification("Mailinglist import in progress",
- "Currently selected mailing list has an import procedure in progress."
- + " You can track the status at Task Queue with task id : "
- + importingTaskId, Type.TRAY_NOTIFICATION);
- notification.show(Page.getCurrent());
- }
- }
- });
- addGeneratedColumn("owner_id", new ColumnGenerator() {
- private static final long serialVersionUID = 1L;
- public Component generateCell(Table source, Object itemId, Object columnId) {
- if (getItem(itemId).getItemProperty("owner_id").getValue() != null) {
- Label l = new Label();
- int userId = (Integer )getItem(itemId).getItemProperty("owner_id").getValue();
- UserDataStore uds = new UserDataStore();
- String fullName = uds.getUserName(userId);
- if (fullName != null) {
- l.setValue(fullName);
- } else {
- l.setValue("unknown");
- }
- l.setSizeUndefined();
- return l;
- }
- return null;
- }
- });
- addGeneratedColumn("mailinglist_visibility", new ColumnGenerator() {
- private static final long serialVersionUID = 1L;
- public Component generateCell(Table source, Object itemId, Object columnId) {
- if (getItem(itemId).getItemProperty("mailinglist_visibility").getValue() != null) {
- int mailinglist_visibility = (Integer )getItem(itemId).getItemProperty(
- "mailinglist_visibility").getValue();
- switch (mailinglist_visibility) {
- case _const_.VISIBILITY_ORGANISATION:
- return new Label( ( (FontAwesome )FontAwesome.EYE ).getHtml(),
- ContentMode.HTML);
- case _const_.VISIBILITY_PRIVATE:
- return new Label( ( (FontAwesome )FontAwesome.KEY ).getHtml(),
- ContentMode.HTML);
- default:
- return new Label( ( (FontAwesome )FontAwesome.BUG ).getHtml(),
- ContentMode.HTML);
- }
- }
- return null;
- }
- });
- }
- @Subscribe
- public void handle(MailingListCreatorEvent event) {
- switch (event.getEventCode()) {
- case MailingListCreatorEvent.NEW_MAILINGLIST_CREATION_COMPLETED:
- mailingListSQC.refresh();
- break;
- }
- }
- @Subscribe
- public void handle(MailingListCloneEvent event) {
- switch (event.getEventCode()) {
- case MailingListCloneEvent.NEW_MAILINGLIST_CLONE_COMPLETED:
- mailingListSQC.refresh();
- break;
- }
- }
- @Subscribe
- public void handle(MailingListEditorHeaderEvent event) {
- switch (event.getEventCode()) {
- case MailingListEditorHeaderEvent.MAILINGLIST_REFRESH_ON_UPDATE:
- mailingListSQC.refresh();
- break;
- }
- }
- @Subscribe
- public void handle(MailingListEditorEvent event) {
- switch (event.getEventCode()) {
- case MailingListEditorEvent.MAILINGLIST_DELETE_COMPLETED:
- mailingListSQC.refresh();
- break;
- }
- }
- @Subscribe
- public void handle(RegisteredMailingListTableHeaderEvent event) {
- switch (event.getEventCode()) {
- case RegisteredMailingListTableHeaderEvent.SEARCH_KEYWORD_UPDATED:
- mailingListSQC.removeAllContainerFilters();
- freeformQueryDelegate.clearStringFilter();
- mailingListSQC.refresh();
- if (event.getEventPayload() != null
- && ( (String )event.getEventPayload() ).length() != 0) {
- String keyword = ( (String )event.getEventPayload() ).trim();
- freeformQueryDelegate.setStringFilter(" AND (mailinglist_name LIKE \'%"
- + keyword + "%\')");
- mailingListSQC.refresh();
- break;
- }
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement