View Javadoc

1   /*
2    * Copyright (C) 2003-2012 David E. Berry
3    *
4    * This library is free software; you can redistribute it and/or
5    * modify it under the terms of the GNU Lesser General Public
6    * License as published by the Free Software Foundation; either
7    * version 2.1 of the License, or (at your option) any later version.
8    *
9    * This library is distributed in the hope that it will be useful,
10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   * Lesser General Public License for more details.
13   *
14   * You should have received a copy of the GNU Lesser General Public
15   * License along with this library; if not, write to the Free Software
16   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17   *
18   * A copy of the GNU Lesser General Public License may also be found at
19   * http://www.gnu.org/licenses/lgpl.txt
20   */
21  package org.synchronoss.cpo.jdbc;
22  
23  import org.slf4j.*;
24  import org.synchronoss.cpo.CpoException;
25  import org.synchronoss.cpo.helper.ExceptionHelper;
26  import org.synchronoss.cpo.meta.domain.CpoAttribute;
27  
28  import java.lang.reflect.InvocationTargetException;
29  import java.sql.ResultSet;
30  
31  /**
32   *
33   * @author dberry
34   */
35  public class ResultSetCpoData extends AbstractJdbcCpoData {
36  
37    private static final Logger logger = LoggerFactory.getLogger(CallableStatementCpoData.class);
38    private ResultSet rs = null;
39  
40    public ResultSetCpoData(ResultSet rs, CpoAttribute cpoAttribute, int index) {
41      super(cpoAttribute, index);
42      this.rs = rs;
43    }
44  
45    @Override
46    public Object invokeGetter() throws CpoException {
47      Object javaObject;
48      JavaSqlMethod<?> javaSqlMethod = JavaSqlMethods.getJavaSqlMethod(getDataGetterReturnType());
49      if (javaSqlMethod == null) {
50        throw new CpoException("Error Retrieveing Jdbc Method for type: " + getDataGetterReturnType().getName());
51      }
52      
53      try {
54        // Get the getter for the Callable Statement
55        javaObject = transformIn(javaSqlMethod.getRsGetter().invoke(rs, getIndex()));
56      } catch (IllegalAccessException iae) {
57        logger.debug("Error Invoking ResultSet Method: " + ExceptionHelper.getLocalizedMessage(iae));
58        throw new CpoException(iae);
59      } catch (InvocationTargetException ite) {
60        logger.debug("Error Invoking ResultSet Method: " + ExceptionHelper.getLocalizedMessage(ite));
61        throw new CpoException(ite.getCause());
62      }
63  
64      return javaObject;
65    }
66  
67  }