X-Git-Url: https://git.hedgecode.org/?p=chesshog.git;a=blobdiff_plain;f=chesshog-qrcode%2Fsrc%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fqrcode%2FChessQRResult.java;fp=chesshog-qrcode%2Fsrc%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fqrcode%2FChessQRResult.java;h=1b8bbf7093c340963e5ad91e242f5ef506288afb;hp=0000000000000000000000000000000000000000;hb=1fbf14530416c16f1c6fa5ee3e589482dd722a5d;hpb=4d2b7f345d8079775373d95ab7c1a486cac96519 diff --git a/chesshog-qrcode/src/main/java/org/hedgecode/chess/qrcode/ChessQRResult.java b/chesshog-qrcode/src/main/java/org/hedgecode/chess/qrcode/ChessQRResult.java new file mode 100644 index 0000000..1b8bbf7 --- /dev/null +++ b/chesshog-qrcode/src/main/java/org/hedgecode/chess/qrcode/ChessQRResult.java @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2018-2019. 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.qrcode; + +import org.hedgecode.chess.Parsers; +import org.hedgecode.chess.game.Game; +import org.hedgecode.chess.position.ParseException; +import org.hedgecode.chess.position.Parser; +import org.hedgecode.chess.position.Position; + +/** + * Result storage for Chess-specific QR Codes data. + * + * @author Dmitry Samoshin aka gotty + */ +public class ChessQRResult { + + private ChessQRCodeMode mode; + private String contents; + private Position position; + private Game game; + + ChessQRResult(ChessQRCodeMode mode, String contents) { + this.mode = mode; + this.contents = contents; + } + + ChessQRResult(Position position) { + this.position = position; + } + + ChessQRResult(Game game) { + this.game = game; + } + + public ChessQRCodeMode getMode() { + return mode; + } + + public String getContents() { + return contents; + } + + public Position getPosition() throws ChessQRCodeException { + if (position == null) { + if (mode != null && mode.isPosition()) { + try { + position = getPositionParser().parse(contents); + } catch (ParseException e) { + throw new ChessQRCodeException( + ChessQRCodeException.Type.PARSE, null, e.getMessage() + ); + } + } + } + return position; + } + + public Game getGame() { + // todo + return game; + } + + private Parser getPositionParser() throws ChessQRCodeException { + switch (mode) { + case FEN: + return Parsers.FEN.parser(); + case TCD: + return Parsers.TCD.parser(); + default: + throw new ChessQRCodeException( + ChessQRCodeException.Type.PARSE, "parse.unknown.position.format" + ); + } + } + +}