use of com.axway.ats.core.dbaccess.exceptions.DbException in project ats-framework by Axway.
the class DatabaseOperations method getDatabaseData.
/**
* Gets some data from a database table. </br>
* <em>Note</em> that client may need to inspect returned type of each value and
* optionally convert it to get value in specific format.
*
* @param sqlQuery the SQL SELECT query to run. Client is resposible for any
* possible escaping needed so this is not security-safe method
* @return the found database data
*/
@PublicAtsApi
public DatabaseRow[] getDatabaseData(String sqlQuery) {
List<DatabaseRow> dbRows = new ArrayList<DatabaseRow>();
try {
log.debug("Executing query: " + sqlQuery);
DbRecordValuesList[] rsList = dbProvider.select(sqlQuery);
if (rsList != null) {
for (DbRecordValuesList rs : rsList) {
Iterator<DbRecordValue> it = rs.iterator();
if (it.hasNext()) {
DatabaseRow dbRow = new DatabaseRow();
while (it.hasNext()) {
DbRecordValue dbRecordValue = it.next();
dbRow.addCell(new DatabaseCell(dbRecordValue.getDbColumn().getColumnName(), dbRecordValue.getValueAsString()));
}
dbRows.add(dbRow);
}
}
}
return dbRows.toArray(new DatabaseRow[dbRows.size()]);
} catch (DbException e) {
throw new DatabaseOperationsException("Error getting data from DB with query '" + sqlQuery + "'", e);
}
}
use of com.axway.ats.core.dbaccess.exceptions.DbException in project ats-framework by Axway.
the class DatabaseOperations method execute.
/**
*
* Executes SQL statement, which must be an SQL Data Manipulation Language (DML) statement,
* such as INSERT, UPDATE or DELETE, or an SQL statement that returns nothing, such as a DDL statement.
*
* @param sqlQuery the SQL query to run
*/
@PublicAtsApi
public void execute(String sqlQuery) {
try {
log.debug("Executing query: '" + sqlQuery + "'");
dbProvider.executeUpdate(sqlQuery);
} catch (DbException e) {
throw new DatabaseOperationsException("Error executing query '" + sqlQuery + "'", e);
}
}
use of com.axway.ats.core.dbaccess.exceptions.DbException in project ats-framework by Axway.
the class DatabaseOperations method insertValues.
/**
* Run insert query
*
* @param tableName the table to insert values in
* @param columnNames the columns where values will be inserted
* @param columnValues the values to insert
*/
@PublicAtsApi
public void insertValues(String tableName, String[] columnNames, String[] columnValues) {
Map<String, String> columns = new HashMap<String, String>();
if (columnNames.length != columnValues.length) {
throw new DatabaseOperationsException("The number of columns [" + columnNames.length + "] is not the same as the number of values [" + columnValues.length + "]");
}
for (int i = 0; i < columnNames.length; i++) {
columns.put(columnNames[i], columnValues[i]);
}
try {
log.debug("Executing insert query in table '" + tableName + "'");
int rowsInserted = dbProvider.insertRow(tableName, columns);
if (rowsInserted == 0) {
// this should never happen
throw new DatabaseOperationsException("No data was inserted into table '" + tableName + "'");
}
} catch (DbException e) {
throw new DatabaseOperationsException("Error executing insert query in table '" + tableName + "'", e);
}
}
use of com.axway.ats.core.dbaccess.exceptions.DbException in project ats-framework by Axway.
the class DatabaseProviderFactory method loadDbConnection.
private static DbConnection loadDbConnection(String className, String dbType, String dbHost, String dbName, String dbUser, String dbPass, int dbPort, Map<String, Object> customProperties) {
Class<?> dbConnectionClass = null;
// load db connection class
try {
dbConnectionClass = Class.forName(className);
} catch (ClassNotFoundException e) {
throw new DbException("Unable to get database provider for type '" + dbType + "'", e);
}
// load db connection constructor
Constructor<?> constructor = null;
try {
constructor = new MethodFinder(dbConnectionClass).findConstructor(new Class[] { String.class, String.class, String.class, String.class, Map.class });
} catch (NoSuchMethodException | AmbiguousMethodException e) {
throw new DbException("Unable to get database provider for type '" + dbType + "'", e);
}
// create DbConnection class for this dbType
DbConnection dbConnection = null;
try {
dbConnection = (DbConnection) constructor.newInstance(new Object[] { dbHost, dbName, dbUser, dbPass, customProperties });
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
throw new DbException("Unable to get database provider for type '" + dbType + "'", e);
}
return dbConnection;
}
use of com.axway.ats.core.dbaccess.exceptions.DbException in project ats-framework by Axway.
the class DatabaseProviderFactory method loadCustomDbProvider.
private static DbProvider loadCustomDbProvider(String className, DbConnection dbConnection) {
Class<?> dbProviderClass = null;
// load db provider class
try {
dbProviderClass = Class.forName(className);
} catch (ClassNotFoundException e) {
throw new DbException("Unable to get database provider for type '" + dbConnection.getDbType() + "'", e);
}
// load db provider constructor
Constructor<?> constructorDbProvider = null;
try {
constructorDbProvider = new MethodFinder(dbProviderClass).findConstructor(new Class[] { DbConnection.class });
} catch (NoSuchMethodException | AmbiguousMethodException e) {
throw new DbException("Unable to get database provider for type '" + dbConnection.getDbType() + "'", e);
}
// create DbProvider class for this dbType
try {
return (DbProvider) constructorDbProvider.newInstance(new Object[] { dbConnection });
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
throw new DbException("Unable to get database provider for type '" + dbConnection.getDbType() + "'", e);
}
}
Aggregations