From 0d79dc4c0651baf7c3bea02fc82c4242d575f7ec Mon Sep 17 00:00:00 2001 From: jurgen Date: Wed, 19 Aug 2015 12:27:37 +0000 Subject: [PATCH] Firebird error position --- .../ext/firebird/model/FireBirdMetaModel.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/plugins/org.jkiss.dbeaver.ext.firebird/src/org/jkiss/dbeaver/ext/firebird/model/FireBirdMetaModel.java b/plugins/org.jkiss.dbeaver.ext.firebird/src/org/jkiss/dbeaver/ext/firebird/model/FireBirdMetaModel.java index f22b1b8adc..69fe777929 100644 --- a/plugins/org.jkiss.dbeaver.ext.firebird/src/org/jkiss/dbeaver/ext/firebird/model/FireBirdMetaModel.java +++ b/plugins/org.jkiss.dbeaver.ext.firebird/src/org/jkiss/dbeaver/ext/firebird/model/FireBirdMetaModel.java @@ -23,17 +23,21 @@ import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.ext.firebird.FireBirdUtils; import org.jkiss.dbeaver.ext.generic.model.*; import org.jkiss.dbeaver.ext.generic.model.meta.GenericMetaModel; +import org.jkiss.dbeaver.model.DBPErrorAssistant; import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose; import org.jkiss.dbeaver.model.exec.jdbc.JDBCPreparedStatement; import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet; import org.jkiss.dbeaver.model.exec.jdbc.JDBCSession; import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.utils.CommonUtils; import org.osgi.framework.Version; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * FireBirdDataSource @@ -42,6 +46,8 @@ public class FireBirdMetaModel extends GenericMetaModel { static final Log log = Log.getLog(FireBirdMetaModel.class); + private Pattern ERROR_POSITION_PATTERN = Pattern.compile(" line ([0-9]+), column ([0-9]+)"); + public FireBirdMetaModel(IConfigurationElement cfg) { super(cfg); } @@ -120,4 +126,18 @@ public class FireBirdMetaModel extends GenericMetaModel } } + @Override + public DBPErrorAssistant.ErrorPosition getErrorPosition(Throwable error) { + String message = error.getMessage(); + if (!CommonUtils.isEmpty(message)) { + Matcher matcher = ERROR_POSITION_PATTERN.matcher(message); + if (matcher.find()) { + DBPErrorAssistant.ErrorPosition pos = new DBPErrorAssistant.ErrorPosition(); + pos.line = Integer.parseInt(matcher.group(1)) - 1; + pos.position = Integer.parseInt(matcher.group(2)) - 1; + return pos; + } + } + return null; + } } -- GitLab