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}