4d2fb29975ab7496261d9a598dfcdeb602a1d2df
[chesshog-scanner.git] / src / main / java / org / hedgecode / chess / scanner / entity / PGNTag.java
1 /*
2  * Copyright (c) 2019-2020. Developed by Hedgecode.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.hedgecode.chess.scanner.entity;
18
19 /**
20  * PGNTag
21  *
22  * @author Dmitry Samoshin aka gotty
23  */
24 public enum PGNTag {
25
26     EVENT         ( "Event",        true,        PGNTag.QUESTION      ),
27     SITE          ( "Site",         true,        PGNTag.QUESTION      ),
28     DATE          ( "Date",         true,        PGNTag.QUESTION_DATE ),
29     TIME          ( "Time",         false,       PGNTag.QUESTION_TIME ),
30     ROUND         ( "Round",        true,        PGNTag.QUESTION      ),
31     WHITE         ( "White",        true,        PGNTag.QUESTION      ),
32     BLACK         ( "Black",        true,        PGNTag.QUESTION      ),
33     WHITE_TITLE   ( "WhiteTitle",   false,       PGNTag.HYPHEN        ),
34     BLACK_TITLE   ( "BlackTitle",   false,       PGNTag.HYPHEN        ),
35     WHITE_ELO     ( "WhiteElo",     false,       PGNTag.HYPHEN        ),
36     BLACK_ELO     ( "BlackElo",     false,       PGNTag.HYPHEN        ),
37     WHITE_USCF    ( "WhiteUSCF",    false,       PGNTag.HYPHEN        ),
38     BLACK_USCF    ( "BlackUSCF",    false,       PGNTag.HYPHEN        ),
39     WHITE_NA      ( "WhiteNA",      false,       PGNTag.HYPHEN        ),
40     BLACK_NA      ( "BlackNA",      false,       PGNTag.HYPHEN        ),
41     WHITE_TYPE    ( "WhiteType",    false,       PGNTag.HYPHEN        ),
42     BLACK_TYPE    ( "BlackType",    false,       PGNTag.HYPHEN        ),
43     EVENT_DATE    ( "EventDate",    false,       PGNTag.QUESTION_DATE ),
44     EVENT_SPONSOR ( "EventSponsor", false,       PGNTag.EMPTY         ),
45     SECTION       ( "Section",      false,       PGNTag.EMPTY         ),
46     STAGE         ( "Stage",        false,       PGNTag.EMPTY         ),
47     BOARD         ( "Board",        false,       PGNTag.EMPTY         ),
48     OPENING       ( "Opening",      false,       PGNTag.EMPTY         ),
49     VARIATION     ( "Variation",    false,       PGNTag.EMPTY         ),
50     SUBVARIATION  ( "SubVariation", false,       PGNTag.EMPTY         ),
51     ECO           ( "ECO",          false,       PGNTag.EMPTY         ),
52     NIC           ( "NIC",          false,       PGNTag.EMPTY         ),
53     UTC_DATE      ( "UTCDate",      false,       PGNTag.QUESTION_DATE ),
54     UTC_TIME      ( "UTCTime",      false,       PGNTag.QUESTION_TIME ),
55     TIME_CONTROL  ( "TimeControl",  false,       PGNTag.QUESTION      ),
56     SETUP         ( "SetUp",        false,       PGNTag.ZERO          ),
57     FEN           ( "FEN",          false,       PGNTag.EMPTY         ),
58     TERMINATION   ( "Termination",  false,       PGNTag.EMPTY         ),
59     ANNOTATOR     ( "Annotator",    false,       PGNTag.EMPTY         ),
60     MODE          ( "Mode",         false,       PGNTag.EMPTY         ),
61     PLY_COUNT     ( "PlyCount",     false,       PGNTag.EMPTY         ),
62     RESULT        ( "Result",       true,        PGNTag.NON_RESULT    );
63
64     public static final String EMPTY = "";
65     public static final String HYPHEN = "-";
66     public static final String ZERO = "0";
67     public static final String QUESTION = "?";
68     public static final String QUESTION_DATE = "????.??.??";
69     public static final String QUESTION_TIME = "??:??:??";
70     public static final String NON_RESULT = "*";
71
72     public static final String TAG_FORMAT = "[%s \"%s\"]";
73
74     private String tagName;
75     private boolean isRequired;
76     private String defaultValue;
77
78     PGNTag(String name, boolean required, String defValue) {
79         tagName = name;
80         isRequired = required;
81         defaultValue = defValue;
82     }
83
84     public String getName() {
85         return tagName;
86     }
87
88     public boolean isRequired() {
89         return isRequired;
90     }
91
92     public String defaultValue() {
93         return defaultValue;
94     }
95
96 }