abstractpropertyfactory.java
来自「CRM源码This file describes some issues tha」· Java 代码 · 共 207 行
JAVA
207 行
/* * Copyright 2006-2007 Queplix Corp. * * Licensed under the Queplix Public License, Version 1.1.1 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.queplix.com/solutions/commercial-open-source/queplix-public-license/ * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */package com.queplix.core.utils.dao;import com.queplix.core.error.GenericSystemException;import com.queplix.core.utils.log.AbstractLogger;import com.queplix.core.utils.xml.XMLHelper;import java.io.IOException;import java.io.InputStream;import java.lang.reflect.Method;import java.util.Properties;/** * Abstract system property access factory * @author [ALB] Baranov Andrey * @version $Revision: 1.4 $ $Date: 2006/04/03 06:47:56 $ */public abstract class AbstractPropertyFactory extends AbstractLogger { // ===================================================== Constants public final static String SYS_CONFIG_PREFIX = "com/queplix/config/sys/"; public static final String RESOURCES_PREFIX = "com/queplix/core/ejb/resources/"; // ===================================================== Public methods /** * Loads system properties as InputStream. * @param clazz class loader's class * @param configFile local file name * @return InputStream */ public static InputStream loadSysPropertiesAsStream( Class clazz, String configFile ) { String fullPath = SYS_CONFIG_PREFIX + configFile; InputStream is = clazz.getClassLoader().getResourceAsStream( fullPath ); if( is == null ) { throw new NullPointerException( "System Property '" + configFile + "' (path: '" + fullPath + "') not found!" ); } return is; } /** * Loads resource file as InputStream. * @param clazz class loader's class * @param resourceFile resource file path relative to the resources directory * @return InputStream * @see #RESOURCES_PREFIX */ public static InputStream loadResourceAsStream( Class clazz, String resourceFile ) { String fullPath = RESOURCES_PREFIX + resourceFile; InputStream is = clazz.getClassLoader().getResourceAsStream( fullPath ); if( is == null ) { throw new NullPointerException( "Resource File '" + resourceFile + "' (path: '" + fullPath + "') not found!" ); } return is; } // ===================================================== Protected methods /** * Loads system properties as InputStream. * @param configFile local file name * @return InputStream */ protected InputStream loadSysPropertiesAsStream( String configFile ) { return loadSysPropertiesAsStream( getClass(), configFile ); } /** * Loads system properties as Properties. * @param configFile local file name * @return Properties */ public static Properties loadSysProperties(String configFile) { InputStream is = loadSysPropertiesAsStream(AbstractPropertyFactory.class, configFile); Properties res = new Properties(); try { res.load(is); } catch (IOException ex) { throw new GenericSystemException(ex); } return res; } /** * Loads system properties as Object. * @param configFile local file name * @param clazz Class * @return Object */ protected Object loadSysPropertiesAsObject( String configFile, Class clazz ) { return XMLHelper.getParsedObject( clazz, loadSysPropertiesAsStream( configFile ) ); } /** * Loads class <code>className</code>. * @param className class name * @return Class */ protected Class initClass( String className ) { if( getLogger().isDebugEnabled() ) { DEBUG( "Try to load class: " + className ); } // Loading... try { return Class.forName( className ); } catch( Exception ex ) { ERROR( ex ); throw new GenericSystemException( "Can't load class '" + className + "'.", ex ); } } /** * Generates a new InterfaceProperty and set config parameters <code>params</code>. * @param className object class name * @param params XML parameters * @return Object */ protected InterfaceProperty initObject( String className, Object[] params ) { return __initObject( className, __toProperties( params ) ); } /** * Generates a new InterfaceProperty and set properties <code>Properties</code>. * @param className object class name * @param properties Properties * @return Object */ protected InterfaceProperty __initObject( String className, Properties properties ) { if( getLogger().isDebugEnabled() ) { DEBUG( "Try to instantiate class: " + className ); DEBUG( " Properties: " + properties ); } // Instantiating... InterfaceProperty ret; try { ret = ( InterfaceProperty ) Class.forName( className ).newInstance(); } catch( Exception ex ) { ERROR( ex ); throw new GenericSystemException( "Can't get class '" + className + "' instance.", ex ); } // Set properties. if( properties != null ) { ret.setProperties( properties ); } return ret; } /** * Converts XML parameters to java.util.Properties object. * @param params XML parameters (must have 'name' and 'value' properties) * @return java.util.Properties */ protected Properties __toProperties( Object[] params ) { if( params == null ) { return null; } // Methods to call: Method getNameMethod = null; Method getValueMethod = null; Properties ret = new Properties(); for( int i = 0; i < params.length; i++ ) { Object param = params[i]; try { if( i == 0 ) { getNameMethod = param.getClass().getMethod( "getName", (Class[]) null ); getValueMethod = param.getClass().getMethod( "getValue", (Class[]) null ); } ret.put( getNameMethod.invoke( param, (Object[]) null ), getValueMethod.invoke( param, (Object[]) null ) ); } catch( Exception ex ) { ERROR( ex ); throw new GenericSystemException( ex ); } } return ret; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?