1 /*** 2 * Copyright (c) 2003 held jointly by the individual authors. 3 * 4 * This library is free software; you can redistribute it and/or modify it 5 * under the terms of the GNU Lesser General Public License as published 6 * by the Free Software Foundation; either version 2.1 of the License, or 7 * (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, but 10 * WITHOUT ANY WARRANTY; with out even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public License 15 * along with this library; if not, write to the Free Software Foundation, 16 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 17 * 18 * > http://www.gnu.org/copyleft/lesser.html 19 * > http://www.opensource.org/licenses/lgpl-license.php 20 */ 21 package net.mlw.vlh.adapter.jdbc.util.setter; 22 23 import java.sql.PreparedStatement; 24 import java.sql.SQLException; 25 import java.text.ParseException; 26 import java.util.ArrayList; 27 import java.util.List; 28 import java.util.StringTokenizer; 29 30 /*** 31 * Consumes a String[] and sets multiple String(s) on the Statement. 32 * 33 * @author Matthew L. Wilson 34 * @version $Revision: 1.6 $ $Date: 2005/12/19 10:58:01 $ 35 */ 36 public class StringArraySetter extends AbstractArraySetter 37 { 38 private String token; 39 40 /*** 41 * @see net.mlw.vlh.adapter.jdbc.util.Setter#getReplacementString(java.lang.Object) 42 */ 43 public String getReplacementString(Object value) 44 { 45 if (token != null && (value instanceof String)) 46 { 47 List tokens = new ArrayList(); 48 for (StringTokenizer st = new StringTokenizer((String) value, token); st.hasMoreTokens();) 49 { 50 tokens.add(st.nextToken()); 51 } 52 53 value = (String[]) tokens.toArray(new String[] {}); 54 } 55 56 return super.getReplacementString(value); 57 } 58 59 /*** 60 * @see net.mlw.vlh.adapter.jdbc.util.Setter#set(java.sql.PreparedStatement, int, 61 * java.lang.Object) 62 */ 63 public int set(PreparedStatement query, int index, Object value) throws SQLException, ParseException 64 { 65 String[] values = (value instanceof String[]) ? (String[]) value : new String[] 66 { (String) value }; 67 68 if (token != null && (value instanceof String)) 69 { 70 List tokens = new ArrayList(); 71 for (StringTokenizer st = new StringTokenizer((String) value, token); st.hasMoreTokens();) 72 { 73 String token = st.nextToken(); 74 tokens.add(token); 75 } 76 77 values = (String[]) tokens.toArray(new String[] {}); 78 } 79 80 for (int i = 0, length = values.length; i < length; i++) 81 { 82 query.setString(index++, values[i]); 83 } 84 85 return index; 86 } 87 88 /*** 89 * @param token 90 * The token to set. 91 */ 92 public void setToken(String token) 93 { 94 this.token = token; 95 } 96 }