--- /dev/null
+/**\r
+ * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.\r
+ *\r
+ * Permission is hereby granted, free of charge, to any person obtaining a copy\r
+ * of this software and associated documentation files (the "Software"), to deal\r
+ * in the Software without restriction, including without limitation the rights\r
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
+ * copies of the Software, and to permit persons to whom the Software is\r
+ * furnished to do so, subject to the following conditions:\r
+ *\r
+ * The above copyright notice and this permission notice shall be included in\r
+ * all copies or substantial portions of the Software.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
+ * SOFTWARE.\r
+ */\r
+\r
+package com.liferay.portal.search;\r
+\r
+import com.liferay.portal.kernel.util.HttpUtil;\r
+import com.liferay.portal.kernel.xml.Element;\r
+import com.liferay.portal.kernel.xml.Namespace;\r
+import com.liferay.portal.kernel.xml.QName;\r
+import com.liferay.portal.kernel.xml.SAXReaderUtil;\r
+\r
+import java.text.SimpleDateFormat;\r
+\r
+import java.util.Date;\r
+\r
+/**\r
+ * <a href="OpenSearchUtil.java.html"><b><i>View Source</i></b></a>\r
+ *\r
+ * @author Charles May\r
+ * @author Brian Wing Shun Chan\r
+ *\r
+ */\r
+public class ExtOpenSearchUtil implements OpenSearchLocalService {\r
+\r
+ public final int DEFAULT_NAMESPACE = 0;\r
+\r
+ public final int OS_NAMESPACE = 1;\r
+\r
+ public final int RELEVANCE_NAMESPACE = 2;\r
+\r
+ public final int NO_NAMESPACE = 3;\r
+\r
+ public Element addElement(\r
+ Element el, String name, int namespaceType) {\r
+\r
+ return el.addElement(getQName(name, namespaceType));\r
+ }\r
+\r
+ public Element addElement(\r
+ Element el, String name, int namespaceType, Date value) {\r
+\r
+ SimpleDateFormat sdf = new SimpleDateFormat(\r
+ "yyyy-MM-dd'T'HH:mm:sszzz");\r
+\r
+ return addElement(el, name, namespaceType, sdf.format(value));\r
+ }\r
+\r
+ public Element addElement(\r
+ Element el, String name, int namespaceType, double value) {\r
+\r
+ return addElement(el, name, namespaceType, String.valueOf(value));\r
+ }\r
+\r
+ public Element addElement(\r
+ Element el, String name, int namespaceType, int value) {\r
+\r
+ return addElement(el, name, namespaceType, String.valueOf(value));\r
+ }\r
+\r
+ public Element addElement(\r
+ Element el, String name, int namespaceType, String value) {\r
+\r
+ Element returnElement = el.addElement(getQName(name, namespaceType));\r
+\r
+ returnElement.addCDATA(value);\r
+\r
+ return returnElement;\r
+ }\r
+\r
+ public void addLink(\r
+ Element root, String searchURL, String rel, String keywords, int page,\r
+ int itemsPerPage) {\r
+\r
+ Element link = addElement(root, "link", DEFAULT_NAMESPACE);\r
+\r
+ link.addAttribute("rel", rel);\r
+ link.addAttribute(\r
+ "href",\r
+ searchURL + "?keywords=" + HttpUtil.encodeURL(keywords) + "&p=" +\r
+ page + "&c=" + itemsPerPage + "&format=atom");\r
+ link.addAttribute("type", "application/atom+xml");\r
+ }\r
+\r
+ public Namespace getNamespace(int namespaceType) {\r
+ Namespace namespace = null;\r
+\r
+ if (namespaceType == DEFAULT_NAMESPACE) {\r
+ namespace = SAXReaderUtil.createNamespace(\r
+ "", "http://www.w3.org/2005/Atom");\r
+ }\r
+ else if (namespaceType == OS_NAMESPACE) {\r
+ namespace = SAXReaderUtil.createNamespace(\r
+ "opensearch", "http://a9.com/-/spec/opensearch/1.1/");\r
+ }\r
+ else if (namespaceType == RELEVANCE_NAMESPACE) {\r
+ namespace = SAXReaderUtil.createNamespace(\r
+ "relevance",\r
+ "http://a9.com/-/opensearch/extensions/relevance/1.0/");\r
+ }\r
+\r
+ return namespace;\r
+ }\r
+\r
+ public QName getQName(String name, int namespaceType) {\r
+ if (NO_NAMESPACE == namespaceType) {\r
+ return SAXReaderUtil.createQName(name);\r
+ }\r
+ else {\r
+ return SAXReaderUtil.createQName(name, getNamespace(namespaceType));\r
+ }\r
+ }\r
+ \r
+ public int getDefaultNamespace(){\r
+ return DEFAULT_NAMESPACE;\r
+ }\r
+ \r
+ public int getOSNamespace(){\r
+ return OS_NAMESPACE;\r
+ }\r
+ \r
+ public int getRelevanceNamespace(){\r
+ return RELEVANCE_NAMESPACE;\r
+ }\r
+ \r
+ public int getNoNamespace(){\r
+ return NO_NAMESPACE;\r
+ }\r
+\r
+}
\ No newline at end of file