diff --git a/core/src/main/java/org/polypheny/db/adapter/DataSource.java b/core/src/main/java/org/polypheny/db/adapter/DataSource.java index 96aea10ac9..dc226f51f9 100644 --- a/core/src/main/java/org/polypheny/db/adapter/DataSource.java +++ b/core/src/main/java/org/polypheny/db/adapter/DataSource.java @@ -116,4 +116,7 @@ private AdapterType getAdapterType() { return AdapterType.SOURCE; } + + public void testConnection(){} + } diff --git a/plugins/csv-adapter/src/main/java/org/polypheny/db/adapter/csv/CsvSource.java b/plugins/csv-adapter/src/main/java/org/polypheny/db/adapter/csv/CsvSource.java index fc9f821aae..a936de5de3 100644 --- a/plugins/csv-adapter/src/main/java/org/polypheny/db/adapter/csv/CsvSource.java +++ b/plugins/csv-adapter/src/main/java/org/polypheny/db/adapter/csv/CsvSource.java @@ -345,4 +345,35 @@ private void addInformationExportedColumns() { } } + + public void testConnection(){ + File directory = new File(csvDir.getPath()); + + // Check if the directory exists + if (!directory.exists() ) { + throw new Error("The specified path is not a valid directory."); + } + + // List all files in the directory + File[] files = directory.listFiles(); + if(files == null) + throw new Error("THERE IS NO CSV FILE TO UPLOAD. "); + + int badFiles = 0; + if (files != null) { + // Check each file if it has a .csv extension + for (File file : files) { + System.out.println(file.getName()); + if (!file.isFile() || !file.getName().toLowerCase().endsWith(".csv")) + badFiles++; + + } + } + + if(badFiles==files.length) + throw new Error("NO VALID CSV FILE FOUND. "); + + + } + } diff --git a/plugins/excel-adapter/src/main/java/org/polypheny/db/adapter/excel/ExcelSource.java b/plugins/excel-adapter/src/main/java/org/polypheny/db/adapter/excel/ExcelSource.java index 660bc62455..2e63975943 100644 --- a/plugins/excel-adapter/src/main/java/org/polypheny/db/adapter/excel/ExcelSource.java +++ b/plugins/excel-adapter/src/main/java/org/polypheny/db/adapter/excel/ExcelSource.java @@ -353,4 +353,30 @@ private void addInformationExportedColumns() { } } + + @Override + public void testConnection() { + + File directory = new File(excelDir.getPath()); + // Check if the directory exists + if (!directory.exists() ) { + shutdown(); + throw new Error("The specified path is not a valid directory."); + } + File[] files = directory.listFiles(); + + int goodFile=0; + for(File file : files){ + String fileName = file.getName(); + if(fileName.endsWith( ".xlsx" ) || fileName.endsWith( ".xlsx.gz" ) || fileName.endsWith( ".xls" ) || fileName.endsWith( ".xls.gz" )) + goodFile++; + } + if(goodFile==0){ + throw new RuntimeException("No Excel sheet found."); + } + + + } + + } diff --git a/plugins/file-adapter/src/main/java/org/polypheny/db/adapter/file/source/Qfs.java b/plugins/file-adapter/src/main/java/org/polypheny/db/adapter/file/source/Qfs.java index 0f0f449820..df66d9d31c 100644 --- a/plugins/file-adapter/src/main/java/org/polypheny/db/adapter/file/source/Qfs.java +++ b/plugins/file-adapter/src/main/java/org/polypheny/db/adapter/file/source/Qfs.java @@ -32,8 +32,11 @@ import java.util.StringJoiner; import lombok.Getter; import lombok.extern.slf4j.Slf4j; +import org.apache.calcite.linq4j.AbstractEnumerable; +import org.apache.calcite.linq4j.Enumerator; import org.polypheny.db.adapter.Adapter.AdapterProperties; import org.polypheny.db.adapter.Adapter.AdapterSettingString; +import org.polypheny.db.adapter.AdapterManager; import org.polypheny.db.adapter.DataSource; import org.polypheny.db.adapter.DeployMode; import org.polypheny.db.catalog.entity.CatalogColumnPlacement; @@ -302,4 +305,13 @@ protected void registerInformationPage( String uniqueName ) { } } + + @Override + public void testConnection(){ + + if(currentSchema.getConvention().getFileSchema().getRootDir()==null) + throw new RuntimeException("The specified QFS root dir does not exist!"); + + } + } diff --git a/plugins/monetdb-adapter/src/main/java/org/polypheny/db/adapter/monetdb/sources/MonetdbSource.java b/plugins/monetdb-adapter/src/main/java/org/polypheny/db/adapter/monetdb/sources/MonetdbSource.java index d29bbb3589..93abde72da 100644 --- a/plugins/monetdb-adapter/src/main/java/org/polypheny/db/adapter/monetdb/sources/MonetdbSource.java +++ b/plugins/monetdb-adapter/src/main/java/org/polypheny/db/adapter/monetdb/sources/MonetdbSource.java @@ -28,6 +28,7 @@ import org.polypheny.db.adapter.Adapter.AdapterSettingString; import org.polypheny.db.adapter.DeployMode; import org.polypheny.db.adapter.jdbc.connection.ConnectionFactory; +import org.polypheny.db.adapter.jdbc.connection.ConnectionHandler; import org.polypheny.db.adapter.jdbc.connection.TransactionalConnectionFactory; import org.polypheny.db.adapter.jdbc.sources.AbstractJdbcSource; import org.polypheny.db.catalog.Adapter; @@ -38,6 +39,9 @@ import org.polypheny.db.schema.Table; import org.polypheny.db.sql.language.SqlDialect; import org.polypheny.db.sql.language.dialect.MonetdbSqlDialect; +import org.polypheny.db.transaction.PUID; +import org.polypheny.db.transaction.PUID.Type; +import org.polypheny.db.transaction.PolyXid; @Slf4j @@ -133,4 +137,22 @@ protected boolean requiresSchema() { return true; } + + @Override + public void testConnection(){ + + PolyXid randomXid = PolyXid.generateLocalTransactionIdentifier( PUID.randomPUID( Type.NODE ), PUID.randomPUID( Type.TRANSACTION ) ); + ConnectionHandler connectionHandler = connectionFactory.getConnectionHandler(randomXid); + + // Execute an Postgres query + String sql = "SELECT 1"; + + try { + connectionHandler.executeQuery( sql ); + } catch ( SQLException e ) { + throw new RuntimeException( e ); + } + } } + + diff --git a/plugins/mysql-adapter/src/main/java/org/polypheny/db/adapter/jdbc/MysqlSourcePlugin.java b/plugins/mysql-adapter/src/main/java/org/polypheny/db/adapter/jdbc/MysqlSourcePlugin.java index e817d6f23c..17c1622d23 100644 --- a/plugins/mysql-adapter/src/main/java/org/polypheny/db/adapter/jdbc/MysqlSourcePlugin.java +++ b/plugins/mysql-adapter/src/main/java/org/polypheny/db/adapter/jdbc/MysqlSourcePlugin.java @@ -29,6 +29,7 @@ import org.polypheny.db.adapter.Adapter.AdapterSettingList; import org.polypheny.db.adapter.Adapter.AdapterSettingString; import org.polypheny.db.adapter.DeployMode; +import org.polypheny.db.adapter.jdbc.connection.ConnectionHandler; import org.polypheny.db.adapter.jdbc.sources.AbstractJdbcSource; import org.polypheny.db.catalog.Adapter; import org.polypheny.db.catalog.entity.CatalogColumnPlacement; @@ -37,6 +38,9 @@ import org.polypheny.db.schema.Schema; import org.polypheny.db.schema.Table; import org.polypheny.db.sql.language.dialect.MysqlSqlDialect; +import org.polypheny.db.transaction.PUID; +import org.polypheny.db.transaction.PUID.Type; +import org.polypheny.db.transaction.PolyXid; public class MysqlSourcePlugin extends Plugin { @@ -135,6 +139,22 @@ protected boolean requiresSchema() { return false; } + + @Override + public void testConnection(){ + + PolyXid randomXid = PolyXid.generateLocalTransactionIdentifier( PUID.randomPUID( Type.NODE ), PUID.randomPUID( Type.TRANSACTION ) ); + ConnectionHandler connectionHandler = connectionFactory.getConnectionHandler(randomXid); + + // Execute an Postgres query + String sql = "SELECT 1"; + + try { + connectionHandler.executeQuery( sql ); + } catch ( SQLException e ) { + throw new RuntimeException( e ); + } + } } -} \ No newline at end of file +} diff --git a/plugins/postgres-adapter/src/main/java/org/polypheny/db/adapter/postgres/source/PostgresqlSource.java b/plugins/postgres-adapter/src/main/java/org/polypheny/db/adapter/postgres/source/PostgresqlSource.java index f18597a0b7..25af357db5 100644 --- a/plugins/postgres-adapter/src/main/java/org/polypheny/db/adapter/postgres/source/PostgresqlSource.java +++ b/plugins/postgres-adapter/src/main/java/org/polypheny/db/adapter/postgres/source/PostgresqlSource.java @@ -27,6 +27,7 @@ import org.polypheny.db.adapter.Adapter.AdapterSettingList; import org.polypheny.db.adapter.Adapter.AdapterSettingString; import org.polypheny.db.adapter.DeployMode; +import org.polypheny.db.adapter.jdbc.connection.ConnectionHandler; import org.polypheny.db.adapter.jdbc.sources.AbstractJdbcSource; import org.polypheny.db.catalog.Adapter; import org.polypheny.db.catalog.entity.CatalogColumnPlacement; @@ -35,6 +36,9 @@ import org.polypheny.db.schema.Schema; import org.polypheny.db.schema.Table; import org.polypheny.db.sql.language.dialect.PostgresqlSqlDialect; +import org.polypheny.db.transaction.PUID; +import org.polypheny.db.transaction.PUID.Type; +import org.polypheny.db.transaction.PolyXid; @Slf4j @@ -124,4 +128,20 @@ protected boolean requiresSchema() { return true; } + @Override + public void testConnection(){ + + PolyXid randomXid = PolyXid.generateLocalTransactionIdentifier( PUID.randomPUID( Type.NODE ), PUID.randomPUID( Type.TRANSACTION ) ); + ConnectionHandler connectionHandler = connectionFactory.getConnectionHandler(randomXid); + + // Execute an Postgres query + String sql = "SELECT 1"; + + try { + connectionHandler.executeQuery( sql ); + } catch ( SQLException e ) { + throw new RuntimeException( e ); + } + } + }