scanmanagerconfig.java

来自「一个小公司要求给写的很简单的任务管理系统。」· Java 代码 · 共 305 行

JAVA
305
字号
/* * ScanManagerConfig.java * * Created on July 13, 2006, 3:42 PM * * @(#)ScanManagerConfig.java	1.4 06/08/03 * * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * -Redistribution of source code must retain the above copyright notice, this *  list of conditions and the following disclaimer. * * -Redistribution in binary form must reproduce the above copyright notice, *  this list of conditions and the following disclaimer in the documentation *  and/or other materials provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that this software is not designed, licensed or intended * for use in the design, construction, operation or maintenance of any * nuclear facility. */package com.sun.jmx.examples.scandir.config;import java.util.Arrays;import java.util.LinkedHashMap;import java.util.Map;import javax.xml.bind.annotation.XmlAttribute;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlElementRef;import javax.xml.bind.annotation.XmlElementWrapper;import javax.xml.bind.annotation.XmlRootElement;/** * The <code>ScanManagerConfig</code> Java Bean is used to model * the configuration of the {@link  * com.sun.jmx.examples.scandir.ScanManagerMXBean ScanManagerMXBean}. *   * The {@link  * com.sun.jmx.examples.scandir.ScanManagerMXBean ScanManagerMXBean} will  * use this configuration to initialize the {@link  * com.sun.jmx.examples.scandir.ResultLogManagerMXBean ResultLogManagerMXBean}  * and create the {@link  * com.sun.jmx.examples.scandir.DirectoryScannerMXBean DirectoryScannerMXBeans} * <p> * This class is annotated for XML binding. * </p>  *  * @author Sun Microsystems, 2006 - All rights reserved. **/@XmlRootElement(name="ScanManager",        namespace="jmx:com.sun.jmx.examples.scandir.config")public class ScanManagerConfig {        // A logger for this class    //    // private static final Logger LOG =    //        Logger.getLogger(ScanManagerConfig.class.getName());        /**     * A set of DirectoryScannerConfig objects indexed by their names.     **/    private final Map<String, DirectoryScannerConfig> directoryScanners;        /**     * The initial Result Log configuration.     */    private ResultLogConfig initialResultLogConfig;    /**     * Holds value of property name. The name of the configuration      *       usually corresponds to     *       the value of the {@code name=} key of the {@code ObjectName}     *       of the {@link      *       com.sun.jmx.examples.scandir.ScanDirConfigMXBean      *       ScanDirConfigMXBean} which owns this configuration.     **/    private String name;    /**     * Creates a new instance of ScanManagerConfig.      * <p>You should not use this constructor directly, but use      *    {@link #ScanManagerConfig(String)} instead.     * </p>     * <p>This constructor is tagged deprecated so that the compiler      *    will generate a warning if it is used by mistake.     * </p>     * @deprecated Use {@link #ScanManagerConfig(String)} instead. This      *             constructor is used through reflection by the XML     *             binding framework.     */    public ScanManagerConfig() {        this(null,true);    }    /**     * Creates a new instance of ScanManagerConfig.      * @param name The name of the configuration which usually corresponds to     *       the value of the {@code name=} key of the {@code ObjectName}     *       of the {@link      *       com.sun.jmx.examples.scandir.ScanDirConfigMXBean      *       ScanDirConfigMXBean} which owns this configuration.     **/    public ScanManagerConfig(String name) {        this(name,false);    }        // Our private constructor...    private ScanManagerConfig(String name, boolean allowsNull) {        if (name == null && allowsNull==false)            throw new IllegalArgumentException("name=null");        this.name = name;        directoryScanners = new LinkedHashMap<String,DirectoryScannerConfig>();        this.initialResultLogConfig = new ResultLogConfig();        this.initialResultLogConfig.setMemoryMaxRecords(1024);            }        // Creates an array for deep equality.    private Object[] toArray() {        final Object[] thisconfig = {            name,directoryScanners,initialResultLogConfig        };        return thisconfig;    }        // equals    @Override    public boolean equals(Object o) {        if (o == this) return true;        if (!(o instanceof ScanManagerConfig)) return false;        final ScanManagerConfig other = (ScanManagerConfig)o;        if (this.directoryScanners.size() != other.directoryScanners.size())             return false;        return Arrays.deepEquals(toArray(),other.toArray());    }        @Override    public int hashCode() {        final String key = name;        if (key == null) return 0;        else return key.hashCode();    }    /**     * Gets the name of this configuration. The name of the configuration      *       usually corresponds to     *       the value of the {@code name=} key of the {@code ObjectName}     *       of the {@link      *       com.sun.jmx.examples.scandir.ScanDirConfigMXBean      *       ScanDirConfigMXBean} which owns this configuration.     * @return The name of this configuration.     */    @XmlAttribute(name="name",required=true)    public String getName() {        return this.name;    }    /**     * Sets the name of this configuration. The name of the configuration      *       usually corresponds to     *       the value of the {@code name=} key of the {@code ObjectName}     *       of the {@link      *       com.sun.jmx.examples.scandir.ScanDirConfigMXBean      *       ScanDirConfigMXBean} which owns this configuration.     *       <p>Once set this value cannot change.</p>     * @param name The name of this configuration.     */    public void setName(String name) {        if (this.name == null)            this.name = name;        else if (name == null)            throw new IllegalArgumentException("name=null");        else if (!name.equals(this.name))            throw new IllegalArgumentException("name="+name);    }   /**    * Gets the list of Directory Scanner configured by this     * configuration. From each element in this list, the     * {@link com.sun.jmx.examples.scandir.ScanManagerMXBean ScanManagerMXBean}    * will create, initialize, and register a {@link     * com.sun.jmx.examples.scandir.DirectoryScannerMXBean}.    * @return The list of Directory Scanner configured by this configuration.    */    @XmlElementWrapper(name="DirectoryScannerList",             namespace=XmlConfigUtils.NAMESPACE)    @XmlElementRef    public DirectoryScannerConfig[] getScanList() {        return directoryScanners.values().toArray(new DirectoryScannerConfig[0]);    }   /**    * Sets the list of Directory Scanner configured by this     * configuration. From each element in this list, the     * {@link com.sun.jmx.examples.scandir.ScanManagerMXBean ScanManagerMXBean}    * will create, initialize, and register a {@link     * com.sun.jmx.examples.scandir.DirectoryScannerMXBean}.    * @param scans The list of Directory Scanner configured by this configuration.    */    public void setScanList(DirectoryScannerConfig[] scans) {        directoryScanners.clear();        for (DirectoryScannerConfig scan : scans)            directoryScanners.put(scan.getName(),scan);    }    /**     * Get a directory scanner by its name.     *      * @param name The name of the directory scanner. This is the     *             value returned by {@link      *             DirectoryScannerConfig#getName()}.     * @return The named {@code DirectoryScannerConfig}     */    public DirectoryScannerConfig getScan(String name) {        return directoryScanners.get(name);    }    /**     * Adds a directory scanner to the list.      * <p>If a directory scanner     * configuration by that name already exists in the list, it will     * be replaced by the given <var>scan</var>.     * </p>     * @param scan The {@code DirectoryScannerConfig} to add to the list.     * @return The replaced {@code DirectoryScannerConfig}, or {@code null}     *         if there was no {@code DirectoryScannerConfig} by that name      *         in the list.     */    public DirectoryScannerConfig putScan(DirectoryScannerConfig scan) {        return this.directoryScanners.put(scan.getName(),scan);    }        // XML value of  this object.    public String toString() {        return XmlConfigUtils.toString(this);    }    /**     * Removes the named directory scanner from the list.     *      * @param name The name of the directory scanner. This is the     *             value returned by {@link      *             DirectoryScannerConfig#getName()}.     * @return The removed {@code DirectoryScannerConfig}, or {@code null}     *         if there was no directory scanner by that name in the list.     */    public DirectoryScannerConfig removeScan(String name) {       return this.directoryScanners.remove(name);    }    /**     * Gets the initial Result Log Configuration.     * @return The initial Result Log Configuration.     */    @XmlElement(name="InitialResultLogConfig",namespace=XmlConfigUtils.NAMESPACE)    public ResultLogConfig getInitialResultLogConfig() {        return this.initialResultLogConfig;    }    /**     * Sets the initial Result Log Configuration.     * @param initialLogConfig The initial Result Log Configuration.     */    public void setInitialResultLogConfig(ResultLogConfig initialLogConfig) {        this.initialResultLogConfig = initialLogConfig;    }    /**     * Creates a copy of this object, with the specified name.     * @param newname the name of the copy.     * @return A copy of this object.     **/    public ScanManagerConfig copy(String newname) {        return copy(newname,this);    }        // Copy by XML cloning, then change the name.    //    private static ScanManagerConfig             copy(String newname, ScanManagerConfig other) {        ScanManagerConfig newbean = XmlConfigUtils.xmlClone(other);        newbean.name = newname;        return newbean;    }}

⌨️ 快捷键说明

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