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

📄 appextensions.java

📁 JRemoteControl is a simple Java&#8482 driven bluetooth remote control.It allows you to initiate virt
💻 JAVA
字号:
/* * JRemCntl - Copyright (C) 2007 Filippo Di Vattimo <fildiv@gmail.com> * See COPYING */package fildiv.jremcntl.server.core;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Collections;import java.util.Hashtable;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.jar.Attributes;import java.util.jar.JarFile;import java.util.jar.Manifest;import fildiv.jremcntl.common.core.Logger;import fildiv.jremcntl.common.util.JRemUtils;import fildiv.jremcntl.server.utils.JRemServerUtils.ExtFileFilter;public class AppExtensions {	private Environment env;	private Logger logger;	private Map extsMap;		protected AppExtensions() {		this.env = JRemEnv.getInstance();		this.logger = env.getLogger();				try {			readExtensionsInfo();		} catch(Exception e) {			logger.error("Unable to load extension");			logger.error(e);		}	}		protected void readExtensionsInfo() {		extsMap = new Hashtable();				if (env.isLogEnabled())			logger.info("Reading extensions from " + env.getExtDirPath());				File extDir = new File(env.getExtDirPath());				ExtFileFilter ff = new ExtFileFilter(".jar");		File[] files = extDir.listFiles(ff);		for (int index = 0; index < files.length; ++index) {			File f = files[index];						List extsList = readExtensionInfo(f);			if (extsList != null) {							for (Iterator i = extsList.iterator(); i.hasNext(); ) {					AppExtension appExt = (AppExtension) i.next();										extsMap.put(appExt.getID(), appExt);				}							}		}		if (env.isLogEnabled())			logger.info("Done ...");	}	protected List readExtensionInfo(File f) {				logger.info("Reading file : " + f.getAbsolutePath());				JarFile jf = null;				try {			jf = new JarFile(f);		} catch (IOException e) {			logger.error("Error reading " + f.getAbsolutePath());			logger.error(e);						return null;		}		Manifest m = null;				try {			m = jf.getManifest();		} catch (IOException e) {			logger.error("Error reading manifest from " + f.getAbsolutePath());			logger.error(e);						return null;		}				Attributes attrs = m.getAttributes(ExtensionConst.MANIFEST_SECTION);				List infos = null;				try {			infos = readExtensionInfo(attrs, f);		} catch(Exception e) {			logger.error("Error reading extension information from " + f.getAbsolutePath());			logger.error(e);			return null;		}				return infos;	}		protected List readExtensionInfo(Attributes attrs, File f) {				List extList = new ArrayList();				int index = 1;				while (true) {					String shortName = getAttrValue(attrs, ExtensionConst.MANIFEST_SHORT_NAME, index);			if (shortName == null) {				if (index == 1)					logger.error(ExtensionConst.MANIFEST_SHORT_NAME + 							" was not found in MANIFEST (" + f.getAbsolutePath() + ")");				return extList;			}						String id = getAttrValue(attrs, ExtensionConst.MANIFEST_EXT_ID, index);			if (id == null) {				if (index == 1)					logger.error(ExtensionConst.MANIFEST_EXT_ID + 							" was not found in MANIFEST (" + f.getAbsolutePath() + ")");				return extList;			}			String className = getAttrValue(attrs, ExtensionConst.MANIFEST_CLASS_NAME, index);			if (className == null) {				if (index == 1)					logger.error(ExtensionConst.MANIFEST_CLASS_NAME + 							" was not found in MANIFEST (" + f.getAbsolutePath() + ")");				return extList;			}						if (env.isLogEnabled())				logger.info("found : " + shortName + "[" + id + "]");						AppExtension ext = new AppExtension(id, shortName, 					className, f.getAbsolutePath());			extList.add(ext);						index++;		}	}		protected String getAttrValue(Attributes attrs, String attrName, int index) {		attrName = attrName + "-" + index;		String attrValue = attrs.getValue(attrName);		return attrValue;	}		public AppExtension getExtension(String id) {				if (JRemUtils.isEmptyString(id))			throw new IllegalArgumentException("id cannot be null");				return (AppExtension) extsMap.get(id);	}		public List asList() {		return Collections.unmodifiableList( new ArrayList(extsMap.values())) ;	}	public AppExtension getDefault() {		return getExtension(ExtensionConst.DEFAULT_EXT_ID) ;	}	}

⌨️ 快捷键说明

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