X-Git-Url: https://git.hedgecode.org/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fjson%2Fformat%2FJSONGameFormat.java;h=28d250e378ac3f3f36830ef893fd9c9fa5d2bcf0;hb=8b5e21d880364363f4f8d51e126c1db91f8e2c4c;hp=2092d014c117f305ffe5f06996ae7d1deb0dcda6;hpb=22aac3a325356cfd433a7f9d93e2df49550fb583;p=chesshog-scanner.git diff --git a/src/main/java/org/hedgecode/chess/scanner/json/format/JSONGameFormat.java b/src/main/java/org/hedgecode/chess/scanner/json/format/JSONGameFormat.java index 2092d01..28d250e 100644 --- a/src/main/java/org/hedgecode/chess/scanner/json/format/JSONGameFormat.java +++ b/src/main/java/org/hedgecode/chess/scanner/json/format/JSONGameFormat.java @@ -16,24 +16,21 @@ 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.PGNFormat; +import org.hedgecode.chess.scanner.format.PGNTag; import org.hedgecode.chess.scanner.format.GameData; import org.hedgecode.chess.scanner.format.GameFormat; +import org.hedgecode.chess.scanner.format.TypeMovesFormat; +import org.hedgecode.chess.scanner.spi.ServiceRegistry; /** * 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"); +public class JSONGameFormat extends AbstractBaseFormat implements GameFormat { @SerializedName("gameData") private JSONGameData gameData; @@ -44,7 +41,7 @@ public class JSONGameFormat extends AbstractPGNFormat implements GameFormat { @Override public String id() { return Integer.toString( - gameData().game().id() + gameData.game().id() ); } @@ -54,24 +51,29 @@ public class JSONGameFormat extends AbstractPGNFormat implements GameFormat { } @Override - protected void assignPGN() { - addTag(PGNTag.EVENT, gameData.room().name()); - addTag(PGNTag.DATE, dateFormat.format(gameData.game().startAt())); - addTag(PGNTag.TIME, timeFormat.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().whiteElo())); - addTag(PGNTag.BLACK_ELO, Integer.toString(gameData.game().blackElo())); - addTag(PGNTag.EVENT_DATE, dateFormat.format(gameData.room().startAt())); - addTag(PGNTag.RESULT, gameData.game().result()); + public String pgn() { + PGNFormat pgnFormat = ServiceRegistry.singleProvider( + PGNFormat.class + ); + pgnFormat.addTag(PGNTag.EVENT, gameData.room().name()); + pgnFormat.addTag(PGNTag.DATE, pgnFormat.formatDate(gameData.game().startAt())); + pgnFormat.addTag(PGNTag.ROUND, gameData.game().roundSlug()); + pgnFormat.addTag(PGNTag.WHITE, gameData.game().white().name()); + pgnFormat.addTag(PGNTag.BLACK, gameData.game().black().name()); + pgnFormat.addTag(PGNTag.WHITE_TITLE, gameData.game().white().title()); + pgnFormat.addTag(PGNTag.BLACK_TITLE, gameData.game().black().title()); + pgnFormat.addTag(PGNTag.WHITE_ELO, Integer.toString(gameData.game().whiteElo())); + pgnFormat.addTag(PGNTag.BLACK_ELO, Integer.toString(gameData.game().blackElo())); + pgnFormat.addTag(PGNTag.EVENT_DATE, pgnFormat.formatDate(gameData.room().startAt())); + pgnFormat.addTag(PGNTag.TIME, pgnFormat.formatTime(gameData.game().startAt())); + pgnFormat.addTag(PGNTag.RESULT, gameData.game().result()); if (gameData.moves().length > 0) { - addTag(PGNTag.PLY_COUNT, Integer.toString(gameData.moves().length)); + pgnFormat.addTag(PGNTag.PLY_COUNT, Integer.toString(gameData.moves().length)); } - - addMoves(gameData.formatMoves()); + pgnFormat.addMoves( + TypeMovesFormat.WRAP.format(gameData.moves()) + ); + return pgnFormat.format(); } }