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 }