View Javadoc
1   package fr.ifremer.reefdb.ui.swing.content.manage.context.filtercontent;
2   
3   /*
4    * #%L
5    * Reef DB :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2014 - 2015 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  import fr.ifremer.quadrige3.core.dao.technical.decorator.Decorator;
27  import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
28  import fr.ifremer.reefdb.decorator.DecoratorService;
29  import fr.ifremer.quadrige3.ui.core.dto.QuadrigeBean;
30  import fr.ifremer.reefdb.dto.configuration.filter.FilterDTO;
31  import fr.ifremer.reefdb.dto.referential.TaxonDTO;
32  import fr.ifremer.reefdb.ui.swing.util.table.AbstractReefDbTableModel;
33  import fr.ifremer.reefdb.ui.swing.util.table.AbstractReefDbTableUIHandler;
34  import org.apache.commons.logging.Log;
35  import org.apache.commons.logging.LogFactory;
36  import org.jdesktop.swingx.table.TableColumnExt;
37  
38  import java.util.ArrayList;
39  import java.util.List;
40  
41  /**
42   * <p>ManageFilterContentTableUIHandler class.</p>
43   *
44   */
45  public class ManageFilterContentTableUIHandler extends
46          AbstractReefDbTableUIHandler<ManageFilterContentTableUIRowModel, ManageFilterContentTableUIModel, ManageFilterContentTableUI> {
47  
48      /**
49       * Logger.
50       */
51      private static final Log LOG = LogFactory.getLog(ManageFilterContentTableUIHandler.class);
52  
53      /** {@inheritDoc} */
54      @Override
55      public void beforeInit(final ManageFilterContentTableUI ui) {
56          super.beforeInit(ui);
57  
58          // create model and register to the JAXX context
59          final ManageFilterContentTableUIModel model = new ManageFilterContentTableUIModel();
60          ui.setContextValue(model);
61      }
62  
63      /** {@inheritDoc} */
64      @Override
65      public void afterInit(final ManageFilterContentTableUI ui) {
66  
67          // Initialize the screen
68          initUI(ui);
69  
70          // Initialisatize the table
71          initializeTable();
72  
73      }
74  
75      /**
76       * Initialisation du tableau.
77       */
78      private void initializeTable() {
79  
80          // label
81          TableColumnExt labelCol = addColumn(ManageFilterContentTableUITableModel.LABEL);
82          labelCol.setSortable(true);
83          labelCol.setEditable(false);
84  
85          ManageFilterContentTableUITableModel tableModel = new ManageFilterContentTableUITableModel(getTable().getColumnModel());
86          getTable().setModel(tableModel);
87  
88          // Initialisation du tableau
89          initTable(getTable(), true);
90  
91          getTable().setVisibleRowCount(5);
92      }
93  
94      /** {@inheritDoc} */
95      @Override
96      public AbstractReefDbTableModel<ManageFilterContentTableUIRowModel> getTableModel() {
97          return (ManageFilterContentTableUITableModel) getTable().getModel();
98      }
99  
100     /** {@inheritDoc} */
101     @Override
102     public SwingTable getTable() {
103         return ui.getManageFilterContentTable();
104     }
105 
106     /**
107      * <p>loadFilterElements.</p>
108      *
109      * @param filterId a {@link java.lang.Integer} object.
110      */
111     public void loadFilterElements(final Integer filterId) {
112         FilterDTO filter = getContext().getContextService().getFilter(filterId);
113 
114         if (filter != null) {
115             getUI().setEnabled(true);
116             loadFilterContent(filter);
117         }
118     }
119 
120     /**
121      * <p>clearTable.</p>
122      */
123     public void clearTable() {
124         loadFilterContent(null);
125     }
126 
127     private void loadFilterContent(FilterDTO filter) {
128 
129         // load filter elements
130         getContext().getContextService().loadFilteredElements(filter);
131 
132         List<String> contentLabels = getFilterContentLabel(filter);
133 
134         List<ManageFilterContentTableUIRowModel> rows = new ArrayList<>(contentLabels.size());
135         for (String label : contentLabels) {
136             ManageFilterContentTableUIRowModel row = getTableModel().createNewRow();
137             row.setValid(true);
138             row.setLabel(label);
139             rows.add(row);
140         }
141         getModel().setRows(rows);
142     }
143 
144     private List<String> getFilterContentLabel(FilterDTO filter) {
145         ArrayList<String> list = new ArrayList<>();
146         if (filter != null && filter.getElements() != null) {
147             for (QuadrigeBean bean : filter.getElements()) {
148                 String context = null;
149                 if (bean instanceof TaxonDTO) {
150                     context = DecoratorService.WITH_CITATION_AND_REFERENT;
151                 }
152                 Decorator decorator = getContext().getDecoratorService().getDecorator(bean, context);
153                 list.add(decorator != null ? decorator.toString(bean) : bean.toString());
154             }
155         }
156         return list;
157     }
158 
159 }