梦幻之旅

DEBUG - 天道酬勤

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  671 随笔 :: 6 文章 :: 256 评论 :: 0 Trackbacks
package org.vanpull.frame.commons.page;

import java.lang.reflect.Method;

/**
 * 
 * <p>
 * Title:[得到分页内容]
 * </p>
 * <p>
 * Description: [得到pageBar内容]
 * </p>
 * <p>
 * Copyright 2009 Huyvanpull Co., Ltd.
 * </p>
 * <p>
 * All right reserved.
 * </p>
 * 
 * 
@version 1.0
 * 
 * <p>
 * Created by [Huyvanpull] [Jul 1, 2009]
 * </p>
 * <p>
 * Midified by [修改人] [修改时间]
 * </p>
 * 
 
*/

public class PageBarContent
{
    
/** 验证ThemeClass */
    
private final String packageReg = "^([a-z]{1,32}\\.){1,32}([A-Z](\\w){1,32})$";
    
    
public String getThemeHtml(PageBarBean pgb)
    
{
        
return this.getThemeHtml(pgb.getTheme(), pgb.getTotalRows(), pgb
                .getPageSize(), pgb.getTotalPages(), pgb.getCurrentPage(), pgb
                .getFirstPageURL(), pgb.getBackPageURL(), pgb.getNextPageURL(),
                pgb.getEndPageURL());
    }

    
    
/**
     * 
     * <p>
     * Description:[本方法用于得到指定theme的HTML代码,用户可以自定义theme]
     * </p>
     * <p>
     * Created by [Huyvanpull] [May 12, 2009]
     * </p>
     * <p>
     * Midified by [修改人] [修改时间]
     * </p>
     * 
     * 
@param pageBarBean
     
*/

    @SuppressWarnings(
"unchecked")
    
public String getThemeHtml(String theme, int totalRows, int pageSize,
            
int totalPages, int currentPage, String firstPageUrl,
            String backPageUrl, String nextPageUrl, String lastPageUrl)
    
{
        ThemeMapping themeMapping 
= new ThemeMapping();
        String themeClassName 
= null;
        
/** 如果themeName包含在themeMapping内,那么得到className */
        
if (themeMapping.isConstaint(theme))
        
{
            themeClassName 
= themeMapping.getThemeClass(theme);
        }

        
/**
         * 如果themeName不包含在themeMapping内,
         * 那么认为theme是一个用户提供的已经实现ThemeInterface接口的实现类
         
*/

        
else
        
{
            themeClassName 
= theme;
        }

        String barHTML 
= "";
        
/** 用正则表达试匹配,是否是一个合法的类路径 */
        
if (!themeClassName.matches(this.packageReg))
        
{
            barHTML 
= "ThemeClass类路径不合法";
            
return barHTML;
        }

        
/** 使用反射机制得到ThemeClass的分页码代码开始 *************** */
        
/** 指定方法的参数列表 ************************* */
        Class[] types 
= int.classint.classint.classint.class,
                String.
class, String.class, String.class, String.class }
;
        
try
        
{
            
/** 通过反射得到指定的Class **************** */
            Class clazz 
= Class.forName(themeClassName);
            
/** 通过Class得到指定的方法 **************** */
            Method method 
= clazz.getDeclaredMethod("getPageBarHtml", types);
            
/** 通过反射得调用方法得到结果 ************** */
            barHTML 
= (String) method.invoke(clazz.newInstance(), totalRows,
                    pageSize, totalPages, currentPage, firstPageUrl,
                    backPageUrl, nextPageUrl, lastPageUrl);
        }

        
/** 找不到指定的类时异常 ********** */
        
catch (ClassNotFoundException cnfe)
        
{
            barHTML 
= "没有找到类" + themeClassName;
        }

        
/** 找不到实现接口的方法时 ******** */
        
catch (NoSuchMethodException nsme)
        
{
            barHTML 
= themeClassName + "不是ThemeInterface的实现类";
        }

        
/** 其它异常,供用户修改 ********** */
        
catch (Exception exce)
        
{
            barHTML 
= exce.toString();
        }

        
/** 使用反射机制得到ThemeClass的分页码代码结束 *************** */
        
return barHTML;
    }

}

posted on 2009-07-07 17:49 HUIKK 阅读(169) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: