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.TParseTreeNode;
009
010public class ProcedureRelationshipElement implements RelationshipElement<Procedure>
011{
012
013        private Procedure procedure;
014
015        private ESqlClause relationLocation;
016        
017    private List<Transform> transforms = new ArrayList<Transform>();
018
019        public ProcedureRelationshipElement(Procedure procedure )
020        {
021                this.procedure = procedure;
022        }
023
024        public ProcedureRelationshipElement(Procedure procedure,
025                                                                        ESqlClause relationLocation )
026        {
027                this.procedure = procedure;
028                this.relationLocation = relationLocation;
029        }
030
031        @Override
032        public Procedure getElement( )
033        {
034                return procedure;
035        }
036
037        public ESqlClause getRelationLocation( )
038        {
039                return relationLocation;
040        }
041
042        @Override
043        public int hashCode( )
044        {
045                final int prime = 31;
046                int result = 1;
047                result = prime
048                                * result
049                                + ( ( procedure == null ) ? 0 : procedure.hashCode( ) );
050                result = prime
051                                * result
052                                + ( ( relationLocation == null ) ? 0
053                                                : relationLocation.hashCode( ) );
054                return result;
055        }
056
057        @Override
058        public boolean equals( Object obj )
059        {
060                if ( this == obj )
061                        return true;
062                if ( obj == null )
063                        return false;
064                if ( getClass( ) != obj.getClass( ) )
065                        return false;
066                ProcedureRelationshipElement other = (ProcedureRelationshipElement) obj;
067                if ( procedure == null )
068                {
069                        if ( other.procedure != null )
070                                return false;
071                }
072                else if ( !procedure.equals( other.procedure ) )
073                        return false;
074                if ( relationLocation != other.relationLocation )
075                        return false;
076                return true;
077        }
078        
079        @Override
080        public List<Transform> getTransforms() {
081                return transforms;
082        }
083        
084        public void addTransform(String type, TParseTreeNode code) {
085                if (ModelBindingManager.getGlobalOption()!=null && !ModelBindingManager.getGlobalOption().isTransform()) {
086                        return;
087                }
088                Transform transform = new Transform();
089                transform.setType(type);
090                transform.setCode(code);
091                transforms.add(transform);
092        }
093}