Java tutorial
/** * Copyright (c) 2005-2009 springside.org.cn * * Licensed under the Apache License, Version 2.0 (the "License"); * * $Id: HibernateWebUtils.java,v 1.1 2009/09/22 00:55:33 test Exp $ */ package com.xyz.util; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang.StringUtils; import org.springframework.util.Assert; import org.springframework.web.util.WebUtils; /** * JdoWebUtils?. * * @author calvin */ public class WebDataUtil { private WebDataUtil() { } /** * ?ID?,???. * * ????"id". * * @see #mergeByCheckedIds(Collection, Collection, Class, String) */ public static <T, ID> void mergeByCheckedIds(final Collection<T> srcObjects, final Collection<ID> checkedIds, final Class<T> clazz) { mergeByCheckedIds(srcObjects, checkedIds, clazz, "id"); } /** * ?ID?,???. * * ??????id,??????id?????. * ???id?ID?,?ID?id??. * * @param srcObjects ?? * @param checkedIds ID? * @param clazz ? * @param idName ?? */ public static <T, ID> void mergeByCheckedIds(final Collection<T> srcObjects, final Collection<ID> checkedIds, final Class<T> clazz, final String idName) { //? Assert.notNull(srcObjects, "scrObjects?"); Assert.hasText(idName, "idName?"); Assert.notNull(clazz, "clazz?"); //ID?,???. if (checkedIds == null) { srcObjects.clear(); return; } //????,id?ID?,. //?,ID???id,ID?id???ID. Iterator<T> srcIterator = srcObjects.iterator(); try { while (srcIterator.hasNext()) { T element = srcIterator.next(); Object id; id = PropertyUtils.getProperty(element, idName); if (!checkedIds.contains(id)) { srcIterator.remove(); } else { checkedIds.remove(id); } } //ID??id????,,id??. for (ID id : checkedIds) { T obj = clazz.newInstance(); PropertyUtils.setProperty(obj, idName, id); srcObjects.add(obj); } } catch (Exception e) { throw ReflectionUtil.convertToUncheckedException(e); } } /** * ?PropertyFilter??Request?,PropertyFilter. * Filter???filter_. * * @see #buildPropertyFilters(HttpServletRequest, String) */ public static List<PropertyFilter> buildPropertyFilters(final HttpServletRequest request) { return buildPropertyFilters(request, "f_"); } /** * ?PropertyFilter??Request?,PropertyFilter. * PropertyFilter??Filter?__??. * * eg. * filter_EQUAL_name * filter_LIKE_name_OR_email */ @SuppressWarnings("unchecked") public static List<PropertyFilter> buildPropertyFilters(final HttpServletRequest request, final String filterPrefix) { List<PropertyFilter> filterList = new ArrayList<PropertyFilter>(); //request??????,?????Map. Map<String, Object> filterParamMap = WebUtils.getParametersStartingWith(request, filterPrefix); //??Map,PropertyFilter for (Map.Entry<String, Object> entry : filterParamMap.entrySet()) { String filterName = entry.getKey(); String value = entry.getValue().toString(); //value,filter. boolean omit = StringUtils.isBlank(value); if (!omit) { PropertyFilter filter = new PropertyFilter(filterName, value); filterList.add(filter); } } return filterList; } }