001package gudusoft.gsqlparser.dlineage.graph.utils;
002
003public class EntityArrays {
004
005    private static final String[][] ISO8859_1_ESCAPE_TABLE = new String[][]{
006            {" ", " "}, {"¡", "¡"}, {"¢", "¢"}, {"£", "£"},
007            {"¤", "¤"}, {"¥", "¥"}, {"¦", "¦"}, {"§", "§"},
008            {"¨", "¨"}, {"©", "©"}, {"ª", "ª"}, {"«", "«"},
009            {"¬", "¬"}, {"\u00ad", "­"}, {"®", "®"}, {"¯", "¯"},
010            {"°", "°"}, {"±", "±"}, {"²", "²"}, {"³", "³"},
011            {"´", "´"}, {"µ", "µ"}, {"¶", "¶"}, {"·", "·"},
012            {"¸", "¸"}, {"¹", "¹"}, {"º", "º"}, {"»", "»"},
013            {"¼", "¼"}, {"½", "½"}, {"¾", "¾"}, {"¿", "¿"},
014            {"À", "À"}, {"Á", "Á"}, {"Â", "Â"}, {"Ã", "Ã"},
015            {"Ä", "Ä"}, {"Å", "Å"}, {"Æ", "Æ"}, {"Ç", "Ç"},
016            {"È", "È"}, {"É", "É"}, {"Ê", "Ê"}, {"Ë", "Ë"},
017            {"Ì", "Ì"}, {"Í", "Í"}, {"Î", "Î"}, {"Ï", "Ï"},
018            {"Ð", "Ð"}, {"Ñ", "Ñ"}, {"Ò", "Ò"}, {"Ó", "Ó"},
019            {"Ô", "Ô"}, {"Õ", "Õ"}, {"Ö", "Ö"}, {"×", "×"},
020            {"Ø", "Ø"}, {"Ù", "Ù"}, {"Ú", "Ú"}, {"Û", "Û"},
021            {"Ü", "Ü"}, {"Ý", "Ý"}, {"Þ", "Þ"}, {"ß", "ß"},
022            {"à", "à"}, {"á", "á"}, {"â", "â"}, {"ã", "ã"},
023            {"ä", "ä"}, {"å", "å"}, {"æ", "æ"}, {"ç", "ç"},
024            {"è", "è"}, {"é", "é"}, {"ê", "ê"}, {"ë", "ë"},
025            {"ì", "ì"}, {"í", "í"}, {"î", "î"}, {"ï", "ï"},
026            {"ð", "ð"}, {"ñ", "ñ"}, {"ò", "ò"}, {"ó", "ó"},
027            {"ô", "ô"}, {"õ", "õ"}, {"ö", "ö"}, {"÷", "÷"},
028            {"ø", "ø"}, {"ù", "ù"}, {"ú", "ú"}, {"û", "û"},
029            {"ü", "ü"}, {"ý", "ý"}, {"þ", "þ"}, {"ÿ", "ÿ"}
030    };
031
032    private static final String[][] ISO8859_1_UNESCAPE_TABLE;
033    private static final String[][] HTML40_EXTENDED_ESCAPE_TABLE;
034    private static final String[][] HTML40_EXTENDED_UNESCAPE_TABLE;
035    private static final String[][] BASIC_ESCAPE_TABLE;
036    private static final String[][] BASIC_UNESCAPE_TABLE;
037    private static final String[][] APOS_ESCAPE_TABLE;
038    private static final String[][] APOS_UNESCAPE_TABLE;
039    private static final String[][] JAVA_CTRL_CHARS_ESCAPE_TABLE;
040    private static final String[][] JAVA_CTRL_CHARS_UNESCAPE_TABLE;
041
042    public EntityArrays() {
043    }
044
045    public static String[][] getIso8859_1Escape() {
046        return ISO8859_1_ESCAPE_TABLE.clone();
047    }
048
049    public static String[][] getIso8859_1Unescape() {
050        return ISO8859_1_UNESCAPE_TABLE.clone();
051    }
052
053    public static String[][] getHtml40ExtendedEscape() {
054        return HTML40_EXTENDED_ESCAPE_TABLE.clone();
055    }
056
057    public static String[][] getHtml40ExtendedUnescape() {
058        return HTML40_EXTENDED_UNESCAPE_TABLE.clone();
059    }
060
061    public static String[][] getBasicEscape() {
062        return BASIC_ESCAPE_TABLE.clone();
063    }
064
065    public static String[][] getBasicUnescape() {
066        return BASIC_UNESCAPE_TABLE.clone();
067    }
068
069    public static String[][] getAposEscape() {
070        return APOS_ESCAPE_TABLE.clone();
071    }
072
073    public static String[][] getAposUnescape() {
074        return APOS_UNESCAPE_TABLE.clone();
075    }
076
077    public static String[][] getJavaCtrlCharsEscape() {
078        return JAVA_CTRL_CHARS_ESCAPE_TABLE.clone();
079    }
080
081    public static String[][] getJavaCtrlCharsUnescape() {
082        return JAVA_CTRL_CHARS_UNESCAPE_TABLE.clone();
083    }
084
085    public static String[][] invert(String[][] array) {
086        String[][] inverted = new String[array.length][2];
087        for (int i = 0; i < array.length; i++) {
088            inverted[i][0] = array[i][1];
089            inverted[i][1] = array[i][0];
090        }
091        return inverted;
092    }
093
094    static {
095        ISO8859_1_UNESCAPE_TABLE = invert(ISO8859_1_ESCAPE_TABLE);
096
097        HTML40_EXTENDED_ESCAPE_TABLE = new String[][]{
098                {"ƒ", "&fnof;"}, {"Α", "&Alpha;"}, {"Β", "&Beta;"}, {"Γ", "&Gamma;"},
099                {"Δ", "&Delta;"}, {"Ε", "&Epsilon;"}, {"Ζ", "&Zeta;"}, {"Η", "&Eta;"},
100                {"Θ", "&Theta;"}, {"Ι", "&Iota;"}, {"Κ", "&Kappa;"}, {"Λ", "&Lambda;"},
101                {"Μ", "&Mu;"}, {"Ν", "&Nu;"}, {"Ξ", "&Xi;"}, {"Ο", "&Omicron;"},
102                {"Π", "&Pi;"}, {"Ρ", "&Rho;"}, {"Σ", "&Sigma;"}, {"Τ", "&Tau;"},
103                {"Υ", "&Upsilon;"}, {"Φ", "&Phi;"}, {"Χ", "&Chi;"}, {"Ψ", "&Psi;"},
104                {"Ω", "&Omega;"}, {"α", "&alpha;"}, {"β", "&beta;"}, {"γ", "&gamma;"},
105                {"δ", "&delta;"}, {"ε", "&epsilon;"}, {"ζ", "&zeta;"}, {"η", "&eta;"},
106                {"θ", "&theta;"}, {"ι", "&iota;"}, {"κ", "&kappa;"}, {"λ", "&lambda;"},
107                {"μ", "&mu;"}, {"ν", "&nu;"}, {"ξ", "&xi;"}, {"ο", "&omicron;"},
108                {"π", "&pi;"}, {"ρ", "&rho;"}, {"ς", "&sigmaf;"}, {"σ", "&sigma;"},
109                {"τ", "&tau;"}, {"υ", "&upsilon;"}, {"φ", "&phi;"}, {"χ", "&chi;"},
110                {"ψ", "&psi;"}, {"ω", "&omega;"}, {"ϑ", "&thetasym;"}, {"ϒ", "&upsih;"},
111                {"ϖ", "&piv;"}, {"•", "&bull;"}, {"…", "&hellip;"}, {"′", "&prime;"},
112                {"″", "&Prime;"}, {"‾", "&oline;"}, {"⁄", "&frasl;"}, {"℘", "&weierp;"},
113                {"ℑ", "&image;"}, {"ℜ", "&real;"}, {"™", "&trade;"}, {"ℵ", "&alefsym;"},
114                {"←", "&larr;"}, {"↑", "&uarr;"}, {"→", "&rarr;"}, {"↓", "&darr;"},
115                {"↔", "&harr;"}, {"↵", "&crarr;"}, {"⇐", "&lArr;"}, {"⇑", "&uArr;"},
116                {"⇒", "&rArr;"}, {"⇓", "&dArr;"}, {"⇔", "&hArr;"}, {"∀", "&forall;"},
117                {"∂", "&part;"}, {"∃", "&exist;"}, {"∅", "&empty;"}, {"∇", "&nabla;"},
118                {"∈", "&isin;"}, {"∉", "&notin;"}, {"∋", "&ni;"}, {"∏", "&prod;"},
119                {"∑", "&sum;"}, {"−", "&minus;"}, {"∗", "&lowast;"}, {"√", "&radic;"},
120                {"∝", "&prop;"}, {"∞", "&infin;"}, {"∠", "&ang;"}, {"∧", "&and;"},
121                {"∨", "&or;"}, {"∩", "&cap;"}, {"∪", "&cup;"}, {"∫", "&int;"},
122                {"∴", "&there4;"}, {"∼", "&sim;"}, {"≅", "&cong;"}, {"≈", "&asymp;"},
123                {"≠", "&ne;"}, {"≡", "&equiv;"}, {"≤", "&le;"}, {"≥", "&ge;"},
124                {"⊂", "&sub;"}, {"⊃", "&sup;"}, {"⊄", "&nsub;"}, {"⊆", "&sube;"},
125                {"⊇", "&supe;"}, {"⊕", "&oplus;"}, {"⊗", "&otimes;"}, {"⊥", "&perp;"},
126                {"⋅", "&sdot;"}, {"⌈", "&lceil;"}, {"⌉", "&rceil;"}, {"⌊", "&lfloor;"},
127                {"⌋", "&rfloor;"}, {"〈", "&lang;"}, {"〉", "&rang;"}, {"◊", "&loz;"},
128                {"♠", "&spades;"}, {"♣", "&clubs;"}, {"♥", "&hearts;"}, {"♦", "&diams;"},
129                {"Œ", "&OElig;"}, {"œ", "&oelig;"}, {"Š", "&Scaron;"}, {"š", "&scaron;"},
130                {"Ÿ", "&Yuml;"}, {"ˆ", "&circ;"}, {"˜", "&tilde;"}, {" ", "&ensp;"},
131                {" ", "&emsp;"}, {" ", "&thinsp;"}, {"\u200c", "&zwnj;"}, {"\u200d", "&zwj;"},
132                {"\u200e", "&lrm;"}, {"\u200f", "&rlm;"}, {"–", "&ndash;"}, {"—", "&mdash;"},
133                {"‘", "&lsquo;"}, {"’", "&rsquo;"}, {"‚", "&sbquo;"}, {"“", "&ldquo;"},
134                {"”", "&rdquo;"}, {"„", "&bdquo;"}, {"†", "&dagger;"}, {"‡", "&Dagger;"},
135                {"‰", "&permil;"}, {"‹", "&lsaquo;"}, {"›", "&rsaquo;"}, {"€", "&euro;"}
136        };
137        HTML40_EXTENDED_UNESCAPE_TABLE = invert(HTML40_EXTENDED_ESCAPE_TABLE);
138
139        BASIC_ESCAPE_TABLE = new String[][]{{"\"", "&quot;"}, {"&", "&amp;"}, {"<", "&lt;"}, {">", "&gt;"}};
140        BASIC_UNESCAPE_TABLE = invert(BASIC_ESCAPE_TABLE);
141
142        APOS_ESCAPE_TABLE = new String[][]{{"'", "&apos;"}};
143        APOS_UNESCAPE_TABLE = invert(APOS_ESCAPE_TABLE);
144
145        JAVA_CTRL_CHARS_ESCAPE_TABLE = new String[][]{{"\b", "\\b"}, {"\n", "\\n"}, {"\t", "\\t"}, {"\f", "\\f"}, {"\r", "\\r"}};
146        JAVA_CTRL_CHARS_UNESCAPE_TABLE = invert(JAVA_CTRL_CHARS_ESCAPE_TABLE);
147    }
148}