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

📄 apacheregexpwrapper.java

📁 JoSQL 1.5的源代码。JoSQL(SQL for Java Objects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java
💻 JAVA
字号:
package org.josql.functions.regexp;import java.util.Map;import java.util.HashMap;import org.josql.QueryExecutionException;import java.lang.reflect.Method;public class ApacheRegExpWrapper extends AbstractRegExpWrapper implements RegExp{    public static final String SUPPORTED_VERSION = "1.3";    private final String compilerClassName = "org.apache.regexp.RECompiler";    private final String matcherClassName = "org.apache.regexp.RE";    private final String programClassName = "org.apache.regexp.REProgram";    private final String compileMethName = "compile";    private final String setProgramMethName = "setProgram";    private final String matchMethName = "match";        private Method compileMeth = null;    private Method setProgramMeth = null;    private Method matchMeth = null;    private Class compilerClass = null;    private Class matcherClass = null;    private Map patterns = new HashMap ();    public ApacheRegExpWrapper ()    {    }    public String getSupportedVersion ()    {	return ApacheRegExpWrapper.SUPPORTED_VERSION;    }    public boolean isAvailable ()    {	try	{	    Class.forName (this.compilerClassName);	    return true;	} catch (Exception e) {	    return false;	}    }    public void init ()	              throws QueryExecutionException    {	try	{	    this.compilerClass = Class.forName (this.compilerClassName);	    	    Class argTypes[] = {String.class};	    	    this.compileMeth = this.compilerClass.getMethod (this.compileMethName,							     argTypes);	    	    this.matcherClass = Class.forName (this.matcherClassName);	    	    Class pc = Class.forName (this.programClassName);	    	    Class argTypes2[] = {pc};	    	    this.setProgramMeth = this.matcherClass.getMethod (this.setProgramMethName,							       argTypes2);	    	    this.matchMeth = this.matcherClass.getMethod (this.matchMethName,							  argTypes);	    	} catch (Exception e) {	    	    throw new QueryExecutionException ("Unable to init",					       e);	    	}	    }    public boolean match (String pattern,			  String val)                          throws QueryExecutionException    {	try	{	    // See if we already have the pattern.	    Object o = this.patterns.get (pattern);	    	    if (o == null)	    {		// Create a new compiler.		Object c = this.compilerClass.newInstance ();				Object args[] = {pattern};				// Compile the pattern.		Object program = this.compileMeth.invoke (c,							  args);				// Create a new RE.		Object re = this.matcherClass.newInstance ();				Object args2[] = {program};				// Apply the program.		this.setProgramMeth.invoke (re,					    args2);				this.patterns.put (pattern,				   re);				o = re;			    }	    	    Object args[] = {val};	    	    // Now try and match the value.	    return ((Boolean) this.matchMeth.invoke (o,						     args)).booleanValue ();	    	} catch (Exception e) {	    	    throw new QueryExecutionException ("Unable to match value: " + 					       val +					       " against pattern: " +					       pattern,						   e);	    	}		    }    }

⌨️ 快捷键说明

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