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