Java tutorial
//** Copyright Statement *************************************************** //The Salmon Open Framework for Internet Applications (SOFIA) // Copyright (C) 1999 - 2002, Salmon LLC // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License version 2 // as published by the Free Software Foundation; // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // // For more information please visit http://www.salmonllc.com //** End Copyright Statement *************************************************** ///////////////////////// //$Archive: /JADE/SourceCode/com/salmonllc/util/DataTextWriter.java $ //$Author: Dan $ //$Revision: 7 $ //$Modtime: 10/30/02 2:59p $ ///////////////////////// import java.util.*; import java.io.*; /** * This object allows you to write a flat text file with data elements separated by Separators and such. */ public class DataTextWriter { private int NumColumns = 0; private Vector[] Columns; private String LineBreak = "\r\n"; private String Separator = ","; private boolean Quoted = false; private char QuoteCharacter = '\0'; private StringBuffer sbTextBuffer = new StringBuffer(); /** * Builds a DataTextWriter with each row containing iNumColumns. * @param iNumCols The number of columns in a row of the DataTextWriter. */ public DataTextWriter(int iNumCols) { this(iNumCols, "", "", '\0', false); } /** * Builds a DataTextWriter with each row containing iNumCols and each piece of Data separated by sSeparator. * @param iNumCols The number of columns in a row of the DataTextWriter. * @param sSeparator The separator used to separate data columns in a row. */ public DataTextWriter(int iNumCols, String sSeparator) { this(iNumCols, sSeparator, "", '\0', false); } /** * Builds a DataTextWriter with each row containing iNumCols and each piece of Data separated by sSeparator * and row separated by sLineBreak. * @param iNumCols The number of columns in a row of the DataTextWriter. * @param sSeparator The separator used to separate data columns in a row. * @param sLineBreak The separator used to separate individual rows. */ public DataTextWriter(int iNumCols, String sSeparator, String sLineBreak) { this(iNumCols, sSeparator, sLineBreak, '\0', false); } /** * Builds a DataTextWriter with each row containing iNumColumns and each piece of Data separated by sSeparator * and row separated by sLineBreak and each piece of Data is surrounded by cQuoteChar if bQuoted is true. * @param iNumCols The number of columns in a row of the DataTextWriter. * @param sSeparator The separator used to separate data columns in a row. * @param sLineBreak The separator used to separate individual rows. * @param cQuoteChar The character used to quote indivividual data columns. * @param bQuoted The flag to indicate if data columns are to be quoted. */ public DataTextWriter(int iNumCols, String sSeparator, String sLineFeed, char cQuoteChar, boolean bQuoted) { NumColumns = iNumCols; Separator = sSeparator; LineBreak = sLineFeed; QuoteCharacter = cQuoteChar; Quoted = bQuoted; Columns = new Vector[iNumCols]; for (int i = 0; i < iNumCols; i++) Columns[i] = new Vector(100, 100); } /** * Adds a piece of data to a specific column in this DataTextWriter. * @param iColumn The column which the specified data belongs to. * @param sData The data for the specified column. */ public void addData(int iColumn, String sData) throws Exception { if (iColumn < 0 || iColumn >= NumColumns) throw new Exception("Column Index is out of range. Valid Range is (0-" + (NumColumns - 1) + ")."); Columns[iColumn].addElement(sData); int iCount = Columns[0].size(); for (int i = 1; i < NumColumns; i++) if (Columns[i].size() != iCount) return; int i = Columns[iColumn].size() - 1; for (int j = 0; j < (NumColumns - 1); j++) { if (Quoted) sbTextBuffer.append(QuoteCharacter + (String) Columns[j].elementAt(i) + QuoteCharacter + Separator); else sbTextBuffer.append((String) Columns[j].elementAt(i) + Separator); } if (Quoted) sbTextBuffer.append( QuoteCharacter + (String) Columns[NumColumns - 1].elementAt(i) + QuoteCharacter + LineBreak); else sbTextBuffer.append((String) Columns[NumColumns - 1].elementAt(i) + LineBreak); } /** * This method returns the Data in DataTextWriter in formatted output string. * @return Formatted Output */ public String getText() /*throws DataTextWriterException*/ { // StringBuffer sb=new StringBuffer(); /* int iCount=Columns[0].size(); for (int i=1;i<NumColumns;i++) if (Columns[i].size()!=iCount) throw new DataTextWriterException("There is not an equal number data values in each column.");*/ /* for (int i=0;i<iCount;i++) { for (int j=0;j<NumColumns-1;j++) { if (Quoted) sb.append(QuoteCharacter+(String)Columns[j].elementAt(i)+QuoteCharacter+Separator); else sb.append((String)Columns[j].elementAt(i)+Separator); } if (Quoted) sb.append(QuoteCharacter+(String)Columns[NumColumns-1].elementAt(i)+QuoteCharacter+LineBreak); else sb.append((String)Columns[NumColumns-1].elementAt(i)+LineBreak); } */ return sbTextBuffer.toString(); } /** * This method returns the length of the Data in DataTextWriter in formatted output string. * @return Formatted Output */ public int getTextLength() { return sbTextBuffer.length(); } /** * Sets the LineBreak Separator in this DataTextWriter. * @param sLineBreak The separator used to separate individual rows. */ public void setLineBreak(String sLineBreak) { LineBreak = sLineBreak; } /** * Sets the Character to be used for Quoting Data Columns in this DataTextWriter. * @param cQuoteChar The character used to quote individual data columns. */ public void setQuoteCharacter(char cQuoteChar) { QuoteCharacter = cQuoteChar; } /** * Sets the Flag to to inicate that Data Columns are to be quoted in this DataTextWriter. * @param bQuoted The flag used to indicate if data columns are quoted. */ public void setQuoted(boolean bQuoted) { Quoted = bQuoted; } /** * Sets the Separator to be used for separating individual Data Columns in this DataTextWriter. * @param sSeparator The separator used to separate individual data columns. */ public void setSeparator(String sSeparator) { Separator = sSeparator; } /** * This method creates a flat file containing the data added to this DataTextWriter. * @param sFilename The name of flat file to create. */ public void writeFile(String sFilename) throws Exception { try { FileOutputStream fos = new FileOutputStream(sFilename); PrintWriter pw = new PrintWriter(fos); pw.print(getText()); pw.close(); fos.close(); } catch (Exception e) { throw new Exception(e.getMessage()); } } }