View Javadoc

1   /*
2    * Copyright 2006-2007 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.springframework.batch.sample.common;
18  
19  import java.sql.ResultSet;
20  import java.sql.ResultSetMetaData;
21  import java.sql.SQLException;
22  import java.util.ArrayList;
23  import java.util.List;
24  
25  import org.springframework.batch.item.file.transform.DefaultFieldSet;
26  import org.springframework.batch.item.file.transform.FieldSet;
27  
28  /**
29   * ResultSetExtractor implementation that returns list of FieldSets
30   * for given ResultSet.
31   * 
32   * @author peter.zozom
33   *
34   */
35  public final class FieldSetResultSetExtractor {
36  	
37  	// utility class not meant for instantiation
38  	private FieldSetResultSetExtractor(){}
39  
40  	/**
41  	 * Processes single row in ResultSet and returns its FieldSet representation.
42  	 * @param rs ResultSet ResultSet to extract data from.
43  	 * @return FieldSet representation of current row in ResultSet
44  	 * @throws SQLException thrown during processing
45  	 */
46  	public static FieldSet getFieldSet(ResultSet rs) throws SQLException {
47          ResultSetMetaData metaData = rs.getMetaData();
48          int columnCount = metaData.getColumnCount();
49  
50          FieldSet fs;
51          
52          List<String> tokens = new ArrayList<String>();
53          List<String> names = new ArrayList<String>();
54  
55          for (int i = 1; i <= columnCount; i++) {
56              tokens.add(rs.getString(i));
57              names.add(metaData.getColumnName(i));
58          }
59  
60          fs = new DefaultFieldSet(tokens.toArray(new String[0]), names.toArray(new String[0]));
61  
62          return fs;	
63  	}
64  
65  }