/*
* 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<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.forum.service.conf;
import java.util.TimeZone;
import org.exoplatform.commons.utils.ExoProperties;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.PropertiesParam;
import org.exoplatform.forum.service.ForumService;
import org.exoplatform.forum.service.UserProfile;
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 Log log = ExoLogger.getLogger(NewUserListener.class);
private UserProfile profileTemplate;
public NewUserListener(InitParams params) throws Exception {
if (params == null)
return;
PropertiesParam propsParams = params.getPropertiesParam("user.profile.setting");
ExoProperties props = propsParams.getProperties();
profileTemplate = new UserProfile();
String timeZoneNumber = props.getProperty("timeZone") != null ? props.getProperty("timeZone") : "GMT";
double timeZone = 0.0;
timeZone = -TimeZone.getTimeZone(timeZoneNumber).getRawOffset() * 1.0 / 3600000;
profileTemplate.setTimeZone(timeZone);
String shortDateFormat = props.getProperty("shortDateFormat") != null ? props.getProperty("shortDateFormat") : "MM/dd/yyyy";
profileTemplate.setShortDateFormat(shortDateFormat);
String longDateFormat = props.getProperty("longDateFormat") != null ? props.getProperty("longDateFormat") : "DDD,MMM dd,yyyy";
profileTemplate.setLongDateFormat(longDateFormat);
String timeFormat = (props.getProperty("timeFormat") != null) ? props.getProperty("timeFormat") : "hh:mm a";
profileTemplate.setTimeFormat(timeFormat);
String strMaxTopic = props.getProperty("maxTopic");
int maxTopic = 10;
try {
maxTopic = Integer.parseInt(strMaxTopic);
} catch (NumberFormatException nfe) {
log.warn("maxTopic is not in format", nfe);
}
profileTemplate.setMaxTopicInPage(maxTopic);
String strMaxPost = props.getProperty("maxPost");
int maxPost = 10;
try {
maxPost = Integer.parseInt(strMaxPost);
} catch (NumberFormatException nfe) {
log.warn("maxPost is not in format", nfe);
}
profileTemplate.setMaxPostInPage(maxPost);
String strShowForumJump = props.getProperty("isShowForumJump");
boolean isShowForumJump = true;
isShowForumJump = Boolean.parseBoolean(strShowForumJump);
profileTemplate.setIsShowForumJump(isShowForumJump);
}
public void postSave(User user, boolean isNew) throws Exception {
if (isNew) {
try {
getForumService().addMember(user, profileTemplate);
} catch (Exception e) {
log.warn("Error while adding new forum member: ", e);
}
} else {
try {
getForumService().updateUserProfile(user);
} catch (Exception e) {
log.warn("Error while updating forum profile: ", e);
}
}
}
private ForumService getForumService() {
return (ForumService) ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(ForumService.class);
}
@Override
public void postDelete(User user) throws Exception {
try {
getForumService().removeMember(user);
} catch (Exception e) {
log.warn("failed to remove member : ", e);
}
}
}