KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > mlw > vlh > adapter > jdbc > objectWrapper > DefaultWrapperAdapter


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 under
5  * the terms of the GNU Lesser General Public License as published by the Free
6  * Software Foundation; either version 2.1 of the License, or (at your option)
7  * any later version.
8  *
9  * This library is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; with out even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
12  * 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, Inc.,
16  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. >
17  * http://www.gnu.org/copyleft/lesser.html >
18  * http://www.opensource.org/licenses/lgpl-license.php
19  */

20 package net.mlw.vlh.adapter.jdbc.objectWrapper;
21
22 import java.sql.ResultSet JavaDoc;
23 import java.sql.SQLException JavaDoc;
24 import java.util.ArrayList JavaDoc;
25 import java.util.List JavaDoc;
26
27 import net.mlw.vlh.ValueListInfo;
28 import net.mlw.vlh.adapter.jdbc.AbstractJdbcAdapter;
29 import net.mlw.vlh.adapter.util.ObjectWrapper;
30
31 import org.apache.commons.logging.Log;
32 import org.apache.commons.logging.LogFactory;
33
34 /**
35  * DefaultIdWrappedAdapter wrap original record by calling interface
36  * <code>ObjectWrapper</code> method
37  * <code>getWrappedRecord(Object objectToBeWrapped)</code> and with this
38  * result populate the final valueList.. objectToBeWrapped could be whole
39  * resultSet or specific column from resultSet.
40  *
41  * @see net.mlw.vlh.adapter.util.ObjectWrapper
42  * @see net.mlw.vlh.adapter.util.ObjectValidator
43  * @see net.mlw.vlh.adapter.jdbc.objectWrapper.ResultSetDecorator
44  * @see net.mlw.vlh.adapter.jdbc.AbstractJdbcAdapter
45  *
46  * @author Andrej Zachar
47  * @version $Revision: 1.9 $ $Date: 2005/10/17 11:40:25 $
48  */

49 public class DefaultWrapperAdapter extends AbstractJdbcAdapter
50 {
51    /**
52     * Logger for this class
53     */

54    private static final Log LOGGER = LogFactory.getLog(DefaultWrapperAdapter.class);
55
56    private String JavaDoc _columnName = null;
57
58    private int _columnNumber = 1;
59
60    private ObjectWrapper _wrapper;
61
62    private boolean wrapResultSet = false;
63
64    /**
65     * @param result
66     * @return
67     * @throws SQLException
68     */

69    private Object JavaDoc getOrignalRecord(ResultSet JavaDoc result) throws SQLException JavaDoc
70    {
71       if (wrapResultSet)
72       {
73          return result;
74       }
75       else
76       {
77          if (_columnName != null && _columnName.length() > 0)
78          {
79             return result.getObject(_columnName);
80          }
81          else
82          {
83             return result.getObject(_columnNumber);
84          }
85       }
86    }
87
88    public List JavaDoc processResultSet(String JavaDoc name, ResultSet JavaDoc result, int numberPerPage, ValueListInfo info) throws SQLException JavaDoc
89    {
90       if (LOGGER.isDebugEnabled())
91       {
92          LOGGER.debug("Start wrapping using column '"
93                + (_columnName != null && _columnName.length() > 0 ? _columnName : (_columnNumber + "")) + "'.");
94       }
95
96       List JavaDoc list = new ArrayList JavaDoc();
97       if (_wrapper == null)
98       {
99          LOGGER.error("Required _wrapper is null!");
100       }
101       else
102       {
103          _wrapper.setValueListInfo(info);
104          for (int i = 0; result.next() && i < numberPerPage; i++)
105          {
106             list.add(_wrapper.getWrappedRecord(getOrignalRecord(result)));
107          }
108       }
109
110       LOGGER.debug("End wrapping.");
111       return list;
112    }
113
114    /**
115     * @return Returns the columnName.
116     */

117    public String JavaDoc getColumnName()
118    {
119       return _columnName;
120    }
121
122    /**
123     * Specify which column will be objectToBeWrapped. Default value is null. If
124     * is <b>null </b>, is used column <b>Number </b> instead.
125     * <h4>Example</h4>
126     * <ul>
127     * result.getObject(columnName);
128     * </ul>
129     *
130     * @param columnName The columnName to set.
131     */

132    public void setColumnName(String JavaDoc columnName)
133    {
134       _columnName = columnName;
135    }
136
137    /**
138     * @return Returns the columnNumber.
139     */

140    public int getColumnNumber()
141    {
142       return _columnNumber;
143    }
144
145    /**
146     * Specify which column will be objectToBeWrapped. Default is 1;
147     * <h4>Example</h4>
148     * <ul>
149     * result.getObject(columnNumber);
150     * </ul>
151     *
152     * @param columnNumber The columnNumber to set.
153     */

154    public void setColumnNumber(int columnNumber)
155    {
156       _columnNumber = columnNumber;
157    }
158
159    /**
160     * @return Returns the objectWrapper.
161     */

162    public ObjectWrapper getWrapper()
163    {
164       return _wrapper;
165    }
166
167    /**
168     * This param is required.
169     *
170     * @param objectWrapper The objectWrapper to set.
171     * @see net.mlw.vlh.adapter.util.ObjectWrapper
172     */

173    public void setWrapper(ObjectWrapper objectWrapper)
174    {
175       this._wrapper = objectWrapper;
176    }
177
178    /**
179     * @return Returns the wrapResultSet.
180     */

181    public boolean isWrapResultSet()
182    {
183       return wrapResultSet;
184    }
185
186    /**
187     * Determine object to be wrapped - resultSet or column from result set. *
188     * If true, wrapper will call getWrappedRecord with resultSet parameter as
189     * objectToBeWrapped. If false, wrapper will call getWrappedRecord with
190     * object from resultSet. Use false if you need to pass only ids. If you
191     * need to access more than one object, use true. Default is false;
192     *
193     * @param wrapResultSet
194     * @see ObjectWrapper#getWrappedRecord(Object)
195     */

196    public void setWrapResultSet(boolean wrapResultSet)
197    {
198       this.wrapResultSet = wrapResultSet;
199    }
200 }
Popular Tags