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.portal.upgrade.v4_3_0.util;
16  
17  import com.liferay.portal.kernel.upgrade.util.BaseUpgradeColumnImpl;
18  import com.liferay.portal.kernel.upgrade.util.UpgradeColumn;
19  import com.liferay.portal.kernel.upgrade.util.ValueMapper;
20  import com.liferay.portal.util.PortletKeys;
21  
22  /**
23   * <a href="PrefsPlidUpgradeColumnImpl.java.html"><b><i>View Source</i></b></a>
24   *
25   * @author Brian Wing Shun Chan
26   */
27  public class PrefsPlidUpgradeColumnImpl extends BaseUpgradeColumnImpl {
28  
29      public PrefsPlidUpgradeColumnImpl(
30          PrefsOwnerIdUpgradeColumnImpl ownerIdColumn,
31          UpgradeColumn layoutIdColumn, ValueMapper layoutPlidMapper) {
32  
33          super("plid");
34  
35          _ownerIdColumn = ownerIdColumn;
36          _layoutIdColumn = layoutIdColumn;
37          _layoutPlidMapper = layoutPlidMapper;
38      }
39  
40      public Object getNewValue(Object oldValue) throws Exception {
41          Long oldGroupId = _ownerIdColumn.getOldGroupId();
42          Long newGroupId = _ownerIdColumn.getNewGroupId();
43          Boolean privateLayout = _ownerIdColumn.isPrivateLayout();
44          String layoutId = (String)_layoutIdColumn.getOldValue();
45  
46          if ((!layoutId.equals("SHARED")) && (oldGroupId != null) &&
47              (newGroupId != null) && (privateLayout != null)) {
48  
49              String oldOwnerId = null;
50  
51              if (privateLayout.booleanValue()) {
52                  oldOwnerId = "PRI.";
53              }
54              else {
55                  oldOwnerId = "PUB.";
56              }
57  
58              oldOwnerId += oldGroupId.longValue();
59  
60              String oldPlidValue =
61                  "{layoutId=" + layoutId + ", ownerId=" + oldOwnerId + "}";
62  
63              return _layoutPlidMapper.getNewValue(oldPlidValue);
64          }
65          else {
66              return new Long(PortletKeys.PREFS_PLID_SHARED);
67          }
68      }
69  
70      private PrefsOwnerIdUpgradeColumnImpl _ownerIdColumn;
71      private UpgradeColumn _layoutIdColumn;
72      private ValueMapper _layoutPlidMapper;
73  
74  }