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