`

将查询关键字加上颜色

阅读更多
package com.wzg.lore.util;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author 文正光
 * @version 创建时间:Apr 12, 2011 1:30:35 PM 类说明 查询时给查询内容的关键字加上指定的颜色
 */
public class DecoratorSingleKeyword {

/**
* 给一个对象中的属性值中包含的一个关键字加上需要的颜色
* @param object
* @param keyword
* @param color
* @return
* @throws Exception
*/
public static Object handlerObject(Object object, String keyword,
String color) {
Class objClass = object.getClass();
Field[] fields = objClass.getDeclaredFields();
Field field = null;
PropertyDescriptor pd = null;
if (keyword != null && keyword.trim().length() != 0) {
for (int i = 0; i < fields.length; i++) {
field = fields[i];
if (!field.getName().equals("serialVersionUID")) {
try {
pd = new PropertyDescriptor(field.getName(), objClass);
String s = pd.getReadMethod().invoke(object,
new Object[] {}).toString();// 得到getXXX的值
// 对属性中包含的关键字加上指定的颜色
s = s.replaceAll(keyword, "<font color=\"" + color
+ "\">" + keyword + "</font>");
ConvertDataType.invorkMethod(field, object, pd
.getWriteMethod(), s);// 调用set方法重新赋值
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IntrospectionException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
return object;
}

/**
* 给一个容器中的每个对象的属性值中包含的一个关键字加上指定的颜色
* @param collection
* @param keyword
* @param color
* @return
*/
public static List handlerList(List list, String keyword, String color) {
List resultList = new ArrayList();
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object object = iterator.next();
resultList.add(handlerObject(object, keyword, color));
}
return resultList;
}

}









package com.wzg.lore.util;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author 文正光
 * @version 创建时间:Apr 13, 2011 12:12:43 AM 类说明
 */
public class DecoratorMultipleKeywords {

/**
* 给一个对象中的属性值中包含的多个关键字加上需要的颜色
* @param object
* @param color
* @param keywords
* @return
*/
public static Object handlerObject(Object object, String color,
String... keywords) {
Class objClass = object.getClass();
Field[] fields = objClass.getDeclaredFields();
Field field = null;
PropertyDescriptor pd = null;
for (String keyword : keywords) {
if (keyword != null && keyword.trim().length() != 0) {
for (int i = 0; i < fields.length; i++) {
field = fields[i];
if (!field.getName().equals("serialVersionUID")) {
try {
pd = new PropertyDescriptor(field.getName(),
objClass);
String s = pd.getReadMethod().invoke(object,
new Object[] {}).toString();// 得到getXXX的值
// 对属性中包含的关键字加上指定的颜色
s = s.replaceAll(keyword, "<font color=\"" + color
+ "\">" + keyword + "</font>");
ConvertDataType.invorkMethod(field, object, pd
.getWriteMethod(), s);// 调用set方法重新赋值
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IntrospectionException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
}
return object;
}

/**
* 给一个容器中的每个对象的属性值中包含的多个关键字加上指定的颜色
* @param list
* @param color
* @param keywords
* @return
*/
public static List handlerList(List list, String color, String... keywords) {
List resultList = new ArrayList();
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object object = iterator.next();
resultList.add(handlerObject(object, color, keywords));
}
return resultList;
}
}








package com.wzg.lore.util;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.util.Date;

public class ConvertDataType {

/**
* 对Date类型转换
* @param args
* @return
*/
public static Date toDate(String args) {
Date result = null;
if (null == args || "".equals(args))
result = null;
else
try {
result = DateFormat.getInstance().parse(args);
} catch (Exception e) {
result = null;
}
return result;
}

/**
* 对Timestamp类型转换
* @param args
* @return
*/
public static Timestamp toTimestamp(String args) {
Timestamp result = null;
if (null == args || "".equals(args))
result = null;
else
try {
result = Timestamp.valueOf(args);
} catch (Exception e) {
result = null;
}

return result;
}

/**
* 对Long类型转换
* @param args
* @return
*/
public static Long toLong(String args) {
Long result = null;
if (null == args || "".equals(args))
result = new Long(0);
else
try {
result = Long.parseLong(args);
} catch (Exception e) {
result = new Long(0);
}

return result;
}

/**
* 对Double类型转换
* @param args
* @return
*/
public static Double toDouble(String args) {
Double result = null;
if (null == args || "".equals(args))
result = new Double(0);
else
try {
result = Double.parseDouble(args);
} catch (Exception e) {
result = new Double(0);
}

return result;
}

/**
* 对Float类型转换
* @param args
* @return
*/
public static Float toFloat(String args) {
Float result = null;
if (null == args || "".equals(args))
result = new Float(0);
else
try {
result = Float.parseFloat(args);
} catch (Exception e) {
result = new Float(0);
}

return result;
}

/**
* 对Integer类型转换
* @param args
* @return
*/
public static Integer toInteger(String args) {
Integer result = null;
if (null == args || "".equals(args))
result = 0;
else {
try {
result = Integer.parseInt(args);
} catch (Exception e) {
result = 0;
}
}
return result;
}

/**
* 对Short类型转换
* @param args
* @return
*/
public static Short toShort(String args) {
Short result = null;
if (null == args || "".equals(args))
result = 0;
else {
try {
result = Short.parseShort(args);
} catch (Exception e) {
result = 0;
}
}
return result;
}

/**
* 重写了对String类型的转换
* @param args
* @return
*/
public static String toString(String args) {
String result = null;
if (null == args || "".equals(args))
result = "";
else
result = args.toString();
return result;
}
/**
* 根据字段的数据类型执行相应的set方法
* @param field
* @param object
* @param method
* @param value
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws InvocationTargetException
*/
public static void invorkMethod(Field field, Object object, Method method,
String value) throws IllegalArgumentException,
IllegalAccessException, InvocationTargetException {
if (field.getType() == String.class) { // 处理当为String类型情况
method.invoke(object, new Object[] { toString(value) });
} else if (field.getType() == Integer.class) {// 处理当为Integer类型情况
method.invoke(object, new Object[] { toInteger(value) });
} else if (field.getType() == Float.class) {// 处理当为Float类型情况
method.invoke(object, new Object[] { toFloat(value) });
} else if (field.getType() == Double.class) {// 处理当为Double类型情况
method.invoke(object, new Object[] { toDouble(value) });
} else if (field.getType() == Long.class) {// 处理当为Long类型情况
method.invoke(object, new Object[] { toLong(value) });
} else if (field.getType() == int.class) {// 处理当为int类型情况
method.invoke(object, new Object[] { toInteger(value) });
} else if (field.getType() == float.class) {// 处理当为float类型情况
method.invoke(object, new Object[] { toFloat(value) });
} else if (field.getType() == double.class) {// 处理当为double类型情况
method.invoke(object, new Object[] { toDouble(value) });
} else if (field.getType() == Date.class) {// 处理当为Date类型情况
method.invoke(object, new Object[] { toTimestamp(value) });
} else if (field.getType() == short.class) {// 处理当为Short类型情况
method.invoke(object, new Object[] { toShort(value) });
} else if (field.getType() == Timestamp.class) {// 处理当为Timestamp类型情况
method.invoke(object, new Object[] { toTimestamp(value) });
}
}
}



分享到:
评论

相关推荐

    行号显示关键字高亮的简单实现

    关键字高亮主要是通过识别代码中的特定词汇,如变量名、函数名、保留字等,并赋予它们不同的颜色或者样式。这通常需要一个关键字列表,包含所有需要高亮的词汇。在获取到代码文本后,遍历每一行,使用正则表达式或者...

    javascript关键字加亮加连接

    我想在页面里把想要的关键词加亮凸出(用颜色区分出来)显示,这样让客户一眼能看到重的东西,然后在加亮的关键词上可以加上超连接.请问高手们怎么实现宋的功能.就像搜索引擎的那种..搜索关键词的时候就显示红色的.

    c++builder memo控件与listbox控件 加入 背景图片 c语言 关键字变色 自绘滚动条

    众里寻她千百度也没结果,现在应该差不多了,终于花了2、3天时间,给memo控件与listbox控件加上了背景图片,并自绘了他们的滚动条、光标、所选内容,同时,在memo中输入c++语言关键字,如int,char等,会自动变颜色。...

    ASP 高亮显示不区分大小写的关键字

    在这个版本中,我们创建了一个`RegExp`对象,设置了忽略大小写(`IgnoreCase=True`)和全局匹配(`Global=True`),然后定义了模式`Pattern`为要查找的关键字,并用`Replace`方法进行替换,将匹配到的部分用HTML标签包裹...

    万能数据库查询分析器《DB 查询分析器》 1.0

    3、提供了对所有数据库包括Oracle、Sybase、DB2、Informix、MySql、MS SQL SERVER、Access、FoxPro的SQL语句进行词法分析,对关键字、函数等显示以不同的颜色,使用户更方便地发现输入SQL语句的错误,同时...

    PlantUML使用说明文档

    在参与者的名字中可以使用非字母符号,甚至可以用引号将名字括起来,并使用"as"关键字为参与者定义别名。这在参与者名字非常长或包含非标准字符时特别有用。 参与者可以给自己发消息,可以在消息文本中使用"\n"来...

    全面介绍Google的功能及用法

    在关键字前加上双引号,可以进行精确匹配搜索。 **8,进阶搜索** **8.1,对搜索的网站进行限制** 使用“site:域名”可以限制搜索范围在特定网站内。 **8.2,查询某一类文件(往往带有同一扩展名)** “filetype:...

    PlantUML_Language_Reference_Guide_ZH.

    如果需要声明参与者,PlantUML提供了多种关键字供用户选择,例如actor、boundary、control、entity、database等,通过这些关键字可以清晰地定义参与者的身份和顺序。此外,用户还可以通过“as”关键字给参与者指定...

    PlantUML_Language_Reference_Guide_ZH.pdf

    在箭头后加上“o”可以用来表示某种特殊类型的箭头。同时,也可以通过使用RGB值或颜色名来改变箭头的颜色。 4. 消息编号:可以使用autonumber关键字自动给消息编号,以清晰地标示消息的传递顺序。 5. 使用引号定义...

    google搜索从入门到精通

    - **精确匹配**:使用引号(" ")将查询词括起来,可以实现精确匹配搜索。 2. **初阶搜索技巧** - **多关键词查询**:如果希望搜索结果同时包含两个或更多的关键词,直接输入这些词即可。 - **排除关键词**:...

    plantuml reference guide

    在箭头的样式中,还可以指定特定的颜色,语法上使用RGB值或颜色名来修改actor或参与者的背景色,或者直接在箭头后面加上颜色代码。例如,使用"Bob-[#red]&gt;Alice:hello"表示Bob发给Alice的消息为红色,或者使用"Alice...

    鼠标拖拽物体(二)2

    首先,将当前鼠标屏幕坐标转换为世界坐标,然后加上之前计算的偏移量,得到物体的新位置。最后,通过 `transform.position = curPosition;` 更新物体的位置。`yield` 关键字在这里用于暂停脚本的执行,让其他帧的...

    C++自定义数据类型(2013级-C++程序设计)

    使用 typedef 声明类型时,我们通常在已有的类型名称前加上 typedef 关键字以及新的类型名称。 在C++中,除了用户自定义类型(UDT)外,还存在其他的基本类型,如整型(int)、字符型(char)、浮点型(float、...

    超漂亮的网上购物系统 2012 v1.0 正式版

    如果产品介绍包含该关键字,会自动加上设置的链接 16)新闻介绍关键字内链功能:后台可以设置关键字和对应的链接 如果新闻内容包含该关键字,会自动加上设置的链接 17)后台搜索引擎优化管理收集了常见搜索引擎的...

    ASP网上购物系统旗舰版

    如果产品介绍包含该关键字,会自动加上设置的链接 16)新闻介绍关键字内链功能:后台可以设置关键字和对应的链接 如果新闻内容包含该关键字,会自动加上设置的链接 17)后台搜索引擎优化管理收集了常见搜索引擎的...

    2021-2022计算机二级等级考试试题及答案No.9397.docx

    包括Web服务器控件、列表框属性、互联网概念、计算机辅助测试、Servlet编程、关系数据库操作、JavaScript函数、Access数据库设计、RGB颜色模型、Visual FoxPro表达式、数据库索引、并发操作问题、交叉表查询、Java多...

    环平网上购物系统2012 V1.0版

    如果产品介绍包含该关键字,会自动加上设置的链接 16)新闻介绍关键字内链功能:后台可以设置关键字和对应的链接 如果新闻内容包含该关键字,会自动加上设置的链接 17)后台搜索引擎优化管理收集了常见搜索引擎的...

    CSS中的两个特殊值用于控制层叠的inherit和initial的方法

    在CSS中有两个特殊值可以赋给任意属性,用于控制层叠:inherit和initial。...通常我们会给网页的所有链接加上一个字体颜色(如果不加的话,就会以用户代理样式为准)。这个颜色也会作用于页脚的“Term

    javaoop基础和应用

    在定义抽象类时,需要在class关键字前加上abstract关键字。 ```java abstract class AbstractClass { // 抽象类定义 } ``` 抽象类中可以包含抽象方法,抽象方法没有具体实现,仅声明了方法签名。声明抽象方法时,...

Global site tag (gtag.js) - Google Analytics