1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portlet;
16  
17  import com.liferay.portal.kernel.util.StringPool;
18  import com.liferay.portal.model.Address;
19  import com.liferay.portal.model.User;
20  
21  import java.util.Calendar;
22  import java.util.GregorianCalendar;
23  
24  /**
25   * <a href="UserAttributes.java.html"><b><i>View Source</i></b></a>
26   *
27   * @author Brian Wing Shun Chan
28   */
29  public class UserAttributes {
30  
31      // Mandatory Liferay attributes
32  
33      public static final String LIFERAY_COMPANY_ID = "liferay.company.id";
34  
35      public static final String LIFERAY_USER_ID = "liferay.user.id";
36  
37      public static final String USER_NAME_FULL = "user.name.full";
38  
39      // See page 249 of the JSR 286 spec
40  
41      public static final String USER_BDATE = "user.bdate";
42  
43      public static final String USER_BDATE_DAY = "user.bdate.ymd.day";
44  
45      public static final String USER_BDATE_FRACTIONSECOND = "user.bdate.fractionsecond";
46  
47      public static final String USER_BDATE_HOUR = "user.bdate.hms.hour";
48  
49      public static final String USER_BDATE_MINUTE = "user.bdate.hms.minute";
50  
51      public static final String USER_BDATE_MONTH = "user.bdate.ymd.month";
52  
53      public static final String USER_BDATE_SECOND = "user.bdate.hms.second";
54  
55      public static final String USER_BDATE_TIMEZONE = "user.bdate.timezone";
56  
57      public static final String USER_BDATE_YEAR = "user.bdate.ymd.year";
58  
59      public static final String USER_GENDER = "user.gender";
60  
61      public static final String USER_EMPLOYER = "user.employer";
62  
63      public static final String USER_DEPARTMENT = "user.department";
64  
65      public static final String USER_JOBTITLE = "user.jobtitle";
66  
67      public static final String USER_NAME_PREFIX = "user.name.prefix";
68  
69      public static final String USER_NAME_GIVEN = "user.name.given";
70  
71      public static final String USER_NAME_FAMILY = "user.name.family";
72  
73      public static final String USER_NAME_MIDDLE = "user.name.middle";
74  
75      public static final String USER_NAME_SUFFIX = "user.name.suffix";
76  
77      public static final String USER_NAME_NICKNAME = "user.name.nickName";
78  
79      public static final String USER_HOME_INFO_POSTAL_NAME = "user.home-info.postal.name";
80  
81      public static final String USER_HOME_INFO_POSTAL_STREET = "user.home-info.postal.street";
82  
83      public static final String USER_HOME_INFO_POSTAL_CITY = "user.home-info.postal.city";
84  
85      public static final String USER_HOME_INFO_POSTAL_STATEPROV = "user.home-info.postal.stateprov";
86  
87      public static final String USER_HOME_INFO_POSTAL_POSTALCODE = "user.home-info.postal.postalcode";
88  
89      public static final String USER_HOME_INFO_POSTAL_COUNTRY = "user.home-info.postal.country";
90  
91      public static final String USER_HOME_INFO_POSTAL_ORGANIZATION = "user.home-info.postal.organization";
92  
93      public static final String USER_HOME_INFO_TELECOM_TELEPHONE_INTCODE = "user.home-info.telecom.telephone.intcode";
94  
95      public static final String USER_HOME_INFO_TELECOM_TELEPHONE_LOCCODE = "user.home-info.telecom.telephone.loccode";
96  
97      public static final String USER_HOME_INFO_TELECOM_TELEPHONE_NUMBER = "user.home-info.telecom.telephone.number";
98  
99      public static final String USER_HOME_INFO_TELECOM_TELEPHONE_EXT = "user.home-info.telecom.telephone.ext";
100 
101     public static final String USER_HOME_INFO_TELECOM_TELEPHONE_COMMENT = "user.home-info.telecom.telephone.comment";
102 
103     public static final String USER_HOME_INFO_TELECOM_FAX_INTCODE = "user.home-info.telecom.fax.intcode";
104 
105     public static final String USER_HOME_INFO_TELECOM_FAX_LOCCODE = "user.home-info.telecom.fax.loccode";
106 
107     public static final String USER_HOME_INFO_TELECOM_FAX_NUMBER = "user.home-info.telecom.fax.number";
108 
109     public static final String USER_HOME_INFO_TELECOM_FAX_EXT = "user.home-info.telecom.fax.ext";
110 
111     public static final String USER_HOME_INFO_TELECOM_FAX_COMMENT = "user.home-info.telecom.fax.comment";
112 
113     public static final String USER_HOME_INFO_TELECOM_MOBILE_INTCODE = "user.home-info.telecom.mobile.intcode";
114 
115     public static final String USER_HOME_INFO_TELECOM_MOBILE_LOCCODE = "user.home-info.telecom.mobile.loccode";
116 
117     public static final String USER_HOME_INFO_TELECOM_MOBILE_NUMBER = "user.home-info.telecom.mobile.number";
118 
119     public static final String USER_HOME_INFO_TELECOM_MOBILE_EXT = "user.home-info.telecom.mobile.ext";
120 
121     public static final String USER_HOME_INFO_TELECOM_MOBILE_COMMENT = "user.home-info.telecom.mobile.comment";
122 
123     public static final String USER_HOME_INFO_TELECOM_PAGER_INTCODE = "user.home-info.telecom.pager.intcode";
124 
125     public static final String USER_HOME_INFO_TELECOM_PAGER_LOCCODE = "user.home-info.telecom.pager.loccode";
126 
127     public static final String USER_HOME_INFO_TELECOM_PAGER_NUMBER = "user.home-info.telecom.pager.number";
128 
129     public static final String USER_HOME_INFO_TELECOM_PAGER_EXT = "user.home-info.telecom.pager.ext";
130 
131     public static final String USER_HOME_INFO_TELECOM_PAGER_COMMENT = "user.home-info.telecom.pager.comment";
132 
133     public static final String USER_HOME_INFO_ONLINE_EMAIL = "user.home-info.online.email";
134 
135     public static final String USER_HOME_INFO_ONLINE_URI = "user.home-info.online.uri";
136 
137     public static final String USER_BUSINESS_INFO_POSTAL_NAME = "user.business-info.postal.name";
138 
139     public static final String USER_BUSINESS_INFO_POSTAL_STREET = "user.business-info.postal.street";
140 
141     public static final String USER_BUSINESS_INFO_POSTAL_CITY = "user.business-info.postal.city";
142 
143     public static final String USER_BUSINESS_INFO_POSTAL_STATEPROV = "user.business-info.postal.stateprov";
144 
145     public static final String USER_BUSINESS_INFO_POSTAL_POSTALCODE = "user.business-info.postal.postalcode";
146 
147     public static final String USER_BUSINESS_INFO_POSTAL_COUNTRY = "user.business-info.postal.country";
148 
149     public static final String USER_BUSINESS_INFO_POSTAL_ORGANIZATION = "user.business-info.postal.organization";
150 
151     public static final String USER_BUSINESS_INFO_TELECOM_TELEPHONE_INTCODE = "user.business-info.telecom.telephone.intcode";
152 
153     public static final String USER_BUSINESS_INFO_TELECOM_TELEPHONE_LOCCODE = "user.business-info.telecom.telephone.loccode";
154 
155     public static final String USER_BUSINESS_INFO_TELECOM_TELEPHONE_NUMBER = "user.business-info.telecom.telephone.number";
156 
157     public static final String USER_BUSINESS_INFO_TELECOM_TELEPHONE_EXT = "user.business-info.telecom.telephone.ext";
158 
159     public static final String USER_BUSINESS_INFO_TELECOM_TELEPHONE_COMMENT = "user.business-info.telecom.telephone.comment";
160 
161     public static final String USER_BUSINESS_INFO_TELECOM_FAX_INTCODE = "user.business-info.telecom.fax.intcode";
162 
163     public static final String USER_BUSINESS_INFO_TELECOM_FAX_LOCCODE = "user.business-info.telecom.fax.loccode";
164 
165     public static final String USER_BUSINESS_INFO_TELECOM_FAX_NUMBER = "user.business-info.telecom.fax.number";
166 
167     public static final String USER_BUSINESS_INFO_TELECOM_FAX_EXT = "user.business-info.telecom.fax.ext";
168 
169     public static final String USER_BUSINESS_INFO_TELECOM_FAX_COMMENT = "user.business-info.telecom.fax.comment";
170 
171     public static final String USER_BUSINESS_INFO_TELECOM_MOBILE_INTCODE = "user.business-info.telecom.mobile.intcode";
172 
173     public static final String USER_BUSINESS_INFO_TELECOM_MOBILE_LOCCODE = "user.business-info.telecom.mobile.loccode";
174 
175     public static final String USER_BUSINESS_INFO_TELECOM_MOBILE_NUMBER = "user.business-info.telecom.mobile.number";
176 
177     public static final String USER_BUSINESS_INFO_TELECOM_MOBILE_EXT = "user.business-info.telecom.mobile.ext";
178 
179     public static final String USER_BUSINESS_INFO_TELECOM_MOBILE_COMMENT = "user.business-info.telecom.mobile.comment";
180 
181     public static final String USER_BUSINESS_INFO_TELECOM_PAGER_INTCODE = "user.business-info.telecom.pager.intcode";
182 
183     public static final String USER_BUSINESS_INFO_TELECOM_PAGER_LOCCODE = "user.business-info.telecom.pager.loccode";
184 
185     public static final String USER_BUSINESS_INFO_TELECOM_PAGER_NUMBER = "user.business-info.telecom.pager.number";
186 
187     public static final String USER_BUSINESS_INFO_TELECOM_PAGER_EXT = "user.business-info.telecom.pager.ext";
188 
189     public static final String USER_BUSINESS_INFO_TELECOM_PAGER_COMMENT = "user.business-info.telecom.pager.comment";
190 
191     public static final String USER_BUSINESS_INFO_ONLINE_EMAIL = "user.business-info.online.email";
192 
193     public static final String USER_BUSINESS_INFO_ONLINE_URI = "user.business-info.online.uri";
194 
195     public static final String USER_LOGIN_ID = "user.login.id";
196 
197     public UserAttributes(User user) {
198         _user = user;
199 
200         /*List addresses = user.getAddresses();
201 
202         for (int i = 0; i < addresses.size(); i++) {
203             Address address = (Address)addresses.get(i);
204 
205             if (address.getDescription().equalsIgnoreCase("home")) {
206                 _homeAddress = address;
207             }
208             else if (address.getDescription().equalsIgnoreCase("business")) {
209                 _bizAddress = address;
210             }
211         }*/
212     }
213 
214     public String getValue(String name) {
215         if (name == null) {
216             return null;
217         }
218 
219         if (name.equals(LIFERAY_COMPANY_ID)) {
220             return String.valueOf(_user.getCompanyId());
221         }
222         else if (name.equals(LIFERAY_USER_ID)) {
223             return String.valueOf(_user.getUserId());
224         }
225         else if (name.equals(USER_NAME_FULL)) {
226             return _user.getFullName();
227         }
228         else if (name.equals(USER_BDATE)) {
229             return _user.getBirthday().toString();
230         }
231         else if (name.equals(USER_BDATE_DAY)) {
232             String returnValue = null;
233 
234             if (_user.getBirthday() != null) {
235                 _calendar.setTime(_user.getBirthday());
236 
237                 returnValue = String.valueOf(_calendar.get(Calendar.DATE));
238             }
239 
240             return returnValue;
241         }
242         else if (name.equals(USER_BDATE_FRACTIONSECOND)) {
243             String returnValue = null;
244 
245             if (_user.getBirthday() != null) {
246                 _calendar.setTime(_user.getBirthday());
247 
248                 returnValue = String.valueOf(
249                     _calendar.get(Calendar.MILLISECOND));
250             }
251 
252             return returnValue;
253         }
254         else if (name.equals(USER_BDATE_HOUR)) {
255             String returnValue = null;
256 
257             if (_user.getBirthday() != null) {
258                 _calendar.setTime(_user.getBirthday());
259 
260                 returnValue = String.valueOf(_calendar.get(Calendar.HOUR));
261             }
262 
263             return returnValue;
264         }
265         else if (name.equals(USER_BDATE_MINUTE)) {
266             String returnValue = null;
267 
268             if (_user.getBirthday() != null) {
269                 _calendar.setTime(_user.getBirthday());
270 
271                 returnValue = String.valueOf(_calendar.get(Calendar.MINUTE));
272             }
273 
274             return returnValue;
275         }
276         else if (name.equals(USER_BDATE_MONTH)) {
277             String returnValue = null;
278 
279             if (_user.getBirthday() != null) {
280                 _calendar.setTime(_user.getBirthday());
281 
282                 returnValue = String.valueOf(_calendar.get(Calendar.MONTH) + 1);
283             }
284 
285             return returnValue;
286         }
287         else if (name.equals(USER_BDATE_SECOND)) {
288             String returnValue = null;
289 
290             if (_user.getBirthday() != null) {
291                 _calendar.setTime(_user.getBirthday());
292 
293                 returnValue = String.valueOf(_calendar.get(Calendar.SECOND));
294             }
295 
296             return returnValue;
297         }
298         else if (name.equals(USER_BDATE_TIMEZONE)) {
299             String returnValue = null;
300 
301             if (_user.getBirthday() != null) {
302                 _calendar.setTime(_user.getBirthday());
303 
304                 returnValue = String.valueOf(
305                     _calendar.get(Calendar.ZONE_OFFSET));
306             }
307             return returnValue;
308         }
309         else if (name.equals(USER_BDATE_YEAR)) {
310             String returnValue = null;
311 
312             if (_user.getBirthday() != null) {
313                 _calendar.setTime(_user.getBirthday());
314 
315                 returnValue = String.valueOf(_calendar.get(Calendar.YEAR));
316             }
317 
318             return returnValue;
319         }
320         else if (name.equals(USER_GENDER)) {
321             return _user.isMale() ? "male" : "female";
322         }
323         else if (name.equals(USER_EMPLOYER)) {
324             return StringPool.BLANK;
325         }
326         else if (name.equals(USER_DEPARTMENT)) {
327             return StringPool.BLANK;
328         }
329         else if (name.equals(USER_JOBTITLE)) {
330             return _user.getJobTitle();
331         }
332         else if (name.equals(USER_NAME_PREFIX)) {
333             return StringPool.BLANK;
334         }
335         else if (name.equals(USER_NAME_GIVEN)) {
336             return _user.getFirstName();
337         }
338         else if (name.equals(USER_NAME_FAMILY)) {
339             return _user.getLastName();
340         }
341         else if (name.equals(USER_NAME_MIDDLE)) {
342             return _user.getMiddleName();
343         }
344         else if (name.equals(USER_NAME_SUFFIX)) {
345             return StringPool.BLANK;
346         }
347         else if (name.equals(USER_NAME_NICKNAME)) {
348             return _user.getScreenName();
349         }
350         else if (name.equals(USER_LOGIN_ID)) {
351             return _user.getScreenName();
352         }
353         else if (name.equals(USER_HOME_INFO_POSTAL_NAME)) {
354             return StringPool.BLANK;
355         }
356         else if (name.equals(USER_HOME_INFO_POSTAL_STREET)) {
357             if (_homeAddress != null) {
358                 return _homeAddress.getStreet1();
359             }
360             else {
361                 return StringPool.BLANK;
362             }
363         }
364         else if (name.equals(USER_HOME_INFO_POSTAL_CITY)) {
365             if (_homeAddress != null) {
366                 return _homeAddress.getCity();
367             }
368             else {
369                 return StringPool.BLANK;
370             }
371         }
372         else if (name.equals(USER_HOME_INFO_POSTAL_STATEPROV)) {
373             return StringPool.BLANK;
374         }
375         else if (name.equals(USER_HOME_INFO_POSTAL_POSTALCODE)) {
376             if (_homeAddress != null) {
377                 return _homeAddress.getZip();
378             }
379             else {
380                 return StringPool.BLANK;
381             }
382         }
383         else if (name.equals(USER_HOME_INFO_POSTAL_COUNTRY)) {
384             return StringPool.BLANK;
385         }
386         else if (name.equals(USER_HOME_INFO_POSTAL_ORGANIZATION)) {
387             return StringPool.BLANK;
388         }
389         else if (name.equals(USER_HOME_INFO_TELECOM_TELEPHONE_INTCODE)) {
390             return StringPool.BLANK;
391         }
392         else if (name.equals(USER_HOME_INFO_TELECOM_TELEPHONE_LOCCODE)) {
393             return StringPool.BLANK;
394         }
395         else if (name.equals(USER_HOME_INFO_TELECOM_TELEPHONE_NUMBER)) {
396             return StringPool.BLANK;
397         }
398         else if (name.equals(USER_HOME_INFO_TELECOM_TELEPHONE_EXT)) {
399             return StringPool.BLANK;
400         }
401         else if (name.equals(USER_HOME_INFO_TELECOM_TELEPHONE_COMMENT)) {
402             return StringPool.BLANK;
403         }
404         else if (name.equals(USER_HOME_INFO_TELECOM_FAX_INTCODE)) {
405             return StringPool.BLANK;
406         }
407         else if (name.equals(USER_HOME_INFO_TELECOM_FAX_LOCCODE)) {
408             return StringPool.BLANK;
409         }
410         else if (name.equals(USER_HOME_INFO_TELECOM_FAX_NUMBER)) {
411             return StringPool.BLANK;
412         }
413         else if (name.equals(USER_HOME_INFO_TELECOM_FAX_EXT)) {
414             return StringPool.BLANK;
415         }
416         else if (name.equals(USER_HOME_INFO_TELECOM_FAX_COMMENT)) {
417             return StringPool.BLANK;
418         }
419         else if (name.equals(USER_HOME_INFO_TELECOM_MOBILE_INTCODE)) {
420             return StringPool.BLANK;
421         }
422         else if (name.equals(USER_HOME_INFO_TELECOM_MOBILE_LOCCODE)) {
423             return StringPool.BLANK;
424         }
425         else if (name.equals(USER_HOME_INFO_TELECOM_MOBILE_NUMBER)) {
426             return StringPool.BLANK;
427         }
428         else if (name.equals(USER_HOME_INFO_TELECOM_MOBILE_EXT)) {
429             return StringPool.BLANK;
430         }
431         else if (name.equals(USER_HOME_INFO_TELECOM_MOBILE_COMMENT)) {
432             return StringPool.BLANK;
433         }
434         else if (name.equals(USER_HOME_INFO_TELECOM_PAGER_INTCODE)) {
435             return StringPool.BLANK;
436         }
437         else if (name.equals(USER_HOME_INFO_TELECOM_PAGER_LOCCODE)) {
438             return StringPool.BLANK;
439         }
440         else if (name.equals(USER_HOME_INFO_TELECOM_PAGER_NUMBER)) {
441             return StringPool.BLANK;
442         }
443         else if (name.equals(USER_HOME_INFO_TELECOM_PAGER_EXT)) {
444             return StringPool.BLANK;
445         }
446         else if (name.equals(USER_HOME_INFO_TELECOM_PAGER_COMMENT)) {
447             return StringPool.BLANK;
448         }
449         else if (name.equals(USER_HOME_INFO_ONLINE_EMAIL)) {
450             return _user.getEmailAddress();
451         }
452         else if (name.equals(USER_HOME_INFO_ONLINE_URI)) {
453             return StringPool.BLANK;
454         }
455         else if (name.equals(USER_BUSINESS_INFO_POSTAL_NAME)) {
456             return StringPool.BLANK;
457         }
458         else if (name.equals(USER_BUSINESS_INFO_POSTAL_STREET)) {
459             if (_bizAddress != null) {
460                 return _bizAddress.getStreet1();
461             }
462             else {
463                 return StringPool.BLANK;
464             }
465         }
466         else if (name.equals(USER_BUSINESS_INFO_POSTAL_CITY)) {
467             if (_bizAddress != null) {
468                 return _bizAddress.getCity();
469             }
470             else {
471                 return StringPool.BLANK;
472             }
473         }
474         else if (name.equals(USER_BUSINESS_INFO_POSTAL_STATEPROV)) {
475             return StringPool.BLANK;
476         }
477         else if (name.equals(USER_BUSINESS_INFO_POSTAL_POSTALCODE)) {
478             if (_bizAddress != null) {
479                 return _bizAddress.getZip();
480             }
481             else {
482                 return StringPool.BLANK;
483             }
484         }
485         else if (name.equals(USER_BUSINESS_INFO_POSTAL_COUNTRY)) {
486             return StringPool.BLANK;
487         }
488         else if (name.equals(USER_BUSINESS_INFO_POSTAL_ORGANIZATION)) {
489             return StringPool.BLANK;
490         }
491         else if (name.equals(USER_BUSINESS_INFO_TELECOM_TELEPHONE_INTCODE)) {
492             return StringPool.BLANK;
493         }
494         else if (name.equals(USER_BUSINESS_INFO_TELECOM_TELEPHONE_LOCCODE)) {
495             return StringPool.BLANK;
496         }
497         else if (name.equals(USER_BUSINESS_INFO_TELECOM_TELEPHONE_NUMBER)) {
498             return StringPool.BLANK;
499         }
500         else if (name.equals(USER_BUSINESS_INFO_TELECOM_TELEPHONE_EXT)) {
501             return StringPool.BLANK;
502         }
503         else if (name.equals(USER_BUSINESS_INFO_TELECOM_TELEPHONE_COMMENT)) {
504             return StringPool.BLANK;
505         }
506         else if (name.equals(USER_BUSINESS_INFO_TELECOM_FAX_INTCODE)) {
507             return StringPool.BLANK;
508         }
509         else if (name.equals(USER_BUSINESS_INFO_TELECOM_FAX_LOCCODE)) {
510             return StringPool.BLANK;
511         }
512         else if (name.equals(USER_BUSINESS_INFO_TELECOM_FAX_NUMBER)) {
513             return StringPool.BLANK;
514         }
515         else if (name.equals(USER_BUSINESS_INFO_TELECOM_FAX_EXT)) {
516             return StringPool.BLANK;
517         }
518         else if (name.equals(USER_BUSINESS_INFO_TELECOM_FAX_COMMENT)) {
519             return StringPool.BLANK;
520         }
521         else if (name.equals(USER_BUSINESS_INFO_TELECOM_MOBILE_INTCODE)) {
522             return StringPool.BLANK;
523         }
524         else if (name.equals(USER_BUSINESS_INFO_TELECOM_MOBILE_LOCCODE)) {
525             return StringPool.BLANK;
526         }
527         else if (name.equals(USER_BUSINESS_INFO_TELECOM_MOBILE_NUMBER)) {
528             return StringPool.BLANK;
529         }
530         else if (name.equals(USER_BUSINESS_INFO_TELECOM_MOBILE_EXT)) {
531             return StringPool.BLANK;
532         }
533         else if (name.equals(USER_BUSINESS_INFO_TELECOM_MOBILE_COMMENT)) {
534             return StringPool.BLANK;
535         }
536         else if (name.equals(USER_BUSINESS_INFO_TELECOM_PAGER_INTCODE)) {
537             return StringPool.BLANK;
538         }
539         else if (name.equals(USER_BUSINESS_INFO_TELECOM_PAGER_LOCCODE)) {
540             return StringPool.BLANK;
541         }
542         else if (name.equals(USER_BUSINESS_INFO_TELECOM_PAGER_NUMBER)) {
543             return StringPool.BLANK;
544         }
545         else if (name.equals(USER_BUSINESS_INFO_TELECOM_PAGER_EXT)) {
546             return StringPool.BLANK;
547         }
548         else if (name.equals(USER_BUSINESS_INFO_TELECOM_PAGER_COMMENT)) {
549             return StringPool.BLANK;
550         }
551         else if (name.equals(USER_BUSINESS_INFO_ONLINE_EMAIL)) {
552             return _user.getEmailAddress();
553         }
554         else if (name.equals(USER_BUSINESS_INFO_ONLINE_URI)) {
555             return StringPool.BLANK;
556         }
557         else {
558             return null;
559         }
560     }
561 
562     private User _user;
563     private Address _homeAddress;
564     private Address _bizAddress;
565     private Calendar _calendar = new GregorianCalendar();
566 
567 }