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}