View Javadoc
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  }