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

📄 tableview.java

📁 用来为垂直搜索引擎抓取数据的采集系统
💻 JAVA
字号:
/*
 * *****************************************************
 * Copyright (c) 2005 IIM Lab. All  Rights Reserved.
 * Created by xuehao at 2005-10-12
 * Contact: zxuehao@mail.ustc.edu.cn
 * *****************************************************
 */

package org.indigo.gui;

import org.indigo.parser.ItemParser;
import org.indigo.util.MainConfig;
import org.indigo.util.TaskProperties;
import org.jdom.Element;

import java.util.Observable;
import java.util.StringTokenizer;
import java.util.Vector;

import javax.swing.table.DefaultTableModel;
/**
 * AbstractView 的子类,这样此类就是一个观察者类。
 * 其次,此类主要时实现从模板中读取各个采集字段的名称,
 * 然后显示在主界面中。
 * @author wbz
 *
 */
public class TableView extends AbstractView
{
    private DefaultTableModel itsTableModel=null;
    private String itsTitle=null;
    /**
     * 构造函数,通过和任务对应的文件路径构建一个TableView对象,
     * 在构造函数中,主要是根据文件名利用TaskProperties类读取文件中的内容,
     * 然后添加到主界面的Table中显示。
     * @param itsPropertyFile
     */
    public TableView( String itsPropertyFile )
    {
        itsCount = 0;
        int i,j;
        i = itsPropertyFile.lastIndexOf( "/" );
        j = itsPropertyFile.lastIndexOf( "." );
        itsTitle = itsPropertyFile.substring( i+1, j );
        
        String str=null;
        int ruleCount = 0;        
        TaskProperties props = new TaskProperties();
        props.open( itsPropertyFile );

        // add the table in the tabpane
        ViewManager.getInstance().addTabbedPane( itsTitle );

        DefaultTableModel tableModel = null;
        str = props.getProperty("Name0" );
        
//        System.out.println( "itsTitle="+itsTitle );
        
        tableModel = (DefaultTableModel) ViewManager.getInstance().getTable(itsTitle).getModel();
        if( str==null || str.trim().equals("") )
            tableModel.addColumn( "序号" );
        else
            tableModel.addColumn( str );
        
        str = props.getProperty("RuleCount");
        ruleCount = Integer.parseInt(str);
        for( i=0; i<ruleCount; i++ )
        {
            str = props.getProperty("Name" + (i + 1) );
            tableModel = (DefaultTableModel) ViewManager.getInstance().getTable(itsTitle).getModel();
            if( str==null || str.trim().equals("") )
                tableModel.addColumn( "unkown" );
            else
                tableModel.addColumn( str );
        }
        
        str = MainConfig.getInstance().getProperty( "ShowUrl" );
        if( str==null || str.equals("") || str.equalsIgnoreCase("false") )
        {
            
        }else
        if( str.equalsIgnoreCase("true") )
        {
            tableModel.addColumn( "url" );
        }
//        System.out.println( itsTitle );
        
    }
    private int itsCount;
    /**
     * 继承自AbstractView,主要实现接收被观察者发送过来的数据。
     * 在此主要作用是,根据当采集到一条数据时,就会通过此函数把采集的数据
     * 传递过来显示。
     */
    public void update(Observable o, Object arg)
    {
        int i;
        String aItem=(String)arg;
        String str=aItem;
        
        String sub;
        Vector v = new Vector();
        v.add( String.valueOf(++itsCount) );
        i = str.indexOf( ItemParser.GAP_TOKEN );//分析发送过来的采集数据
        while( i!=-1 )
        {
            sub = str.substring( 0, i );
            v.add( sub );
            str = str.substring( i+1 );
            i = str.indexOf( ItemParser.GAP_TOKEN );
        }
        v.add( str );//把采集过来的数据添加到Vector中
       
        itsTableModel = (DefaultTableModel) ViewManager.getInstance().getTable(itsTitle).getModel();
        itsTableModel.addRow( v );
        itsTableModel.fireTableDataChanged();//把数据添加在Table中显示。
        
//        System.out.println( aItem );
    }
/*
    public void setTableModel(DefaultTableModel m)
    {
        itsTableModel = m;
    }
*/    
}

⌨️ 快捷键说明

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