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