X-Git-Url: https://git.hedgecode.org/?p=chesshog-scanner.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fregex%2FRegexBuilder.java;fp=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fregex%2FRegexBuilder.java;h=14b4fbab97bf351d9709f290145ac73058b957fc;hp=789882fbe4bd6998b35ca91dc376f47b78a736db;hb=9cfd5f43a9d43b931ea51aaba514e25ee50eedce;hpb=43e86c6691aa54c7c583902fbe72a0875e098a91 diff --git a/src/main/java/org/hedgecode/chess/scanner/regex/RegexBuilder.java b/src/main/java/org/hedgecode/chess/scanner/regex/RegexBuilder.java index 789882f..14b4fba 100644 --- a/src/main/java/org/hedgecode/chess/scanner/regex/RegexBuilder.java +++ b/src/main/java/org/hedgecode/chess/scanner/regex/RegexBuilder.java @@ -16,6 +16,11 @@ package org.hedgecode.chess.scanner.regex; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +import org.hedgecode.chess.scanner.ChessHogScannerConstants; + /** * RegexBuilder * @@ -23,11 +28,70 @@ package org.hedgecode.chess.scanner.regex; */ public class RegexBuilder { - public static String build(RegexType type, String target, RegexParams params) { + public static String build(Type type, String target, RegexParams params) { return type.format( target, params ); } + public enum Type { + + TOURNAMENT { + @Override + public String format(String target, RegexParams params) { + if (params.getPageId() != null) { + target = target.replace( + RegexParams.PAGE_ID, + params.getPageId() + ); + } + return target.replace( + RegexParams.TOURNAMENT_ID, + params.getTournamentId() + ); + } + }, + + GAME { + @Override + public String format(String target, RegexParams params) { + return target.replace( + RegexParams.GAME_ID, + params.getGameId() + ); + } + }, + + QUERY { + @Override + public String format(String target, RegexParams params) { + return target.replace( + RegexParams.QUERY, + params.isUrlEncode() + ? urlEncode(params.getQuery()) + : params.getQuery() + ); + } + }; + + public abstract String format(String target, RegexParams params); + + private static String urlEncode(String query) throws RuntimeException { + String encodeQuery; + try { + encodeQuery = URLEncoder.encode( + query, ChessHogScannerConstants.CHARSET.name() + ); + } catch (UnsupportedEncodingException cause) { + throw new RuntimeException( + String.format("Unsupported encoding: %s", ChessHogScannerConstants.CHARSET.name()), + cause + ); + } + return encodeQuery; + } + + } + }