1
2
3
4
5
6
7 package fr.ifremer.dali.ui.swing.content.manage.referential.user.table;
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 import fr.ifremer.dali.dto.referential.DepartmentDTO;
33 import fr.ifremer.dali.service.StatusFilter;
34 import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableModel;
35 import fr.ifremer.dali.ui.swing.util.table.DaliColumnIdentifier;
36 import fr.ifremer.quadrige3.ui.core.dto.referential.StatusDTO;
37 import fr.ifremer.quadrige3.ui.swing.table.SwingTableColumnModel;
38 import org.apache.commons.lang3.StringUtils;
39
40 import java.util.Date;
41
42 import static org.nuiton.i18n.I18n.n;
43
44
45
46
47
48
49 public class UserTableModel extends AbstractDaliTableModel<UserRowModel> {
50
51
52
53
54
55
56 public UserTableModel(final SwingTableColumnModel columnModel, boolean createNewRowAllowed) {
57 super(columnModel, createNewRowAllowed, false);
58 }
59
60
61 @Override
62 public UserRowModel createNewRow() {
63 return new UserRowModel();
64 }
65
66
67 public static final DaliColumnIdentifier<UserRowModel> REG_CODE = DaliColumnIdentifier.newId(
68 UserRowModel.PROPERTY_REG_CODE,
69 n("dali.property.user.regCode"),
70 n("dali.property.user.regCode"),
71 String.class);
72
73
74 public static final DaliColumnIdentifier<UserRowModel> LASTNAME = DaliColumnIdentifier.newId(
75 UserRowModel.PROPERTY_NAME,
76 n("dali.property.user.lastname"),
77 n("dali.property.user.lastname"),
78 String.class,
79 true);
80
81
82 public static final DaliColumnIdentifier<UserRowModel> FIRSTNAME = DaliColumnIdentifier.newId(
83 UserRowModel.PROPERTY_FIRST_NAME,
84 n("dali.property.user.firstname"),
85 n("dali.property.user.firstname"),
86 String.class,
87 true);
88
89
90 public static final DaliColumnIdentifier<UserRowModel> DEPARTMENT = DaliColumnIdentifier.newId(
91 UserRowModel.PROPERTY_DEPARTMENT,
92 n("dali.property.department"),
93 n("dali.property.department"),
94 DepartmentDTO.class,
95 true);
96
97
98 public static final DaliColumnIdentifier<UserRowModel> INTRANET_LOGIN = DaliColumnIdentifier.newId(
99 UserRowModel.PROPERTY_INTRANET_LOGIN,
100 n("dali.property.user.intranetLogin"),
101 n("dali.property.user.intranetLogin"),
102 String.class,
103 true);
104
105
106 public static final DaliColumnIdentifier<UserRowModel> EXTRANET_LOGIN = DaliColumnIdentifier.newId(
107 UserRowModel.PROPERTY_EXTRANET_LOGIN,
108 n("dali.property.user.extranetLogin"),
109 n("dali.property.user.extranetLogin"),
110 String.class);
111
112
113 public static final DaliColumnIdentifier<UserRowModel> HAS_PASSWORD = DaliColumnIdentifier.newId(
114 UserRowModel.PROPERTY_HAS_PASSWORD,
115 n("dali.property.user.password"),
116 n("dali.property.user.password"),
117 Boolean.class);
118
119
120 public static final DaliColumnIdentifier<UserRowModel> EMAIL = DaliColumnIdentifier.newId(
121 UserRowModel.PROPERTY_EMAIL,
122 n("dali.property.email"),
123 n("dali.property.email"),
124 String.class);
125
126
127 public static final DaliColumnIdentifier<UserRowModel> PHONE = DaliColumnIdentifier.newId(
128 UserRowModel.PROPERTY_PHONE,
129 n("dali.property.phone"),
130 n("dali.property.phone"),
131 String.class);
132
133
134 public static final DaliColumnIdentifier<UserRowModel> ADDRESS = DaliColumnIdentifier.newId(
135 UserRowModel.PROPERTY_ADDRESS,
136 n("dali.property.address"),
137 n("dali.property.address"),
138 String.class);
139
140
141 public static final DaliColumnIdentifier<UserRowModel> STATUS = DaliColumnIdentifier.newId(
142 UserRowModel.PROPERTY_STATUS,
143 n("dali.property.status"),
144 n("dali.property.status"),
145 StatusDTO.class,
146 true);
147
148
149
150 public static final DaliColumnIdentifier<UserRowModel> PRIVILEGES = DaliColumnIdentifier.newId(
151 UserRowModel.PROPERTY_PRIVILEGE_SIZE,
152 n("dali.property.user.privileges"),
153 n("dali.property.user.privileges"),
154 Integer.class);
155
156
157 public static final DaliColumnIdentifier<UserRowModel> ORGANISM = DaliColumnIdentifier.newId(
158 UserRowModel.PROPERTY_ORGANISM,
159 n("dali.property.department"),
160 n("dali.property.department"),
161 String.class);
162
163
164 public static final DaliColumnIdentifier<UserRowModel> ADMIN_CENTER = DaliColumnIdentifier.newId(
165 UserRowModel.PROPERTY_ADMIN_CENTER,
166 n("dali.property.user.adminCenter"),
167 n("dali.property.user.adminCenter"),
168 String.class);
169
170
171 public static final DaliColumnIdentifier<UserRowModel> SITE = DaliColumnIdentifier.newId(
172 UserRowModel.PROPERTY_SITE,
173 n("dali.property.user.site"),
174 n("dali.property.user.site"),
175 String.class);
176
177 public static final DaliColumnIdentifier<UserRowModel> COMMENT = DaliColumnIdentifier.newId(
178 UserRowModel.PROPERTY_COMMENT,
179 n("dali.property.comment"),
180 n("dali.property.comment"),
181 String.class,
182 false);
183
184 public static final DaliColumnIdentifier<UserRowModel> CREATION_DATE = DaliColumnIdentifier.newReadOnlyId(
185 UserRowModel.PROPERTY_CREATION_DATE,
186 n("dali.property.date.creation"),
187 n("dali.property.date.creation"),
188 Date.class);
189
190 public static final DaliColumnIdentifier<UserRowModel> UPDATE_DATE = DaliColumnIdentifier.newReadOnlyId(
191 UserRowModel.PROPERTY_UPDATE_DATE,
192 n("dali.property.date.modification"),
193 n("dali.property.date.modification"),
194 Date.class);
195
196
197
198 @Override
199 public DaliColumnIdentifier<UserRowModel> getFirstColumnEditing() {
200 return LASTNAME;
201 }
202
203
204 @Override
205 public boolean isCellEditable(int rowIndex, int columnIndex, org.nuiton.jaxx.application.swing.table.ColumnIdentifier<UserRowModel> propertyName) {
206
207 boolean editable = super.isCellEditable(rowIndex, columnIndex, propertyName);
208
209 if (editable) {
210 if (propertyName == PRIVILEGES) {
211
212
213 UserRowModel row = getEntry(rowIndex);
214 editable = row.getStatus() == null
215 || !StatusFilter.ALL.toStatusCodes().contains(row.getStatus().getCode())
216 || row.sizePrivilege() > 0;
217
218 } else if (propertyName == HAS_PASSWORD) {
219
220
221 UserRowModel row = getEntry(rowIndex);
222 editable = (getTableUIModel().isAdmin() || getTableUIModel().isUserItself(row)) && StringUtils.isNotBlank(row.getIntranetLogin());
223 }
224
225 }
226
227 return editable;
228
229 }
230
231
232 @Override
233 public UserTableUIModel getTableUIModel() {
234 return (UserTableUIModel) super.getTableUIModel();
235 }
236 }