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

📄 dataimporter.java

📁 jdbc oracle jdbc oraclejdbc oraclejdbc oraclejdbc oraclejdbc oraclejdbc oracle
💻 JAVA
字号:
package tlz.imp;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.text.Document;

import tlz.Debug;
import tlz.imp.Worker.SourceFileButton;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.text.SimpleDateFormat;

public abstract class DataImporter extends Thread {
	protected boolean jobCanceled = false;
	
	JDesktopPane showPanel = null;
	JPanel samplePanel = null;
	File dataFile = null;
	private JTextArea messageArea = new JTextArea();
	private JProgressBar progressBar = null;
	protected boolean isRunning = false;
	protected boolean exitWhenDone = false;
	protected DoCancelButton cancelButton = null;
	public boolean isRunning(){
		return isRunning;
	}
	public DataImporter(JDesktopPane showPanel, File dataFile){
		this.showPanel = showPanel;
		this.dataFile = dataFile;
		//showPanel.add(messageArea, BorderLayout.SOUTH);
	}

	protected void prepareForImport(){
		showPanel.remove(0);
		JPanel topPane = new JPanel();
		topPane.setLayout(new GridLayout(2,1));
		progressBar = new JProgressBar(0, 100);
		progressBar.setStringPainted(true);
		topPane.add(progressBar);
		cancelButton =  new DoCancelButton();
		topPane.add(cancelButton);
		
		JPanel pan = new JPanel();
		pan.add(topPane , BorderLayout.NORTH);
		messageArea.setEditable(false);
		JScrollPane jsp = new JScrollPane(messageArea);
		jsp.setPreferredSize(new Dimension(600,100));
		pan.add(jsp,BorderLayout.SOUTH);
		pan.setPreferredSize(new Dimension(600,300));
		
		showPanel.add(pan);
		
		this.showPercent(0);

		/*try{
			sleep(5000);
		}catch(Exception e){
			
		}*/
	}

	protected void showSample(JTable table){
		JPanel pan = new JPanel();
        pan.add(table , BorderLayout.CENTER);
        showPanel.add(pan);
	}
	
	public void run(){
		try{
			doImport();
		}catch(Exception e){
			e.printStackTrace();
			//this.writeLog(e.getMessage());
		}
	}

    public void writeLog(String mes){
        if(! mes.endsWith("\n")) mes += "\n";
        Document doc = messageArea.getDocument();
        try{
            doc.insertString(doc.getLength(), mes, null);

            if(doc.getLength() > 80000) messageArea.setText(messageArea.getText().substring(40000));
        }catch(Exception e){
            //e.printStackTrace();
        }
    }
    
    protected void showPercent(int percent){
    	progressBar.setValue(percent);
		 SwingUtilities.invokeLater(new Runnable()   {   
             public   void   run()   {   
            	 Worker.appWindow.pack();
             }   
		 });  
    }
    
	
	public class SampleDataTableModel extends DefaultTableModel{
	  public SampleDataTableModel(int row,int column){
	    super(row,column);
	  }
	  public SampleDataTableModel(Object[][] data, Object[] columnNames) {
	     super(data, columnNames);
	  }
	  public boolean isCellEditable(int row, int column) {
        return false;
	  }
	}
	
	class ReturnButton extends JButton implements ActionListener{
        public ReturnButton(String str){
            super(str);
            addActionListener(this);
        }
        public void actionPerformed(ActionEvent e){
    		Worker.appWindow.showHomePage();
        }
    }
	
   class DoImportButton extends JButton implements ActionListener{
        public DoImportButton(){
            super("开始导入");
            addActionListener(this);
        }
        public void actionPerformed(ActionEvent e){
        	Debug.print("prepareForImport");
    		prepareForImport();
    		Debug.print("start");
        	start();
        }
    }
    
    class DoCancelButton extends JButton implements ActionListener{
        public DoCancelButton(){
            super("取消");
            addActionListener(this);
        }
        public void actionPerformed(ActionEvent e){
        	cancelOperation();
        }
    }
    
    public void cancelOperation(){
    	if(isRunning && JOptionPane.showConfirmDialog(Worker.appWindow,"确认要取消导入操作吗?") == JOptionPane.OK_OPTION){
    		jobCanceled = true;
    	}
    }
    protected abstract void doCancel() throws Exception;
	public abstract void showSample() throws Exception;
	protected abstract int doImport() throws Exception;
	
	protected String getAttachURI(String baseURI, String attachPath){
		String ret = attachPath.replaceAll("%20", " ");;
		ret = ret.replaceAll("\\", "/");
		if(ret.lastIndexOf("/") > -1){
			ret = ret.substring(0,ret.lastIndexOf("/")) + ret.substring(ret.lastIndexOf("/")).toLowerCase();
		}
		return baseURI + ret;
	}
	
	private static int GBK_BYTE_LENTH = 2;
	private static final char blank = ' ';
	
    private static String cutForGBK(String str, int dataWidth) throws Exception{
    	byte[] data = str.getBytes("GBK");
        if(data == null) return "";
        int index = 0,actualIndex = 0;

        while(index < dataWidth && index < data.length && actualIndex < dataWidth && actualIndex < data.length){
            //if(actualIndex >= data.length) break;
            if(data[actualIndex] < 0) {
                //如果是中文字符,跳过2个字节
                if(index + GBK_BYTE_LENTH > dataWidth){
                    for(int z = actualIndex; z < dataWidth; z ++){
                        data[z] = (byte) blank;
                    }
                    break;
                }
                actualIndex += 2;
                index += GBK_BYTE_LENTH;
            }else{
                //如果是英文字符,跳过本字节
                index ++;
                actualIndex ++;
            }
        }
        if(actualIndex < dataWidth && index < data.length){
        	for(int z = actualIndex; z < dataWidth; z ++){
                data[z] = (byte) blank;
            }
        }
        byte [] n = new byte[dataWidth];
        System.arraycopy(data,0,n,0,dataWidth);
        return new String(n,"GBK");
    }
}

⌨️ 快捷键说明

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