001package gudusoft.gsqlparser.dlineage.dataflow.model; 002 003import gudusoft.gsqlparser.EParameterMode; 004import gudusoft.gsqlparser.TSourceToken; 005import gudusoft.gsqlparser.dlineage.util.Pair3; 006import gudusoft.gsqlparser.nodes.TParameterDeclaration; 007import gudusoft.gsqlparser.nodes.TTypeName; 008import gudusoft.gsqlparser.util.SQLUtil; 009 010public class Argument { 011 private OraclePackage oraclePackage; 012 private Procedure procedure; 013 private long id; 014 private String name; 015 private Pair3<Long, Long, String> startPosition; 016 private Pair3<Long, Long, String> endPosition; 017 private TParameterDeclaration parameterObject; 018 private EParameterMode mode; 019 private TTypeName dataType; 020 021 public Argument(Procedure procedure, TParameterDeclaration parameterObject, int index) { 022 if (procedure != null && parameterObject != null) { 023 this.id = ++ModelBindingManager.get().TABLE_COLUMN_ID; 024 this.parameterObject = parameterObject; 025 TSourceToken startToken = parameterObject.getStartToken(); 026 TSourceToken endToken = parameterObject.getEndToken(); 027 this.startPosition = new Pair3<Long, Long, String>(startToken.lineNo, startToken.columnNo, ModelBindingManager.getGlobalHash()); 028 this.endPosition = new Pair3<Long, Long, String>(endToken.lineNo, 029 endToken.columnNo + (long) SQLUtil.endTrim(endToken.astext).length(), ModelBindingManager.getGlobalHash()); 030 031 if (parameterObject.getParameterName() != null) { 032 if (parameterObject.getParameterName().getColumnNameOnly() != null 033 && !"".equals(parameterObject.getParameterName().getColumnNameOnly())) { 034 this.name = parameterObject.getParameterName().getColumnNameOnly(); 035 } else { 036 this.name = parameterObject.getParameterName().toString(); 037 } 038 } 039 else if (parameterObject.getDataType() != null) { 040 this.name = "$" + index; 041 } 042 043 this.procedure = procedure; 044 this.mode = this.parameterObject.getParameterMode(); 045 this.dataType = this.parameterObject.getDataType(); 046 procedure.addArgument(this); 047 } else { 048 throw new IllegalArgumentException("Procedure Argument arguments can't be null."); 049 } 050 } 051 052 public Argument(OraclePackage oraclePackage, TParameterDeclaration parameterObject, int index) { 053 if (procedure != null && parameterObject != null) { 054 this.id = ++ModelBindingManager.get().TABLE_COLUMN_ID; 055 this.parameterObject = parameterObject; 056 TSourceToken startToken = parameterObject.getStartToken(); 057 TSourceToken endToken = parameterObject.getEndToken(); 058 this.startPosition = new Pair3<Long, Long, String>(startToken.lineNo, startToken.columnNo, ModelBindingManager.getGlobalHash()); 059 this.endPosition = new Pair3<Long, Long, String>(endToken.lineNo, 060 endToken.columnNo + (long) SQLUtil.endTrim(endToken.astext).length(), ModelBindingManager.getGlobalHash()); 061 062 if (parameterObject.getParameterName() != null) { 063 if (parameterObject.getParameterName().getColumnNameOnly() != null 064 && !"".equals(parameterObject.getParameterName().getColumnNameOnly())) { 065 this.name = parameterObject.getParameterName().getColumnNameOnly(); 066 } else { 067 this.name = parameterObject.getParameterName().toString(); 068 } 069 } 070 else if (parameterObject.getDataType() != null) { 071 this.name = "$" + index; 072 } 073 074 this.oraclePackage = oraclePackage; 075 this.mode = this.parameterObject.getParameterMode(); 076 this.dataType = this.parameterObject.getDataType(); 077 procedure.addArgument(this); 078 } else { 079 throw new IllegalArgumentException("Procedure Argument arguments can't be null."); 080 } 081 } 082 083 public long getId() { 084 return this.id; 085 } 086 087 public String getName() { 088 return this.name; 089 } 090 091 public Pair3<Long, Long, String> getStartPosition() { 092 return this.startPosition; 093 } 094 095 public Pair3<Long, Long, String> getEndPosition() { 096 return this.endPosition; 097 } 098 099 public Procedure getProcedure() { 100 return this.procedure; 101 } 102 103 public void setProcedure(Procedure procedure) { 104 this.procedure = procedure; 105 } 106 107 public OraclePackage getOraclePackage() { 108 return oraclePackage; 109 } 110 111 public void setOraclePackage(OraclePackage oraclePackage) { 112 this.oraclePackage = oraclePackage; 113 } 114 115 public void setId(int id) { 116 this.id = id; 117 } 118 119 public void setName(String name) { 120 this.name = name; 121 } 122 123 public void setStartPosition(Pair3<Long, Long, String> startPosition) { 124 this.startPosition = startPosition; 125 } 126 127 public void setEndPosition(Pair3<Long, Long, String> endPosition) { 128 this.endPosition = endPosition; 129 } 130 131 public TParameterDeclaration getParameterObject() { 132 return this.parameterObject; 133 } 134 135 public void setParameterObject(TParameterDeclaration parameterObject) { 136 this.parameterObject = parameterObject; 137 } 138 139 public EParameterMode getMode() { 140 return this.mode; 141 } 142 143 public void setMode(EParameterMode mode) { 144 this.mode = mode; 145 } 146 147 public TTypeName getDataType() { 148 return this.dataType; 149 } 150 151 public void setDataType(TTypeName dataType) { 152 this.dataType = dataType; 153 } 154}