1 /** 2 * ServingXML 3 * 4 * Copyright (C) 2006 Daniel Parker 5 * daniel.parker@servingxml.com 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 **/ 20 21 package com.servingxml.components.flatfile.scanner.characters; 22 23 import java.util.ArrayList; 24 import java.util.List; 25 import java.util.zip.CRC32; 26 import java.nio.charset.Charset; 27 28 import com.servingxml.components.flatfile.RecordInput; 29 import com.servingxml.components.flatfile.layout.FlatRecordReceiverAdaptor; 30 import com.servingxml.components.flatfile.options.Delimiter; 31 import com.servingxml.components.flatfile.options.RepeatDelimiter; 32 import com.servingxml.components.flatfile.options.SegmentDelimiter; 33 import com.servingxml.components.flatfile.options.FieldDelimiter; 34 import com.servingxml.components.flatfile.options.NameDelimiter; 35 import com.servingxml.components.flatfile.options.FlatFileOptionsImpl; 36 import com.servingxml.util.record.Record; 37 38 import junit.framework.TestCase; 39 40 public class CharRecordInputTest extends TestCase { 41 CharRecordInputTest(String name)42 public CharRecordInputTest(String name) { 43 super(name); 44 } 45 setUp()46 public void setUp() throws Exception { 47 } 48 xtestStudents()49 public void xtestStudents() throws Exception { 50 System.out.println(getClass().getName()+".testStudents"); 51 String inputString="JANE^ENGL^C-~MATH^A+|1972^BLUE^CHICAGO^IL~ATLANTA^GA"; 52 char[] input = inputString.toCharArray(); 53 54 Delimiter repeatDelimiter = new RepeatDelimiter("^"); 55 Delimiter segmentDelimiter = new SegmentDelimiter("|"); 56 57 Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter}; 58 Delimiter[] segmentDelimiters = new Delimiter[]{segmentDelimiter}; 59 60 FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false); 61 flatFileOptions.setCountPositionsInBytes(false); 62 flatFileOptions.setRepeatDelimiters(repeatDelimiters); 63 flatFileOptions.setSegmentDelimiters(segmentDelimiters); 64 65 RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset()); 66 67 } 68 xtestInvoice()69 public void xtestInvoice() throws Exception { 70 String inputString="12|2007-02-02|DocType|} " 71 + "SndId|SndName|SndAddress|SndZip|} " 72 + "RecId|RecName|RecAddress|RecZip|} " 73 + "~ " 74 + "1|Item 1|2|Kg|150|300|} " 75 + "2|Item 2|2|Kg|350|700|} " 76 + "3|Item 3|1|$|50|50|} " 77 + "4|Item 4|10|Unt|30|100|} " 78 + "~ " 79 + "1|Ref 1|Doc 1|Text|} " 80 + "2|Ref 2|Doc 2|Text|} " 81 + "~ " 82 + "1|Disc 1|Item 1|} " 83 + "2|Disc 2|Item 2|} " 84 + "3|Disc 3|Item 3|} " 85 + "~ " 86 + "Code a|Value 1|} " 87 + "Code z|Value 3|} " 88 + "Code x|Value 2|} " 89 + "Code w|Value 2|} " 90 + "Code y|Value 1|}" 91 + "~"; 92 93 char[] input = inputString.toCharArray(); 94 95 Delimiter repeatDelimiter = new RepeatDelimiter("}"); 96 Delimiter segmentDelimiter = new SegmentDelimiter("~"); 97 98 Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter}; 99 Delimiter[] segmentDelimiters = new Delimiter[]{segmentDelimiter}; 100 101 FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false); 102 flatFileOptions.setCountPositionsInBytes(false); 103 flatFileOptions.setRepeatDelimiters(repeatDelimiters); 104 flatFileOptions.setSegmentDelimiters(segmentDelimiters); 105 flatFileOptions.setOmitFinalRepeatDelimiter(false); 106 107 RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset()); 108 109 } 110 xtestNested()111 public void xtestNested() throws Exception { 112 System.out.println("testNested"); 113 114 String inputString="{a0 b0{a1 b1{a2 b2} {c2 d2}}}"; 115 char[] input = inputString.toCharArray(); 116 117 Delimiter repeatDelimiter = new RepeatDelimiter("{","}"); 118 119 Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter}; 120 121 FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false); 122 flatFileOptions.setCountPositionsInBytes(false); 123 flatFileOptions.setRepeatDelimiters(repeatDelimiters); 124 125 RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset()); 126 127 } 128 xtestNoSegmentDelimiters()129 public void xtestNoSegmentDelimiters() throws Exception { 130 System.out.println("testNoSegmentDelimiters"); 131 132 String inputString="JANE^ENGL^C-~MATH^A+"; 133 char[] input = inputString.toCharArray(); 134 135 Delimiter repeatDelimiter = new RepeatDelimiter("^"); 136 137 Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter}; 138 139 FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false); 140 flatFileOptions.setCountPositionsInBytes(false); 141 flatFileOptions.setRepeatDelimiters(repeatDelimiters); 142 143 RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset()); 144 145 } 146 xtestRepeatingBracketed()147 public void xtestRepeatingBracketed() throws Exception { 148 String inputString="{a}{b}{c}{d}"; 149 char[] input = inputString.toCharArray(); 150 151 Delimiter repeatDelimiter = new RepeatDelimiter("{","}"); 152 153 Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter}; 154 155 FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false); 156 flatFileOptions.setCountPositionsInBytes(false); 157 flatFileOptions.setRepeatDelimiters(repeatDelimiters); 158 159 RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset()); 160 161 } 162 xtestWrappedRepeatingBracketed()163 public void xtestWrappedRepeatingBracketed() throws Exception { 164 String inputString="{{a}{b}{c}{d}}"; 165 char[] input = inputString.toCharArray(); 166 167 Delimiter segmentDelimiter = new SegmentDelimiter("{","}"); 168 Delimiter repeatDelimiter = new RepeatDelimiter("{","}"); 169 170 Delimiter[] segmentDelimiters = new Delimiter[]{segmentDelimiter}; 171 Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter}; 172 173 FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false); 174 flatFileOptions.setCountPositionsInBytes(false); 175 flatFileOptions.setRepeatDelimiters(repeatDelimiters); 176 flatFileOptions.setSegmentDelimiters(segmentDelimiters); 177 178 RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset()); 179 180 } 181 xtestSegmentDelimiter()182 public void xtestSegmentDelimiter() throws Exception { 183 String inputString="{{a}{b}{c}{d}}"; 184 char[] input = inputString.toCharArray(); 185 186 Delimiter segmentDelimiter = new SegmentDelimiter("{","}"); 187 188 Delimiter[] segmentDelimiters = new Delimiter[]{segmentDelimiter}; 189 190 FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false); 191 flatFileOptions.setCountPositionsInBytes(false); 192 flatFileOptions.setSegmentDelimiters(segmentDelimiters); 193 194 RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset()); 195 196 //assertTrue(recordInput.done()); 197 198 } 199 testTransaction()200 public void testTransaction() throws Exception { 201 String inputString = 202 "TRAN:trantype=PRIN#origin=Toronto#" 203 + "{TRANREF:reftype=TREF#ref=1234567890123456B#}" 204 + "{TRANREF:reftype=FOTR#ref=1234567890123456#}" 205 + "{DRIVER:drivertype=OPER#drivercode=SELL#}" 206 + "{DRIVER:drivertype=STRM#drivercode=FOP#}" 207 + "{INSTR:instrtype=PINS#instrreftype=INT#instrref=PTEQTY1#qty=1000000#}" 208 + "{INSTR:instrtype=TCCY#instrreftype=ISO#instrref=USD#}" 209 + "{INSTR:instrtype=SINS#instrreftype=ISO#instrref=USD#}" 210 + "{PARTY:partytype=COMP#partyreftype=X3#partyref=CMP1#}" 211 + "{PARTY:partytype=SECP#partyreftype=X3#partyref=PTSECP1#}" 212 + "{DATE:datetype=TDAT#date=01-Jan-2007#}" 213 + "{DATE:datetype=VDAT#date=01-Jan-2007#}" 214 + "{CHARGE:chargetype=COMM#calctype=NONE#chargeamount=50.00#instrreftype=ISO#instrref=USD}" 215 + "{PRICE:ratetype=TPRC#price=4.9#multdiv=X1#pricetype=YP#}" 216 + ""; 217 char[] input = inputString.toCharArray(); 218 219 Delimiter[] segmentDelimiters = new Delimiter[]{new SegmentDelimiter("{")}; 220 Delimiter[] repeatDelimiters = new Delimiter[]{new RepeatDelimiter("{","}")}; 221 Delimiter[] colonFieldDelimiters = new Delimiter[]{new FieldDelimiter(":")}; 222 Delimiter[] poundFieldDelimiters = new Delimiter[]{new FieldDelimiter("#")}; 223 Delimiter[] nameDelimiters = new Delimiter[]{new NameDelimiter("=")}; 224 225 FlatFileOptionsImpl baseFlatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false); 226 baseFlatFileOptions.setCountPositionsInBytes(false); 227 baseFlatFileOptions.setRepeatDelimiters(repeatDelimiters); 228 baseFlatFileOptions.setNameDelimiters(nameDelimiters); 229 230 FlatFileOptionsImpl flatFileOptions1 = new FlatFileOptionsImpl(baseFlatFileOptions); 231 flatFileOptions1.setFieldDelimiters(colonFieldDelimiters); 232 233 FlatFileOptionsImpl flatFileOptions2 = new FlatFileOptionsImpl(baseFlatFileOptions); 234 flatFileOptions2.setFieldDelimiters(colonFieldDelimiters); 235 flatFileOptions2.setSegmentDelimiters(segmentDelimiters); 236 237 FlatFileOptionsImpl flatFileOptions3 = new FlatFileOptionsImpl(baseFlatFileOptions); 238 flatFileOptions3.setFieldDelimiters(poundFieldDelimiters); 239 240 RecordInput recordInput = new CharRecordInput(input, 0, input.length, 241 Charset.defaultCharset()); 242 String s; 243 RecordInput segmentInput; 244 } 245 } 246 247 248 249 250