1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   * SOFTWARE.
18   */
19  
20  package com.liferay.portal.upgrade.v4_3_0.util;
21  
22  import com.liferay.portal.kernel.util.Validator;
23  import com.liferay.portal.upgrade.StagnantRowException;
24  import com.liferay.portal.upgrade.util.PKUpgradeColumnImpl;
25  import com.liferay.portal.upgrade.util.UpgradeColumn;
26  import com.liferay.portal.upgrade.util.ValueMapper;
27  import com.liferay.portal.upgrade.util.ValueMapperFactory;
28  
29  /**
30   * <a href="LayoutPlidUpgradeColumnImpl.java.html"><b><i>View Source</i></b></a>
31   *
32   * @author Brian Wing Shun Chan
33   *
34   */
35  public class LayoutPlidUpgradeColumnImpl extends PKUpgradeColumnImpl {
36  
37      public LayoutPlidUpgradeColumnImpl(
38          UpgradeColumn upgradeLayoutOwnerIdColumn,
39          LayoutOwnerIdUpgradeColumnImpl groupIdColumn,
40          LayoutOwnerIdUpgradeColumnImpl privateLayoutColumn,
41          UpgradeColumn layoutIdColumn) {
42  
43          super("plid", false);
44  
45          _upgradeLayoutOwnerIdColumn = upgradeLayoutOwnerIdColumn;
46          _groupIdColumn = groupIdColumn;
47          _privateLayoutColumn = privateLayoutColumn;
48          _layoutIdColumn = layoutIdColumn;
49          _layoutPlidMapper = ValueMapperFactory.getValueMapper();
50      }
51  
52      public Object getNewValue(Object oldValue) throws Exception {
53          Object newValue = super.getNewValue(oldValue);
54  
55          Long groupId = _groupIdColumn.getGroupId();
56          Boolean privateLayout = _privateLayoutColumn.isPrivateLayout();
57          Long layoutId = (Long)_layoutIdColumn.getOldValue();
58  
59          if ((groupId == null) || (privateLayout == null) ||
60              (Validator.isNull(layoutId))) {
61  
62              throw new StagnantRowException(
63                  "{groupId=" + groupId + ",privateLayout=" + privateLayout +
64                      ",layoutId=" + layoutId + "}");
65          }
66  
67          String oldOwnerId = (String)_upgradeLayoutOwnerIdColumn.getOldValue();
68  
69          String oldPlidValue =
70              "{layoutId=" + layoutId + ", ownerId=" + oldOwnerId + "}";
71  
72          _layoutPlidMapper.mapValue(oldPlidValue, newValue);
73  
74          return newValue;
75      }
76  
77      public ValueMapper getValueMapper() {
78          return _layoutPlidMapper;
79      }
80  
81      private UpgradeColumn _upgradeLayoutOwnerIdColumn;
82      private LayoutOwnerIdUpgradeColumnImpl _groupIdColumn;
83      private LayoutOwnerIdUpgradeColumnImpl _privateLayoutColumn;
84      private UpgradeColumn _layoutIdColumn;
85      private ValueMapper _layoutPlidMapper;
86  
87  }