001 002package gudusoft.gsqlparser.dlineage.dataflow.model; 003 004import gudusoft.gsqlparser.ESqlClause; 005import gudusoft.gsqlparser.nodes.TParseTreeNode; 006 007import java.util.ArrayList; 008import java.util.List; 009 010public class TableColumnRelationshipElement implements RelationshipElement<TableColumn> { 011 012 private TableColumn column; 013 014 private String tableAlias; 015 016 private Integer columnIndex; 017 018 private ESqlClause relationLocation; 019 020 private List<Transform> transforms = new ArrayList<Transform>(); 021 022 public TableColumnRelationshipElement(TableColumn column) { 023 this.column = column; 024 if (column.getColumnObject() != null && column.getColumnObject().getTableString() != null) { 025 if (column.getTable().getAliasList().contains(column.getColumnObject().getTableString())) { 026 this.tableAlias = column.getColumnObject().getTableString(); 027 } else { 028 this.tableAlias = column.getTable().getCurrentAlias(); 029 } 030 } else { 031 this.tableAlias = column.getTable().getCurrentAlias(); 032 } 033 } 034 035 public TableColumnRelationshipElement(TableColumn column, int index) { 036 this.column = column; 037 this.columnIndex = index; 038 if (column.getColumnObject().getTableString() != null) { 039 if (column.getTable().getAliasList().contains(column.getColumnObject().getTableString())) { 040 this.tableAlias = column.getColumnObject().getTableString(); 041 } else { 042 this.tableAlias = column.getTable().getCurrentAlias(); 043 } 044 } else { 045 this.tableAlias = column.getTable().getCurrentAlias(); 046 } 047 } 048 049 public TableColumnRelationshipElement(TableColumn column, 050 ESqlClause relationLocation) { 051 this.column = column; 052 this.relationLocation = relationLocation; 053 if (column.getColumnObject() != null && column.getColumnObject().getTableString() != null) { 054 if (column.getTable().getAliasList().contains(column.getColumnObject().getTableString())) { 055 this.tableAlias = column.getColumnObject().getTableString(); 056 } else { 057 this.tableAlias = column.getTable().getCurrentAlias(); 058 } 059 } else { 060 this.tableAlias = column.getTable().getCurrentAlias(); 061 } 062 } 063 064 @Override 065 public TableColumn getElement() { 066 return column; 067 } 068 069 public ESqlClause getRelationLocation() { 070 return relationLocation; 071 } 072 073 @Override 074 public int hashCode() { 075 final int prime = 31; 076 int result = 1; 077 result = prime 078 * result 079 + ((column == null) ? 0 : column.hashCode()); 080 result = prime 081 * result 082 + ((relationLocation == null) ? 0 083 : relationLocation.hashCode()); 084 return result; 085 } 086 087 @Override 088 public boolean equals(Object obj) { 089 if (this == obj) 090 return true; 091 if (obj == null) 092 return false; 093 if (getClass() != obj.getClass()) 094 return false; 095 TableColumnRelationshipElement other = (TableColumnRelationshipElement) obj; 096 if (column == null) { 097 if (other.column != null) 098 return false; 099 } else if (!column.equals(other.column)) 100 return false; 101 if (relationLocation != other.relationLocation) 102 return false; 103 return true; 104 } 105 106 public Integer getColumnIndex() { 107 return columnIndex; 108 } 109 110 @Override 111 public List<Transform> getTransforms() { 112 return transforms; 113 } 114 115 public void addTransform(String type, TParseTreeNode code) { 116 if (ModelBindingManager.getGlobalOption() != null && !ModelBindingManager.getGlobalOption().isTransform()) { 117 return; 118 } 119 Transform transform = new Transform(); 120 transform.setType(type); 121 transform.setCode(code); 122 transforms.add(transform); 123 } 124 125 public String getTableAlias() { 126 return tableAlias; 127 } 128}