![JAR search and dependency download from the Maven repository](/logo.png)
metridoc.camel.component.sqlplus.SqlPlusConsumer.groovy Maven / Gradle / Ivy
The newest version!
/*
* Copyright 2010 Trustees of the University of Pennsylvania Licensed under the
* Educational Community 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.osedu.org/licenses/ECL-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.
*/
package metridoc.camel.component.sqlplus
import org.apache.camel.impl.DefaultConsumer
import org.apache.camel.Processor
import javax.sql.DataSource
import groovy.sql.Sql
import java.sql.Statement
import java.sql.ResultSet
import java.sql.Connection
/**
* Created by IntelliJ IDEA.
* User: tbarker
* Date: 8/4/11
* Time: 3:40 PM
*/
@Mixin(SqlPlusMixin.class)
class SqlPlusConsumer extends DefaultConsumer {
Boolean release = false
ResultSet resultSet
SqlUnManagedResultSet sqlUnManaged
SqlPlusConsumer(SqlPlusEndpoint endpoint, Processor processor) {
super(endpoint, processor)
}
SqlUnManagedResultSet getSqlUnManaged() {
if(sqlUnManaged) {
return sqlUnManaged
}
sqlUnManaged = new SqlUnManagedResultSet(getDataSource())
sqlUnManaged.withStatement {
it.setFetchSize(fetchSize)
}
return sqlUnManaged
}
String getTableQuery() {
def result = query
if (!result.startsWith("select")) {
result = "select * from ${query}"
}
return result
}
@Override
protected void doStart() {
super.doStart()
def sql = getSqlUnManaged()
String command = getTableQuery()
sql.query(command) {ResultSet resultSet ->
def exchange = endpoint.createExchange()
exchange.in.setBody(resultSet)
def processor = getProcessor()
processor.process(exchange)
}
}
@Override
protected void doStop() {
getSqlUnManaged().close()
}
}
class SqlUnManagedResultSet extends Sql {
Connection connection
Statement statement
ResultSet results
SqlUnManagedResultSet(DataSource dataSource) {
super(dataSource)
}
/**
* overrides the default implementation so that the {@link ResultSet} does not get closed too early
* @param connection
* @param statement
* @param results
*/
@Override
protected void closeResources(Connection connection, Statement statement, ResultSet results) {
this.connection = connection
this.statement = statement
this.results = results
}
@Override
void close() {
super.closeResources(connection, statement, results)
super.close()
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy