[LIB-13] Add PGN entities
authorgotty <gotty@hedgecode.org>
Sun, 12 Jan 2020 00:16:20 +0000 (03:16 +0300)
committergotty <gotty@hedgecode.org>
Sun, 12 Jan 2020 00:16:20 +0000 (03:16 +0300)
src/main/java/org/hedgecode/chess/scanner/entity/PGNEntity.java [new file with mode: 0644]
src/main/java/org/hedgecode/chess/scanner/entity/PGNGame.java [new file with mode: 0644]
src/main/java/org/hedgecode/chess/scanner/entity/PGNTournament.java [new file with mode: 0644]

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 (file)
index 0000000..7d41764
--- /dev/null
@@ -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 (file)
index 0000000..6407a28
--- /dev/null
@@ -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 (file)
index 0000000..dc14145
--- /dev/null
@@ -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<PGNGame> 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<PGNGame> games) {
+        tournamentGames.addAll(games);
+    }
+
+    public void clearGames() {
+        tournamentGames.clear();
+    }
+
+    public List<PGNGame> 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();
+    }
+
+}