亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? abstractobjectdescription.java

?? 水晶 ? ?  報表 ? ? ? 源碼
?? JAVA
字號:
/* ===================================================
 * JCommon : a free general purpose Java class library
 * ===================================================
 *
 * Project Info:  http://www.jfree.org/jcommon/index.html
 * Project Lead:  David Gilbert (david.gilbert@object-refinery.com);
 *
 * (C) Copyright 2000-2003, by Object Refinery Limited and Contributors.
 *
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation;
 * either version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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 General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License along with this
 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 * ------------------------------
 * AbstractObjectDescription.java
 * ------------------------------
 * (C)opyright 2003, by Thomas Morgner and Contributors.
 *
 * Original Author:  Thomas Morgner;
 * Contributor(s):   David Gilbert (for Object Refinery Limited);
 *
 * $Id: AbstractObjectDescription.java,v 1.10 2003/07/24 11:16:11 mungady Exp $
 *
 * Changes (from 19-Feb-2003)
 * -------------------------
 * 19-Feb-2003 : Added standard header and Javadocs (DG);
 * 29-Apr-2003 : Destilled from the JFreeReport project and moved into JCommon
 *
 */

package org.jfree.xml.factory.objects;

import java.util.HashMap;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.Collections;

import org.jfree.util.Configuration;
import org.jfree.util.Log;
import org.jfree.util.ReadOnlyIterator;

/**
 * An abstract base class for object descriptions.
 *
 * @author Thomas Morgner.
 */
public abstract class AbstractObjectDescription implements ObjectDescription, Cloneable {

    /** The class. */
    private Class className;

    /** Storage for parameters. */
    private HashMap parameters;

    /** Storage for parameter definitions. */
    private HashMap parameterDefs;

    /** The configuration for the object description. */
    private Configuration config;

    /**
     * Creates a new object description.
     *
     * @param className  the class.
     */
    public AbstractObjectDescription(Class className) {
        this.className = className;
        this.parameters = new HashMap();
        this.parameterDefs = new HashMap();
    }

    /**
     * Returns a parameter class.
     *
     * @param name  the parameter definition.
     *
     * @return The class.
     */
    public Class getParameterDefinition(String name) {
        return (Class) parameterDefs.get(name);
    }

    /**
     * Sets the class for a parameter.
     *
     * @param name  the parameter name.
     * @param obj  the parameter class.
     */
    public void setParameterDefinition(String name, Class obj) {
        if (obj == null) {
            parameterDefs.remove(name);
        }
        else {
            parameterDefs.put(name, obj);
        }
    }

    /**
     * Converts primitives to corresponding object class.
     *
     * @param obj  the class.
     *
     * @return The class.
     */
    public static Class convertPrimitiveClass(Class obj) {
        if (obj.isPrimitive() == false) {
            return obj;
        }
        if (obj == Boolean.TYPE) {
            return Boolean.class;
        }
        if (obj == Byte.TYPE) {
            return Byte.class;
        }
        if (obj == Character.TYPE) {
            return Character.class;
        }
        if (obj == Short.TYPE) {
            return Short.class;
        }
        if (obj == Integer.TYPE) {
            return Integer.class;
        }
        if (obj == Long.TYPE) {
            return Long.class;
        }
        if (obj == Float.TYPE) {
            return Float.class;
        }
        if (obj == Double.TYPE) {
            return Double.class;
        }
        throw new IllegalArgumentException("Class 'void' is not allowed here");
    }

    /**
     * Sets a parameter.
     *
     * @param name  the name.
     * @param value  the value.
     */
    public void setParameter(String name, Object value) {
        if (getParameterDefinition(name) == null) {
            throw new IllegalArgumentException("No such Parameter defined: " + name
                + " in class " + getObjectClass());
        }
        Class parameterClass = convertPrimitiveClass(getParameterDefinition(name));
        if (parameterClass.isAssignableFrom(value.getClass()) == false) {
            throw new ClassCastException("In Object " + getObjectClass()
                + ": Value is not assignable: " + value.getClass()
                + " is not assignable from " + parameterClass);
        }
        parameters.put(name, value);
    }

    /**
     * Returns an iterator for the parameter names.
     *
     * @return The iterator.
     */
    public synchronized Iterator getParameterNames() {
        ArrayList parameterNames = new ArrayList(parameterDefs.keySet());
        Collections.sort(parameterNames);
        return new ReadOnlyIterator (parameterNames.iterator());
    }

    /**
     * Returns an iterator for the parameter names.
     *
     * @return The iterator.
     */
    protected Iterator getDefinedParameterNames() {
        return new ReadOnlyIterator (parameters.keySet().iterator());
    }

