From cd36a698312de3447e2306db3555b3077676c48d Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Sat, 19 Sep 2020 15:04:06 +0300 Subject: [PATCH] DBC model refactoring (AbtractStatement) --- .../cloudbeaver/service/sql/WebSQLProcessor.java | 14 ++++++++------ .../service/sql/WebSQLQueryResults.java | 13 +++++++++++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java index c0893bf4e2..9dfa520e34 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java @@ -177,7 +177,7 @@ public class WebSQLProcessor { { boolean hasResultSet = dbStat.executeStatement(); fillQueryResults(contextInfo, dataContainer, dbStat, hasResultSet, executeInfo, dataFilter, dataFormat); - } catch (DBCException e) { + } catch (DBException e) { throw new InvocationTargetException(e); } } @@ -209,7 +209,7 @@ public class WebSQLProcessor { DBDDataFilter dataFilter = filter.makeDataFilter(); DBExecUtils.tryExecuteRecover(monitor, connection.getDataSource(), param -> { try (DBCSession session = executionContext.openSession(monitor, DBCExecutionPurpose.USER, "Read data from container")) { - try (WebDataReceiver dataReceiver = new WebDataReceiver(contextInfo, dataContainer)) { + try (WebDataReceiver dataReceiver = new WebDataReceiver(contextInfo, dataContainer, dataFormat)) { DBCStatistics statistics = dataContainer.readData( new WebExecutionSource(dataContainer, executionContext, this), session, @@ -226,7 +226,7 @@ public class WebSQLProcessor { executeInfo.setResults(new WebSQLQueryResults[]{results}); executeInfo.setStatusMessage(dataReceiver.getResultSet().getRows().length + " row(s) fetched"); - } catch (DBCException e) { + } catch (DBException e) { throw new InvocationTargetException(e); } } @@ -446,7 +446,7 @@ public class WebSQLProcessor { boolean hasResultSet, @NotNull WebSQLExecuteInfo executeInfo, @NotNull WebSQLDataFilter filter, - @Nullable WebDataFormat dataFormat) throws DBCException { + @Nullable WebDataFormat dataFormat) throws DBException { List resultList = new ArrayList<>(); for (int i = 0; i < MAX_RESULTS_COUNT; i++) { @@ -456,7 +456,7 @@ public class WebSQLProcessor { if (resultSet == null) { break; } - try (WebDataReceiver dataReceiver = new WebDataReceiver(contextInfo, dataContainer)) { + try (WebDataReceiver dataReceiver = new WebDataReceiver(contextInfo, dataContainer, dataFormat)) { readResultSet(dbStat.getSession(), resultSet, filter, dataReceiver); results.setResultSet(dataReceiver.getResultSet()); } @@ -495,14 +495,16 @@ public class WebSQLProcessor { private class WebDataReceiver implements DBDDataReceiver { private final WebSQLContextInfo contextInfo; private DBSDataContainer dataContainer; + private WebDataFormat dataFormat; private WebSQLQueryResultSet webResultSet = new WebSQLQueryResultSet(); private DBDAttributeBinding[] bindings; private List rows = new ArrayList<>(); - public WebDataReceiver(WebSQLContextInfo contextInfo, DBSDataContainer dataContainer) { + WebDataReceiver(WebSQLContextInfo contextInfo, DBSDataContainer dataContainer, WebDataFormat dataFormat) { this.contextInfo = contextInfo; this.dataContainer = dataContainer; + this.dataFormat = dataFormat; } public WebSQLQueryResultSet getResultSet() { diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLQueryResults.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLQueryResults.java index 594bfa3c31..965a27f82e 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLQueryResults.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLQueryResults.java @@ -16,6 +16,7 @@ */ package io.cloudbeaver.service.sql; +import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.meta.Property; import java.util.List; @@ -51,8 +52,16 @@ public class WebSQLQueryResults { return resultSet; } - public void setResultSet(WebSQLQueryResultSet resultSet) { - this.resultSet = resultSet; + public void setResultSet(WebSQLQueryResultSet resultSet) throws DBException { + switch (dataFormat) { + case document: + + case table: + this.resultSet = resultSet; + break; + default: + throw new DBException("Data format " + dataFormat + " is not supported"); + } } public List getDocuments() {