Advertisement
Guest User

asfsaf

a guest
Sep 4th, 2015
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.36 KB | None | 0 0
  1. package com.eventzmail.view.mailinglist;
  2.  
  3. import java.sql.SQLException;
  4.  
  5. import com.eventzmail.common._const_;
  6. import com.eventzmail.datastore.DBConnectionPool;
  7. import com.eventzmail.datastore.TaskQueueDataStore;
  8. import com.eventzmail.datastore.UserDataStore;
  9. import com.eventzmail.datastore.querydelegate.MailingListFreeformQueryDelegate;
  10. import com.eventzmail.eventbus.EventzMailEvent.MailingListCloneEvent;
  11. import com.eventzmail.eventbus.EventzMailEvent.MailingListCreatorEvent;
  12. import com.eventzmail.eventbus.EventzMailEvent.MailingListEditorEvent;
  13. import com.eventzmail.eventbus.EventzMailEvent.MailingListEditorHeaderEvent;
  14. import com.eventzmail.eventbus.EventzMailEvent.RegisteredMailingListTableHeaderEvent;
  15. import com.eventzmail.view.common.EventzTable;
  16. import com.eventzmail.view.mailinglisteditor.MailingListEditorWindow;
  17. import com.google.common.eventbus.Subscribe;
  18. import com.vaadin.data.util.sqlcontainer.SQLContainer;
  19. import com.vaadin.data.util.sqlcontainer.query.FreeformQuery;
  20. import com.vaadin.event.ItemClickEvent;
  21. import com.vaadin.server.FontAwesome;
  22. import com.vaadin.server.Page;
  23. import com.vaadin.shared.ui.label.ContentMode;
  24. import com.vaadin.ui.Component;
  25. import com.vaadin.ui.Label;
  26. import com.vaadin.ui.Notification;
  27. import com.vaadin.ui.Table;
  28. import com.vaadin.ui.UI;
  29. import com.vaadin.ui.Notification.Type;
  30. import com.vaadin.ui.themes.ValoTheme;
  31.  
  32. class RegisteredMailingListTable extends EventzTable {
  33.    
  34.     private static final long serialVersionUID = 8878079392331083558L;
  35.     private SQLContainer mailingListSQC;
  36.    
  37.     //@formatter:off
  38.     private final Object[] NATURAL_COL_ORDER = new Object[] {
  39.             "mailinglist_id",
  40.             "mailinglist_visibility",
  41.             "mailinglist_name",
  42.             "owner_id",
  43.             "count",
  44.             "created_timestamp",
  45.             "importing_task_id"};
  46.    
  47.     private final String[] COL_HEADERS_ENGLISH = new String[] {
  48.             "ID",
  49.             "Visibility",
  50.             "Name",
  51.             "Owner",
  52.             "Usage Count",
  53.             "Created",
  54.             "Importing Task Id"};
  55.     //@formatter:on
  56.     public MailingListFreeformQueryDelegate freeformQueryDelegate;
  57.    
  58.     public RegisteredMailingListTable() {
  59.    
  60.         super();
  61.         try {
  62.            
  63.             FreeformQuery ffq = new FreeformQuery("SELECT COUNT(*) FROM mailinglist",
  64.                     DBConnectionPool.getPool());
  65.             freeformQueryDelegate = new MailingListFreeformQueryDelegate();
  66.             ffq.setDelegate(freeformQueryDelegate);
  67.             mailingListSQC = new SQLContainer(ffq);
  68.             mailingListSQC.setPageLength(_const_.DEFAULT_PAGE_LENGTH);
  69.            
  70.         } catch (SQLException e) {
  71.             // TODO handle this case
  72.             e.printStackTrace();
  73.         }
  74.        
  75.         setContainerDataSource(mailingListSQC);
  76.         setVisibleColumns(NATURAL_COL_ORDER);
  77.         setColumnHeaders(COL_HEADERS_ENGLISH);
  78.         setSizeFull();
  79.         setPageLength(_const_.DEFAULT_PAGE_LENGTH);
  80.         setHeight("100%");
  81.         setWidth("100%");
  82.         setColumnCollapsingAllowed(true);
  83.         setColumnCollapsed("mailinglist_id", true);
  84.         setColumnCollapsed("importing_task_id", true);
  85.         setColumnWidth("mailinglist_visibility", 25);
  86.        
  87.         setStyleName(ValoTheme.TABLE_COMPACT + " " + ValoTheme.TABLE_SMALL + " "
  88.                 + ValoTheme.TABLE_NO_VERTICAL_LINES + " " + ValoTheme.TABLE_NO_HORIZONTAL_LINES);
  89.         setSelectable(true);
  90.         addItemClickListener(new ItemClickEvent.ItemClickListener() {
  91.            
  92.             private static final long serialVersionUID = 1L;
  93.            
  94.             @Override
  95.             public void itemClick(ItemClickEvent event) {
  96.            
  97.                 int mailinglistId = Integer.valueOf(event.getItem().getItemProperty(
  98.                         "mailinglist_id")
  99.                         + "");
  100.                 int importingTaskId = Integer.valueOf(event.getItem().getItemProperty(
  101.                         "importing_task_id")
  102.                         + "");
  103.                 int importingTaskSatus = ( new TaskQueueDataStore() )
  104.                         .getTaskStatus(importingTaskId);
  105.                
  106.                 if (importingTaskId == -1 || importingTaskSatus == _const_.TASK_STATUS_COMPLETED
  107.                         || importingTaskSatus == _const_.TASK_STATUS_FAILED) {
  108.                     UI.getCurrent().addWindow(
  109.                             new MailingListEditorWindow("Edit Mailinglist", mailinglistId));
  110.                 } else {
  111.                    
  112.                     Notification notification = new Notification("Mailinglist import in progress",
  113.                             "Currently selected mailing list has an import procedure in progress."
  114.                                     + " You can track the status at Task Queue with task id : "
  115.                                     + importingTaskId, Type.TRAY_NOTIFICATION);
  116.                     notification.show(Page.getCurrent());
  117.                 }
  118.             }
  119.         });
  120.        
  121.         addGeneratedColumn("owner_id", new ColumnGenerator() {
  122.            
  123.             private static final long serialVersionUID = 1L;
  124.            
  125.             public Component generateCell(Table source, Object itemId, Object columnId) {
  126.            
  127.                 if (getItem(itemId).getItemProperty("owner_id").getValue() != null) {
  128.                    
  129.                     Label l = new Label();
  130.                     int userId = (Integer )getItem(itemId).getItemProperty("owner_id").getValue();
  131.                     UserDataStore uds = new UserDataStore();
  132.                     String fullName = uds.getUserName(userId);
  133.                     if (fullName != null) {
  134.                        
  135.                         l.setValue(fullName);
  136.                     } else {
  137.                        
  138.                         l.setValue("unknown");
  139.                     }
  140.                     l.setSizeUndefined();
  141.                     return l;
  142.                 }
  143.                 return null;
  144.             }
  145.         });
  146.        
  147.         addGeneratedColumn("mailinglist_visibility", new ColumnGenerator() {
  148.            
  149.             private static final long serialVersionUID = 1L;
  150.            
  151.             public Component generateCell(Table source, Object itemId, Object columnId) {
  152.            
  153.                 if (getItem(itemId).getItemProperty("mailinglist_visibility").getValue() != null) {
  154.                    
  155.                     int mailinglist_visibility = (Integer )getItem(itemId).getItemProperty(
  156.                             "mailinglist_visibility").getValue();
  157.                    
  158.                     switch (mailinglist_visibility) {
  159.                         case _const_.VISIBILITY_ORGANISATION:
  160.                             return new Label( ( (FontAwesome )FontAwesome.EYE ).getHtml(),
  161.                                     ContentMode.HTML);
  162.                         case _const_.VISIBILITY_PRIVATE:
  163.                             return new Label( ( (FontAwesome )FontAwesome.KEY ).getHtml(),
  164.                                     ContentMode.HTML);
  165.                         default:
  166.                             return new Label( ( (FontAwesome )FontAwesome.BUG ).getHtml(),
  167.                                     ContentMode.HTML);
  168.                     }
  169.                 }
  170.                
  171.                 return null;
  172.             }
  173.         });
  174.     }
  175.    
  176.     @Subscribe
  177.     public void handle(MailingListCreatorEvent event) {
  178.    
  179.         switch (event.getEventCode()) {
  180.        
  181.             case MailingListCreatorEvent.NEW_MAILINGLIST_CREATION_COMPLETED:
  182.                 mailingListSQC.refresh();
  183.                 break;
  184.         }
  185.        
  186.     }
  187.    
  188.     @Subscribe
  189.     public void handle(MailingListCloneEvent event) {
  190.    
  191.         switch (event.getEventCode()) {
  192.        
  193.             case MailingListCloneEvent.NEW_MAILINGLIST_CLONE_COMPLETED:
  194.                 mailingListSQC.refresh();
  195.                 break;
  196.         }
  197.     }
  198.    
  199.     @Subscribe
  200.     public void handle(MailingListEditorHeaderEvent event) {
  201.    
  202.         switch (event.getEventCode()) {
  203.        
  204.             case MailingListEditorHeaderEvent.MAILINGLIST_REFRESH_ON_UPDATE:
  205.                 mailingListSQC.refresh();
  206.                 break;
  207.         }
  208.        
  209.     }
  210.    
  211.     @Subscribe
  212.     public void handle(MailingListEditorEvent event) {
  213.    
  214.         switch (event.getEventCode()) {
  215.        
  216.             case MailingListEditorEvent.MAILINGLIST_DELETE_COMPLETED:
  217.                 mailingListSQC.refresh();
  218.                 break;
  219.         }
  220.     }
  221.    
  222.     @Subscribe
  223.     public void handle(RegisteredMailingListTableHeaderEvent event) {
  224.    
  225.         switch (event.getEventCode()) {
  226.             case RegisteredMailingListTableHeaderEvent.SEARCH_KEYWORD_UPDATED:
  227.                
  228.                 mailingListSQC.removeAllContainerFilters();
  229.                 freeformQueryDelegate.clearStringFilter();
  230.                 mailingListSQC.refresh();
  231.                
  232.                 if (event.getEventPayload() != null
  233.                         && ( (String )event.getEventPayload() ).length() != 0) {
  234.                    
  235.                     String keyword = ( (String )event.getEventPayload() ).trim();
  236.                     freeformQueryDelegate.setStringFilter(" AND (mailinglist_name LIKE \'%"
  237.                             + keyword + "%\')");
  238.                     mailingListSQC.refresh();
  239.                     break;
  240.                 }
  241.                 break;
  242.         }
  243.     }
  244. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement