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;
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();
}
}