1   /*******************************************************************************
2    *  Copyright (c) 2005, 2006 Imola Informatica.
3    *  All rights reserved. This program and the accompanying materials
4    *  are made available under the terms of the LGPL License v2.1
5    *  which accompanies this distribution, and is available at
6    *  http://www.gnu.org/licenses/lgpl.html
7    *******************************************************************************/
8   /**
9    * 
10   */
11  package it.imolinfo.jbi4cics.test.connection.jdbc;
12  
13  import junit.framework.TestCase;
14  
15  /**
16   * @author raffaele
17   *
18   */
19  public class SimpleJdbcConnectionManagerTest extends TestCase {
20  /*  private static Log log=LogFactory.getLog(SimpleJdbcConnectionManagerTest.class);
21    *//**
22     * 
23     *//*
24    public SimpleJdbcConnectionManagerTest(String arg0) {
25      super(arg0);
26      // TODO Auto-generated constructor stu
27    }
28    
29    public void setUp(){
30      try {
31        String baseDirectory="./main/test/etc";
32        if(JNDIUnitTestHelper.notInitialized()){
33          JNDIUnitTestHelper.init(baseDirectory+"/"+"jndi_unit_test_helper.properties");
34        }
35      }
36      catch(IOException e){
37        e.printStackTrace();
38        fail(e.getMessage());
39      }
40      catch(NamingException e){
41        e.printStackTrace();
42        fail(e.getMessage());
43      }
44      catch(ResourceException e){
45        e.printStackTrace();
46        fail(e.getMessage());
47      }
48    }
49    
50    public void testStoredProcedureOutParameterResultSet(){
51      try{
52        //costruisco il parameter descriptor
53        JdbcParameterDescriptor storedProcedureParameter=new JdbcParameterDescriptor(JdbcParameterDescriptor.IN_OUT_PARAMETER);
54        storedProcedureParameter.setSqlType(Types.VARCHAR);
55        
56        //costruisco lo statement decriptor
57        JdbcStatementDescriptor jdbcStatementDescriptor=new JdbcStatementDescriptor();
58        jdbcStatementDescriptor.addFieldMapping("storedProcedureParameter",new Integer(1),storedProcedureParameter);
59        jdbcStatementDescriptor.setStatementType(JdbcStatementDescriptor.CALLABLE_STATEMENT);
60        jdbcStatementDescriptor.setSqlType(JdbcStatementDescriptor.SELECT_SQL);
61        jdbcStatementDescriptor.setSql("{call jbi4cics.test_rs (?)}");
62        jdbcStatementDescriptor.setBeanClass(StoredProcedureBean.class);
63        
64        // costrisco il result set mapping descriptor
65        ResultSetMappingDescriptor resultSetMappingDescriptor=new ResultSetMappingDescriptor();
66        resultSetMappingDescriptor.addFieldMapping("id","ID",null);
67        resultSetMappingDescriptor.addFieldMapping("inpuData","input_data",null);
68        resultSetMappingDescriptor.addFieldMapping("outputData","output_data",null);
69        resultSetMappingDescriptor.setBeanClass(ResultSetBean.class);
70        
71        // costruisco il mapping descriptor
72        JdbcBeanMappingDescriptor jdbcBeanMappingDescriptor=new JdbcBeanMappingDescriptor();      
73        jdbcBeanMappingDescriptor.setJdbcStatementDescriptor(jdbcStatementDescriptor);
74        jdbcBeanMappingDescriptor.setResultSetMappingDescriptor(resultSetMappingDescriptor);
75        jdbcBeanMappingDescriptor.setResultSetPropertyName("resultSet");
76        
77        // costruisco l'input bean
78        StoredProcedureBean inputBean=new StoredProcedureBean();
79        inputBean.setStoredProcedureParameter("hello");
80        
81        // costruisco il locator
82        SimpleLocation j2cLocation=new SimpleLocation();
83        j2cLocation.setConnectionType(ServiceLocation.JDBC);
84        j2cLocation.setLocationName("jdbc/jbi4cics");
85        
86        //costruisco l'account
87        J2CAccount j2cAccount=new J2CAccount();
88        j2cAccount.setUsername("jbi4cics");
89        j2cAccount.setPassword("jbi4cics");
90        
91        //costruisco il service context
92        //inizializzazione del service context
93        ServiceContext serviceContext=new ServiceContext();
94        serviceContext.setInputMappingDescriptor(jdbcStatementDescriptor);
95        serviceContext.setOutputMappingDescriptor(jdbcBeanMappingDescriptor);
96        serviceContext.setInputBean(inputBean);
97        serviceContext.setServiceLocation(j2cLocation);
98        serviceContext.setAccount(j2cAccount);
99        
100       
101       // costruisco il jdbc formatter
102       JdbcFormatter jdbcFormatter=new JdbcFormatter();
103       
104       // eseguo la formattazione in andata
105       long millis1=System.currentTimeMillis();
106       jdbcFormatter.mapInputBeanToInputMessage(serviceContext);
107       DisconnectedPreparedStatement inputMessage=(DisconnectedPreparedStatement)serviceContext.getInputMessage();
108       long millis2=System.currentTimeMillis();
109       log.debug("input message: "+inputMessage);
110       log.debug("conversion time1="+(millis2-millis1)+" millis");
111       
112       // costruisco il connection manager
113       JdbcConnectionManager jdbcConnectionManager=new JdbcConnectionManager();
114             
115       // eseguo la chiamata
116       millis1=System.currentTimeMillis();
117       jdbcConnectionManager.handleCall(serviceContext);
118       millis2=System.currentTimeMillis();
119       log.debug("execution time="+(millis2-millis1)+" millis");
120       
121       // eseguo la formattazione all'indietro
122       
123       millis1=System.currentTimeMillis();
124       jdbcFormatter.mapOutputMessageToOutputBean(serviceContext);
125       StoredProcedureBean outputBean=(StoredProcedureBean)serviceContext.getOutputBean();
126       millis2=System.currentTimeMillis();
127       
128       log.debug("output bean: "+outputBean);
129       log.debug("conversion time1="+(millis2-millis1)+" millis");
130 
131       
132     }
133     catch (Jbi4cicsException e){
134       e.printStackTrace();
135       fail(e.getMessage());
136     }
137   }
138 
139   public static class StoredProcedureBean {
140     String storedProcedureParameter;
141     List resultSet;
142 
143     *//**
144      * @return Returns the resultSet.
145      *//*
146     public List getResultSet() {
147       return resultSet;
148     }
149 
150     *//**
151      * @param resultSet The resultSet to set.
152      *//*
153     public void setResultSet(List resultSet) {
154       this.resultSet = resultSet;
155     }
156 
157     *//**
158      * @return Returns the storedProcedureParameter.
159      *//*
160     public String getStoredProcedureParameter() {
161       return storedProcedureParameter;
162     }
163 
164     *//**
165      * @param storedProcedureParameter The storedProcedureParameter to set.
166      *//*
167     public void setStoredProcedureParameter(String storedProcedureParameter) {
168       this.storedProcedureParameter = storedProcedureParameter;
169     }
170     
171   }
172   
173   public static class ResultSetBean {
174     int id;
175     String inputData;
176     String outputData;
177     *//**
178      * @return Returns the id.
179      *//*
180     public int getId() {
181       return id;
182     }
183     *//**
184      * @param id The id to set.
185      *//*
186     public void setId(int id) {
187       this.id = id;
188     }
189     *//**
190      * @return Returns the inputData.
191      *//*
192     public String getInputData() {
193       return inputData;
194     }
195     *//**
196      * @param inputData The inputData to set.
197      *//*
198     public void setInputData(String inputData) {
199       this.inputData = inputData;
200     }
201     *//**
202      * @return Returns the outputData.
203      *//*
204     public String getOutputData() {
205       return outputData;
206     }
207     *//**
208      * @param outputData The outputData to set.
209      *//*
210     public void setOutputData(String outputData) {
211       this.outputData = outputData;
212     }
213     
214   }
215   */
216 }