001package gudusoft.gsqlparser.util;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.nodes.TObjectName;
005
006import java.util.List;
007
008public class KeywordUtil {
009
010    public static boolean isKeyword(TObjectName object) {
011        if (object == null || object.getGsqlparser() == null)
012            return false;
013        try {
014            EDbVendor vendor = object.getGsqlparser().getDbVendor();
015
016            List<String> versions = keywordChecker.getAvailableDbVersions(vendor);
017            if (versions != null && versions.size() > 0) {
018                for (int i = 0; i < versions.size(); i++) {
019                    List<String> segments = SQLUtil.parseNames(object.toString());
020                    boolean result = keywordChecker.isKeyword(segments.get(segments.size() - 1),
021                            object.getGsqlparser().getDbVendor(), versions.get(i), false);
022                    if (result) {
023                        return result;
024                    }
025                }
026            }
027        } catch (Exception e) {
028        }
029
030        return false;
031    }
032
033    public static boolean isKeyword(String text, EDbVendor vendor) {
034        try {
035            List<String> versions = keywordChecker.getAvailableDbVersions(vendor);
036            if (versions != null && versions.size() > 0) {
037                for (int i = 0; i < versions.size(); i++) {
038                    List<String> segments = SQLUtil.parseNames(text);
039                    boolean result = keywordChecker.isKeyword(segments.get(segments.size() - 1),
040                            vendor, versions.get(i), false);
041                    if (result) {
042                        return result;
043                    }
044                }
045            }
046        } catch (Exception e) {
047        }
048        return false;
049    }
050
051    public static boolean isKeyword(String text, EDbVendor vendor, boolean reservedOnly) {
052        try {
053            List<String> versions = keywordChecker.getAvailableDbVersions(vendor);
054            if (versions != null && versions.size() > 0) {
055                for (int i = 0; i < versions.size(); i++) {
056                    List<String> segments = SQLUtil.parseNames(text);
057                    boolean result = keywordChecker.isKeyword(segments.get(segments.size() - 1),
058                            vendor, versions.get(i), reservedOnly);
059                    if (result) {
060                        return result;
061                    }
062                }
063            }
064        } catch (Exception e) {
065        }
066        return false;
067    }
068
069    public static boolean isLatestVersionKeyword(String text, EDbVendor vendor, boolean reservedOnly) {
070        try {
071            String latestVersion = keywordChecker.getDbLatestVersion(vendor);
072            if (latestVersion != null) {
073                List<String> segments = SQLUtil.parseNames(text);
074                boolean result = keywordChecker.isKeyword(segments.get(segments.size() - 1),
075                        vendor, latestVersion, reservedOnly);
076                if (result) {
077                    return result;
078                }
079            }
080        } catch (Exception e) {
081        }
082        return false;
083    }
084
085    public static void main(String[] args) {
086        for(EDbVendor vendor: EDbVendor.values()) {
087            System.out.println(vendor.name()+": "+ keywordChecker.getDbLatestVersion(vendor));
088        }
089    }
090}