001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.camel.component.ibatis.strategy;
018
019 import java.sql.Connection;
020 import java.util.List;
021
022 import com.ibatis.sqlmap.client.SqlMapClient;
023
024 import org.apache.camel.Exchange;
025 import org.apache.camel.component.ibatis.IBatisEndpoint;
026 import org.apache.camel.component.ibatis.IBatisPollingConsumer;
027
028 /**
029 * Default strategy for consuming messages for a route
030 */
031 public class DefaultIBatisProcessingStategy implements IBatisProcessingStrategy {
032
033 public void commit(IBatisEndpoint endpoint, Exchange exchange, Object data, String consumeStatements) throws Exception {
034 SqlMapClient client = endpoint.getSqlMapClient();
035 boolean useTrans = endpoint.isUseTransactions();
036 String[] statements = consumeStatements.split(",");
037 try {
038 if (useTrans) {
039 client.startTransaction(Connection.TRANSACTION_REPEATABLE_READ);
040 }
041 for (String statement : statements) {
042 client.update(statement.trim(), data);
043 }
044 if (useTrans) {
045 client.commitTransaction();
046 }
047 } finally {
048 if (useTrans) {
049 client.endTransaction();
050 }
051 }
052 }
053
054 public List poll(IBatisPollingConsumer consumer, IBatisEndpoint endpoint) throws Exception {
055 SqlMapClient client = endpoint.getSqlMapClient();
056 return client.queryForList(endpoint.getStatement(), null);
057 }
058 }