EVENT ( "Event", true, PGNTag.QUESTION ),
SITE ( "Site", true, PGNTag.QUESTION ),
DATE ( "Date", true, PGNTag.QUESTION_DATE ),
EVENT ( "Event", true, PGNTag.QUESTION ),
SITE ( "Site", true, PGNTag.QUESTION ),
DATE ( "Date", true, PGNTag.QUESTION_DATE ),
ROUND ( "Round", true, PGNTag.QUESTION ),
WHITE ( "White", true, PGNTag.QUESTION ),
BLACK ( "Black", true, PGNTag.QUESTION ),
ROUND ( "Round", true, PGNTag.QUESTION ),
WHITE ( "White", true, PGNTag.QUESTION ),
BLACK ( "Black", true, PGNTag.QUESTION ),
WHITE_TITLE ( "WhiteTitle", false, PGNTag.HYPHEN ),
BLACK_TITLE ( "BlackTitle", false, PGNTag.HYPHEN ),
WHITE_ELO ( "WhiteElo", false, PGNTag.HYPHEN ),
WHITE_TITLE ( "WhiteTitle", false, PGNTag.HYPHEN ),
BLACK_TITLE ( "BlackTitle", false, PGNTag.HYPHEN ),
WHITE_ELO ( "WhiteElo", false, PGNTag.HYPHEN ),
SUBVARIATION ( "SubVariation", false, PGNTag.EMPTY ),
ECO ( "ECO", false, PGNTag.EMPTY ),
NIC ( "NIC", false, PGNTag.EMPTY ),
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_TIME ( "UTCTime", false, PGNTag.QUESTION_TIME ),
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 ),
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 PGNTag[] tags() {
+ PGNTag[] tags = values();
+ Arrays.sort(
+ tags, new TagComparator()
+ );
+ return tags;
+ }
+
+ static class TagComparator implements Comparator<PGNTag> {
+
+ @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());
+ }
+ }
+
+ }
+