a0d6a9876a8ae4c65bae1515a9c45a9256073860.svn-base
979 字节
package com.espeed.ua;
import static java.util.regex.Pattern.CASE_INSENSITIVE;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternBasedVersionFetcher implements VersionFetcher {
private final Pattern pattern;
PatternBasedVersionFetcher(String regex) {
this(Pattern.compile(regex, CASE_INSENSITIVE));
}
PatternBasedVersionFetcher(Pattern pattern) {
this.pattern = pattern;
}
public final Version version(String userAgentString) {
Matcher matcher = pattern.matcher(userAgentString);
if (!matcher.find()) {
return null;
}
return createVersion(matcher);
}
protected Version createVersion(Matcher matcher) {
String fullVersionString = matcher.group(1);
String majorVersion = matcher.group(2);
String minorVersion = "0";
if (matcher.groupCount() > 2) // usually but not always there is a minor version
minorVersion = matcher.group(3);
return new Version (fullVersionString,majorVersion,minorVersion);
}
}