From 7a0da8b434541a7cf545e18078b1d14d6fa1f235 Mon Sep 17 00:00:00 2001 From: gotty Date: Sun, 12 Jan 2020 03:16:20 +0300 Subject: [PATCH] [LIB-13] Add PGN entities --- .../hedgecode/chess/scanner/entity/PGNEntity.java | 31 ++++++++ .../hedgecode/chess/scanner/entity/PGNGame.java | 44 +++++++++++ .../chess/scanner/entity/PGNTournament.java | 88 ++++++++++++++++++++++ 3 files changed, 163 insertions(+) create mode 100644 src/main/java/org/hedgecode/chess/scanner/entity/PGNEntity.java create mode 100644 src/main/java/org/hedgecode/chess/scanner/entity/PGNGame.java create mode 100644 src/main/java/org/hedgecode/chess/scanner/entity/PGNTournament.java diff --git a/src/main/java/org/hedgecode/chess/scanner/entity/PGNEntity.java b/src/main/java/org/hedgecode/chess/scanner/entity/PGNEntity.java new file mode 100644 index 0000000..7d41764 --- /dev/null +++ b/src/main/java/org/hedgecode/chess/scanner/entity/PGNEntity.java @@ -0,0 +1,31 @@ +/* + * 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.entity; + +/** + * PGNEntity + * + * @author Dmitry Samoshin aka gotty + */ +public interface PGNEntity { + + String id(); + + String pgn(); + + +} diff --git a/src/main/java/org/hedgecode/chess/scanner/entity/PGNGame.java b/src/main/java/org/hedgecode/chess/scanner/entity/PGNGame.java new file mode 100644 index 0000000..6407a28 --- /dev/null +++ b/src/main/java/org/hedgecode/chess/scanner/entity/PGNGame.java @@ -0,0 +1,44 @@ +/* + * 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.entity; + +/** + * PGNGame + * + * @author Dmitry Samoshin aka gotty + */ +public class PGNGame implements PGNEntity { + + private String gameId; + private String pgn; + + public PGNGame(String gameId, String pgn) { + this.gameId = gameId; + this.pgn = pgn; + } + + @Override + public String id() { + return gameId; + } + + @Override + public String pgn() { + return pgn; + } + +} diff --git a/src/main/java/org/hedgecode/chess/scanner/entity/PGNTournament.java b/src/main/java/org/hedgecode/chess/scanner/entity/PGNTournament.java new file mode 100644 index 0000000..dc14145 --- /dev/null +++ b/src/main/java/org/hedgecode/chess/scanner/entity/PGNTournament.java @@ -0,0 +1,88 @@ +/* + * 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.entity; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.hedgecode.chess.scanner.ChessHogScannerConstants; + +/** + * PGNTournament + * + * @author Dmitry Samoshin aka gotty + */ +public class PGNTournament implements PGNEntity { + + private String tournamentId; + private String tournamentName; + + private List tournamentGames = new ArrayList<>(); + + public PGNTournament(String tournamentId) { + this.tournamentId = tournamentId; + } + + public PGNTournament(String tournamentId, String tournamentName) { + this.tournamentId = tournamentId; + this.tournamentName = tournamentName; + } + + public void addGame(PGNGame game) { + tournamentGames.add(game); + } + + public void addGames(Collection games) { + tournamentGames.addAll(games); + } + + public void clearGames() { + tournamentGames.clear(); + } + + public List games() { + return tournamentGames; + } + + @Override + public String id() { + return tournamentId; + } + + public String name() { + return tournamentName; + } + + public void setName(String name) { + tournamentName = name; + } + + @Override + public String pgn() { + StringBuilder sb = new StringBuilder(); + for (PGNGame game : tournamentGames) { + sb.append( + game.pgn() + ).append( + ChessHogScannerConstants.CRLF + ); + } + return sb.toString(); + } + +} -- 2.10.0