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