package ml.shifu.shifu.column; import org.apache.commons.lang.StringUtils; /** * Created by zhanhu on 3/23/17. */ public class NSColumn { private static final String NS_DELIMITER = "::"; private String fullColumnName; private String[] nameIdentifiers; public NSColumn(String fullColumnName) { this.fullColumnName = fullColumnName; if ( StringUtils.isNotBlank(this.fullColumnName) ) { this.nameIdentifiers = StringUtils.split(this.fullColumnName, NS_DELIMITER, -1); } } public String getFullColumnName() { return fullColumnName; } public String getSimpleName() { return (this.nameIdentifiers == null ? null : this.nameIdentifiers[this.nameIdentifiers.length -1]); } public String[] getNameIdentifiers() { return nameIdentifiers; } @Override public int hashCode() { return ( this.nameIdentifiers != null && this.nameIdentifiers.length > 0 ) ? this.nameIdentifiers[this.nameIdentifiers.length - 1].hashCode() : 0; } @Override public boolean equals(Object obj) { if ( obj == null || !(obj instanceof NSColumn) ) { return false; } if ( obj == this ) { return true; } NSColumn nsc = (NSColumn) obj; if ( StringUtils.equals(this.fullColumnName, nsc.fullColumnName) ) { return true; } else { boolean equal = false; if ( this.nameIdentifiers != null && nsc.nameIdentifiers != null ) { if (this.nameIdentifiers.length == 0 && nsc.nameIdentifiers.length == 0) { equal = true; } else if (this.nameIdentifiers.length * nsc.nameIdentifiers.length == 0) { equal = false; } else { int len = Math.min(this.nameIdentifiers.length, nsc.nameIdentifiers.length); int k; for ( k = 1; k < len + 1; k ++) { if (!StringUtils.equals(this.nameIdentifiers[this.nameIdentifiers.length - k], nsc.nameIdentifiers[nsc.nameIdentifiers.length - k])) { break; } } equal = (k == (len +1 )); } } return equal; } } }