All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prerna.engine.api.IRDBMSEngine Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 * Copyright 2015 Defense Health Agency (DHA)
 *
 * If your use of this software does not include any GPLv2 components:
 * 	Licensed under the Apache License, Version 2.0 (the "License");
 * 	you may not use this file except in compliance with the License.
 * 	You may obtain a copy of the License at
 *
 * 	  http://www.apache.org/licenses/LICENSE-2.0
 *
 * 	Unless required by applicable law or agreed to in writing, software
 * 	distributed under the License is distributed on an "AS IS" BASIS,
 * 	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * 	See the License for the specific language governing permissions and
 * 	limitations under the License.
 * ----------------------------------------------------------------------------
 * If your use of this software includes any GPLv2 components:
 * 	This program is free software; you can redistribute it and/or
 * 	modify it under the terms of the GNU General Public License
 * 	as published by the Free Software Foundation; either version 2
 * 	of the License, or (at your option) any later version.
 *
 * 	This program is distributed in the hope that it will be useful,
 * 	but WITHOUT ANY WARRANTY; without even the implied warranty of
 * 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * 	GNU General Public License for more details.
 *******************************************************************************/
package prerna.engine.api;

import java.sql.DatabaseMetaData;
import java.sql.SQLException;

import com.zaxxer.hikari.HikariDataSource;

import prerna.util.sql.AbstractSqlQueryUtil;
import prerna.util.sql.RdbmsTypeEnum;

/**
 * An Abstract Engine that sets up the base constructs needed to create an
 * engine.
 */
public interface IRDBMSEngine extends IDatabaseEngine {

	/**
	 * Get the connection
	 * @return
	 * @throws SQLException
	 */
	java.sql.Connection getConnection() throws SQLException;
	
	/**
	 * Make the connection and return it
	 * @return
	 * @throws SQLException
	 */
	java.sql.Connection makeConnection() throws SQLException;
	
	/**
	 * This is intended to be executed via doAction
	 * @param args			Object[] where the first index is the table name
	 * 						and every other entry are the column names
	 * @return				PreparedStatement to perform a bulk insert
	 * @throws SQLException 
	 */
	java.sql.PreparedStatement bulkInsertPreparedStatement(Object[] args) throws SQLException;
	
	/**
	 * This is to get a prepared statement based on the input query
	 * @param query
	 * @return
	 * @throws SQLException 
	 */
	java.sql.PreparedStatement getPreparedStatement(String sql) throws SQLException;
	
	/**
	 * Return the engine metadata
	 * @return
	 */
	DatabaseMetaData getConnectionMetadata();
	
	/**
	 * Get the RDBMS Type Enum
	 * @return
	 */
	RdbmsTypeEnum getDbType();
	
	/**
	 * Get the query util
	 * @return
	 */
	AbstractSqlQueryUtil getQueryUtil();
	
	/**
	 * Get the schema if its defined
	 * @return
	 */
	public String getSchema();
	
	/**
	 * Get the database if its defined
	 * @return
	 */
	public String getDatabase();
	
	/**
	 * Get the connection url
	 * @return
	 */
	String getConnectionUrl();

	/**
	 * Get the data source
	 * @return
	 */
	HikariDataSource getDataSource();
	
	/**
	 * Get if the database is using connection pooling or a single connection
	 * @return
	 */
	boolean isConnectionPooling();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy