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

📄 jobconfigureutils.java

📁 这是个爬虫和lucece相结合最好了
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Heritrix * * $Id: JobConfigureUtils.java 4401 2006-07-31 19:39:04Z gojomo $ * * Created on Aug 30, 2004 * * Copyright (C) 2003 Internet Archive. * * This file is part of the Heritrix web crawler (crawler.archive.org). * * Heritrix is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser Public License as published by * the Free Software Foundation; either version 2.1 of the License, or * any later version. * * Heritrix is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU Lesser Public License for more details. * * You should have received a copy of the GNU Lesser Public License * along with Heritrix; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package org.archive.crawler.admin.ui;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;import java.io.StringReader;import java.io.Writer;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.util.logging.Level;import java.util.logging.Logger;import javax.management.Attribute;import javax.management.AttributeNotFoundException;import javax.management.InvalidAttributeValueException;import javax.management.MBeanAttributeInfo;import javax.management.MBeanException;import javax.management.ReflectionException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.archive.crawler.admin.CrawlJob;import org.archive.crawler.admin.CrawlJobHandler;import org.archive.crawler.settings.ComplexType;import org.archive.crawler.settings.CrawlerSettings;import org.archive.crawler.settings.ListType;import org.archive.crawler.settings.MapType;import org.archive.crawler.settings.ModuleAttributeInfo;import org.archive.crawler.settings.ModuleType;import org.archive.crawler.settings.SettingsHandler;import org.archive.crawler.settings.XMLSettingsHandler;import org.archive.crawler.settings.refinements.Refinement;import org.archive.util.IoUtils;/** * Utility methods used configuring jobs in the admin UI. *  * Methods are mostly called by the admin UI jsp. *  * @author stack * @version $Date: 2006-07-31 19:39:04 +0000 (Mon, 31 Jul 2006) $, $Revision: 4401 $ */public class JobConfigureUtils {    private static Logger logger = Logger.getLogger(JobConfigureUtils.class            .getName());    public static final String ACTION = "action";    public static final String SUBACTION = "subaction";    public static final String FILTERS = "filters";    private static final String MAP = "map";    private static final String FILTER = "filter";    private static final Object ADD = "add";    private static final Object MOVEUP = "moveup";    private static final Object MOVEDOWN = "movedown";    private static final Object REMOVE = "remove";    private static final Object GOTO = "goto";    private static final Object DONE = "done";    private static final Object CONTINUE = "continue"; // keep editting    /**     * Check passed crawljob CrawlJob setting. Call this method at start of     * page.     *      * @param job     *            Current CrawlJobHandler.     * @param request     *            Http request.     * @param response     *            Http response.     * @return Crawljob.     */    protected static CrawlJob getAndCheckJob(CrawlJob job,            HttpServletRequest request, HttpServletResponse response) {        return job;    }    /**     * This methods updates a ComplexType with information passed to it by a     * HttpServletRequest. It assumes that for every 'simple' type there is a     * corresponding parameter in the request. A recursive call will be made for     * any nested ComplexTypes. For each attribute it will check if the relevant     * override is set (name.override parameter equals 'true'). If so the     * attribute setting on the specified domain level (settings) will be     * rewritten. If it is not we well ensure that it isn't being overridden.     *      * @param mbean     *            The ComplexType to update     * @param settings     *            CrawlerSettings for the domain to override setting for. null     *            denotes the global settings.     * @param request     *            The HttpServletRequest to use to update the ComplexType     * @param expert     *            if true expert settings will be updated, otherwise they will     *            be ignored.     */    public static void writeNewOrderFile(ComplexType mbean,            CrawlerSettings settings, HttpServletRequest request, boolean expert) {        // If mbean is transient or a hidden expert setting.        if (mbean.isTransient() || (mbean.isExpertSetting() && expert == false)) {            return;        }        MBeanAttributeInfo a[] = mbean.getMBeanInfo(settings).getAttributes();        for (int n = 0; n < a.length; n++) {            checkAttribute((ModuleAttributeInfo) a[n], mbean, settings,                    request, expert);        }    }    /**     * Process passed attribute. Check if needs to be written and if so, write     * it.     *      * @param att     *            Attribute to process.     * @param mbean     *            The ComplexType to update     * @param settings     *            CrawlerSettings for the domain to override setting for. null     *            denotes the global settings.     * @param request     *            The HttpServletRequest to use to update the ComplexType     * @param expert     *            if true expert settings will be updated, otherwise they will     *            be ignored.     */    protected static void checkAttribute(ModuleAttributeInfo att,            ComplexType mbean, CrawlerSettings settings,            HttpServletRequest request, boolean expert) {        // The attributes of the current attribute.        Object currentAttribute = null;        try {            currentAttribute = mbean.getAttribute(settings, att.getName());        } catch (Exception e) {            logger.severe("Failed getting " + mbean.getAbsoluteName()                    + " attribute " + att.getName() + ": " + e.getMessage());            return;        }        if (logger.isLoggable(Level.FINE)) {            logger.fine("MBEAN: " + mbean.getAbsoluteName() + " "                    + att.getName() + " TRANSIENT " + att.isTransient() + " "                    + att.isExpertSetting() + " " + expert);        }        if (att.isTransient() == false                && (att.isExpertSetting() == false || expert)) {            if (currentAttribute instanceof ComplexType) {                writeNewOrderFile((ComplexType) currentAttribute, settings,                        request, expert);            } else {                String attName = att.getName();                // Have a 'setting'. Let's see if we need to update it (if                // settings == null update all, otherwise only if override                // is set.                String attAbsoluteName = mbean.getAbsoluteName() + "/"                        + attName;                boolean override = (request.getParameter(attAbsoluteName                        + ".override") != null)                        && (request.getParameter(attAbsoluteName + ".override")                                .equals("true"));                if (settings == null || override) {                    if (currentAttribute instanceof ListType) {                        try {                            ListType list = (ListType)currentAttribute;                            Class cls = list.getClass();                            Constructor constructor = cls.getConstructor(String.class, String.class);                            list = (ListType) constructor.newInstance(list.getName(), list.getDescription());                            String[] elems = request                                    .getParameterValues(attAbsoluteName);                            for (int i = 0; elems != null && i < elems.length; i++) {                                list.add(elems[i]);                            }                            writeAttribute(attName, attAbsoluteName, mbean,                                    settings, list);                        } catch (Exception e) {                            e.printStackTrace();                            logger.severe("Setting new list values on "                                    + attAbsoluteName + ": " + e.getMessage());                            return;                        }                    } else {                        writeAttribute(attName, attAbsoluteName, mbean,                                settings, request.getParameter(attAbsoluteName));                    }                } else if (settings != null && override == false) {                    // Is not being overridden. Need to remove possible                    // previous overrides.                    try {                        mbean.unsetAttribute(settings, attName);                    } catch (Exception e) {                        e.printStackTrace();                        logger.severe("Unsetting attribute on "                                + attAbsoluteName + ": " + e.getMessage());                        return;                    }                }            }        }    }    /**     * Write out attribute.     *      * @param attName     *            Attribute short name.     * @param attAbsoluteName     *            Attribute full name.     * @param mbean     *            The ComplexType to update     * @param settings     *            CrawlerSettings for the domain to override setting for. null     *            denotes the global settings.     * @param value     *            Value to set into the attribute.     */    protected static void writeAttribute(String attName,            String attAbsoluteName, ComplexType mbean,            CrawlerSettings settings, Object value) {        try {            if (logger.isLoggable(Level.FINE)) {                logger.fine("MBEAN SET: " + attAbsoluteName + " " + value);            }            mbean.setAttribute(settings, new Attribute(attName, value));        } catch (Exception e) {            e.printStackTrace();            logger.severe("Setting attribute value " + value + " on "                    + attAbsoluteName + ": " + e.getMessage());            return;        }    }    /**     * Check passed job is not null and not readonly.     * @param job Job to check.     * @param response Http response.     * @param redirectBasePath Full path for where to go next if an error.     * @param currDomain May be null.

⌨️ 快捷键说明

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