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

📄 modelutils.java

📁 看了《 使用JSF 构建数据库驱动的应用程序》 一文后
💻 JAVA
字号:
package jsfdb.model;

import jsfdb.model.dao.SubscriberDAO;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.beans.IntrospectionException;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
import java.util.ResourceBundle;
import java.util.MissingResourceException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ModelUtils {
    public static final String RESOURCES
        = ModelUtils.class.getPackage().getName()
        + ".res.ModelResources";
    private static ResourceBundle resources;
    private static SubscriberDAO subscriberDAO;

    public static void log(Throwable x) {
        Logger.global.log(Level.SEVERE, x.getMessage(), x);
    }

    public static synchronized ResourceBundle getResources() {
        if (resources == null)
            try {
                resources = ResourceBundle.getBundle(RESOURCES);
            } catch (MissingResourceException x) {
                log(x);
                throw new InternalError(x.getMessage());
            }
        return resources;
    }

    public static String getResource(String key) {
        return getResources().getString(key);
    }

    public synchronized static SubscriberDAO getSubscriberDAO() {
        if (subscriberDAO == null)
            try {
                Class daoClass = Class.forName(getResource("DAO"));
                subscriberDAO
                    = (SubscriberDAO) daoClass.newInstance();
            } catch (ClassNotFoundException x) {
                log(x);
                throw new InternalError(x.getMessage());
            } catch (IllegalAccessException x) {
                log(x);
                throw new InternalError(x.getMessage());
            } catch (InstantiationException x) {
                log(x);
                throw new InternalError(x.getMessage());
            }
        return subscriberDAO;
    }

    public static void copy(Object source, Object dest) {
        try {
            Class sourceClass = source.getClass();
            Class destClass = dest.getClass();
            BeanInfo info = Introspector.getBeanInfo(sourceClass);
            PropertyDescriptor props[]
                = info.getPropertyDescriptors();
            Object noParams[] = new Object[0];
            Object oneParam[] = new Object[1];
            for (int i = 0; i < props.length; i++) {
                Method getter = props[i].getReadMethod();
                if (getter == null)
                    continue;
                Object value = getter.invoke(source, noParams);
                Method setter = props[i].getWriteMethod();
                if (setter != null && sourceClass != destClass)
                    try {
                        setter = destClass.getMethod(
                            setter.getName(),
                            setter.getParameterTypes());
                    } catch (NoSuchMethodException x) {
                        setter = null;
                    }
                if (setter != null) {
                    oneParam[0] = value;
                    setter.invoke(dest, oneParam);
                }
            }
        } catch (IntrospectionException x) {
            log(x);
            throw new InternalError(x.getMessage());
        } catch (IllegalAccessException x) {
            log(x);
            throw new InternalError(x.getMessage());
        } catch (IllegalArgumentException x) {
            log(x);
            throw new InternalError(x.getMessage());
        } catch (SecurityException x) {
            log(x);
            throw new InternalError(x.getMessage());
        } catch (InvocationTargetException x) {
            log(x.getTargetException());
            throw new InternalError(
                x.getTargetException().getMessage());
        }
    }

}

⌨️ 快捷键说明

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