X-Git-Url: https://git.hedgecode.org/?p=chesshog-scanner.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fformat%2FPGNTag.java;fp=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fscanner%2Fentity%2FPGNTag.java;h=10d6fecc83d0848ebcbd09eabbb8cd19cc6d70de;hp=4d2fb29975ab7496261d9a598dfcdeb602a1d2df;hb=d1936e2e61d422117f733e9fffec0976356121ea;hpb=c6cec94b865c1dc50ef1699aa4e73e1fc519198b diff --git a/src/main/java/org/hedgecode/chess/scanner/entity/PGNTag.java b/src/main/java/org/hedgecode/chess/scanner/format/PGNTag.java similarity index 85% rename from src/main/java/org/hedgecode/chess/scanner/entity/PGNTag.java rename to src/main/java/org/hedgecode/chess/scanner/format/PGNTag.java index 4d2fb29..10d6fec 100644 --- a/src/main/java/org/hedgecode/chess/scanner/entity/PGNTag.java +++ b/src/main/java/org/hedgecode/chess/scanner/format/PGNTag.java @@ -14,7 +14,10 @@ * limitations under the License. */ -package org.hedgecode.chess.scanner.entity; +package org.hedgecode.chess.scanner.format; + +import java.util.Arrays; +import java.util.Comparator; /** * PGNTag @@ -26,10 +29,10 @@ public enum PGNTag { EVENT ( "Event", true, PGNTag.QUESTION ), SITE ( "Site", true, PGNTag.QUESTION ), DATE ( "Date", true, PGNTag.QUESTION_DATE ), - TIME ( "Time", false, PGNTag.QUESTION_TIME ), ROUND ( "Round", true, PGNTag.QUESTION ), WHITE ( "White", true, PGNTag.QUESTION ), BLACK ( "Black", true, PGNTag.QUESTION ), + RESULT ( "Result", true, PGNTag.NON_RESULT ), WHITE_TITLE ( "WhiteTitle", false, PGNTag.HYPHEN ), BLACK_TITLE ( "BlackTitle", false, PGNTag.HYPHEN ), WHITE_ELO ( "WhiteElo", false, PGNTag.HYPHEN ), @@ -50,16 +53,16 @@ public enum PGNTag { SUBVARIATION ( "SubVariation", false, PGNTag.EMPTY ), ECO ( "ECO", false, PGNTag.EMPTY ), NIC ( "NIC", false, PGNTag.EMPTY ), - UTC_DATE ( "UTCDate", false, PGNTag.QUESTION_DATE ), + TIME ( "Time", false, PGNTag.QUESTION_TIME ), UTC_TIME ( "UTCTime", false, PGNTag.QUESTION_TIME ), + UTC_DATE ( "UTCDate", false, PGNTag.QUESTION_DATE ), TIME_CONTROL ( "TimeControl", false, PGNTag.QUESTION ), SETUP ( "SetUp", false, PGNTag.ZERO ), FEN ( "FEN", false, PGNTag.EMPTY ), TERMINATION ( "Termination", false, PGNTag.EMPTY ), ANNOTATOR ( "Annotator", false, PGNTag.EMPTY ), MODE ( "Mode", false, PGNTag.EMPTY ), - PLY_COUNT ( "PlyCount", false, PGNTag.EMPTY ), - RESULT ( "Result", true, PGNTag.NON_RESULT ); + PLY_COUNT ( "PlyCount", false, PGNTag.EMPTY ); public static final String EMPTY = ""; public static final String HYPHEN = "-"; @@ -93,4 +96,27 @@ public enum PGNTag { return defaultValue; } + public static PGNTag[] tags() { + PGNTag[] tags = values(); + Arrays.sort( + tags, new TagComparator() + ); + return tags; + } + + static class TagComparator implements Comparator { + + @Override + public int compare(PGNTag tag1, PGNTag tag2) { + if (tag1.isRequired && tag2.isRequired) { + return tag1.ordinal() - tag2.ordinal(); + } else { + return tag1.isRequired ? -1 + : tag2.isRequired ? 1 + : tag1.name().compareTo(tag2.name()); + } + } + + } + }