1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    *
5    *
6    *
7    * The contents of this file are subject to the terms of the Liferay Enterprise
8    * Subscription License ("License"). You may not use this file except in
9    * compliance with the License. You can obtain a copy of the License by
10   * contacting Liferay, Inc. See the License for the specific language governing
11   * permissions and limitations under the License, including but not limited to
12   * distribution rights of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portal.verify;
24  
25  import com.liferay.portal.GroupFriendlyURLException;
26  import com.liferay.portal.kernel.log.Log;
27  import com.liferay.portal.kernel.log.LogFactoryUtil;
28  import com.liferay.portal.kernel.util.StringPool;
29  import com.liferay.portal.model.Group;
30  import com.liferay.portal.model.User;
31  import com.liferay.portal.service.GroupLocalServiceUtil;
32  import com.liferay.portal.service.UserLocalServiceUtil;
33  
34  import java.util.List;
35  
36  /**
37   * <a href="VerifyGroup.java.html"><b><i>View Source</i></b></a>
38   *
39   * @author Brian Wing Shun Chan
40   */
41  public class VerifyGroup extends VerifyProcess {
42  
43      protected void doVerify() throws Exception {
44          List<Group> groups = GroupLocalServiceUtil.getNullFriendlyURLGroups();
45  
46          for (Group group : groups) {
47              String friendlyURL = StringPool.SLASH + group.getGroupId();
48  
49              User user = null;
50  
51              if (group.isUser()) {
52                  user = UserLocalServiceUtil.getUserById(group.getClassPK());
53  
54                  friendlyURL = StringPool.SLASH + user.getScreenName();
55              }
56              else if (group.getClassPK() > 0) {
57                  friendlyURL = StringPool.SLASH + group.getClassPK();
58              }
59  
60              try {
61                  GroupLocalServiceUtil.updateFriendlyURL(
62                      group.getGroupId(), friendlyURL);
63              }
64              catch (GroupFriendlyURLException gfurle) {
65                  if (user != null) {
66                      long userId = user.getUserId();
67                      String screenName = user.getScreenName();
68  
69                      if (_log.isInfoEnabled()) {
70                          _log.info(
71                              "Updating user screen name " + screenName + " to " +
72                                  userId + " because it is generating an " +
73                                      "invalid friendly URL");
74                      }
75  
76                      UserLocalServiceUtil.updateScreenName(
77                          userId, String.valueOf(userId));
78                  }
79                  else {
80                      _log.error("Invalid Friendly URL " + friendlyURL);
81  
82                      throw gfurle;
83                  }
84              }
85          }
86      }
87  
88      private static Log _log = LogFactoryUtil.getLog(VerifyGroup.class);
89  
90  }