/* * 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.text.DateFormat; import java.text.SimpleDateFormat; import com.google.gson.annotations.SerializedName; import org.hedgecode.chess.scanner.entity.PGNTag; import org.hedgecode.chess.scanner.format.GameData; import org.hedgecode.chess.scanner.format.GameFormat; /** * JSONGameFormat * * @author Dmitry Samoshin aka gotty */ public class JSONGameFormat extends AbstractPGNFormat implements GameFormat { private final DateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd"); private final DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); @SerializedName("gameData") private JSONGameData gameData; JSONGameFormat() { } @Override public String id() { return Integer.toString( gameData().game().id() ); } @Override public GameData gameData() { return gameData; } @Override protected void assignPGN() { addTag(PGNTag.EVENT, gameData.room().name()); addTag(PGNTag.DATE, dateFormat.format(gameData.game().startAt())); addTag(PGNTag.ROUND, gameData.game().roundSlug()); addTag(PGNTag.WHITE, gameData.game().white().name()); addTag(PGNTag.BLACK, gameData.game().black().name()); addTag(PGNTag.WHITE_TITLE, gameData.game().white().title()); addTag(PGNTag.BLACK_TITLE, gameData.game().black().title()); addTag(PGNTag.WHITE_ELO, Integer.toString(gameData.game().white().elo())); addTag(PGNTag.BLACK_ELO, Integer.toString(gameData.game().black().elo())); addTag(PGNTag.TIME, timeFormat.format(gameData.game().startAt())); addTag(PGNTag.RESULT, gameData.game().result()); addMoves(gameData.formatMoves()); } }