    /**
     * Returns a parameter value.
     *
     * @param name  the parameter name.
     *
     * @return The parameter value.
     */
    public Object getParameter(String name) {
        return parameters.get(name);
    }

    /**
     * Returns the class for the object.
     *
     * @return The class.
     */
    public Class getObjectClass() {
        return className;
    }

    /**
     * Returns a cloned instance of the object description. The contents
     * of the parameter objects collection are cloned too, so that any
     * already defined parameter value is copied to the new instance.
     * <p>
     * Parameter definitions are not cloned, as they are considered read-only.
     * <p>
     * The newly instantiated object description is not configured. If it
     * need to be configured, then you have to call configure on it.
     *
     * @return A cloned instance.
     */
    public ObjectDescription getInstance() {
        try {
            AbstractObjectDescription c = (AbstractObjectDescription) super.clone();
            c.parameters = (HashMap) parameters.clone();
            return c;
        }
        catch (Exception e) {
            Log.error("Should not happen: Clone Error: ", e);
            return null;
        }
    }


    /**
     * Returns a cloned instance of the object description. The contents
     * of the parameter objects collection are cloned too, so that any
     * already defined parameter value is copied to the new instance.
     * <p>
     * Parameter definitions are not cloned, as they are considered read-only.
     * <p>
     * The newly instantiated object description is not configured. If it
     * need to be configured, then you have to call configure on it.
     *
     * @return A cloned instance.
     */
    public ObjectDescription getUnconfiguredInstance() {
        try {
            AbstractObjectDescription c = (AbstractObjectDescription) super.clone();
            c.parameters = (HashMap) parameters.clone();
            c.config = null;
            return c;
        }
        catch (Exception e) {
            Log.error("Should not happen: Clone Error: ", e);
            return null;
        }
    }

    /**
     * Configures this factory. The configuration contains several keys and
     * their defined values. The given reference to the configuration object
     * will remain valid until the report parsing or writing ends.
     * <p>
     * The configuration contents may change during the reporting.
     *
     * @param config the configuration, never null
     */
    public void configure(Configuration config) {
        if (config == null) {
            throw new NullPointerException("The given configuration is null");
        }
        this.config = config;
    }

    /**
     * Returns the configuration for that object description.
     *
     * @return the configuration or null, if not yet set.
     */
    public Configuration getConfig() {
        return config;
    }

