/* * Copyright (c) 2019-2020. Developed by Hedgecode. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.hedgecode.chess.scanner.portal; import org.hedgecode.chess.scanner.Scanner; import org.hedgecode.chess.scanner.ScannerException; import org.hedgecode.chess.scanner.StringUtils; import org.hedgecode.chess.scanner.entity.PGNGame; import org.hedgecode.chess.scanner.entity.PGNTournament; import static org.hedgecode.chess.scanner.ScannerConstants.*; /** * Chess2700Scanner * * @author Dmitry Samoshin aka gotty */ public class Chess2700Scanner extends AbstractSettingsScanner implements Scanner { private static final String SETTINGS_FILENAME = "2700chess.settings"; @Override protected String getResourceName() { return SETTINGS_FILENAME; } @Override public PGNTournament scanTournament(String tournamentId) throws ScannerException { throw new ScannerException( "scanner.portal.search.unavailable.tournament.id", DOMAIN_2700CHESS ); } @Override public PGNTournament findTournament(String tournamentName) throws ScannerException { throw new ScannerException( "scanner.portal.search.unavailable.tournament.name", DOMAIN_2700CHESS ); } @Override public PGNGame scanGame(String gameId) throws ScannerException { return scanUrl( assignUrl(gameId) ); } @Override public PGNGame scanGame(String gameId, String tournamentId) throws ScannerException { return scanGame(gameId); } @Override public PGNGame scanUrl(String gameUrl) throws ScannerException { String pgn = match( gameUrl, getSettings().getGameUrlRegex() ); if (pgn == null) { throw new ScannerException( "scanner.failed.request.url", gameUrl ); } pgn = StringUtils.formatCrlf(pgn); if (!StringUtils.isPgn(pgn)) { throw new ScannerException( "scanner.incorrect.pgn.url", gameUrl ); } return new PGNGame( null, pgn ); } }