1
22
23 package com.liferay.portal.upgrade.v4_4_0.util;
24
25 import com.liferay.portal.kernel.util.StringMaker;
26 import com.liferay.portal.kernel.util.StringPool;
27 import com.liferay.portal.kernel.util.Validator;
28 import com.liferay.portal.upgrade.util.BaseUpgradeColumnImpl;
29 import com.liferay.portal.upgrade.util.UpgradeColumn;
30 import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryImpl;
31 import com.liferay.util.FileUtil;
32
33 import java.util.Set;
34
35
41 public class DLFileEntryTitleColumnImpl extends BaseUpgradeColumnImpl {
42
43 public DLFileEntryTitleColumnImpl(
44 UpgradeColumn groupIdColumn, UpgradeColumn folderIdColumn,
45 UpgradeColumn nameColumn, Set<String> distinctTitles) {
46
47 super("title", null);
48
49 _groupIdColumn = groupIdColumn;
50 _folderIdColumn = folderIdColumn;
51 _nameColumn = nameColumn;
52 _distinctTitles = distinctTitles;
53 }
54
55 public Object getNewValue(Object oldValue) throws Exception {
56 String newTitle = (String)oldValue;
57
58 String name = (String)_nameColumn.getOldValue();
59 String extension = FileUtil.getExtension(name);
60
61 newTitle = DLFileEntryImpl.stripExtension(name, newTitle);
62
63 while (_distinctTitles.contains(_getKey(newTitle, extension))) {
64 _counter++;
65
66 StringMaker sm = new StringMaker();
67
68 sm.append(newTitle);
69 sm.append(StringPool.SPACE);
70 sm.append(_counter);
71
72 newTitle = sm.toString();
73 }
74
75 _distinctTitles.add(_getKey(newTitle, extension));
76
77 return newTitle;
78 }
79
80 private String _getKey(String title, String extension) {
81 StringMaker sm = new StringMaker();
82
83 sm.append(_groupIdColumn.getOldValue());
84 sm.append(StringPool.UNDERLINE);
85 sm.append(_folderIdColumn.getOldValue());
86 sm.append(StringPool.UNDERLINE);
87 sm.append(title);
88
89 if (Validator.isNotNull(extension)) {
90 sm.append(StringPool.PERIOD);
91 sm.append(extension);
92 }
93
94 return sm.toString();
95 }
96
97 private UpgradeColumn _groupIdColumn;
98 private UpgradeColumn _folderIdColumn;
99 private UpgradeColumn _nameColumn;
100 private int _counter = 0;
101 private Set<String> _distinctTitles;
102
103 }