+++ /dev/null
-/*
- * 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();
- }
-
-}