X-Git-Url: https://git.hedgecode.org/?p=chesshog-scanner.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fjson%2Fformat%2FJSONGameFormat.java;fp=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fjson%2Fformat%2FJSONGameFormat.java;h=0db82339881cc26d81d646554edce5f7c46e1075;hp=2092d014c117f305ffe5f06996ae7d1deb0dcda6;hb=d1936e2e61d422117f733e9fffec0976356121ea;hpb=c6cec94b865c1dc50ef1699aa4e73e1fc519198b 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..0db8233 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; @@ -53,25 +50,31 @@ public class JSONGameFormat extends AbstractPGNFormat implements GameFormat { return gameData; } + @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(); } }