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