gatewayexporttask.java

来自「Jive是基于JSP/JAVA技术构架的一个大型BBS论坛系统,这是Jive论坛」· Java 代码 · 共 138 行

JAVA
138
字号
/** * $RCSfile: GatewayExportTask.java,v $ * $Revision: 1.2 $ * $Date: 2002/03/08 03:56:52 $ * * Copyright (C) 1999-2002 CoolServlets, Inc. All Rights Reserved. * * This software is the proprietary information of CoolServlets, Inc. * Use is subject to license terms. */package com.jivesoftware.forum.gateway;import com.jivesoftware.forum.*;import java.util.Date;import java.util.Iterator;import java.util.ArrayList;import java.util.List;/** * A task that performs a gateway export. */public class GatewayExportTask implements Runnable {    private boolean isBusy  = false;    private boolean hasRun  = false;    private Forum forum     = null;    private Gateway gateway = null;    private Date afterDate  = new Date();    private int current     = 0;    private int total       = 0;    private ArrayList err   = new ArrayList();    public GatewayExportTask(Forum forum, Gateway gateway, Date afterDate) {        this.forum = forum;        this.gateway = gateway;        this.afterDate = afterDate;    }    public boolean isBusy() {        return isBusy;    }    public boolean hasRun() {        return hasRun;    }    public int getCurrentMessageCount() {        return current;    }    public int getTotalMessageCount() {        return total;    }    public ArrayList getErrors() {        return err;    }    public void run() {        try {            hasRun = true;            isBusy = true;            Iterator messages = forum.messages();            total = forum.getMessageCount();            List toExport = new ArrayList();            while (messages.hasNext()) {                ForumMessage message = (ForumMessage) messages.next();                Date mdate = message.getCreationDate();                // if the current message is too old we'll test all children                // of the root message in the thread to see if any of the                // children are younger than the cutoff date. If so, we export                // every message in the thread                if (mdate.before(afterDate)) {                    ForumThread mThread = message.getForumThread();                    TreeWalker mTree = mThread.treeWalker();                    Iterator iter = mTree.recursiveChildren(mThread.getRootMessage());                    boolean youngChild = false;                    while (iter.hasNext()) {                        ForumMessage m = (ForumMessage) iter.next();                        if (m.getCreationDate().after(afterDate) &&                            m.getProperty(JavaMailGateway.DUMMY_PARENT_HEADER) != null) {                            youngChild = true;                            break;                        }                    }                    if (!youngChild) {                        total--;                        continue;                    }                }                // dummy message, we won't export                if (message.getProperty(JavaMailGateway.DUMMY_PARENT_HEADER) != null) {                    total--;                    continue;                }                current++;                toExport.add(message);            }            try {                ForumMessage[] fmArray = new ForumMessage[1];                gateway.exportData((ForumMessage[]) toExport.toArray(fmArray));            }            catch (GatewayException ge) {                err.add(ge);                ge.printStackTrace();            }        }        finally {            isBusy = false;            gateway = null;        }    }    public void stop() {        synchronized(this) {            try {                if (isBusy && gateway != null) {                    GatewayExporter exporter = gateway.getGatewayExporter();                    exporter.stop();                }            }            catch (GatewayException ge) {                ge.printStackTrace();            }        }    }}

⌨️ 快捷键说明

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