package com.hongqiang.shop.common.template; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import org.springframework.stereotype.Component; import com.hongqiang.shop.common.utils.FreeMarkers; import freemarker.core.Environment; import freemarker.template.TemplateDirectiveBody; import freemarker.template.TemplateException; import freemarker.template.TemplateModel; @Component("paginationDirective") public class PaginationDirective extends BaseDirective { @SuppressWarnings({ "rawtypes", "unchecked" }) public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException { String str = (String) FreeMarkers.getParameter("pattern", String.class, params); Integer localInteger1 = (Integer) FreeMarkers.getParameter( "pageNumber", Integer.class, params); Integer localInteger2 = (Integer) FreeMarkers.getParameter( "totalPages", Integer.class, params); Integer localInteger3 = (Integer) FreeMarkers.getParameter( "segmentCount", Integer.class, params); if ((localInteger1 == null) || (localInteger1.intValue() < 1)) localInteger1 = Integer.valueOf(1); if ((localInteger2 == null) || (localInteger2.intValue() < 1)) localInteger2 = Integer.valueOf(1); if ((localInteger3 == null) || (localInteger3.intValue() < 1)) localInteger3 = Integer.valueOf(5); boolean bool1 = localInteger1.intValue() > 1; boolean bool2 = localInteger1.intValue() < localInteger2.intValue(); boolean bool3 = localInteger1.intValue() == 1; boolean bool4 = localInteger1.equals(localInteger2); int i = localInteger1.intValue() - 1; int j = localInteger1.intValue() + 1; int k = 1; int m = localInteger2.intValue(); int n = localInteger1.intValue() - (int) Math.floor((localInteger3.intValue() - 1) / 2.0D); int i1 = localInteger1.intValue() + (int) Math.ceil((localInteger3.intValue() - 1) / 2.0D); if (n < 1) n = 1; if (i1 > localInteger2.intValue()) i1 = localInteger2.intValue(); ArrayList localArrayList = new ArrayList(); for (int i2 = n; i2 <= i1; i2++) localArrayList.add(Integer.valueOf(i2)); HashMap localHashMap = new HashMap(); localHashMap.put("pattern", str); localHashMap.put("pageNumber", localInteger1); localHashMap.put("totalPages", localInteger2); localHashMap.put("segmentCount", localInteger3); localHashMap.put("hasPrevious", Boolean.valueOf(bool1)); localHashMap.put("hasNext", Boolean.valueOf(bool2)); localHashMap.put("isFirst", Boolean.valueOf(bool3)); localHashMap.put("isLast", Boolean.valueOf(bool4)); localHashMap.put("previousPageNumber", Integer.valueOf(i)); localHashMap.put("nextPageNumber", Integer.valueOf(j)); localHashMap.put("firstPageNumber", Integer.valueOf(k)); localHashMap.put("lastPageNumber", Integer.valueOf(m)); localHashMap.put("segment", localArrayList); setFreemarker(localHashMap, env, body); } }