⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formattrs.java

📁 weka机器学习系统(本站可下载)的拓展
💻 JAVA
字号:
package com.prcomps.cahitarf.gui;

import com.sohlman.easylayout.EasyLayout;
import com.sohlman.easylayout.Constraint;
import com.prcomps.cahitarf.Db2Arff;

import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JComboBox;
import javax.swing.DefaultCellEditor;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JFileChooser;
import java.util.ResourceBundle;
import java.util.ArrayList;
import java.sql.Connection;
import java.sql.SQLException;
import java.io.FileNotFoundException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

/**
 */
public class FormAttrs
        extends JPanel
        implements IWizardPanel
{
    private AttrsTableModel tmodel   = new AttrsTableModel();
    private JTable          tblAttrs = new JTable( tmodel );
    private ResourceBundle  bundle   = WizardFrame.getBundle();
    private JComboBox       cbTypes  = new JComboBox();
    private JComboBox       cbQuote  = new JComboBox( new String[] { "", "\"", "'" } );
    private JLabel          lblPars;

    private static final String specialSaveChars = "=: \t\r\n\f#!";

    public FormAttrs()
    {
        createForm();
        setName( WizardFrame.FORM_ATTRS );
    }

    private void createForm()
    {

        cbTypes.addItem( AttrsTableModel.TYPE_NUMERIC );
        cbTypes.addItem( AttrsTableModel.TYPE_CLASS );
        cbTypes.addItem( AttrsTableModel.TYPE_STRING );

        setLayout( new EasyLayout( new int[]{ 50, 50 }, new int[]{ 50, 50 }, 8, 8  ) );

        lblPars = new JLabel()
        {
            public Dimension getPreferredSize()
            {
                return new Dimension(400, 300);
            }
            public Dimension getMinimumSize()
            {
                return new Dimension(200, 200);
            }
        };
        add( lblPars, new Constraint( 0, 0, 2, 1 ) );
        JScrollPane attrsPane = new JScrollPane( tblAttrs );
        add( attrsPane, new Constraint( 0, 1 ) );
        JButton btnSave = new JButton( bundle.getString("wizard.attrs.save" ) );
        btnSave.addActionListener( new ActionListener()
        {
            public void actionPerformed( ActionEvent e )
            {
                saveConfig();
            }
        });
        add( btnSave, new Constraint( 1, 1, Constraint.CENTER, Constraint.BOTTOM, 0, 5  ) );
    }

    public String getNext()
            throws NotReadyException
    {
        saveAttrs();
        return WizardFrame.FORM_RUN;
    }

    public String getPrev()
            throws NotReadyException
    {
        saveAttrs();
        return WizardFrame.FORM_SELECT;
    }

    private void saveAttrs()
    {
        ArrayList attrs = tmodel.getAttrs();
        for ( int i=0; i<attrs.size(); i++ )
            WizardFrame.properties.setProperty( Db2Arff.PROP_FIELD_ + i, attrs.get(i).toString() );

        for ( int i=attrs.size(); WizardFrame.properties.remove( Db2Arff.PROP_FIELD_ + i ) != null; i++ )
            ;
    }

    private void saveConfig()
    {
        saveAttrs();
        JFileChooser fc = new JFileChooser( System.getProperty( "user.dir" ) );
        int result = fc.showSaveDialog( this );
        if ( result == JFileChooser.APPROVE_OPTION )
            saveConfig( fc.getSelectedFile() );
    }

    private void saveConfig( File pca )
    {
        try
        {
            FileOutputStream fout = new FileOutputStream( pca );
            PrintStream out = new PrintStream( fout );
            out.println( "#   Created by Cahit Arf Wizard" );
            out.println( "#   " + new java.util.Date() );
            out.println( Db2Arff.PROP_RELATION + '=' + WizardFrame.properties.getProperty( Db2Arff.PROP_RELATION ) );
            out.println();
            out.println( Db2Arff.PROP_JDBC_DRIVER + '=' + WizardFrame.properties.getProperty( Db2Arff.PROP_JDBC_DRIVER ) );
            out.println( Db2Arff.PROP_JDBC_URL + '=' + WizardFrame.properties.getProperty(Db2Arff.PROP_JDBC_URL ) );
            out.println( Db2Arff.PROP_JDBC_USER + '=' + WizardFrame.properties.getProperty( Db2Arff.PROP_JDBC_USER ) );
            out.println( Db2Arff.PROP_JDBC_PASSWORD + '=' + WizardFrame.properties.getProperty( Db2Arff.PROP_JDBC_PASSWORD ) );
            out.println();
            out.println( Db2Arff.PROP_JDBC_SELECT + '=' + saveConvert(
                    WizardFrame.properties.getProperty( Db2Arff.PROP_JDBC_SELECT ), false ) );
            out.println();
            for ( int i=0; ; i++ )
            {
                String attr = WizardFrame.properties.getProperty( Db2Arff.PROP_FIELD_ + i );
                if ( attr == null )
                    break;
                out.println( (Db2Arff.PROP_FIELD_ + i) + '=' + attr );
            }
            out.println();
            //WizardFrame.properties.store( out, "Created by Cahit Arf Wizard" );
            FormStart.addPrefsFiles( pca.getPath().replace( '\\', '/' ) );
        }
        catch ( FileNotFoundException e )
        {
            e.printStackTrace();  //To change body of catch statement use Options | File Templates.
        }
        catch ( IOException e )
        {
            e.printStackTrace();  //To change body of catch statement use Options | File Templates.
        }

    }

    public void checkStatus()
    {
        if ( ! FormSelect.selectUpdated && WizardFrame.properties.getProperty( Db2Arff.PROP_FIELD_ + "0" ) != null )
        {
             tmodel.loadAttrs();
        }
        else
        {
            Db2Arff db2Arff = new Db2Arff();
            db2Arff.setProperties( WizardFrame.properties );
            try
            {
                db2Arff.loadDrivers();
                Connection conn = db2Arff.connect();
                tmodel.setConnection( conn );
                tmodel.executeQuery( WizardFrame.properties.getProperty( Db2Arff.PROP_JDBC_SELECT ) );
            }
            catch ( FileNotFoundException e )
            {
                e.printStackTrace();  //To change body of catch statement use Options | File Templates.
            }
            catch ( SQLException e )
            {
                e.printStackTrace();  //To change body of catch statement use Options | File Templates.
            }
            catch ( ClassNotFoundException e )
            {
                e.printStackTrace();  //To change body of catch statement use Options | File Templates.
            }
        }
        tblAttrs.getColumnModel().getColumn( 1 ).setCellEditor( new DefaultCellEditor( cbTypes ) );
        tblAttrs.getColumnModel().getColumn( 2 ).setCellEditor( new DefaultCellEditor( cbQuote ) );
        SwingUtilities.updateComponentTreeUI( cbTypes );
        SwingUtilities.updateComponentTreeUI( cbQuote );
        FormSelect.selectUpdated = false;
        StringBuffer str = new StringBuffer();
        str.append( "<html><p align=center>" ).append( bundle.getString( "wizard.db.relation" ) )
            .append( " <strong>" ).append( WizardFrame.properties.getProperty( Db2Arff.PROP_RELATION ) )
            .append( "</strong></p>");
        str.append( "<li>" )
            .append( bundle.getString( "wizard.db.driver" ) )
            .append( " : <strong>")
            .append( WizardFrame.properties.getProperty( Db2Arff.PROP_JDBC_DRIVER ) )
            .append( "</strong>");
        str.append( "<li>" )
            .append( bundle.getString( "wizard.db.url" ) )
            .append( " : <strong>")
            .append( WizardFrame.properties.getProperty( Db2Arff.PROP_JDBC_URL ) )
            .append( "</strong>");
        str.append( "<li>" )
            .append( bundle.getString( "wizard.db.user" ) )
            .append( " : <strong>")
            .append( WizardFrame.properties.getProperty( Db2Arff.PROP_JDBC_USER ) )
            .append( "</strong>");
        str.append( "<li>" )
            .append( bundle.getString( "wizard.select.title" ) )
            .append( " : <strong>")
            .append( WizardFrame.properties.getProperty( Db2Arff.PROP_JDBC_SELECT ) )
            .append( "</strong>");
        str.append( "</ul></html>" );
        lblPars.setText( str.toString() );
    }

    /*
     * Converts unicodes to encoded &#92;uxxxx
     * and writes out any of the characters in specialSaveChars
     * with a preceding slash
     */
    private String saveConvert(String theString, boolean escapeSpace)
    {
        int len = theString.length();
        StringBuffer outBuffer = new StringBuffer(len*2);

        for(int x=0; x<len; x++)
        {
            char aChar = theString.charAt(x);
            switch(aChar)
            {
	    	    case ' ':
		            if (x == 0 || escapeSpace)
			        outBuffer.append('\\');
		            outBuffer.append(' ');
    		        break;
                case '\\':outBuffer.append('\\'); outBuffer.append('\\');
                          break;
                case '\t':outBuffer.append('\\'); outBuffer.append('t');
                          break;
                case '\n':outBuffer.append('\\'); outBuffer.append('n');
                          break;
                case '\r':outBuffer.append('\\'); outBuffer.append('r');
                          break;
                case '\f':outBuffer.append('\\'); outBuffer.append('f');
                          break;
                default:
                    if ((aChar < 0x0020) || (aChar > 0x007e)) {
                        outBuffer.append('\\');
                        outBuffer.append('u');
                        outBuffer.append(toHex((aChar >> 12) & 0xF));
                        outBuffer.append(toHex((aChar >>  8) & 0xF));
                        outBuffer.append(toHex((aChar >>  4) & 0xF));
                        outBuffer.append(toHex( aChar        & 0xF));
                    } else {
                        if (specialSaveChars.indexOf(aChar) != -1)
                            outBuffer.append('\\');
                        outBuffer.append(aChar);
                    }
            }
        }
        return outBuffer.toString();
    }

    /**
     * Convert a nibble to a hex character
     * @param	nibble	the nibble to convert.
     */
    private static char toHex(int nibble)
    {
	    return hexDigit[(nibble & 0xF)];
    }

    /** A table of hex digits */
    private static final char[] hexDigit = {
	        '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
    };

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -