001: /*
002: * $Id: DataSource.java,v 1.3 2002/04/26 05:23:11 skavish Exp $
003: *
004: * ===========================================================================
005: *
006: * The JGenerator Software License, Version 1.0
007: *
008: * Copyright (c) 2000 Dmitry Skavish (skavish@usa.net). All rights reserved.
009: *
010: * Redistribution and use in source and binary forms, with or without
011: * modification, are permitted provided that the following conditions are met:
012: *
013: * 1. Redistributions of source code must retain the above copyright
014: * notice, this list of conditions and the following disclaimer.
015: *
016: * 2. Redistributions in binary form must reproduce the above copyright
017: * notice, this list of conditions and the following disclaimer in
018: * the documentation and/or other materials provided with the
019: * distribution.
020: *
021: * 3. The end-user documentation included with the redistribution, if
022: * any, must include the following acknowlegement:
023: * "This product includes software developed by Dmitry Skavish
024: * (skavish@usa.net, http://www.flashgap.com/)."
025: * Alternately, this acknowlegement may appear in the software itself,
026: * if and wherever such third-party acknowlegements normally appear.
027: *
028: * 4. The name "The JGenerator" must not be used to endorse or promote
029: * products derived from this software without prior written permission.
030: * For written permission, please contact skavish@usa.net.
031: *
032: * 5. Products derived from this software may not be called "The JGenerator"
033: * nor may "The JGenerator" appear in their names without prior written
034: * permission of Dmitry Skavish.
035: *
036: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: * DISCLAIMED. IN NO EVENT SHALL DMITRY SKAVISH OR THE OTHER
040: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: *
049: */
050:
051: package org.openlaszlo.iv.flash.util;
052:
053: import java.io.*;
054:
055: /**
056: * Simple text datasource.<P>
057: * Reads data from given {@link LineReader} line by line
058: * and construct 2 dimensional array of Strings
059: *
060: * @author Dmitry Skavish
061: * @see DataSourceHelper
062: * @see XMLDataSource
063: * @see Tokenizer
064: */
065: public class DataSource {
066:
067: private LineReader reader;
068:
069: public DataSource() {
070: }
071:
072: public DataSource(LineReader reader) {
073: setReader(reader);
074: }
075:
076: protected void setReader(LineReader reader) {
077: this .reader = reader;
078: }
079:
080: public String[][] getData() throws IOException {
081: IVVector lines = new IVVector();
082: IVVector curLine = new IVVector();
083:
084: String line = reader.readLine();
085: while (line != null) {
086: curLine.reset();
087:
088: String token;
089: Tokenizer t = new Tokenizer(line);
090: while ((token = t.getToken()) != null) {
091: curLine.addElement(Util.processEscapes(token));
092: }
093:
094: if (curLine.size() > 0) {
095: int size = curLine.size();
096: if (lines.size() > 0) {
097: int s = ((String[]) lines.elementAt(0)).length;
098: if (s > size)
099: size = s;
100: }
101: String[] sa = new String[size];
102: curLine.copyInto(sa);
103: for (int k = curLine.size(); k < size; k++) {
104: sa[k] = "";
105: }
106: lines.addElement(sa);
107: }
108:
109: line = reader.readLine();
110: }
111:
112: String[][] data = new String[lines.size()][];
113: lines.copyInto(data);
114: return data;
115: }
116:
117: /* public static void main( String[] args ) {
118: try {
119: DataSource ds = new DataSource( new InputStreamLineReader( new FileInputStream(args[0]) ) );
120: String[][] data = ds.getData();
121: for( int i=0; i<data.length; i++ ) {
122: String[] row = data[i];
123: for( int j=0; j<row.length; j++ ) {
124: System.out.print( "'"+row[j]+"'" );
125: if( j+1<row.length ) System.out.print( "," );
126: else System.out.println();
127: }
128: }
129: } catch( Exception e ) {
130: System.out.println( e.getMessage() );
131: e.printStackTrace();
132: }
133: }
134: */
135: }
|