1.3 metadata patch from SDSS
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / wayf / Origin.java
1 /*
2  * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package edu.internet2.middleware.shibboleth.wayf;
18
19 import java.io.UnsupportedEncodingException;
20 import java.net.URLEncoder;
21 import java.util.ArrayList;
22 import java.util.Enumeration;
23 import java.util.Iterator;
24 import java.util.StringTokenizer;
25
26 /**
27  * This class represents an Origin site in the shibboleth parlance.
28  * 
29  * @author Walter Hoehn wassa@columbia.edu
30  */
31
32 public class Origin implements Comparable {
33
34         private String name = "";
35         private ArrayList aliases = new ArrayList();
36         private String handleService;
37
38         /**
39          * Gets the handleService for this origin.
40          * 
41          * @return Returns a String
42          */
43         public String getHandleService() {
44
45                 return handleService;
46         }
47
48         /**
49          * Sets the handleService for this origin.
50          * 
51          * @param handleService
52          *            The handleService to set
53          */
54         public void setHandleService(String handleService) {
55
56                 this.handleService = handleService;
57         }
58
59         /**
60          * Gets the origin name.
61          * 
62          * @return Returns a String
63          */
64         public String getName() {
65
66                 return name;
67         }
68
69         public String getDisplayName() {
70
71                 if (aliases.get(0) != null) {
72                         return (String) aliases.get(0);
73                 } else {
74                         return getName();
75                 }
76         }
77
78         public String getUrlEncodedName() throws UnsupportedEncodingException {
79
80                 return URLEncoder.encode(name, "UTF-8");
81         }
82
83         /**
84          * Sets a name for this origin.
85          * 
86          * @param name
87          *            The name to set
88          */
89         public void setName(String name) {
90
91                 this.name = name;
92         }
93
94         /**
95          * Gets all aliases for this origin.
96          * 
97          * @return Returns a String[]
98          */
99         public String[] getAliases() {
100
101                 return (String[]) aliases.toArray(new String[0]);
102         }
103
104         /**
105          * Adds an alias for this origin.
106          * 
107          * @param alias
108          *            The aliases to set
109          */
110         public void addAlias(String alias) {
111
112                 aliases.add(alias);
113         }
114
115         /**
116          * Determines if a given string matches one of the registered names/aliases of this origin.
117          * 
118          * @param str
119          *            The string to match on
120          */
121         public boolean isMatch(String str, WayfConfig config) {
122
123                 Enumeration input = new StringTokenizer(str);
124                 while (input.hasMoreElements()) {
125                         String currentToken = (String) input.nextElement();
126
127                         if (config.isIgnoredForMatch(currentToken)) {
128                                 continue;
129                         }
130
131                         if (getName().toLowerCase().indexOf(currentToken.toLowerCase()) > -1) { return true; }
132                         Iterator aliasit = aliases.iterator();
133                         while (aliasit.hasNext()) {
134                                 String alias = (String) aliasit.next();
135                                 if (alias.toLowerCase().indexOf(currentToken.toLowerCase()) > -1) { return true; }
136                         }
137
138                 }
139                 return false;
140         }
141
142         /**
143          * @see java.lang.Comparable#compareTo(java.lang.Object)
144          */
145         public int compareTo(Object o) {
146
147                 int result = getDisplayName().toLowerCase().compareTo(((Origin) o).getDisplayName().toLowerCase());
148                 if (result == 0) {
149                         result = getDisplayName().compareTo(((Origin) o).getDisplayName());
150                 }
151                 return result;
152         }
153
154 }