001    /**
002     * Implements the CFML Function listvaluecount
003     */
004    package railo.runtime.functions.list;
005    
006    import railo.runtime.PageContext;
007    import railo.runtime.exp.PageException;
008    import railo.runtime.ext.function.Function;
009    import railo.runtime.type.Array;
010    import railo.runtime.type.util.ListUtil;
011    
012    public final class ListValueCount implements Function {
013    
014            private static final long serialVersionUID = -1808030347105091742L;
015    
016            public static double call(PageContext pc , String list, String value) throws PageException {
017                    return call(pc,list,value,",",false);
018            }
019    
020            public static double call(PageContext pc , String list, String value, String delimiter) throws PageException {
021                    return call(pc,list,value,delimiter,false);
022            }
023            public static double call(PageContext pc , String list, String value, String delimiter,boolean includeEmptyFields) throws PageException {
024                    int count=0;
025                    Array arr= includeEmptyFields?ListUtil.listToArray(list,delimiter):ListUtil.listToArrayRemoveEmpty(list,delimiter);
026                    int len=arr.size();
027                    
028                    for(int i=1;i<=len;i++) {
029                            if(arr.getE(i).equals(value))count++;
030                    }
031                    return count;
032            }
033    }