X-Git-Url: https://git.hedgecode.org/?p=chesshog-scanner.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fregex%2FRegexType.java;fp=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fregex%2FRegexType.java;h=cfe9c5f78a750a0bcb529ab46b6f820a77db27ff;hp=c63af8cf70134a7cdd62ca152c23cf57d14f0384;hb=9cfd5f43a9d43b931ea51aaba514e25ee50eedce;hpb=43e86c6691aa54c7c583902fbe72a0875e098a91 diff --git a/src/main/java/org/hedgecode/chess/scanner/regex/RegexType.java b/src/main/java/org/hedgecode/chess/scanner/regex/RegexType.java index c63af8c..cfe9c5f 100644 --- a/src/main/java/org/hedgecode/chess/scanner/regex/RegexType.java +++ b/src/main/java/org/hedgecode/chess/scanner/regex/RegexType.java @@ -16,10 +16,9 @@ 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 @@ -28,48 +27,45 @@ import org.hedgecode.chess.scanner.ChessHogScannerConstants; */ 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); + } }