/*
* Copyright (C) 2003-2007 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see.
*/
package org.exoplatform.calendar.service.impl;
import java.util.List;
import org.exoplatform.calendar.service.CalendarService;
import org.exoplatform.calendar.service.CalendarSetting;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.ValuesParam;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.organization.User;
import org.exoplatform.services.organization.UserEventListener;
/**
* Created by The eXo Platform SARL Author : Hung Nguyen Quang
* hung.nguyen@exoplatform.com Nov 23, 2007 3:09:21 PM
*/
public class NewUserListener extends UserEventListener {
private static final Log LOG = ExoLogger.getLogger(NewUserListener.class);
// Calendar params
// final public static String CALENDAR_CATEGORIES = "defaultCalendarCategory".intern() ;
// final public static String CALENDAR_NAME = "defaultCalendar".intern() ;
final public static String COMA = ",".intern();
// Calendar Setting params
final public static String ST_VIEW_TYPE = "viewType".intern();
final public static String ST_TIME_INTEVAL = "timeInterval".intern();
final public static String ST_WEEK_START = "weekStartOn".intern();
final public static String ST_DATE_FORMAT = "dateFormat".intern();
final public static String ST_TIME_FORMAT = "timeFormat".intern();
final public static String ST_LOCALE = "localeId".intern();
final public static String ST_TIMEZONE = "timezoneId".intern();
final public static String ST_BASE_URL = "baseUrlForRss".intern();
final public static String ST_WORKINGTIME = "isShowWorkingTime".intern();
final public static String ST_TIME_BEGIN = "workingTimeBegin".intern();
final public static String ST_TIME_END = "workingTimeEnd".intern();
final public static String ST_USER_IGNORE = "ignoredUsers".intern();
private CalendarService cservice_;
// private String defaultCalendarCategory_;
// private String[] defaultCalendar_;
private List ignore_users_;
private CalendarSetting defaultCalendarSetting_;
final public static String DEFAULT_CALENDAR_CATEGORYID = "defaultCalendarCategoryId";
final public static String DEFAULT_CALENDAR_ID = "defaultCalendarId";
final public static String DEFAULT_CALENDAR_CATEGORYNAME = "defaultCalendarCategoryName";
final public static String DEFAULT_CALENDAR_NAME = "defaultCalendarName";
final public static String DEFAULT_EVENTCATEGORY_ID_ALL = "defaultEventCategoryIdAll";
final public static String DEFAULT_EVENTCATEGORY_ID_MEETING = "defaultEventCategoryIdMeeting";
final public static String DEFAULT_EVENTCATEGORY_ID_CALLS = "defaultEventCategoryIdCalls";
final public static String DEFAULT_EVENTCATEGORY_ID_CLIENTS = "defaultEventCategoryIdClients";
final public static String DEFAULT_EVENTCATEGORY_ID_HOLIDAY = "defaultEventCategoryIdHoliday";
final public static String DEFAULT_EVENTCATEGORY_ID_ANNIVERSARY = "defaultEventCategoryIdAnniversary";
public static String[] defaultEventCategoryId = { DEFAULT_EVENTCATEGORY_ID_ALL, DEFAULT_EVENTCATEGORY_ID_MEETING, DEFAULT_EVENTCATEGORY_ID_CALLS, DEFAULT_EVENTCATEGORY_ID_CLIENTS, DEFAULT_EVENTCATEGORY_ID_HOLIDAY, DEFAULT_EVENTCATEGORY_ID_ANNIVERSARY };
final public static String DEFAULT_EVENTCATEGORY_NAME_ALL = "defaultEventCategoryNameAll";
final public static String DEFAULT_EVENTCATEGORY_NAME_MEETING = "defaultEventCategoryNameMeeting";
final public static String DEFAULT_EVENTCATEGORY_NAME_CALLS = "defaultEventCategoryNameCalls";
final public static String DEFAULT_EVENTCATEGORY_NAME_CLIENTS = "defaultEventCategoryNameClients";
final public static String DEFAULT_EVENTCATEGORY_NAME_HOLIDAY = "defaultEventCategoryNameHoliday";
final public static String DEFAULT_EVENTCATEGORY_NAME_ANNIVERSARY = "defaultEventCategoryNameAnniversary";
public static String[] defaultEventCategoryName = { DEFAULT_EVENTCATEGORY_NAME_ALL, DEFAULT_EVENTCATEGORY_NAME_MEETING, DEFAULT_EVENTCATEGORY_NAME_CALLS, DEFAULT_EVENTCATEGORY_NAME_CLIENTS, DEFAULT_EVENTCATEGORY_NAME_HOLIDAY, DEFAULT_EVENTCATEGORY_NAME_ANNIVERSARY };
public NewUserListener() {
};
/**
*
* @param cservice : pass throw create object
* @param params : given by config xml
* @throws Exception
*/
@SuppressWarnings("unchecked")
public NewUserListener(CalendarService cservice, InitParams params) throws Exception {
cservice_ = cservice;
defaultCalendarSetting_ = new CalendarSetting();
if (params.getValueParam(ST_VIEW_TYPE) != null) {
defaultCalendarSetting_.setViewType(params.getValueParam(ST_VIEW_TYPE).getValue());
} else {
defaultCalendarSetting_.setViewType(CalendarSetting.WORKING_VIEW);
}
if (params.getValueParam(ST_WEEK_START) != null) {
defaultCalendarSetting_.setWeekStartOn(params.getValueParam(ST_WEEK_START).getValue());
}
if (params.getValueParam(ST_DATE_FORMAT) != null) {
defaultCalendarSetting_.setDateFormat(params.getValueParam(ST_DATE_FORMAT).getValue());
}
if (params.getValueParam(ST_TIME_FORMAT) != null) {
defaultCalendarSetting_.setTimeFormat(params.getValueParam(ST_TIME_FORMAT).getValue());
}
if (params.getValueParam(ST_LOCALE) != null) {
defaultCalendarSetting_.setLocation(params.getValueParam(ST_LOCALE).getValue());
}
if (params.getValueParam(ST_TIMEZONE) != null) {
defaultCalendarSetting_.setTimeZone(params.getValueParam(ST_TIMEZONE).getValue());
}
if (params.getValueParam(ST_BASE_URL) != null) {
defaultCalendarSetting_.setBaseURL(params.getValueParam(ST_BASE_URL).getValue());
}
if (params.getValueParam(ST_WORKINGTIME) != null) {
defaultCalendarSetting_.setShowWorkingTime(Boolean.parseBoolean(params.getValueParam(ST_WORKINGTIME).getValue()));
if (defaultCalendarSetting_.isShowWorkingTime()) {
if (params.getValueParam(ST_TIME_BEGIN) != null) {
defaultCalendarSetting_.setWorkingTimeBegin(params.getValueParam(ST_TIME_BEGIN).getValue());
} else {
defaultCalendarSetting_.setWorkingTimeBegin("09:00");
}
if (params.getValueParam(ST_TIME_END) != null) {
defaultCalendarSetting_.setWorkingTimeEnd(params.getValueParam(ST_TIME_END).getValue());
} else {
defaultCalendarSetting_.setWorkingTimeEnd("18:00");
}
}
} else {
defaultCalendarSetting_.setShowWorkingTime(true);
if (params.getValueParam(ST_TIME_BEGIN) != null) {
defaultCalendarSetting_.setWorkingTimeBegin(params.getValueParam(ST_TIME_BEGIN).getValue());
} else {
defaultCalendarSetting_.setWorkingTimeBegin("09:00");
}
if (params.getValueParam(ST_TIME_END) != null) {
defaultCalendarSetting_.setWorkingTimeEnd(params.getValueParam(ST_TIME_END).getValue());
} else {
defaultCalendarSetting_.setWorkingTimeEnd("18:00");
}
}
ValuesParam ignoredUsers = params.getValuesParam(ST_USER_IGNORE);
if (ignoredUsers != null && !ignoredUsers.getValues().isEmpty()) {
ignore_users_ = ignoredUsers.getValues();
}
}
public void postSave(User user, boolean isNew) throws Exception {
if (!isNew)
return;
if (ignore_users_ != null && !ignore_users_.isEmpty())
for (String u : ignore_users_) {
if (user.getUserName().equalsIgnoreCase(u))
return;
}
try {
cservice_.initNewUser(user.getUserName(), defaultCalendarSetting_);
} catch (Exception e) {
LOG.error("Failed to initialize calendar account for " + user.getUserName());
}
}
@Override
public void preDelete(User user) throws Exception {
// before delete user from portal, remove shared calendar folder of this user
try {
cservice_.removeSharedCalendarFolder(user.getUserName());
} catch (Exception e) {
if (LOG.isWarnEnabled()) {
LOG.warn("Exception occurs when trying to remove shared calendar folder of this user: " + user.getUserName(), e);
}
}
}
}