package com.akjava.lib.common.form.page; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; public class QueryUtils { public static List<String> indexOf(String key,Collection<String> values){ return Lists.newArrayList(Iterables.transform(values, new IndexOfAll(key,true))); } public static List<String> notIndexOf(String key,Collection<String> values){ return Lists.newArrayList(Iterables.transform(values, new IndexOfAll(key,false))); } public static class IndexOfAll implements Function<String,String>{ private String key; private boolean contain; private String quote; public IndexOfAll(String key,boolean contain){ this(key,contain,"'"); } public IndexOfAll(String key,boolean contain,String quote){ this.key=key; this.contain=contain; this.quote=quote; } @Override public String apply(String value) { if(contain){ return "this."+key+".indexOf("+quote+value+quote+")!=-1"; }else{ return "this."+key+".indexOf("+quote+value+quote+")==-1"; } } } public static class Equal implements Function<String,String>{ private String key; private String quote; public Equal(String key){ this(key,"'"); } public Equal(String key,String quote){ this.key=key; this.quote=quote; } @Override public String apply(String value) { return "this."+key+" == "+quote+value+quote+""; } } /* * queryの値を置き換える * request.getQueryStringで取り出した(文字コードとか同じの方が楽)値を置き換えよう */ public static String replace(String origin,Map<String,String> replaced){ if(origin==null){ origin=""; } List<String> keyValueList=new ArrayList<String>(); String[] key_values=origin.split("&"); for (String key_value:key_values) { String[] k_v=key_value.split("="); if(k_v.length>1){ String value=replaced.get(k_v[0]); if(value!=null){ k_v[1]=value; replaced.remove(k_v[0]);//not need } keyValueList.add(k_v[0]+"="+k_v[1]); } } //追加 for(String key:replaced.keySet()){ keyValueList.add(key+"="+replaced.get(key)); } String qwery=Joiner.on('&').join(keyValueList); return qwery; } }