[LIB-13] Add PGN format classes
[chesshog-scanner.git] / src / main / java / org / hedgecode / chess / scanner / json / format / AbstractPGNFormat.java
diff --git a/src/main/java/org/hedgecode/chess/scanner/json/format/AbstractPGNFormat.java b/src/main/java/org/hedgecode/chess/scanner/json/format/AbstractPGNFormat.java
deleted file mode 100644 (file)
index d0a3b84..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.json.format;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.hedgecode.chess.scanner.entity.PGNEntity;
-import org.hedgecode.chess.scanner.entity.PGNTag;
-
-import static org.hedgecode.chess.scanner.ChessHogScannerConstants.*;
-
-/**
- * AbstractPGNFormat
- *
- * @author Dmitry Samoshin aka gotty
- */
-public abstract class AbstractPGNFormat extends AbstractBaseFormat implements PGNEntity {
-
-    private static final String EMPTY = "";
-
-    private static final String MOVES_FORMAT = "%s %s";
-
-    private final Map<PGNTag, String> pgnTags = new HashMap<>();
-    private String pgnMoves;
-
-    protected abstract void assignPGN();
-
-    protected void addTag(PGNTag tag, String value) {
-        pgnTags.put(tag, value);
-    }
-
-    protected void addMoves(String moves) {
-        pgnMoves = moves;
-    }
-
-    private String moves() {
-        return pgnMoves != null ? pgnMoves : EMPTY;
-    }
-
-    private String result() {
-        String result = pgnTags.get(PGNTag.RESULT);
-        return result != null ? result : PGNTag.RESULT.defaultValue();
-    }
-
-    @Override
-    public String pgn() {
-        assignPGN();
-        StringBuilder sb = new StringBuilder();
-        for (PGNTag tag : PGNTag.values()) {
-            String tagValue = pgnTags.get(tag);
-            if (tag.isRequired() || tagValue != null) {
-                sb.append(
-                        String.format(
-                                PGNTag.TAG_FORMAT,
-                                tag.getName(),
-                                tagValue != null ? tagValue : tag.defaultValue()
-                        )
-                ).append(CRLF);
-            }
-        }
-        sb.append(CRLF).append(
-                String.format(MOVES_FORMAT, moves(), result())
-        ).append(CRLF);
-        return sb.toString();
-    }
-
-}