View Javadoc

1   package com.atlassian.sal.core.search.parameter;
2   
3   import org.apache.commons.lang.StringUtils;
4   import com.atlassian.sal.api.search.parameter.SearchParameter;
5   
6   import java.io.UnsupportedEncodingException;
7   import java.net.URLDecoder;
8   import java.net.URLEncoder;
9   
10  /**
11   * Basic name value pair search parameter.
12   */
13  public class BasicSearchParameter implements SearchParameter
14  {
15      private String name;
16      private String value;
17  
18      public BasicSearchParameter(String queryString)
19      {
20          initFromQueryString(queryString);
21      }
22  
23      public BasicSearchParameter(String name, String value)
24      {
25          this.name = name;
26          this.value = value;
27      }
28  
29      public String getName()
30      {
31          return name;
32      }
33  
34      public String getValue()
35      {
36          return value;
37      }
38  
39      public String buildQueryString()
40      {
41          final String encodedName;
42          final String encodedValue;
43          try
44          {
45              encodedName = URLEncoder.encode(name, "UTF-8");
46              encodedValue = URLEncoder.encode(value, "UTF-8");
47          }
48          catch (UnsupportedEncodingException e)
49          {
50              throw new RuntimeException("unable to encode query parameters in UTF-8", e);
51          }
52          return encodedName + "=" + encodedValue;
53      }
54  
55      private void initFromQueryString(String queryString)
56      {
57          if (StringUtils.isEmpty(queryString) || queryString.indexOf("=") == -1)
58          {
59              throw new IllegalArgumentException("QueryString '" + queryString + "' does not appear to be a valid query string");
60          }
61  
62          try
63          {
64              final String[] encodedQueryKeyValuePair = queryString.split("=");
65              this.name = URLDecoder.decode(encodedQueryKeyValuePair[0], "UTF-8");
66              this.value = URLDecoder.decode(encodedQueryKeyValuePair[1], "UTF-8");
67          }
68          catch (UnsupportedEncodingException e)
69          {
70              throw new RuntimeException(e);
71          }
72      }
73  
74      public boolean equals(Object o)
75      {
76          if (this == o)
77          {
78              return true;
79          }
80          if (o == null || getClass() != o.getClass())
81          {
82              return false;
83          }
84  
85          BasicSearchParameter that = (BasicSearchParameter) o;
86  
87          if (!name.equals(that.name))
88          {
89              return false;
90          }
91          if (!value.equals(that.value))
92          {
93              return false;
94          }
95  
96          return true;
97      }
98  
99      public int hashCode()
100     {
101         int result;
102         result = name.hashCode();
103         result = 31 * result + value.hashCode();
104         return result;
105     }
106 }