1 package fr.ifremer.reefdb.ui.swing.content.manage.context.filtercontent;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
43
44
45 public class ManageFilterContentTableUIHandler extends
46 AbstractReefDbTableUIHandler<ManageFilterContentTableUIRowModel, ManageFilterContentTableUIModel, ManageFilterContentTableUI> {
47
48
49
50
51 private static final Log LOG = LogFactory.getLog(ManageFilterContentTableUIHandler.class);
52
53
54 @Override
55 public void beforeInit(final ManageFilterContentTableUI ui) {
56 super.beforeInit(ui);
57
58
59 final ManageFilterContentTableUIModel model = new ManageFilterContentTableUIModel();
60 ui.setContextValue(model);
61 }
62
63
64 @Override
65 public void afterInit(final ManageFilterContentTableUI ui) {
66
67
68 initUI(ui);
69
70
71 initializeTable();
72
73 }
74
75
76
77
78 private void initializeTable() {
79
80
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
89 initTable(getTable(), true);
90
91 getTable().setVisibleRowCount(5);
92 }
93
94
95 @Override
96 public AbstractReefDbTableModel<ManageFilterContentTableUIRowModel> getTableModel() {
97 return (ManageFilterContentTableUITableModel) getTable().getModel();
98 }
99
100
101 @Override
102 public SwingTable getTable() {
103 return ui.getManageFilterContentTable();
104 }
105
106
107
108
109
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
122
123 public void clearTable() {
124 loadFilterContent(null);
125 }
126
127 private void loadFilterContent(FilterDTO filter) {
128
129
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 }