1
22
23 package com.liferay.portal.util;
24
25 import com.liferay.portal.kernel.util.ArrayUtil;
26 import com.liferay.portal.kernel.util.CharPool;
27 import com.liferay.portal.kernel.util.GetterUtil;
28 import com.liferay.portal.kernel.util.StringPool;
29 import com.liferay.portal.kernel.util.StringUtil;
30 import com.liferay.portal.kernel.util.Validator;
31 import com.liferay.util.Normalizer;
32
33
39 public class FriendlyURLNormalizer {
40
41 public static String normalize(String friendlyURL) {
42 return normalize(friendlyURL, null);
43 }
44
45 public static String normalize(String friendlyURL, char[] replaceChars) {
46 if (Validator.isNull(friendlyURL)) {
47 return friendlyURL;
48 }
49
50 friendlyURL = GetterUtil.getString(friendlyURL);
51 friendlyURL = friendlyURL.toLowerCase();
52 friendlyURL = Normalizer.normalizeToAscii(friendlyURL);
53
54 char[] charArray = friendlyURL.toCharArray();
55
56 for (int i = 0; i < charArray.length; i++) {
57 char oldChar = charArray[i];
58
59 char newChar = oldChar;
60
61 if (ArrayUtil.contains(_REPLACE_CHARS, oldChar) ||
62 ((replaceChars != null) &&
63 ArrayUtil.contains(replaceChars, oldChar))) {
64
65 newChar = CharPool.DASH;
66 }
67
68 if (oldChar != newChar) {
69 charArray[i] = newChar;
70 }
71 }
72
73 friendlyURL = new String(charArray);
74
75 while (friendlyURL.contains(StringPool.DASH + StringPool.DASH)) {
76 friendlyURL = StringUtil.replace(
77 friendlyURL, StringPool.DASH + StringPool.DASH,
78 StringPool.DASH);
79 }
80
81 if (friendlyURL.startsWith(StringPool.DASH)) {
82 friendlyURL = friendlyURL.substring(1, friendlyURL.length());
83 }
84
85 if (friendlyURL.endsWith(StringPool.DASH)) {
86 friendlyURL = friendlyURL.substring(0, friendlyURL.length() - 1);
87 }
88
89 return friendlyURL;
90 }
91
92 private static final char[] _REPLACE_CHARS = new char[] {
93 ' ', ',', '\\', '\'', '\"', '(', ')', '{', '}'
94 };
95
96 }