001    /**
002     * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.mail.util;
016    
017    import com.liferay.mail.model.Filter;
018    import com.liferay.portal.kernel.googleapps.GEmailSettingsManager;
019    import com.liferay.portal.kernel.googleapps.GNicknameManager;
020    import com.liferay.portal.kernel.googleapps.GUserManager;
021    import com.liferay.portal.kernel.googleapps.GoogleAppsFactoryUtil;
022    import com.liferay.portal.kernel.log.Log;
023    import com.liferay.portal.kernel.log.LogFactoryUtil;
024    import com.liferay.portal.kernel.util.CharPool;
025    import com.liferay.portal.model.User;
026    import com.liferay.portal.security.auth.FullNameGenerator;
027    import com.liferay.portal.security.auth.FullNameGeneratorFactory;
028    import com.liferay.portal.service.UserLocalServiceUtil;
029    
030    import java.util.List;
031    
032    /**
033     * @author Brian Wing Shun Chan
034     */
035    public class GoogleHook implements Hook {
036    
037            public void addForward(
038                    long companyId, long userId, List<Filter> filters,
039                    List<String> emailAddresses, boolean leaveCopy) {
040            }
041    
042            public void addUser(
043                    long companyId, long userId, String password, String firstName,
044                    String middleName, String lastName, String emailAddress) {
045    
046                    try {
047                            String nickname = _getNickname(emailAddress);
048    
049                            GUserManager gUserManager = GoogleAppsFactoryUtil.getGUserManager(
050                                    companyId);
051    
052                            gUserManager.addGUser(userId, password, firstName, lastName);
053    
054                            GNicknameManager gNicknameManager =
055                                    GoogleAppsFactoryUtil.getGNicknameManager(companyId);
056    
057                            gNicknameManager.addGNickname(userId, nickname);
058    
059                            GEmailSettingsManager gEmailSettingsManager =
060                                    GoogleAppsFactoryUtil.getGEmailSettingsManager(companyId);
061    
062                            FullNameGenerator fullNameGenerator =
063                                    FullNameGeneratorFactory.getInstance();
064    
065                            gEmailSettingsManager.addSendAs(
066                                    userId,
067                                    fullNameGenerator.getFullName(firstName, middleName, lastName),
068                                    emailAddress);
069                    }
070                    catch (Exception e) {
071                            _log.error(e, e);
072                    }
073            }
074    
075            public void addVacationMessage(
076                    long companyId, long userId, String emailAddress,
077                    String vacationMessage) {
078            }
079    
080            public void deleteEmailAddress(long companyId, long userId) {
081                    try {
082                            User user = UserLocalServiceUtil.getUserById(userId);
083    
084                            String nickname = _getNickname(user.getEmailAddress());
085    
086                            GNicknameManager gNicknameManager =
087                                    GoogleAppsFactoryUtil.getGNicknameManager(companyId);
088    
089                            gNicknameManager.deleteGNickname(nickname);
090                    }
091                    catch (Exception e) {
092                            _log.error(e, e);
093                    }
094            }
095    
096            public void deleteUser(long companyId, long userId) {
097                    try {
098                            GUserManager gUserManager = GoogleAppsFactoryUtil.getGUserManager(
099                                    companyId);
100    
101                            gUserManager.deleteGUser(userId);
102                    }
103                    catch (Exception e) {
104                            _log.error(e, e);
105                    }
106            }
107    
108            public void updateBlocked(
109                    long companyId, long userId, List<String> blocked) {
110            }
111    
112            public void updateEmailAddress(
113                    long companyId, long userId, String emailAddress) {
114    
115                    try {
116                            User user = UserLocalServiceUtil.getUserById(userId);
117    
118                            deleteEmailAddress(companyId, userId);
119    
120                            GNicknameManager gNicknameManager =
121                                    GoogleAppsFactoryUtil.getGNicknameManager(companyId);
122    
123                            gNicknameManager.addGNickname(userId, emailAddress);
124    
125                            GEmailSettingsManager gEmailSettingsManager =
126                                    GoogleAppsFactoryUtil.getGEmailSettingsManager(companyId);
127    
128                            gEmailSettingsManager.addSendAs(
129                                    userId, user.getFullName(), emailAddress);
130                    }
131                    catch (Exception e) {
132                            _log.error(e, e);
133                    }
134            }
135    
136            public void updatePassword(long companyId, long userId, String password) {
137                    try {
138                            GUserManager gUserManager = GoogleAppsFactoryUtil.getGUserManager(
139                                    companyId);
140    
141                            gUserManager.updatePassword(userId, password);
142                    }
143                    catch (Exception e) {
144                            _log.error(e, e);
145                    }
146            }
147    
148            private String _getNickname(String emailAddress) {
149                    int pos = emailAddress.indexOf(CharPool.AT);
150    
151                    return emailAddress.substring(0, pos);
152            }
153    
154            private static Log _log = LogFactoryUtil.getLog(GoogleHook.class);
155    
156    }