1   package org.codehaus.dataforge.engine.transformers;
2   
3   /*
4    * Copyright 2001-2004 Ben Walding
5    * 
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    * 
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   * 
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  import java.math.BigDecimal;
20  import java.sql.ResultSet;
21  
22  import junit.framework.TestCase;
23  
24  import org.codehaus.dataforge.engine.DataForge;
25  import org.codehaus.dataforge.engine.QuickDB;
26  import org.codehaus.dataforge.engine.configuration.XMLConfiguration;
27  import org.codehaus.dataforge.engine.context.DataForgeContext;
28  
29  /***
30   * @author Ben Walding
31   * @version $Id: FormatTransformerTest.java,v 1.4 2004/03/11 00:20:30 bwalding Exp $
32   */
33  public class FormatTransformerTest extends TestCase {
34      QuickDB qdb;
35      /***
36       * Constructor for FormatTransformerTest.
37       * @param arg0
38       */
39      public FormatTransformerTest(String arg0) {
40          super(arg0);
41      }
42  
43      public void setUp() throws Exception {
44          qdb = new QuickDB();
45          qdb.configureQuickDB();
46          qdb.setUp();
47      }
48  
49      public void tearDown() throws Exception {
50          qdb.tearDown();
51      }
52  
53      public void testSimple() throws Exception {
54          DataForge df = XMLConfiguration.quickConfig(getClass(), "FormatTransformerTest.df");
55          Transformer t = df.resolveTransformer("format1");
56          ResultSet rs = t.open();
57          verifyPerson(rs);
58      }
59  
60      public void testSimple2() throws Exception {
61          DataForge df = XMLConfiguration.quickConfig(getClass(), "FormatTransformerTest.df");
62          Transformer t = df.resolveTransformer("format2");
63          ResultSet rs = t.open();
64          verifyPerson2(rs);
65      }
66  
67      public void testSimple3() throws Exception {
68          DataForge df = XMLConfiguration.quickConfig(getClass(), "FormatTransformerTest.df");
69          Transformer t = df.resolveTransformer("format3");
70          ResultSet rs = t.open();
71          verifyPerson3(rs);
72      }
73      
74      /***
75       * This one tests that properties are being correctly passed through the chain
76       * @throws Exception
77       */
78      public void testSimple4() throws Exception {
79          DataForge df = XMLConfiguration.quickConfig(getClass(), "FormatTransformerTest.df");
80          Transformer t = df.resolveTransformer("format4");
81          DataForgeContext ctx = (DataForgeContext) t.getConfiguredContext().clone();
82          ctx.setProperty("rfPerson", new Integer(3));
83          ResultSet rs = t.open(ctx);
84          verifyPerson4(rs);
85      }
86  
87      public static void verifyPerson(ResultSet rs) throws Exception {
88  
89          TransformerResultSetMetaData rsmd = (TransformerResultSetMetaData) rs.getMetaData();
90  
91          assertEquals("rsmd.getColumnCount()", 4, rsmd.getColumnCount());
92          assertEquals("rsmd.getColumnName(1)", "ID", rsmd.getColumnName(1));
93          assertEquals("rsmd.getColumnName(2)", "First Name", rsmd.getColumnName(2));
94          assertEquals("rsmd.getColumnName(3)", "Last Name", rsmd.getColumnName(3));
95          assertEquals("rsmd.getColumnName(3)", "Full Name", rsmd.getColumnName(4));
96  
97          assertTrue(rs.next());
98          assertEquals("r[1][1]", new Integer(1), rs.getObject(1));
99          assertEquals("r[1][2]", "Bob", rs.getObject(2));
100         assertEquals("r[1][3]", "DAWKINS", rs.getObject(3));
101         assertEquals("r[1][4]", "Bob Dawkins", rs.getObject(4));
102 
103         assertTrue(rs.next());
104         assertEquals("r[2][1]", new Integer(2), rs.getObject(1));
105         assertEquals("r[2][2]", "Gerald", rs.getObject(2));
106         assertEquals("r[2][3]", "ASTINHEIMER", rs.getObject(3));
107         assertEquals("r[2][3]", "Gerald Astinheimer", rs.getObject(4));
108 
109         assertTrue(rs.next());
110         assertEquals("r[3][1]", new Integer(3), rs.getObject(1));
111         assertEquals("r[3][2]", "Robby", rs.getObject(2));
112         assertEquals("r[3][3]", "SCHNUTZ", rs.getObject(3));
113         assertEquals("r[3][4]", "Robby Schnutz", rs.getObject(4));
114 
115         assertTrue(rs.next());
116         assertEquals("r[4][1]", new Integer(4), rs.getObject(1));
117         assertEquals("r[4][2]", "Leopold", rs.getObject(2));
118         assertEquals("r[4][3]", "HUMPHREYS", rs.getObject(3));
119         assertEquals("r[4][4]", "Leopold Humphreys", rs.getObject(4));
120 
121         assertFalse("Check only 4 rows", rs.next());
122     }
123 
124     public static void verifyPerson2(ResultSet rs) throws Exception {
125 
126         TransformerResultSetMetaData rsmd = (TransformerResultSetMetaData) rs.getMetaData();
127 
128         assertEquals("rsmd.getColumnCount()", 4, rsmd.getColumnCount());
129         assertEquals("rsmd.getColumnName(1)", "RFPERSON", rsmd.getColumnName(1));
130         assertEquals("rsmd.getColumnName(2)", "TXFIRSTNAME", rsmd.getColumnName(2));
131         assertEquals("rsmd.getColumnName(3)", "TXLASTNAME", rsmd.getColumnName(3));
132         assertEquals("rsmd.getColumnName(3)", "Full Name", rsmd.getColumnName(4));
133 
134         assertTrue(rs.next());
135         assertEquals("r[1][1]", new Integer(1), rs.getObject(1));
136         assertEquals("r[1][2]", "Bob", rs.getObject(2));
137         assertEquals("r[1][3]", "Dawkins", rs.getObject(3));
138         assertEquals("r[1][4]", "Bob Dawkins", rs.getObject(4));
139 
140         assertTrue(rs.next());
141         assertEquals("r[2][1]", new Integer(2), rs.getObject(1));
142         assertEquals("r[2][2]", "Gerald", rs.getObject(2));
143         assertEquals("r[2][3]", "Astinheimer", rs.getObject(3));
144         assertEquals("r[2][3]", "Gerald Astinheimer", rs.getObject(4));
145 
146         assertTrue(rs.next());
147         assertEquals("r[3][1]", new Integer(3), rs.getObject(1));
148         assertEquals("r[3][2]", "Robby", rs.getObject(2));
149         assertEquals("r[3][3]", "Schnutz", rs.getObject(3));
150         assertEquals("r[3][4]", "Robby Schnutz", rs.getObject(4));
151 
152         assertTrue(rs.next());
153         assertEquals("r[4][1]", new Integer(4), rs.getObject(1));
154         assertEquals("r[4][2]", "Leopold", rs.getObject(2));
155         assertEquals("r[4][3]", "Humphreys", rs.getObject(3));
156         assertEquals("r[4][4]", "Leopold Humphreys", rs.getObject(4));
157 
158         assertFalse("Check only 4 rows", rs.next());
159     }
160 
161     public static void verifyPerson3(ResultSet rs) throws Exception {
162 
163         TransformerResultSetMetaData rsmd = (TransformerResultSetMetaData) rs.getMetaData();
164 
165         assertEquals("rsmd.getColumnCount()", 4, rsmd.getColumnCount());
166         assertEquals("rsmd.getColumnName(1)", "rfPerson_alias", rsmd.getColumnName(1));
167         assertEquals("rsmd.getColumnName(2)", "TXFIRSTNAME", rsmd.getColumnName(2));
168         assertEquals("rsmd.getColumnName(3)", "TXLASTNAME", rsmd.getColumnName(3));
169         assertEquals("rsmd.getColumnName(3)", "PCPROFITSHARE", rsmd.getColumnName(4));
170         
171         assertTrue(rs.next());
172         assertEquals("r[1][1]", new Integer(1), rs.getObject(1));
173         assertEquals("r[1][2]", "Bob", rs.getObject(2));
174         assertEquals("r[1][3]", "Dawkins", rs.getObject(3));
175         assertEquals("r[1][4]", new BigDecimal("33.3"), rs.getObject(4));
176 
177         assertTrue(rs.next());
178         assertEquals("r[2][1]", new Integer(2), rs.getObject(1));
179         assertEquals("r[2][2]", "Gerald", rs.getObject(2));
180         assertEquals("r[2][3]", "Astinheimer", rs.getObject(3));
181         assertEquals("r[2][4]", new BigDecimal("20.5"), rs.getObject(4));
182 
183         assertTrue(rs.next());
184         assertEquals("r[3][1]", new Integer(3), rs.getObject(1));
185         assertEquals("r[3][2]", "Robby", rs.getObject(2));
186         assertEquals("r[3][3]", "Schnutz", rs.getObject(3));
187         assertEquals("r[3][4]", new BigDecimal("15.0"), rs.getObject(4));
188 
189         assertTrue(rs.next());
190         assertEquals("r[4][1]", new Integer(4), rs.getObject(1));
191         assertEquals("r[4][2]", "Leopold", rs.getObject(2));
192         assertEquals("r[4][3]", "Humphreys", rs.getObject(3));
193         assertEquals("r[4][4]", new BigDecimal("40.0"), rs.getObject(4));
194 
195         assertFalse("Check only 4 rows", rs.next());
196     }
197     
198     public static void verifyPerson4(ResultSet rs) throws Exception {
199 
200         TransformerResultSetMetaData rsmd = (TransformerResultSetMetaData) rs.getMetaData();
201 
202         assertEquals("rsmd.getColumnCount()", 4, rsmd.getColumnCount());
203         assertEquals("rsmd.getColumnName(1)", "RFPERSON", rsmd.getColumnName(1));
204         assertEquals("rsmd.getColumnName(2)", "TXFIRSTNAME", rsmd.getColumnName(2));
205         assertEquals("rsmd.getColumnName(3)", "TXLASTNAME", rsmd.getColumnName(3));
206         assertEquals("rsmd.getColumnName(3)", "Full Name", rsmd.getColumnName(4));
207 
208         assertTrue("stepping to row 1", rs.next());
209         assertEquals("r[1][1]", new Integer(3), rs.getObject(1));
210         assertEquals("r[1][2]", "Robby", rs.getObject(2));
211         assertEquals("r[1][3]", "Schnutz", rs.getObject(3));
212         assertEquals("r[1][4]", "Robby Schnutz", rs.getObject(4));
213 
214         assertFalse("Check only 1 row", rs.next());
215     }
216 }