2 * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
\r
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
\r
5 * of this software and associated documentation files (the "Software"), to deal
\r
6 * in the Software without restriction, including without limitation the rights
\r
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
\r
8 * copies of the Software, and to permit persons to whom the Software is
\r
9 * furnished to do so, subject to the following conditions:
\r
11 * The above copyright notice and this permission notice shall be included in
\r
12 * all copies or substantial portions of the Software.
\r
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
\r
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
\r
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
\r
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
\r
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
\r
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
\r
23 package com.liferay.portal.search;
\r
25 import com.liferay.portal.kernel.util.HttpUtil;
\r
26 import com.liferay.portal.kernel.xml.Element;
\r
27 import com.liferay.portal.kernel.xml.Namespace;
\r
28 import com.liferay.portal.kernel.xml.QName;
\r
29 import com.liferay.portal.kernel.xml.SAXReaderUtil;
\r
31 import java.text.SimpleDateFormat;
\r
33 import java.util.Date;
\r
36 * <a href="OpenSearchUtil.java.html"><b><i>View Source</i></b></a>
\r
38 * @author Charles May
\r
39 * @author Brian Wing Shun Chan
\r
42 public class ExtOpenSearchUtil implements OpenSearchLocalService {
\r
44 public final int DEFAULT_NAMESPACE = 0;
\r
46 public final int OS_NAMESPACE = 1;
\r
48 public final int RELEVANCE_NAMESPACE = 2;
\r
50 public final int NO_NAMESPACE = 3;
\r
52 public Element addElement(
\r
53 Element el, String name, int namespaceType) {
\r
55 return el.addElement(getQName(name, namespaceType));
\r
58 public Element addElement(
\r
59 Element el, String name, int namespaceType, Date value) {
\r
61 SimpleDateFormat sdf = new SimpleDateFormat(
\r
62 "yyyy-MM-dd'T'HH:mm:sszzz");
\r
64 return addElement(el, name, namespaceType, sdf.format(value));
\r
67 public Element addElement(
\r
68 Element el, String name, int namespaceType, double value) {
\r
70 return addElement(el, name, namespaceType, String.valueOf(value));
\r
73 public Element addElement(
\r
74 Element el, String name, int namespaceType, int value) {
\r
76 return addElement(el, name, namespaceType, String.valueOf(value));
\r
79 public Element addElement(
\r
80 Element el, String name, int namespaceType, String value) {
\r
82 Element returnElement = el.addElement(getQName(name, namespaceType));
\r
84 returnElement.addCDATA(value);
\r
86 return returnElement;
\r
89 public void addLink(
\r
90 Element root, String searchURL, String rel, String keywords, int page,
\r
93 Element link = addElement(root, "link", DEFAULT_NAMESPACE);
\r
95 link.addAttribute("rel", rel);
\r
98 searchURL + "?keywords=" + HttpUtil.encodeURL(keywords) + "&p=" +
\r
99 page + "&c=" + itemsPerPage + "&format=atom");
\r
100 link.addAttribute("type", "application/atom+xml");
\r
103 public Namespace getNamespace(int namespaceType) {
\r
104 Namespace namespace = null;
\r
106 if (namespaceType == DEFAULT_NAMESPACE) {
\r
107 namespace = SAXReaderUtil.createNamespace(
\r
108 "", "http://www.w3.org/2005/Atom");
\r
110 else if (namespaceType == OS_NAMESPACE) {
\r
111 namespace = SAXReaderUtil.createNamespace(
\r
112 "opensearch", "http://a9.com/-/spec/opensearch/1.1/");
\r
114 else if (namespaceType == RELEVANCE_NAMESPACE) {
\r
115 namespace = SAXReaderUtil.createNamespace(
\r
117 "http://a9.com/-/opensearch/extensions/relevance/1.0/");
\r
123 public QName getQName(String name, int namespaceType) {
\r
124 if (NO_NAMESPACE == namespaceType) {
\r
125 return SAXReaderUtil.createQName(name);
\r
128 return SAXReaderUtil.createQName(name, getNamespace(namespaceType));
\r
132 public int getDefaultNamespace(){
\r
133 return DEFAULT_NAMESPACE;
\r
136 public int getOSNamespace(){
\r
137 return OS_NAMESPACE;
\r
140 public int getRelevanceNamespace(){
\r
141 return RELEVANCE_NAMESPACE;
\r
144 public int getNoNamespace(){
\r
145 return NO_NAMESPACE;
\r