001: package org.csvbeans.samples.converters;
002:
003: import java.io.FileOutputStream;
004: import java.io.IOException;
005: import java.io.InputStream;
006: import java.util.ArrayList;
007: import java.util.Arrays;
008: import java.util.Calendar;
009: import java.util.Date;
010: import java.util.GregorianCalendar;
011: import java.util.Iterator;
012: import java.util.List;
013:
014: import org.csvbeans.builders.BuildingStrategy;
015: import org.csvbeans.builders.OutputStreamLinesWriter;
016: import org.csvbeans.parsers.InputStreamLinesReader;
017: import org.csvbeans.parsers.ParsingStrategy;
018: import org.csvbeans.specs.SpecificationsFile;
019: import org.csvbeans.specs.SpecificationsFileParser;
020:
021: public class SampleMain {
022: public static void main(String[] args) throws Exception {
023: System.out.println("Starting sample...");
024: SpecificationsFileParser parser = new SpecificationsFileParser();
025: SpecificationsFile specs = parser
026: .parse(getInputStream("/mapping.xml"));
027: parseSample(specs);
028: buildSample(specs);
029: System.out.println("Sample ended...");
030: }
031:
032: /**
033: * Return an input stream of a file in the classpath.
034: */
035: private static InputStream getInputStream(String name)
036: throws IOException {
037: return SampleMain.class.getResource(name).openStream();
038: }
039:
040: /**
041: * Parse the fixed length file.
042: */
043: private static void parseSample(SpecificationsFile specs)
044: throws Exception {
045: System.out.println("Beginning parsing...");
046: ParsingStrategy parser = specs.getParsingStrategy();
047: parser.parse(new InputStreamLinesReader(
048: getInputStream("/fileToParse.txt")));
049: List list = parser.getBeans("Dates");
050: System.out.println("Dates:");
051: displayObjects(list);
052: list = parser.getBeans("Padding");
053: System.out.println("Padding:");
054: displayObjects(list);
055: System.out.println("End of parsing...");
056: }
057:
058: /**
059: * Build a fixed length file.
060: */
061: private static void buildSample(SpecificationsFile specs)
062: throws Exception {
063: System.out.println("Beginning building...");
064: List list = new ArrayList();
065: list.add(createBean(createDate(2005, Calendar.JANUARY, 1),
066: createDate(2005, Calendar.FEBRUARY, 2), createDate(
067: 2005, Calendar.MARCH, 3), true));
068: list.add(createBean(createDate(2005, Calendar.APRIL, 4),
069: createDate(2005, Calendar.MAY, 5), createDate(2005,
070: Calendar.JUNE, 6), false));
071: list.add(createBean(createDate(2005, Calendar.JULY, 7),
072: createDate(2005, Calendar.AUGUST, 8), createDate(2005,
073: Calendar.SEPTEMBER, 9), true));
074: list.add(createBean(createDate(2005, Calendar.OCTOBER, 10),
075: createDate(2005, Calendar.NOVEMBER, 11), createDate(
076: 2005, Calendar.DECEMBER, 12), false));
077:
078: Bean bean = new Bean();
079: bean.setDate1(createDate(2006, Calendar.JANUARY, 10));
080: bean.setSomeString("hello !");
081:
082: BuildingStrategy builder = specs.getBuildingStrategy();
083: builder.addBeans("Dates", list);
084: builder.addBeans("Padding", Arrays
085: .asList(new Object[] { bean }));
086: builder.build(new OutputStreamLinesWriter(new FileOutputStream(
087: "converters-builtFile.txt")));
088: System.out.println("converters-builtFile.txt file built.");
089: }
090:
091: private static Date createDate(int year, int month, int day) {
092: Calendar cal = new GregorianCalendar(year, month, day);
093: return cal.getTime();
094: }
095:
096: private static Bean createBean(Date date1, Date date2, Date date3,
097: boolean b) {
098: Bean bean = new Bean();
099: bean.setDate1(date1);
100: bean.setDate2(date2);
101: bean.setDate3(date3);
102: bean.setBool(b);
103: return bean;
104: }
105:
106: private static void displayObjects(List list) {
107: for (Iterator it = list.iterator(); it.hasNext();) {
108: Object object = it.next();
109: System.out.println(object);
110: }
111: }
112: }
|