001package gudusoft.gsqlparser.dlineage.dataflow.model; 002 003import java.util.List; 004 005import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; 006import gudusoft.gsqlparser.dlineage.dataflow.model.json.Coordinate; 007import gudusoft.gsqlparser.dlineage.util.Pair; 008import gudusoft.gsqlparser.dlineage.util.Pair3; 009import gudusoft.gsqlparser.dlineage.util.SqlInfoHelper; 010 011public class ErrorInfo { 012 013 public final static String SYNTAX_ERROR = "SyntaxError"; 014 public final static String SYNTAX_HINT = "SyntaxHint"; 015 public final static String ANALYZE_ERROR = "AnalyzeError"; 016 public final static String LINK_ORPHAN_COLUMN = "LinkOrphanColumn"; 017 public final static String METADATA_ERROR = "MetadataError"; 018 public final static String DYNAMIC_SQL_UNRESOLVED = "DynamicSqlUnresolved"; 019 020 private String errorMessage; 021 private String errorType; 022 protected Pair3<Long, Long, String> startPosition; 023 protected Pair3<Long, Long, String> endPosition; 024 025 private String fileName; 026 private String filePath; 027 private Pair<Long, Long> originStartPosition; 028 private Pair<Long, Long> originEndPosition; 029 030 public String getErrorMessage() { 031 return errorMessage; 032 } 033 034 public void setErrorMessage(String errorMessage) { 035 this.errorMessage = errorMessage; 036 } 037 038 public Pair3<Long, Long, String> getStartPosition() { 039 return startPosition; 040 } 041 042 public void setStartPosition(Pair3<Long, Long, String> startPosition) { 043 this.startPosition = startPosition; 044 } 045 046 public Pair3<Long, Long, String> getEndPosition() { 047 return endPosition; 048 } 049 050 public void setEndPosition(Pair3<Long, Long, String> endPosition) { 051 this.endPosition = endPosition; 052 } 053 054 public String getErrorType() { 055 return errorType; 056 } 057 058 public void setErrorType(String errorType) { 059 this.errorType = errorType; 060 } 061 062 public String getFileName() { 063 return fileName; 064 } 065 066 public void setFileName(String fileName) { 067 this.fileName = fileName; 068 } 069 070 public String getFilePath() { 071 return filePath; 072 } 073 074 public void setFilePath(String filePath) { 075 this.filePath = filePath; 076 } 077 078 public Pair<Long, Long> getOriginStartPosition() { 079 return originStartPosition; 080 } 081 082 public void setOriginStartPosition(Pair<Long, Long> originStartPosition) { 083 this.originStartPosition = originStartPosition; 084 } 085 086 public Pair<Long, Long> getOriginEndPosition() { 087 return originEndPosition; 088 } 089 090 public void setOriginEndPosition(Pair<Long, Long> originEndPosition) { 091 this.originEndPosition = originEndPosition; 092 } 093 094 public void fillInfo(DataFlowAnalyzer dataFlowAnalyzer) { 095 if (startPosition == null || endPosition == null) 096 return; 097 SqlInfoHelper helper = new SqlInfoHelper(dataFlowAnalyzer); 098 DbObjectPosition position = helper.getSelectedDbObjectInfo( 099 new Coordinate(startPosition.first, startPosition.second, startPosition.third), 100 new Coordinate(endPosition.first, endPosition.second, endPosition.third)); 101 if (position != null) { 102 if (position.getPositions() != null && position.getPositions().size() > 1) { 103 this.originStartPosition = new Pair<Long, Long>(position.getPositions().get(0).first.longValue(), 104 position.getPositions().get(0).second.longValue()); 105 this.originEndPosition = new Pair<Long, Long>(position.getPositions().get(1).first.longValue(), 106 position.getPositions().get(1).second.longValue()); 107 } 108 if (position.getFile() != null) { 109 this.fileName = position.getFile(); 110 } 111 if (position.getFilePath() != null) { 112 this.filePath = position.getFilePath(); 113 } 114 } 115 else { 116 List<SqlInfo> sqlInfos = dataFlowAnalyzer.getSqlInfos().get(startPosition.third); 117 if (sqlInfos != null && sqlInfos.size()>0) { 118 this.fileName = sqlInfos.get(0).getFileName(); 119 this.filePath = sqlInfos.get(0).getFilePath(); 120 } 121 } 122 } 123 124 @Override 125 public String toString() { 126 StringBuilder sb = new StringBuilder(); 127 sb.append("Error Message: ").append(errorMessage).append("\n"); 128 sb.append("Error Type : ").append(errorType).append("\n"); 129 130 if (startPosition != null) { 131 sb.append("Start Position: ").append(startPosition.first).append(", ").append(startPosition.second).append("\n"); 132 } 133 134 if (endPosition != null) { 135 sb.append("End Position: ").append(endPosition.first).append(", ").append(endPosition.second).append("\n"); 136 } 137 sb.append("File Path : ").append(filePath).append("\n"); 138 return sb.toString(); 139 } 140}