DelimitedOutputFilter.java
上传用户:xiekaiwei
上传日期:2015-07-04
资源大小:620k
文件大小:7k
源码类别:

Telnet客户端

开发平台:

Java

  1. /*
  2.  * @(#)DelimitedOutputFilter.java
  3.  * Copyright:    Copyright (c) 2001, 2002, 2003
  4.  *
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2, or (at your option)
  8.  * any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this software; see the file COPYING.  If not, write to
  17.  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  18.  * Boston, MA 02111-1307 USA
  19.  *
  20.  */
  21. package org.tn5250j.tools.filters;
  22. import java.io.*;
  23. import java.util.ArrayList;
  24. import org.tn5250j.tools.*;
  25. import javax.swing.*;
  26. public class DelimitedOutputFilter implements OutputFilterInterface {
  27.    PrintStream fout = null;
  28.    static String delimiter = ",";
  29.    static String stringQualifier = """;
  30.    StringBuffer sb = new StringBuffer();
  31.    // create instance of file for output
  32.    public void createFileInstance(String fileName) throws
  33.                               FileNotFoundException {
  34.       fout = new PrintStream(new FileOutputStream(fileName));
  35.    }
  36.    /**
  37.     * Write the html header of the output file
  38.     */
  39.    public void parseFields(byte[] cByte, ArrayList ffd, StringBuffer rb) {
  40.       FileFieldDef f;
  41.       // write out the html record information for each field that is selected
  42.       for (int x = 0; x < ffd.size(); x++) {
  43.          f = (FileFieldDef)ffd.get(x);
  44.          if (f.isWriteField()) {
  45.             switch (f.getFieldType()) {
  46.                case 'P':
  47.                case 'S':
  48.                   rb.append(f.parseData(cByte).trim() + delimiter);
  49.                   break;
  50.                default:
  51.                   rb.append(stringQualifier + f.parseData(cByte).trim() + stringQualifier + delimiter);
  52.                   break;
  53.             }
  54.          }
  55.       }
  56.       fout.println(rb);
  57.    }
  58.    /**
  59.     * Write the html header of the output file
  60.     */
  61.    public void writeHeader(String fileName, String host,
  62.                                  ArrayList ffd, char decChar) {
  63.       FileFieldDef f;
  64.       StringBuffer sb = new StringBuffer();
  65.       //  loop through each of the fields and write out the field name for
  66.       //    each selected field
  67.       for (int x = 0; x < ffd.size(); x++) {
  68.          f = (FileFieldDef)ffd.get(x);
  69.          if (f.isWriteField()) {
  70.             sb.append(f.getFieldName() + delimiter);
  71.          }
  72.       }
  73.       fout.println (sb.toString().toCharArray());
  74.    }
  75.    /**
  76.     * write the footer of the html output
  77.     */
  78.    public void writeFooter(ArrayList ffd) {
  79.         fout.flush();
  80.         fout.close();
  81.    }
  82.    public boolean isCustomizable() {
  83.       return true;
  84.    }
  85.    public void setCustomProperties() {
  86.       new DelimitedDialog(new JFrame());
  87.    }
  88.    class DelimitedDialog {
  89.       public DelimitedDialog(JFrame parent) {
  90.          JPanel opts = new JPanel();
  91.          opts.setBorder(BorderFactory.createTitledBorder(
  92.                                     LangTool.getString("delm.labelOptions")));
  93.          opts.setLayout(new AlignLayout(2,5,5));
  94.          JLabel fdl = new JLabel(LangTool.getString("delm.labelField"));
  95.          // setup the field delimiter list
  96.          JComboBox fd = new JComboBox();
  97.          fd.addItem(",");
  98.          fd.addItem(";");
  99.          fd.addItem(":");
  100.          fd.addItem("|");
  101.          fd.addItem(LangTool.getString("delm.labelTab"));
  102.          fd.addItem(LangTool.getString("delm.labelSpace"));
  103.          fd.addItem(LangTool.getString("delm.labelNone"));
  104.          if (delimiter.length() > 0)
  105.             if (delimiter.equals("t"))
  106.                fd.setSelectedItem(LangTool.getString("delm.labelTab"));
  107.             else if (delimiter.equals(" "))
  108.                fd.setSelectedItem(LangTool.getString("delm.labelSpace"));
  109.             else {
  110.                if (!delimiter.equals(",") && !delimiter.equals(";") &&
  111.                      !delimiter.equals(":") && !delimiter.equals("|"))
  112.                   fd.addItem(delimiter);
  113.                fd.setSelectedItem(delimiter);
  114.             }
  115.          else
  116.             fd.setSelectedItem(LangTool.getString("delm.labelNone"));
  117.          fd.setEditable(true);
  118.          // setup the string qualifier list
  119.          JLabel tdl = new JLabel(LangTool.getString("delm.labelText"));
  120.          JComboBox td = new JComboBox();
  121.          td.addItem(""");
  122.          td.addItem("'");
  123.          td.addItem(LangTool.getString("delm.labelNone"));
  124.          if (stringQualifier.length() > 0) {
  125.             if (!stringQualifier.equals("'") && !stringQualifier.equals("""))
  126.                td.addItem(stringQualifier);
  127.             td.setSelectedItem(stringQualifier);
  128.          }
  129.          else
  130.             td.setSelectedItem(LangTool.getString("delm.labelNone"));
  131.          td.setEditable(true);
  132.          opts.add(fdl);
  133.          opts.add(fd);
  134.          opts.add(tdl);
  135.          opts.add(td);
  136.          Object[]      message = new Object[1];
  137.          message[0] = opts;
  138.          String[] options = {UIManager.getString("OptionPane.okButtonText"),
  139.                               UIManager.getString("OptionPane.cancelButtonText")};
  140.          int result = JOptionPane.showOptionDialog(
  141.              parent,                            // the parent that the dialog blocks
  142.              message,                           // the dialog message array
  143.              LangTool.getString("delm.title"),    // the title of the dialog window
  144.              JOptionPane.DEFAULT_OPTION,        // option type
  145.              JOptionPane.PLAIN_MESSAGE,      // message type
  146.              null,                              // optional icon, use null to use the default icon
  147.              options,                           // options string array, will be made into buttons//
  148.              options[0]                         // option that should be made into a default button
  149.          );
  150.          switch(result) {
  151.             case 0: // change options
  152.                delimiter = (String)fd.getSelectedItem();
  153.                if (delimiter.equals(LangTool.getString("delm.labelSpace")))
  154.                   delimiter = " ";
  155.                if (delimiter.equals(LangTool.getString("delm.labelTab")))
  156.                   delimiter = "t";
  157.                if (delimiter.equals(LangTool.getString("delm.labelNone")))
  158.                   delimiter = "";
  159.                stringQualifier = (String)td.getSelectedItem();
  160.                if (stringQualifier.equals(LangTool.getString("delm.labelNone")))
  161.                   stringQualifier = "";
  162.                break;
  163.             case 1: // Cancel
  164.    //       System.out.println("Cancel");
  165.                break;
  166.             default:
  167.                break;
  168.          }
  169.       }
  170.    }
  171. }