    /**
     * Tests for equality.
     * 
     * @param o  the object to test.
     * 
     * @return A boolean.
     */
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof AbstractObjectDescription)) return false;

        final AbstractObjectDescription abstractObjectDescription = (AbstractObjectDescription) o;

        if (!className.equals(abstractObjectDescription.className)) return false;

        return true;
    }

    /**
     * Returns a hash code for the object.
     * 
     * @return The hash code.
     */
    public int hashCode() {
        return className.hashCode();
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲国产中文字幕欧美| 国产精品福利在线播放| 久久色视频免费观看| 亚洲人成人一区二区在线观看 | 国产一区啦啦啦在线观看| 99视频精品在线| 欧美xxxx在线观看| 亚洲午夜电影在线| 成人av在线资源网| 精品嫩草影院久久| 亚洲va中文字幕| 91热门视频在线观看| 日本一区二区综合亚洲| 日本伊人精品一区二区三区观看方式 | 国精品**一区二区三区在线蜜桃| 日本电影亚洲天堂一区| 国产午夜精品一区二区三区四区| 日韩av成人高清| 在线观看精品一区| 一区二区在线观看视频| 成人av手机在线观看| 久久人人爽人人爽| 蓝色福利精品导航| 日韩免费高清av| 日产国产欧美视频一区精品| 欧美色区777第一页| 亚洲六月丁香色婷婷综合久久 | 欧美日韩一区二区三区不卡 | 麻豆久久久久久| 日韩欧美在线影院| 免费在线观看成人| 精品久久人人做人人爰| 激情五月婷婷综合| 欧美大片在线观看一区| 久久97超碰色| 久久久影院官网| 丁香婷婷综合激情五月色| 亚洲国产经典视频| 99精品在线免费| 亚洲电影一级黄| 日韩一区二区在线看片| 免费的成人av| 久久综合一区二区| 成人午夜大片免费观看| 中文字幕亚洲综合久久菠萝蜜| 97久久久精品综合88久久| 亚洲视频在线一区| 欧美日韩一区在线| 久色婷婷小香蕉久久| 久久精品亚洲一区二区三区浴池| 国产成人精品免费在线| 亚洲免费资源在线播放| 欧美亚洲禁片免费| 麻豆精品一区二区| 中文字幕高清一区| 欧美在线综合视频| 激情av综合网| 成人欧美一区二区三区| 欧美日韩和欧美的一区二区| 免费久久99精品国产| 久久久91精品国产一区二区精品| 成人黄色一级视频| 亚洲第一精品在线| 久久久国产精华| 91精品办公室少妇高潮对白| 日本欧美在线看| 亚洲欧洲另类国产综合| 欧美日本视频在线| 国产成人精品影视| 亚洲动漫第一页| 久久久久久久久久久电影| 色噜噜夜夜夜综合网| 青青草国产成人av片免费 | 精品国产乱码久久久久久闺蜜| 成人短视频下载| 日本不卡一区二区三区| 国产精品久99| 日韩一级片在线播放| 91在线视频网址| 免费看欧美女人艹b| 亚洲黄色性网站| 久久久久久99久久久精品网站| 欧美性猛交一区二区三区精品 | 免费久久精品视频| 亚洲男人的天堂在线aⅴ视频| 精品乱码亚洲一区二区不卡| 91啪九色porn原创视频在线观看| 美日韩一区二区三区| 亚洲精品中文在线影院| 国产日韩三级在线| 日韩精品一区二区三区swag| 色综合久久99| 91女人视频在线观看| 国产不卡在线一区| 激情另类小说区图片区视频区| 午夜精品影院在线观看| 亚洲精选免费视频| 国产精品乱子久久久久| 精品国产123| 欧美一区二区免费| 精品视频一区三区九区| 91热门视频在线观看| aaa国产一区| 成人app软件下载大全免费| 国产精品一区二区在线看| 日本aⅴ精品一区二区三区| 午夜天堂影视香蕉久久| 一级特黄大欧美久久久| 亚洲欧美日韩国产另类专区| 久久久久97国产精华液好用吗| 日韩精品一区二区三区视频| 日韩一区二区三区观看| 欧美一区二区三区视频| 91精品久久久久久蜜臀| 欧美一区在线视频| 日韩欧美综合在线| 日韩你懂的电影在线观看| 日韩欧美国产午夜精品| 精品99一区二区三区| 日韩精品资源二区在线| 欧美不卡一区二区三区四区| 欧美成人精精品一区二区频| 久久综合色天天久久综合图片| 日韩欧美国产一区在线观看| 精品99一区二区| 日本一区二区成人在线| 亚洲欧美日韩电影| 午夜影院久久久| 久久99国产精品免费| 国产呦萝稀缺另类资源| 成人国产免费视频| 色香蕉成人二区免费| 欧美喷潮久久久xxxxx| 日韩视频免费直播| 久久美女高清视频| ...av二区三区久久精品| 亚洲欧美精品午睡沙发| 午夜精品视频一区| 国产精品亚洲综合一区在线观看| 国产91精品免费| 欧美专区日韩专区| 久久综合久久综合久久综合| 国产精品久久久久久久久免费樱桃| 亚洲欧洲精品一区二区精品久久久 | 欧美视频一区在线| 欧美成人一区二区三区在线观看 | jiyouzz国产精品久久| 欧美亚洲另类激情小说| xf在线a精品一区二区视频网站| 国产精品久线在线观看| 亚洲成av人片一区二区梦乃| 精品系列免费在线观看| 91色综合久久久久婷婷| 日韩精品一区二区三区在线播放| 国产精品二三区| 日本麻豆一区二区三区视频| 成人免费电影视频| 欧美一区二区三区色| 亚洲欧洲av另类| 久久精品免费看| 欧美日韩中文另类| 国产目拍亚洲精品99久久精品| 午夜精品久久久久久久蜜桃app| 福利一区二区在线| 337p亚洲精品色噜噜狠狠| 国产精品不卡在线| 奇米888四色在线精品| 日本高清成人免费播放| 国产三级三级三级精品8ⅰ区| 视频一区欧美精品| 色哟哟精品一区| 欧美激情一区二区三区| 日韩电影在线一区二区三区| 91麻豆视频网站| 国产欧美精品一区| 激情六月婷婷综合| 欧美一区二区视频网站| 亚洲欧美视频一区| jizz一区二区| 中文字幕欧美激情| 国产综合色在线视频区| 555www色欧美视频| 亚洲超丰满肉感bbw| 日本韩国一区二区| 国产精品对白交换视频 | 极品瑜伽女神91| 欧美日本在线播放| 亚洲综合色在线| 色婷婷精品大视频在线蜜桃视频| 日本一区二区综合亚洲| 国产麻豆精品在线观看| 欧美v日韩v国产v| 亚洲成人av电影在线| 欧美午夜免费电影| 一区二区三区 在线观看视频| 91啪亚洲精品| 亚洲国产毛片aaaaa无费看| 欧美在线观看一区二区| 亚洲午夜在线观看视频在线| 一本色道久久加勒比精品|