001package gudusoft.gsqlparser.dlineage.dataflow.model.xml; 002 003import java.util.LinkedHashSet; 004import java.util.Set; 005 006import javax.xml.bind.annotation.XmlAttribute; 007import javax.xml.bind.annotation.XmlElement; 008import javax.xml.bind.annotation.XmlElementWrapper; 009import javax.xml.bind.annotation.XmlType; 010 011import gudusoft.gsqlparser.TSourceToken; 012import gudusoft.gsqlparser.dlineage.dataflow.model.ModelBindingManager; 013import gudusoft.gsqlparser.dlineage.dataflow.model.Transform; 014import gudusoft.gsqlparser.dlineage.util.Pair3; 015import gudusoft.gsqlparser.util.SQLUtil; 016 017@XmlType(propOrder = { "id", "server", "database", "schema", "name", "procedureName", "procedureId", "queryHashId", "type", "coordinate", "transforms"}) 018public class process { 019 020 private String id; 021 022 private String server; 023 024 private String database; 025 026 private String schema; 027 028 private String name; 029 030 private String procedureName; 031 032 private String procedureId; 033 034 private String queryHashId; 035 036 private String type; 037 038 private String coordinate; 039 040 private Set<transform> transforms; 041 042 public process() { 043 } 044 045 @XmlAttribute(required = false) 046 public String getCoordinate() { 047 if (ModelBindingManager.getGlobalOption()!=null && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) { 048 return null; 049 } 050 return this.coordinate; 051 } 052 053 public void setCoordinate(String coordinate) { 054 if (ModelBindingManager.getGlobalOption()!=null && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) { 055 return; 056 } 057 this.coordinate = coordinate; 058 } 059 060 @XmlAttribute(required = false) 061 public String getName() { 062 return this.name; 063 } 064 065 public void setName(String name) { 066 this.name = name; 067 } 068 069 @XmlAttribute(required = false) 070 public String getId() { 071 return this.id; 072 } 073 074 public void setId(String id) { 075 this.id = id; 076 } 077 078 @XmlAttribute(required = false) 079 public String getType() { 080 return this.type; 081 } 082 083 public void setType(String type) { 084 this.type = type; 085 } 086 087 @XmlAttribute(required = false) 088 public String getServer() { 089 return server; 090 } 091 092 public void setServer(String server) { 093 this.server = server; 094 } 095 096 @XmlAttribute(required = false) 097 public String getDatabase() { 098 return database; 099 } 100 101 public void setDatabase(String database) { 102 if (SQLUtil.parseNames(database).size() > 1) { 103 database = "\"" + database + "\""; 104 } 105 this.database = database; 106 } 107 108 @XmlAttribute(required = false) 109 public String getSchema() { 110 return schema; 111 } 112 113 public void setSchema(String schema) { 114 if (SQLUtil.parseNames(schema).size() > 1) { 115 schema = "\"" + schema + "\""; 116 } 117 this.schema = schema; 118 } 119 120 @XmlAttribute(required = false) 121 public String getProcedureName() { 122 return procedureName; 123 } 124 125 public void setProcedureName(String procedureName) { 126 this.procedureName = procedureName; 127 } 128 129 @XmlAttribute(required = false) 130 public String getProcedureId() { 131 return procedureId; 132 } 133 134 public void setProcedureId(String procedureId) { 135 this.procedureId = procedureId; 136 } 137 138 @XmlAttribute(required = false) 139 public String getQueryHashId() { 140 return queryHashId; 141 } 142 143 public void setQueryHashId(String queryHashId) { 144 this.queryHashId = queryHashId; 145 } 146 147 @XmlElementWrapper(name="transforms") 148 @XmlElement(name="transform", required = false) 149 public Set<transform> getTransforms() { 150 if (ModelBindingManager.getGlobalOption()!=null && !ModelBindingManager.getGlobalOption().isTransform()) { 151 return null; 152 } 153 return transforms; 154 } 155 156 public void setTransforms(Set<transform> transforms) { 157 if (ModelBindingManager.getGlobalOption()!=null && !ModelBindingManager.getGlobalOption().isTransform()) { 158 return; 159 } 160 this.transforms = transforms; 161 } 162 163 public void addTransform(Transform transform) { 164 if (ModelBindingManager.getGlobalOption() != null && !ModelBindingManager.getGlobalOption().isTransform()) { 165 return; 166 } 167 if (transform == null) 168 return; 169 if (transforms == null) { 170 transforms = new LinkedHashSet<transform>(); 171 } 172 173 transform t = new transform(); 174 if (transform.getCode() != null) { 175 if (ModelBindingManager.getGlobalOption().isTransformCoordinate()) { 176 TSourceToken startToken = transform.getCode().getStartToken(); 177 TSourceToken endToken = transform.getCode().getEndToken(); 178 Pair3<Long, Long, String> startPosition = new Pair3<Long, Long, String>(startToken.lineNo, 179 startToken.columnNo, ModelBindingManager.getGlobalHash()); 180 Pair3<Long, Long, String> endPosition = new Pair3<Long, Long, String>(endToken.lineNo, 181 endToken.columnNo + SQLUtil.endTrim(endToken.astext).length(), ModelBindingManager.getGlobalHash()); 182 t.setCoordinate(convertCoordinate(startPosition) + "," + convertCoordinate(endPosition)); 183 } 184 t.setCode(transform.getCode().toString()); 185 } else if (!SQLUtil.isEmpty(transform.getCodeString())) { 186 if (ModelBindingManager.getGlobalOption().isTransformCoordinate()) { 187 TSourceToken startToken = transform.getStartToken(); 188 TSourceToken endToken = transform.getEndToken(); 189 Pair3<Long, Long, String> startPosition = new Pair3<Long, Long, String>(startToken.lineNo, 190 startToken.columnNo, ModelBindingManager.getGlobalHash()); 191 Pair3<Long, Long, String> endPosition = new Pair3<Long, Long, String>(endToken.lineNo, 192 endToken.columnNo + SQLUtil.endTrim(endToken.astext).length(), ModelBindingManager.getGlobalHash()); 193 t.setCoordinate(convertCoordinate(startPosition) + "," + convertCoordinate(endPosition)); 194 } 195 t.setCode(transform.getCodeString()); 196 } 197 t.setType(transform.getType()); 198 transforms.add(t); 199 } 200 201 private Pair3<Long, Long, Integer> convertCoordinate(Pair3<Long, Long, String> position) { 202 return new Pair3<Long, Long, Integer>(position.first, position.second, 203 ModelBindingManager.getGlobalSqlInfo().getIndexOf(position.third)); 204 } 205}