001package gudusoft.gsqlparser.util;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.sqlenv.ESQLDataObjectType;
005
006public final class Identifier {
007        private final String identifier;
008        private final EDbVendor vendor;
009        private final ESQLDataObjectType sqlDataObjectType;
010        private final String normalizeIdentifier;
011
012        public Identifier(EDbVendor vendor, ESQLDataObjectType sqlDataObjectType, String identifier) {
013                this.vendor = vendor;
014                this.sqlDataObjectType = sqlDataObjectType;
015                this.identifier = identifier;
016                this.normalizeIdentifier = SQLUtil.getIdentifierNormalName(vendor, identifier, sqlDataObjectType);
017        }
018
019        public String getIdentifier() {
020                return identifier;
021        }
022
023        public EDbVendor getVendor() {
024                return vendor;
025        }
026
027        public ESQLDataObjectType getSqlDataObjectType() {
028                return sqlDataObjectType;
029        }
030
031        public String getNormalizeIdentifier() {
032                return normalizeIdentifier;
033        }
034
035        @Override
036        public int hashCode() {
037                final int prime = 31;
038                int result = 1;
039                result = prime * result + ((normalizeIdentifier == null) ? 0 : normalizeIdentifier.toLowerCase().hashCode());
040                result = prime * result + ((sqlDataObjectType == null) ? 0 : sqlDataObjectType.hashCode());
041                result = prime * result + ((vendor == null) ? 0 : vendor.hashCode());
042                return result;
043        }
044
045        @Override
046        public boolean equals(Object obj) {
047                if (this == obj)
048                        return true;
049                if (obj == null)
050                        return false;
051                if (getClass() != obj.getClass())
052                        return false;
053                Identifier other = (Identifier) obj;
054                if (sqlDataObjectType != other.sqlDataObjectType)
055                        return false;
056                if (vendor != other.vendor)
057                        return false;
058                if (normalizeIdentifier == null) {
059                        if (other.normalizeIdentifier != null)
060                                return false;
061                } else if (!SQLUtil.compareIdentifier(vendor, sqlDataObjectType, this.identifier, other.identifier))
062                        return false;
063                return true;
064        }
065        
066        
067
068}