package org.hedgecode.chess.scanner.regex;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-
-import org.hedgecode.chess.scanner.ChessHogScannerConstants;
+import org.hedgecode.chess.scanner.regex.type.RegexBlockFinder;
+import org.hedgecode.chess.scanner.regex.type.RegexFinder;
+import org.hedgecode.chess.scanner.regex.type.RegexSplitter;
/**
* RegexType
*/
public enum RegexType {
- TOURNAMENT {
- @Override
- public String format(String target, RegexParams params) {
- if (params.getPageId() != null) {
- target = target.replace(
- RegexParams.PAGE_ID,
- params.getPageId()
- );
+ FIND,
+ SPLIT,
+ BLOCK;
+
+ public static RegexMatcher matcher(RegexType type, String match) {
+ return Factory.create(
+ type,
+ match
+ );
+ }
+
+ public static RegexMatcher matcher(String startMatch, String endMatch) {
+ return Factory.create(
+ startMatch,
+ endMatch
+ );
+ }
+
+ static class Factory {
+
+ static RegexMatcher create(RegexType type, String match) {
+ switch (type) {
+ case FIND:
+ return new RegexFinder(match);
+ case SPLIT:
+ return new RegexSplitter(match);
+ case BLOCK:
+ return new RegexBlockFinder(match, match);
}
- return target.replace(
- RegexParams.TOURNAMENT_ID,
- params.getTournamentId()
- );
+ return null;
}
- },
- GAME {
- @Override
- public String format(String target, RegexParams params) {
- return target.replace(
- RegexParams.GAME_ID,
- params.getGameId()
- );
+ static RegexMatcher create(String startMatch, String endMatch) {
+ return new RegexBlockFinder(startMatch, endMatch);
}
- },
- QUERY {
- @Override
- public String format(String target, RegexParams params) {
- try {
- return target.replace(
- RegexParams.QUERY,
- params.isUrlEncode()
- ? URLEncoder.encode(params.getQuery(), ChessHogScannerConstants.CHARSET.name())
- : params.getQuery()
- );
- } catch (UnsupportedEncodingException e) {
- return null;
- }
+ private Factory() {
}
- };
- public abstract String format(String target, RegexParams params);
+ }
}