001
014
015 package com.liferay.util;
016
017 import com.liferay.portal.kernel.bean.BeanPropertiesUtil;
018 import com.liferay.portal.kernel.json.JSONArray;
019 import com.liferay.portal.kernel.json.JSONFactoryUtil;
020 import com.liferay.portal.kernel.util.HtmlUtil;
021 import com.liferay.portal.kernel.util.StringBundler;
022 import com.liferay.portal.kernel.util.StringPool;
023
024 import java.util.HashMap;
025 import java.util.List;
026 import java.util.Map;
027
028
031 public class Autocomplete {
032
033 public static JSONArray arrayToJson(String[] array, int max) {
034 return arrayToJson(_singleToPairArray(array), max);
035 }
036
037 public static JSONArray arrayToJson(String[][] array, int max) {
038 if (max <= 0) {
039 max = array.length;
040 }
041
042 JSONArray jsonArray = JSONFactoryUtil.createJSONArray();
043
044 for (int i = 0; (i < array.length) && (i < max); i++) {
045 String text = array[i][0];
046 String value = array[i][1];
047
048 Map<String, String> map = new HashMap<>();
049
050 map.put("text", text);
051 map.put("value", value);
052
053 jsonArray.put(map);
054 }
055
056 return jsonArray;
057 }
058
059 public static String arrayToXml(String[] array, int max) {
060 return arrayToXml(_singleToPairArray(array), max);
061 }
062
063 public static String arrayToXml(String[][] array, int max) {
064 if (max <= 0) {
065 max = array.length;
066 }
067
068 StringBundler sb = new StringBundler(array.length * 8 + 3);
069
070 sb.append("<?xml version=\"1.0\"?>");
071
072 sb.append("<ajaxresponse>");
073
074 for (int i = 0; (i < array.length) && (i < max); i++) {
075 String text = array[i][0];
076 String value = array[i][1];
077
078 sb.append("<item>");
079 sb.append("<text><![CDATA[");
080 sb.append(text);
081 sb.append("]]></text>");
082 sb.append("<value><![CDATA[");
083 sb.append(value);
084 sb.append("]]></value>");
085 sb.append("</item>");
086 }
087
088 sb.append("</ajaxresponse>");
089
090 return sb.toString();
091 }
092
093 public static String[][] listToArray(
094 List<?> list, String textParam, String valueParam) {
095
096 String[][] array = new String[list.size()][2];
097
098 for (int i = 0; i < list.size(); i++) {
099 Object bean = list.get(i);
100
101 Object text = BeanPropertiesUtil.getObject(bean, textParam);
102
103 if (text == null) {
104 text = StringPool.BLANK;
105 }
106
107 Object value = BeanPropertiesUtil.getObject(bean, valueParam);
108
109 if (value == null) {
110 value = StringPool.BLANK;
111 }
112
113 array[i][0] = text.toString();
114 array[i][1] = value.toString();
115 }
116
117 return array;
118 }
119
120 public static JSONArray listToJson(
121 List<?> list, String textParam, String valueParam) {
122
123 return arrayToJson(listToArray(list, textParam, valueParam), -1);
124 }
125
126 public static String listToXml(
127 List<?> list, String textParam, String valueParam) {
128
129 return arrayToXml(listToArray(list, textParam, valueParam), -1);
130 }
131
132 private static String[][] _singleToPairArray(String[] array) {
133 String[][] pairArray = new String[array.length][2];
134
135 for (int i = 0; i < array.length; i++) {
136 pairArray[i][0] = HtmlUtil.escape(array[i]);
137 pairArray[i][1] = array[i];
138 }
139
140 return pairArray;
141 }
142
143 }