--- /dev/null
+/*
+ * Copyright (c) 2019-2020. 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.scanner.entity;
+
+/**
+ * PGNTag
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public enum PGNTag {
+
+ 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 ),
+ WHITE_TITLE ( "WhiteTitle", false, PGNTag.HYPHEN ),
+ BLACK_TITLE ( "BlackTitle", false, PGNTag.HYPHEN ),
+ WHITE_ELO ( "WhiteElo", false, PGNTag.HYPHEN ),
+ BLACK_ELO ( "BlackElo", false, PGNTag.HYPHEN ),
+ WHITE_USCF ( "WhiteUSCF", false, PGNTag.HYPHEN ),
+ BLACK_USCF ( "BlackUSCF", false, PGNTag.HYPHEN ),
+ WHITE_NA ( "WhiteNA", false, PGNTag.HYPHEN ),
+ BLACK_NA ( "BlackNA", false, PGNTag.HYPHEN ),
+ WHITE_TYPE ( "WhiteType", false, PGNTag.HYPHEN ),
+ BLACK_TYPE ( "BlackType", false, PGNTag.HYPHEN ),
+ EVENT_DATE ( "EventDate", false, PGNTag.QUESTION_DATE ),
+ EVENT_SPONSOR ( "EventSponsor", false, PGNTag.EMPTY ),
+ SECTION ( "Section", false, PGNTag.EMPTY ),
+ STAGE ( "Stage", false, PGNTag.EMPTY ),
+ BOARD ( "Board", false, PGNTag.EMPTY ),
+ OPENING ( "Opening", false, PGNTag.EMPTY ),
+ VARIATION ( "Variation", false, PGNTag.EMPTY ),
+ SUBVARIATION ( "SubVariation", false, PGNTag.EMPTY ),
+ ECO ( "ECO", false, PGNTag.EMPTY ),
+ NIC ( "NIC", false, PGNTag.EMPTY ),
+ TIME ( "Time", false, PGNTag.QUESTION_TIME ),
+ UTC_DATE ( "UTCDate", false, PGNTag.QUESTION_DATE ),
+ 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 ),
+ PLY_COUNT ( "PlyCount", false, PGNTag.EMPTY ),
+ RESULT ( "Result", true, PGNTag.NON_RESULT );
+
+ public static final String EMPTY = "";
+ public static final String HYPHEN = "-";
+ public static final String ZERO = "0";
+ public static final String QUESTION = "?";
+ public static final String QUESTION_DATE = "????.??.??";
+ public static final String QUESTION_TIME = "??:??:??";
+ public static final String NON_RESULT = "*";
+
+ public static final String TAG_FORMAT = "[%s \"%s\"]";
+
+ private String tagName;
+ private boolean isRequired;
+ private String defaultValue;
+
+ PGNTag(String name, boolean required, String defValue) {
+ tagName = name;
+ isRequired = required;
+ defaultValue = defValue;
+ }
+
+ public String getName() {
+ return tagName;
+ }
+
+ public boolean isRequired() {
+ return isRequired;
+ }
+
+ public String defaultValue() {
+ return defaultValue;
+ }
+
+}