View Javadoc

1   package org.kuali.common.impex.data.service.impl;
2   
3   import java.sql.Connection;
4   import java.util.List;
5   
6   import javax.sql.DataSource;
7   
8   import org.kuali.common.impex.data.service.DumpDataContext;
9   import org.kuali.common.impex.data.service.DumpDataService;
10  import org.kuali.common.jdbc.JdbcUtils;
11  import org.kuali.common.threads.ElementHandler;
12  import org.kuali.common.threads.ListIteratorContext;
13  import org.slf4j.Logger;
14  import org.slf4j.LoggerFactory;
15  import org.springframework.jdbc.datasource.DataSourceUtils;
16  
17  public class DumpTableBucketHandler implements ElementHandler<DumpTableBucket> {
18  
19  	private static final Logger logger = LoggerFactory.getLogger(DumpTableBucketHandler.class);
20  
21  	@Override
22  	public void handleElement(ListIteratorContext<DumpTableBucket> context, int index, DumpTableBucket element) {
23  		DataSource dataSource = null;
24  		Connection conn = null;
25  		try {
26  			List<DumpTableContext> tables = element.getTables();
27  			DumpDataService service = element.getService();
28  			DumpDataContext impex = element.getContext();
29  			dataSource = impex.getDataSource();
30  			List<DumpTableResult> results = element.getResults();
31  			conn = DataSourceUtils.getConnection(dataSource);
32  			for (DumpTableContext tableContext : tables) {
33  				logger.debug("Dumping {}", tableContext.getTable().getName());
34  				DumpTableResult result = service.dumpTable(impex, tableContext, conn);
35  				synchronized (results) {
36  					results.add(result);
37  				}
38  			}
39  		} catch (Exception e) {
40  			throw new IllegalStateException(e);
41  		} finally {
42  			JdbcUtils.closeQuietly(dataSource, conn);
43  		}
44  	}
45  }