ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/util/uk/org/iscream/cms/util/StringUtils.java
(Generate patch)

Comparing projects/cms/source/util/uk/org/iscream/cms/util/StringUtils.java (file contents):
Revision 1.4 by tdb, Tue May 29 17:02:35 2001 UTC vs.
Revision 1.5 by tdb, Mon Dec 10 22:49:19 2001 UTC

# Line 65 | Line 65 | public class StringUtils {
65          }
66          return -1;
67      }
68 +    
69 +    /**
70 +     * Checks that a given string is not matched within the
71 +     * given list of strings. For example:<br>
72 +     * <br>
73 +     * Given "stue5de.ukc.ac.uk"<br>
74 +     * And   "raptor.ukc.ac.uk;stue*.ukc.ac.uk<br>
75 +     * <br>
76 +     * This method would return true as there is a match
77 +     *
78 +     * @param source the string to look for
79 +     * @param group the group to search for a wilcard entry
80 +     *
81 +     * @return if there is a match
82 +     */
83 +    public static boolean wildcardCheck(String source, String group) {
84 +        boolean foundMatch = false;
85 +        StringTokenizer st = new StringTokenizer(group, ";");
86 +        // go through all the hosts in the group
87 +        while (st.hasMoreTokens()) {
88 +            String host = st.nextToken();
89 +            // this host has wildcards
90 +            if(host.indexOf("*") != -1) {
91 +                StringTokenizer hostst = new StringTokenizer(host, "*");
92 +                String part = "";
93 +                int index = 0;
94 +                // the first token will be everything at the start
95 +                // unless it starts with a wildcard
96 +                if(!host.startsWith("*")) {
97 +                    part = hostst.nextToken();
98 +                    if (source.startsWith(part)) {
99 +                        foundMatch = true;
100 +                        index = part.length();
101 +                    }
102 +                // all of the start of the string is matched
103 +                } else {
104 +                    foundMatch = true;
105 +                }
106 +                // if the start matched, we want to check the rest...
107 +                if (foundMatch) {
108 +                    while (hostst.hasMoreTokens()) {
109 +                        part = hostst.nextToken();
110 +                        // if the next section can't be matched
111 +                        // then this isn't in the source
112 +                        if(source.substring(index).indexOf(part) == -1) {
113 +                            foundMatch = false;
114 +                            // we don't want to look through any more of it
115 +                            break;
116 +                        } else {
117 +                            foundMatch = true;
118 +                            index += source.substring(index).indexOf(part) + part.length();
119 +                        }
120 +                    }
121 +                    // if we reach here and we've found a match
122 +                    // we want to check that the last part
123 +                    // of the wildcard string is the last part
124 +                    // of the source, if it is, we break out
125 +                    // and finish as we've found a match.
126 +                    // if the end of the wildcard is a *, then
127 +                    // we don't care
128 +                    if (!host.endsWith("*") && foundMatch) {
129 +                        if ((source.endsWith(part))) {
130 +                            //_logger.write(toString(), Logger.DEBUG, "wildcard match found for - " + source + " in - " + host);
131 +                            break;
132 +                        // if there is no match, say so so we go round again
133 +                        } else {
134 +                            foundMatch = false;
135 +                        }
136 +                    } else if (foundMatch) {
137 +                        //_logger.write(toString(), Logger.DEBUG, "wildcard match found for - " + source + " in - " + host);
138 +                        break;
139 +                    }
140 +                }
141 +            }
142 +        }
143 +        return foundMatch;
144 +    }
145  
146   //---CONSTRUCTORS---
147  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines