1. 程式人生 > >jqGrid 滾動載入 或者點選分頁載入兩種方式

jqGrid 滾動載入 或者點選分頁載入兩種方式

public static < T > void sortByBeanFiled(List < T > list, String field, String order)
{
    logger.debug("sort list...");
    Integer d = order.equals(ASC) ? 1 : -1;

    Collections.sort(list, new Comparator < T > ()
    {

         @ Override
        public int compare(T t1, T t2)
        {
            if
 (null != t1 && null != t2)
            {
                String prop = null;
                String newField = null;
                Object value1 = null;
                Object value2 = null;

                //如果屬性為複合型別Java屬性
                if (StringUtils.isNotBlank(field) && field.contains("."
))
                {
                    prop = field.substring(0, field.lastIndexOf("."));
                    newField = field.substring(field.lastIndexOf(".") + 1);
                    Object propBean1 = ReflectUtil.getTypeField(t1, prop);
                    Object propBean2 = ReflectUtil.getTypeField(t2, prop);
                    value1 = extractJavaBeanPropertyValue(prop, newField, propBean1);
                    value2 = extractJavaBeanPropertyValue(prop, newField, propBean2);
                }
                else

                {
                    value1 = ReflectUtil.getTypeField(t1, field);
                    value2 = ReflectUtil.getTypeField(t2, field);
                }
                if (null == value1 && null != value2)
                {
                    return -d;
                }
                else if (null != value1 && null == value2)
                {
                    return d;
                }
                else if (null == value1 && null == value2)
                {
                    return 0;
                }
                else if (null != value1 && null != value2)
                {
                    Integer tempd = 0;
                    if (value1 instanceof String)
                    {
                        tempd = Collator.getInstance(Locale.CHINESE).compare(value1, value2);
                    }
                    else if (value1 instanceof Number || value1 instanceof Integer)
                    {
                        tempd = Integer.valueOf(String.valueOf(value1)) - Integer.valueOf(String.valueOf(value2));
                    }
                    else if (value1 instanceof Date)
                    {
                        try
                        {
                            tempd = DATE_FORMAT.parse(String.valueOf(value1)).compareTo(DATE_FORMAT.parse(String.valueOf(value2)));
                        }
                        catch (ParseException e)
                        {
                            logger.debug("sortByBeanFiled 日期轉換異常");
                            e.printStackTrace();
                        }
                    }
                    else
                    {
                        logger.debug("sortByBeanFiled 轉換其他型別:" + value1.getClass().getName());
                    }

                    if (tempd > 0)
                    {
                        return d;
                    }
                    else if (tempd < 0)
                    {
                        return -d;
                    }
                    return tempd;
                }
            }
            return 0;
        }

        private Object extractJavaBeanPropertyValue(String prop, String newField, Object propBean)
        {
            Object value = null;
            //忽略...
            return value;
        }

    }
    );
}